Releases: scala/scala3
3.8.0-RC1
Highlights of the release
- Require JDK 17+ #24146
- Scala Standard Library is now compiled and published using Scala 3
- Add explicit null checks to Scala 3 Standard Library #23566
- Add capture-checking to Scala 3 Standard Library #23688
- Add capture-checking to Scala 2 collections #23769
- Extract REPL to be its own artifact #24243
- SIP-57: Make
runtimeCheckeda standard feature #23262 - SIP-62: Make
better-forsa stable feature #23630 - Preview SIP-71: Make
intopreview feature #24090 - Experimental SIP-67: Strict equality pattern matching #23803
- Experimental SIP-70: Allow multiple spreads in function arguments #23855
- Experimental SIP-75: Allow single-line lambdas after
:#23821 - Experimental: Match if sub cases #23786
See the release thread on contributors.scala-lang.org for additional comments
Other changes and fixes
Annotations
- Emit deprecation warnings when a symbol is annotated by a deprecated annotation #23906
- Deprecate
scala.annotation.elidable#23913 - Deprecate
scala.annotation.transparentTrait#23116
Experimental: Capture Checking
- Move
scala.caps.Pureto caps and make it non-experimental #23745 - Make
scala.caps.Puretransparent #23914 - Make
scala.caps.Capabilitynon-experimental #23507 - Check conformance to
scala.caps.Pureupper bound only under cc #23784 - Widen type parameters before box adaptation #23809
- Level checking: distinguish between certain capset vars with same owner #24077
- Implement FreshCap Handling for Classes and Objects #24136
- Skip capture sets in checkNoPrivateLeaks and drop them in posttyper when cc is not enabled #23886
- Changes around reaches and uses #23584
- Revise capability hierarchy and fix classifiers #23656
- Improve closure typing #23700
- Better printing of capabilities in error messages #23701
- More improvements to error messages #23721
- CC Language Ref Polishings #23762
- CC Language Reference Improvements v2 #23818
- Changes in CC around classes, constructors, this #23874
- Various fixes and simplifications #23881
- Simplify Level Checking and Fix Errors #23934
- Introduce precise refined types #24154
- Fix unsoundness in APPLY and SELECT rules #24159
- Fixes for mutability #24205
- Implement inheritance condition for Mutable types #24253
- Don't add cap when creating instances of capability classes. #24256
- Changes to Fresh and Separation Checking #24112
Experimental: Explicit Nulls
- Only nullify tasty if
Yflexify-tastyis set; Refine FlexibleType nullification rules #23938 - Apply flexible types to files compiled without explicit nulls #23386
- Fix NotNullInfo in multi-case match #23864
- Fix captureWildcards with FlexibleType #24070
- Do not assume left is non-null if another branch is null in splitLast #24325
Experimental: Global Initalization
- Modelling assigning to null in the global object initialization checker #23858
- Fix global init checker unexpected by name #23859
- Fix selection on safe value in the global object initialization checker #23860
- Re-design Env of the global object init checker #24107
Experimental: Into
- Allow into on enums #23795
Experimental: Modularity
- Simpler inference for tracked #22972
Implicits
- Only check seen for LazyRef for TypeSizeAccumulator #20459
- Derived members succeed other givens in cycle test #23898
Linting
- Drill through type lambda for tree symbol #23699
- Warn unused masking imports, remove obsolete unused options #23757
- Unused lint does not rewrite suppressed warnings #24055
- Check for synthetic case methods in unused lint #24239
Match Types
- Prioritize tree type over proto type when typing Binds #24175
Metaprogramming
- Warn about encoded pkg obj names #22707
Named Tuples
- Prohibit selection of tuples with members named
apply. #24191 - Add an Ordering given instance for named tuples #23379
- Named tuple toMap extension method #23827
Opaque Types
- Prevent opaque types leaking from transparent inline methods #23792
- Make opaque types decomposable #24068
Parser
- Make consume a soft modifier #23755
Pattern Matching
- Fix false exhaustivity warning for seq match #23968
- Use upper bound of abstract types in exhaustivity checking #23909
Pickling
- Cleanup the type of
UnApplytrees in posttyper #24259
Presentation Compiler
- Make sure that we can query tree.source #24123
- Add unsafe RawPresentationCompiler implementation #24133
Reporting
- Fix span of private this warning #23947
- Improve printing of strings #22945
- Better grouping of explanations in error messages #24155
- Better error message: reassignment to val #24184
Reflection
- Add missing apply constructors for
RefinedandTypeProjectionTypeTrees #23837
REPL
- Use PPrint to handle printing of REPL output values #23849
- Invoke pprint reflectively #24119
- Consider rendering prefix when pretty printing values in the REPL #24118
- Trap Ctrl-C in the REPL: if no command is running clear the prompt, if some command is running ask for confirmation before exiting #24127
- Re-implement Ammonite's Ctrl-C interruption for Scala REPL via bytecode instrumentation #24194
- Remove pipes from multi-line REPL prompts #24307
- Reintroduce reflective REPL pprint call. #24353
Scala Runner
- Drop
scala_legacyandMainGenericRunner#24244 - Drop
-runand-replinMainGenericCompiler#24289 - Bump Scala CLI to v1.10.0 (was v1.9.1) and Coursier to v2.1.25-M19 (was 2.1.24) #24362
Scaladoc
- Add FlexibleType support for scaladoc #23320
- Render
@consumeas theconsumemodifier #23754 - Do not render
consume updateinscaladoc#23760
Scala.js
- Upgrade to Scala.js 1.20.1. #23884
-...
3.7.4
Highlights of the release
- Bump Scala CLI to v1.9.1 (was v1.9.0) #23962
- Make coverage more similar to the one in Scala 2 #23722
Deprecations for removal
- Deprecate
scala_legacy/MainGenericRunner/scalac -run/scalac -replfor removal #24267
Other changes and fixes
Context Functions
- Explain no expansion of ContextFunction0 #23844
Experimental: Capture Checking
- Fix #23737: Update superCallContext to include dummy capture parameters in scope #23740
- Fix separation checking for function results #23927
- Simple enhancement for pattern matching with capturing types #23524
- Don't check bounds in match type cases at CC #23738
Experimental: Explicit Nulls
- Add warnings for inferred flexible types in public methods and fields #23880
Exports
- Refine isEffectivelyFinal to avoid no-owner crash #23675
Implicits
- Fix LiftToAnchors for higher-kinded type applications #23672
- Fix implicit scope liftToAnchors for parameter lower bounds #23679
Linting
- Invent given pattern name in for comprehension #23121
- Unused var message mentions unread or unset #23719
- Lint function arrow intended context function #23847
- Always traverse Inlined.call in linter #24043
- Ignore warnings when compiletime.testing is imported #24036
- Lint avoids revisiting Inlined.call #24277
- Register no elements for lint after inlining #24279
- Use enclosing enclosingInlineds for empty call #24281
- Exclude synthetic opaque proxy from lint #24264
Match Types
- Fix
derivesFromfalse negative inprovablyDisjointClasses#23834
Parser
- Improve message for nested package missing braces #23816
- Fix: Allow postfix setters under language.postfixOps #23775
- Fix Java record varargs field accessor #24172
Pattern Matching
- Fix: do not transform
IdenttoThisin PostTyper anymore #23899 - Call inhabited for AppliedType recursively #23964
- Fix false unreachable case warning #23800
- Add subtype-based fallback in inferPrefixMap and recalculate constraints after application #23771
Presentation Compiler
- Additional completions for using clause #23647
- Completions - do not add
[]for... derives TC@@#23811 - Improve symbol order in completions provided by the presentation compiler #23888
- Porting XRayModeHints #23891
- Go to definition and hover for named args in pattern match #23956
- Fix parameter untupling for named tuples (#23440) #24152
- Fix possible SuspendException thrown when using macros #24174
- Fix completions for named tuples #24169
Reporting
- Do not discard amended format when f-interpolator warns #23697
- Mention named givens in double def explainer #23833
- Compute the right span for abstract error messages #23853
- Add quick fix to add .nn #23598
- Add addendum to
private valparameter variance error message #23876 - Fix compiler crash with
-Ymagic-offset-header#24124
Rewrites
- Deduplicate patches before applying them to sources #24215
Scaladoc
- Indicate optional parameters with
= ...#23676 - Scaladoc Support for Capture & Separation Checking #23607
- Capture Calcuclus: don't eagerly drop caps on parameters #23759
- Fix rendering of function-type aliases #24042
SemanticDB
Tuples
- Fix: make vals created in desugaring of n-ary lambdas non-synthetic #23896
Typer
- Prevent crash in SAM conversion with mismatched arity #23877
- Handle assertion error in TyperState #23665
- Correctly require a
ClassTagwhen building a multidimensionalArray#23902 - Make isExactlyNothing and isExactlyAny work for And/OrTypes #24016
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.7.3..3.7.4 these are:
23 Wojciech Mazur
16 Som Snytt
11 noti0na1
6 Martin Odersky
5 Eugene Flesselle
4 Hamza Remmal
4 Natsu Kagami
4 Oliver Bračevac
4 Seyon Sivatharan
3 Piotr Chabelski
3 Tomasz Godzik
3 Yoonjae Jeon
3 dependabot[bot]
2 Jan Chyb
2 Kacper Korban
2 Katarzyna Marek
2 Li Haoyi
2 Matt Bovel
2 aherlihy
1 Florian3k
1 HarrisL2
1 Martin Duhem
1 Paweł Perłakowski
1 Vadim Chelyshov
1 Yichen Xu
1 Zieliński Patryk
1 katrinafyi
1 vder
1 zielinsky
3.7.4-RC3
Backported changes
- Lint avoids revisiting Inlined.call #24277
- Register no elements for lint after inlining #24279
- Use enclosing enclosingInlineds for empty call #24281
- Exclude synthetic opaque proxy from lint #24264
- Deprecate
scala_legacy/MainGenericRunner/scalac -run/scalac -replfor removal #24267
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.7.4-RC2..3.7.4-RC4 these are:
4 Wojciech Mazur
2 Piotr Chabelski
2 Som Snytt
3.7.4-RC2
Backported changes
- Always traverse Inlined.call in linter #24043
- Deduplicate patches before applying them to sources #24215
- Fix compiler crash with
-Ymagic-offset-header#24124 - Fix completions for named tuples #24169
- Fix java record varargs field accessor #24172
- Fix parameter untupling for named tuples (#23440) #24152
- Fix possible SuspendException thrown when using macros #24174
- Fix rendering of function-type aliases #24042
- Ignore warnings when compiletime.testing is imported #24036
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.7.4-RC1..3.7.4-RC2 these are:
5 Wojciech Mazur
2 Li Haoyi
2 Som Snytt
2 Tomasz Godzik
1 Florian3k
1 Kacper Korban
1 Oliver Bračevac
1 aherlihy
3.3.7
Highlights of the release
- Warn a standard interpolator used toString on a reference type with
-Wtostring-interpolated#20578 - Unblock Scala 3 on Android #22632
- Implement :jar (deprecate :require) in REPL #22343
- Linting rework: In selector check, prefix of reference must match import qualifier #20894
- Add REPL flag to quit after evaluating init script #22636
- Warn if implicit default shadows given with
-Wrecurse-with-default#23559
Other changes and fixes
Annotations
Coverage
- Make coverage more similar to the one in Scala 2 #23722
CI
- Disable Cats flaky tests #23007
- Switch releasing to Sontype Central instead of legacy Sonatype OSS #23290
- Revert dubious retry in vulpix #21801
Developer Experience
- Add support for running the
testsub-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 to avoid crashes #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
- 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
- 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 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
Presentation Compiler
- Compare span points in pathTo to determine best span #23581
- 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
- Add X-Ray Inlay Hints #23891
- Add using to completions when applicable #23647
- Do not add [] after
derives#23811
Quotes
- Fix issue with static
thisreferences 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
3.7.4-RC1
Highlights of the release
- Bump Scala CLI to v1.9.1 (was v1.9.0) #23962
- Make coverage more similar to the one in Scala 2 #23722
Other changes and fixes
Context Functions
- Explain no expansion of ContextFunction0 #23844
Experimental: Capture Checking
- Fix #23737: Update superCallContext to include dummy capture parameters in scope #23740
- Fix separation checking for function results #23927
- Simple enhancement for pattern matching with capturing types #23524
- Don't check bounds in match type cases at CC #23738
Experimental: Explicit Nulls
- Add warnings for inferred flexible types in public methods and fields #23880
Exports
- Refine isEffectivelyFinal to avoid no-owner crash #23675
Implicits
- Fix LiftToAnchors for higher-kinded type applications #23672
- Fix implicit scope liftToAnchors for parameter lower bounds #23679
Linting
- Invent given pattern name in for comprehension #23121
- Unused var message mentions unread or unset #23719
- Lint function arrow intended context function #23847
Match Types
- Fix
derivesFromfalse negative inprovablyDisjointClasses#23834
Parser
- Improve message for nested package missing braces #23816
- Fix: allow postfix setters under language.postfixOps #23775
Pattern Matching
- Fix: do not transform
IdenttoThisin PostTyper anymore #23899 - Call inhabited for AppliedType recursively #23964
- Fix false unreachable case warning #23800
- Add subtype-based fallback in inferPrefixMap and recalculate constraints after application #23771
Presentation Compiler
- Additional completions for using clause #23647
- Completions - do not add
[]for... derives TC@@#23811 - Improve symbol order in completions provided by the presentation compiler #23888
- Porting XRayModeHints #23891
- Go to definition and hover for named args in pattern match #23956
Reporting
- Do not discard amended format when f-interpolator warns #23697
- Mention named givens in double def explainer #23833
- Compute the right span for abstract error messages #23853
- Add quick fix to add .nn #23598
- Add addendum to
private valparameter variance error message #23876
Scaladoc
- Indicate optional parameters with
= ...#23676 - Scaladoc Support for Capture & Separation Checking #23607
- Capture Calcuclus: don't eagerly drop caps on parameters #23759
SemanticDB
Tuples
- Fix: make vals created in desugaring of n-ary lambdas non-synthetic #23896
Typer
- Prevent crash in SAM conversion with mismatched arity #23877
- Handle assertion error in TyperState #23665
- Correctly require a
ClassTagwhen building a multidimensionalArray#23902 - Make isExactlyNothing and isExactlyAny work for And/OrTypes #24016
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.7.3..3.7.4-RC1 these are:
12 Som Snytt
11 noti0na1
11 Wojciech Mazur
6 Martin Odersky
5 Eugene Flesselle
4 Hamza Remmal
4 Natsu Kagami
4 Seyon Sivatharan
3 Oliver Bračevac
3 Yoonjae Jeon
3 dependabot[bot]
2 Jan Chyb
2 Katarzyna Marek
2 Matt Bovel
1 HarrisL2
1 Kacper Korban
1 Martin Duhem
1 Paweł Perłakowski
1 Piotr Chabelski
1 Tomasz Godzik
1 Vadim Chelyshov
1 Yichen Xu
1 Zieliński Patryk
1 aherlihy
1 katrinafyi
1 vder
1 zielinsky
3.3.7-RC2
Backported fixes
- Backport: Make coverage more similar to the one in Scala 2 #23955
- Backport: latest Scala Presentation Improvements to 3.3.7 #23945. This includes X-Ray Inlay Hints, using completions, do not add [] after
derives. - Revert: "Check exhaustivity of any case class" to 3.3 LTS #23943
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.3.7-RC1..3.3.7-RC2 these are:
2 Tomasz Godzik
1 Jan Chyb
1 Vadim Chelyshov
1 Zieliński Patryk
1 vder
3.7.3
Release highlights
- Warn if implicit default shadows given #23559
- Standardize on
-Vprint:...(still support-Xprint:...as alias) #22828
Other changes and fixes
Desugaring
- Optimize simple tuple extraction #23373
Enums
- Make hashcode of enum items stable #23218
Erasure
- Replace erased class modifiers with Erased base traits #23447
- Bring back part of PruneErasedDefs #23466
Experimental: Capture Checking
- Fix parsing crash for update in later phases #23390
- Implement boxing for singleton type arguments #23418
- Expand Capability types also in arguments of Capability classes #23427
- Adjustments to the capability trilogy #23428
- Set context owner to the method for
paramsToCap#23436 - Flatten nested capture sets in retainedElementsRaw #23571
- Fix well-formed test for capabilities #23393
- Add restricted capabilities
x.only[C]#23485 - Rely on hidden sets for use checking #23580
Experimental: Separation Checking
- Make separation checking controlled by language import #23560
Experimental: Erased Definitions
- Refactorings and fixes to erased definition handling #23404
Experimental: Explicit Nulls
- Add quick fix to remove unnecessary .nn #23461
- Add
stableNullannotation to force tracking mutable fields #23528
Experimental: Global Initialization
- Rewrite resolveThis in global init checker #23282
- Fix errors in the global initialization checker when compiling bootstrapped dotty #23429
- Fix error in product-sequence match in global init checker #23480
Experimental: Into
- Fix isConversionTargetType test #23401
Experimental: Modularity
- Refinements to skolemizaton #23513
Experimental: Unroll
- Enable UnrollDefinitions phase in REPL frontend phases #23433
Extension Methods
- Avoid forcing extension on check of local select #23439
Implicits
- Refine implicit search fallbacks for better ClassTag handling #23532
Inline
- Fix Symbol.info remapping in TreeTypeMap #23432
- Fail not inlined inline method calls early #22925
- Fix inline export forwarder generation regression #23126
Linting
- Consider setter of effectively private var #23211
- Add accessible check for import usage #23348
- Check OrType in interpolated toString lint #23365
- Use result of lambda type of implicit in CheckUnused #23497
- Add suppression if nowarn differs #23652
Match Types
Named Tuples
- Skip bypassing unapply for scala 2 case classes to allow for single-element named tuple in unapply #23603
Parser
- Enforce
-new-syntaxunder-language:future#23443 - Disallow Scala 2 implicits under
-source:future#23472
Pattern Matching
- Fix problems in checking that a constructor is uninhabited for exhaustive match checking #23403
Pickling
- Don't force annotation unpickling when testing for SilentIntoAnnot #23506
- Drop invalid assumption from TastyUnpickler #23353
Printer
- Print update modifier when printing update method definitions #23392
Positions
- Compare span points in pathTo to determine best span #23581
- Add line number magic comment support #23549
Presentation Compiler
- Port Inlay hints for name parameters #23375
- Fix: Simplify infer type for apply #23434
- Fix: Inconsistent annotation tooltips #23454
- Fix adjust type when already exists #23455
- Exclude named parameters inlay hints for java defined #23462
- Fix: StringIndexOutOfBoundsException in presentation compiler's hasColon method #23498
- Add InferredMethodProvider for automatic method signature generation #23563
- Fix completions for Quotes #23619
- Handle default arguments in named parameters for inlay hints #23641
- Fix issue with pc breaking in requiredMethod on newly overloaded valueOf #23708
- Handle default arguments in named parameters for inlay hints #23641
- Fix extracting refinements from intersection types in dynamic select hovers #23640
Quotes
- Skip splice level checking for
<refinement>symbols #22782 - Fix stale top level synthetic package object being used in later runs #23464
- Emit an error for quoted pattern type variable after
new#23618 - Fix issue with certain polyfunctions not properly matching in macros #23614
- Check PCP of constructor calls on the type #7531
Reflection
- Quotes reflect: sort the typeMembers output list and filter out non-members #22876
Reporting
- Add an explainer to the DoubleDefinition error #23470
- Suppress warnings in comprehensions with 22+ binds #23590
- Unhelpful error message when trying to use named extraction, when not matching case class or named tuple #23354
- Improve error message for conflicting definitions #23453
-Yprofile-traceproperly report macro splicing source #23488-Yprofile-traceprofiles all inline calls #23490
Rewrites
Runner
- Bump Scala CLI to v1.9.0 (was v1.8.4) #23702
Scaladoc
- Scaladoc: fixes and improvements to context bounds and extension methods #22156
- Encode path of class #23503
SemanticDB
- Bugfix: Also save infos in semanticdb #23587
Transform
- Handle multiple type parameter lists in value class methods #23516
- Check path of module prefix for tailrec #23491
Tuples
- Normalize tuple types in var args seq literals and classOf instances #23465
Typer
- Fix #22922: Add TypeParamRef handling in isSingletonBounded #23501
- Fix this references everywhere in dependent function types #23514
- Don't approximate a type using
Nothingas prefix #23531 - Support cleanup actions in class completers #23515
- Fix regressions in asSeenFrom introduced in 3.7 #23438
- Use correct owner in eta expansion #7564
- Fix irrefutability checking in
forwith untupling #23273 - Fix missing members reporting for var setter...
3.7.3-RC3
3.3.7-RC1
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
testsub-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
thisreferences 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 ...