github scala/scala3 3.3.7-RC1

pre-release3 days ago

Highlights of the release

  • Warn if interpolator uses toString #20578
  • Fixes #15736 blocking Scala 3 on Android #22632
  • Implement :jar (deprecate :require) #22343
  • In selector check, prefix of reference must match import qualifier #20894
  • Fix #21242: Add REPL flag to quit after evaluating init script #22636
  • Warn if implicit default shadows given #23559

Other changes and fixes

Annotations

  • Approximate annotated types in wildApprox #22893
  • Fix copy of annotation on @main methods #22582

CI

  • Disable Cats flaky tests #23007

Developer Experience

  • Add support for running the test sub-command with the bisect script #22796

Documentation

  • Improve the usage of inclusive language #22360
  • Update indentation.md to fix a typo #23505

Enums

  • Make hashcode of enum items stable #23218

Erasure

  • Add regression test for #23616 #23623
  • Disallow context function types as value-class parameters #23015
  • Handle type aliases in contextFunctionResultTypeAfter #21517
  • Align erasure of Array[Nothing] and Array[Null] with Scala 2 #22517

Experimental: Erased definitions

  • Erased fields are not nullable #23311

Implicits

  • Refine implicit search fallbacks for better ClassTag handling #23532
  • Fix #20335: Try extensions for arguments with type mismatch error #23212

Inline

  • Fix Symbol.info remapping in TreeTypeMap #23432

Lambda Lift

  • Fix: treat static vals as enclosures in lambdalift #22452
  • Fix: record calls to constructors in lambdaLift #22487

Linting

  • Check OrType in interpolated toString lint #23365
  • Consider setter of effectively private var #23211
  • Nowarn receiver of extension taking params #23351
  • Dealias when looking into imports #22889
  • Revert unconditional lint of Inlined expansion #22815
  • Warn unused member of anonymous class #22729
  • No warning for parameter of overriding method #22757
  • Lazy val def member is pattern var #22750
  • Ignore params to default arg getters #22749
  • Restore resolving prefixes of implicit Ident #22751
  • Exclude synthetic this.m, Any.m from import lookup #22695
  • Nowarn public implicit val class params #22664
  • Don't warn retainedBody #22510
  • Suppress spurious Suppression #22383
  • Handle Typeable #22663
  • CheckUnused checks span.exists before testing its parts #22504
  • Process Export for unused check #22984
  • Enclosing package p.q not visible as q #23069
  • Remove premature caching of lookups for unused lint #22982
  • Improve checking LHS of Assign #22977
  • Improve Unit ascription escape hatch #23147
  • Mention extension in unused param warning #23132
  • Dealias for unused param check #23256
  • Take inferred or explicit refinement result for unused check #23325
  • Add accessible check for import usage #23348
  • Use result of lambda type of implicit in CheckUnused #23497

Match Types

  • Handle NoType in TypeComparer.disjointnessBoundary #21520
  • Fix: #23261 Distinguish 0.0 and -0.0 in ConstantType match types #23265

Metaprogramming

  • Add a check for correct Array shape in quotes.reflect.ClassOfConstant #22033

Opaque Types

  • Fix stack overflow errors when generating opaque type proxies #22479

Optional Braces

  • Correctly detect colon lambda eol indent for optional brace of argument #22477

Overloading

  • Fail compilation if multiple conflicting top-level private defs/vals are in the same package #22759

Parser

  • Allow observing an indent after conditional #22611
  • No outdent at eof #22435
  • Fix annotations being not expected in the middle of an array type by java parser #22391
  • Fix incorrect warning with -no-indent #23216

Pattern Matching

  • Fix issue in lazy symbol completion or bug in nested classfile parser #23634
  • Fix existing GADT constraints with introduced pattern-bound symbols #22928
  • Avoid crash in uninhab check in Space #22601

Pickling

  • Try to handle SkolemTypes in SingletonTypeTree during pickling #23236

Positions

  • Compare span points in pathTo to determine best span #23581

Presentation Compiler

  • Fix: Fix extracting refinements from intersection types in dynamic select hovers #23640
  • Completions for requests just before string #22894
  • Add enum type param support in sourceSymbol #18603
  • Use untpd.Tree instead of tpd.Tree for SelectionRangeProvider #22702
  • Fix: handle multiple params lists in for infer type #23197
  • Fix completion mode filtering + optimize scopeCompletions #23172
  • Add selection ranges for more names #23257
  • Add inlay hints for by-name parameters #23283
  • Add jpath to VirtualFile (for pc) #23203

Quotes

  • Fix issue with static this references erroring in quoted code #22618
  • Skip splice level checking for symbols #22782
  • Fix stale top level synthetic package object being used in later runs #23464

REPL

  • REPL: JLine 3.29.0 (was 3.27.1) #22679
  • Repl: emit warning for the :sh command #22694

Reflection

  • Fix regression: do not approximate prefixes when using memberType in reflect API #22448
  • Forbid StringConstant(null) #23064
  • Quotes reflect: sort the typeMembers output list and filter out non-members #22876

Reporting

  • Register nowarn when inlining #22682
  • Filter help renders box border #22434
  • Fix incorrect warning on type ascription for backquoted identifiers #23088
  • Add an explainer to the DoubleDefinition error #23470

Scaladoc

Settings

  • Chore: filter allowed source versions by import and by settings #23215

Testing framework

  • Revert dubious retry in vulpix #21801

Transform

  • Check only stable qual for import prefix #22633
  • Warn trivial recursion with module prefix #23278

Tuples

  • Normalize tuple types in var args seq literals and classOf instances #23465

Typer

  • Generalize "Don't approximate a type using Nothing as prefix" #23628
  • Don't approximate a type using Nothing as prefix #23531
  • Tighten condition to preserve denotation in IntegrateMap #23060
  • Disallow context bounds in type lambdas #22659
  • Fix #22724: Revert the PolyType case in #21744 #22820
  • Fix isGenericArrayElement for higher-kinded types #22938
  • Revert lambda cleanup #22697
  • Constructor companion gets privateWithin #22627
  • Add regression test for #22076 #22602
  • Constructor proxy is restricted if class is protected #22563
  • Check if a prefix is valid before selecting from a type #22368
  • Preserve hard unions in widenSingletons #22369
  • Revert recent changes to opaque type proxy generation #23059
  • Compare TypeVar and TypeParamRef in mergeRefinedOrApplied #23045
  • Only keep denotation for methods in IntegrateMap #23226
  • Tighten condition when to do SAM type conversion #23246
  • Revert "Make overload pruning based on result types less aggressive (#21744)" in main #23331
  • Fix #22922: Add TypeParamRef handling in isSingletonBounded #23501
  • Fix this references everywhere in dependent function types #23514
  • More careful ClassTag instantiation #23659
  • Use more context for implicit search only if no default argument #23664

JDK

  • Check path of module prefix for tailrec #23491

Releases

  • [CI] Switch releasing to Sontype Central instead of legacy Sonatype OSS #23290

Don't miss a new scala3 release

NewReleases is sending notifications on new releases.