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
CI
- Disable Cats flaky tests #23007
Developer Experience
- Add support for running the
test
sub-command with the bisect script #22796
Documentation
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]
andArray[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
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
- Encode path of class #23503
Settings
- Chore: filter allowed source versions by import and by settings #23215
Testing framework
- Revert dubious retry in vulpix #21801
Transform
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