3.3.0
Highlights of the release
- Stabilize new lazy vals #16614
- Experimental Macro annotations #16392 #16454 #16534
- Fix stability check for inline parameters #15511
- Make
fewerBraces
a standard feature #16297 - Add new front-end phase for unused entities and add support for unused imports #16157
- Implement -Wvalue-discard warning #15975
- Introduce boundary/break control abstraction. #16612
Other changes and fixes
Annotations
- Support use-site meta-annotations #16445
Desugaring
- Reuse typed prefix for
applyDynamic
andapplyDynamicNamed
#16552 - Fix object selftype match error #16441
Erasure
- Dealias before checking for outer references in types #16525
- Fix generic signature for type params bounded by primitive #16442
- Avoid EmptyScope.cloneScope crashing, eg on missing references #16314
GADTs
- Inline GADT state restoring in TypeComparer #16564
- Add extension/conversion to GADT selection healing #16638
- Split out immutable GadtConstraint #16602
- Avoid bidirectional GADT typebounds from fullBounds #15683
Incremental compilation
- Unpickle arguments of parent constructors in Templates lazily #16688
Initialization
Inline
- Dealias in ConstantValue, for inline if cond #16652
- Set Span for top level annotations generated in PostTyper #16378
- Interpolate any type vars from comparing against SelectionProto #16348
- Handle binding of beta reduced inlined lambdas #16377
- Do not add dummy RHS to abstract inline methods #16510
- Warn on inline given aliases with functions as RHS #16499
- Support inline overrides in value classes #16523
Java interop
- Represent Java annotations as interfaces so they can be extended, and disallow various misuses of them #16260
Linting
- Fix -Wunused:import registering constructor
<init>
instead of its owner (also fix false positive for enum) #16661 - Fix #16675 : -Wunused false positive on case class generated method, due to flags used to distinguish case accessors. #16683
- Fix #16682: CheckUnused missed some used symbols #16690
- Fix "-Wunused: False positive on parameterless enum member" #16927
- Register usage of symbols in non-inferred type trees in CheckUnused #16939
- Traverse annotations instead of just registering in -Wunused #16956
- Ignore parameter of accessors in -Wunused #16957
- Ignore parameter of accessors in -Wunused #16957
- Improve override detection in CheckUnused #16965
- WUnused: Fix unused warning in synthetic symbols #17020
- Fix WUnused with idents in derived code #17095
- WUnused: Fix for symbols with synthetic names and unused transparent inlines #17061
- Skip extension method params in WUnused #17178
- Fix wunused false positive when deriving alias type #17157
- Fix WUnused for accessible symbols that are renamed #17177
- Fix WUnused false positive in for #17176
- Make CheckUnused run both after Typer and Inlining #17206
- Disable WUnused for params of non-private defs #17223
- Wunused: Check if symbol exists before
isValidMemberDef
check #17316 - Wunused: Include import selector bounds in unused checks #17323
- Fix compiler crash in WUnused #17340
Opaque Types
- Delay opaque alias checking until PostTyper #16644
Overloading
- Handle context function arguments in overloading resolution #16511
Parser
- Improve support for Unicode supplementary characters in identifiers and string interpolation (as in Scala 2) #16278
- Require indent after colon at EOL #16466
- Help givens return refined types #16293
Pattern Matching
- Tweak AvoidMap's derivedSelect #16563
- Space: Use RHS of & when refining subtypes #16573
- Freeze constraints in a condition check of maximiseType #16526
- Restrict syntax of typed patterns #16150
- Test case to show that #16252 works with transparent #16262
- Support inline unapplySeq and with leading given parameters #16358
- Handle sealed prefixes in exh checking #16621
- Detect irrefutable quoted patterns #16674
- Patmat: Use less type variables in prefix inference #16827
Pickling
- Allow case classes with up to 254 parameters #16501
- Correctly unpickle Scala 2 private case classes in traits #16519
Polyfunctions
Quotes
- Remove contents of inline methods #16345
- Fix errors in explicit type annotations in inline match cases #16257
- Handle macro annotation suspends and crashes #16509
- Fix macro annotations
spliceOwner
#16513 - Fix HK quoted pattern type variables #16907
REPL
- REPL: Fix crash when printing instances of value classes #16393
- Attempt to fix completion crash #16267
- Fix REPL shadowing bug #16389
- Open up for extensibility #16276
- Don't crash if completions throw #16687
Reflection
Reporting
- Suppress follow-on errors for erroneous import qualifiers #16658
- Fix order in which errors are reported for assignment to val #16660
- Fix class name in error message #16635
- Make refined type printing more source compatible #16303
- Add error hint on local inline def used in quotes #16572
- Fix Text wrapping #16277
- Fix #16680 by registering Ident not containing a symbol #16689
- Fix the non-miniphase tree traverser #16684
- Just warn on type ascription on a pattern #17454
Scala-JS
Scaladoc
- Added jpath check to
ClassLikeSupport
getParentsAsTreeSymbolTuples #16759
Standard Library
- Add
CanEqual
instance forMap
#15886 - Refine
Tuple.Append
return type #16140 - Remove experimental from
Mirror#fromProductTyped
#16829
TASTy format
- Make it a fatal error if erasure cannot resolve a type #16373
Tooling
- Add -Yimports compiler flag #16218
- Allow BooleanSettings to be set with a colon #16425
- Add support for disabling redirected output in the REPL driver for usage in worksheets in the Scala Plugin for IntelliJ IDEA #16810
- Fix #17187: allow patches with same span #17366
Transform
- Avoid stackoverflow in ExplicitOuter #16381
- Make lazy vals run on non-fallback graal image - remove dynamic reflection #16346
- Patch to avoid crash in #16351 #16354
- Don't treat package object's
<init>
methods as package members #16667 - Space: Refine isSubspace property & an example #16574
- Fix static lazy field holder for GraalVM #16800
- Fix race condition in new LazyVals #16975
Typer
- Drop requirement that self types are closed #16648
- Disallow constructor params from appearing in parent types for soundness #16664
- Don't search implicit arguments in singleton type prefix #16490
- Don't rely on isProvisional to determine whether atoms computed #16489
- Support signature polymorphic methods (
MethodHandle
andVarHandle
) #16225 - Prefer parameterless alternatives during ambiguous overload resolution #16315
- Fix calculation to drop transparent classes #16344
- Test case for issue 16311 #16317
- Skip caching provisional OrType atoms #16295
- Avoid cyclic references due to experimental check when inlining #16195
- Track type variable dependencies to guide instantiation decisions #16042
- Two fixes to constraint solving #16353
- Fix regression in cyclic constraint handling #16514
- Sharpen range approximation for applied types with capture set ranges #16261
- Cut the Gordian Knot: Don't widen unions to transparent #15642
- Fix widening logic to keep instantiation within bounds #16417
- Skip ambiguous reference error when symbols are aliases #16401
- Avoid incorrect simplifications when updating bounds in the constraint #16410
- Take
@targetName
into account when resolving extension methods #16487 - Improve ClassTag handling to avoid invalid ClassTag generation and inference failure #16492
- Fix extracting the elemType of a union of arrays #16569
- Make sure annotations are typed in expression contexts #16699
- Throw a type error when using hk-types in unions or intersections #16712
- Add missing criterion to subtype check #16889
- Fix caching issue caused by incorrect isProvisional check #16989
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.2.2..3.3.0
these are:
226 Martin Odersky
106 Szymon Rodziewicz
81 Dale Wijnand
56 Nicolas Stucki
52 Paul Coral
48 Kamil Szewczyk
45 Paweł Marks
28 Florian3k
28 Yichen Xu
15 Guillaume Martres
10 Michał Pałka
9 Kacper Korban
8 Fengyun Liu
7 Chris Birchall
7 rochala
6 Sébastien Doeraene
6 jdudrak
5 Seth Tisue
5 Som Snytt
5 nizhikov
4 Filip Zybała
4 Jan Chyb
4 Michael Pollmeier
4 Natsu Kagami
3 Anatolii Kmetiuk
3 Jamie Thompson
2 Adrien Piquerez
2 Alex
2 Dmitrii Naumenko
2 Lukas Rytz
2 Michael Pilquist
2 Vasil Vasilev
2 adampauls
2 yoshinorin
1 Alexander Slesarenko
1 Chris Kipp
1 Guillaume Raffin
1 Jakub Kozłowski
1 Jan-Pieter van den Heuvel
1 Julien Richard-Foy
1 Kenji Yoshida
1 Matt Bovel
1 Mohammad Yousuf Minhaj Zia
1 Philippus
1 Szymon R
1 Tim Spence
1 s.bazarsadaev