Highlights of the release
Other changes and fixes
Backend
- Set ACC_FINAL access flag to final variable accessors #15707
Coverage
- Avoid instrumentation of inline and erased definitions #15504
Erasure
Extension Methods
- Merge nested polytypes in more cases in resolveOverloaded #15636
GADTs
- Fix GADT casting when typing if expressions #15646
- Use GADT constraints in maximiseType #15544
- Add the expected type to Poly's desugaring #15570
- Allow refineUsingParent to infer GADT bounds #15706
- Avoid leaking internal types in GadtConstraint.approximation #15558
- Improve GADT usage tracing for MatchType reduction #15872
- Add
gadtAddBound
to ExplainingTypeComparer tracing #15819 - Avoid adding
NoSymbol
to gadt constraints inTypeOps.instantiateToSubType
#15965
IDE Support
Initialization
- Fix #15465: Use resolveThis for outerSelect resolution #15606
- Fix #15459: Display uninitialized fields in promotion error #15488
- Fix #15363: Improve error messages for leaking of this #15364
- Make sure inner classes are checked first #15527
- Handle super accessors in initialization checker #15703
Inline
- Check is inline unapply has leading implicits #15583
- Fix #15374: Make sure prefix of outer select has the correct class symbol #15592
Java Interoperability
- Don't check import selectors for Java code #15617
JS Interoperability
- Fix #15701: Implement js.dynamicImport for dynamic module loading. #15720
- Implement support for js.
new
.target. #15734 - Fix #14488: Scala.js: Add compiler support for scala.Enumeration. #15770
Match Types
- Avoid null types when reducing match types #15748
- Avoid references to unbound parameters in applied type patterns #15710
Nullability
- Fix checking ctx to carry correct modes #15350
Pattern Matching
- Teach provablyDisjoint to handle FromJavaObject #15769
- Don't trust case class extractors with explicit type arguments #15669
- Space: Fix how sealed abstract classes decompose #15553
- Local classes are uncheckable (type tests) #15134
- Fix ValDef span assignment in PatternMatcher #15783
- Reject all explicitly written type references with bad bounds #15577
Pickling
- Make simplify replace type parameters inside method types #15430
Quotes
- Ignore types in macro runtime dependencies #15529
REPL
- ReplDriver.run and :load take complete input #15811
- REPL goes through a phase #15663
- Avoid assertion failure for illegal trait inheritance #15631
Reporting
- Underline assignment correctly in error message #15584
- Better error message for "implicit search must be more specific" #15747
- Provide better info on compiler crashes #15890
SemanticDB
- Handle colons in file names when producing SemanticDB #15863
Standard Library
- Fix
throwReturn
ofNonLocalReturns
to allow wider usage #15495 - Update Scala 2 library dependency to 2.13.10 #16074
Tooling
- Fix scala runner exit codes #15604
- Command line parser respects outer escaped quote #15497
- Added quotes to Scala home paths in scala and scalac scripts #15824
- Retain partial type params typying information on error #15825
Transform
- Implementation restriction: No partial functions with CFT results #15744
- Fix treatment of parameter selections via this in constructors. #15737
- Fix expansion and unexpansion of mixin qualified names #15712
- Fix #15514 in Parser #15524
- Check type arguments for bad bounds #15571
Typer
- Fix swapKey #15894
- Insert GADT casts for needy match types #15851
- Add missing dealias in isContextFunctionRef #15742
- Look for synthetic applies also under type applications #15572
- Optimize isSameType for invariant applied types with the same structure #15556
- Fix cycle detection for type aliases with wildcard arguments #15508
- Handle recursions in isFullyDefined #15443
- Do level checking on instantiation #15746
- Use fullyDefinedType for mirror synthesis #15814
- Instantiate more type variables to hard unions #15632
- Simplify level fixing scheme #15936
- Don't normalize in
AppliedType#superType
#15453 - Try promotion while widening arguments #15467
- Check import selectors at Typer #15477
- Turn some calls to
underlying
intosuperType
. #15455 - Find more looping implicits #15481
- Fix
findFunctionType
forOrTypes
#15478 - Fix looping implicits check #15655
- Try to avoid static symbols if leaving them would make a leak #15548
- Do not fold
IsConst
applied to dependent parameters #15759 - Only look for synthetic applies under
TypeApply
with inferred arguments #15970 - Improvements for implicit searches with top-level type variables #16001
- Better types for class type parameters #15951
- Fix tuple casting #16113
- Be even more careful when combining argument and info in
computeAsSeenFrom
#16070 - Be still more careful when computing denotations of class parameters #16112
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.2.0..3.2.1
these are:
215 Martin Odersky
94 Filip Łukasik
69 Fengyun Liu
57 Filip Zybała
31 Dale Wijnand
16 Paweł Marks
14 Sébastien Doeraene
10 Guillaume Raffin
9 rochala
8 Chris Kipp
8 Som Snytt
7 Jędrzej Rochala
7 Nicolas Stucki
7 Yichen Xu
6 Jamie Thompson
6 Tom Grigg
5 Kacper Korban
5 noti0na1
2 Arman Bilge
2 Matt Bovel
2 Ondrej Lhotak
2 Quentin Bernet
2 Seth Tisue
2 Tomasz Godzik
1 Adrien Piquerez
1 Florian3k
1 Gagandeep Kalra
1 Jentsch
1 Kieren Davies
1 Michał Pałka
1 Naveen
1 Oron Port
1 Rubin Simons
1 Wojciech Mazur
1 esteban marin
1 naveen