3.1.3
Highlights of the release
- f-interpolator: Scala 2 parity and bugfixes #13367
- Show inlined positions with source code on errors #14002
- Add reflect
ClassDef.apply
andSymbol.newClass
#14124 - Add experimental
TupledFunction
#14414
Other changes and fixes
Backend
- Filter out static forwarders for Java package private methods #14662
- Emit all classes as public to avoid object deserialization issues #14686
- Upgrade to ASM 9.2 #14711
Desugaring
- Adapt function arguments to n-ary prototype #14651
Erasure
- Don't optimize explicitly written isInstanceOf tests away. #14715
Exports
GADT
- Fix #14726: call exclusiveLower before addLess during unification #14727
- Avoid unsound GADT constraints derived from subtyping relations between singletons and refined types #14728
- Keep correct kind when preparing constraint in
stripParams
#14761
Initialization
- Add special case to init checker to always allow certain methods #14352
Implicits
- Avoid unnecessary under-constrained implicit searches #14353
- Prevent implicit conversion chaining #14750
- Fix hasKnownMembers #14762
Match types
- Fix #13855: Chaining Match Types fails at value level #14354
- Constrain pattern types when typing a match type case #14563
- Fix bounds of match type cases #14645
- More aggressive reduction of type selection (fixes parboiled2) #14987
- Relax avoidance checks more for match type reduction #15036
- Re-establish missing symbol from previous phase (in one specific case) #15295
Metaprogramming
- Allow nested Quotes with a different owners #13652
- Add typed versions of
Mirror.ProductOf#fromProduct
#14114 - Fix #14393: foldOver in default TreeAccumulator can't process Typed nodes #14396
- Fix invariant quote type holes #14425
- Make singleton operations covariant #14452
- Find inline calls inserted in synthetic members #14480
- Don't generate
Mirror.Sum
for simple enum cases #14525 - Collect all local class definitions #14528
- Only make the staged parts of a quote inlineable #14604
- Tolerate some faults when copying trees in
InlineTreeMap
#14674 - Handle this prefix in objects (in quote patterns) #14732
- Detect when position is not in known source #14801
- Handle
SummonFrom
in reflectTreeAccumulator
#14809 - Handle situation where an inline info cannot be computed #14827
Opaque Types
- Disallow overriding opaque type aliases #14665
- Disallow private opaque type aliases #14666
- Generate opaque proxies also for base classes #14668
Parser
- Accept supplementary Unicode characters #13136
- Don't compute indents when in a string #14441
- Parse empty arguments in (invalid)
Apply
more often #14463 - Expand span errorTermTree to include skipped span. #14492
- Fix lookahead logic in Scanner #14562
- Add private inteface methods parsing in JavaParser #14643
- Reject postfix ops already in Parser #14677
- Syntax error recovery #14695
Pattern matching
- For generic tuples, call
Tuples.apply
instead of_1/_2/..
#14296 - Preserve the intersection of disjoint numbers in match analysis #14550
- Fix casting of generic tuple selection #14590
- Ignore private/sealed abstract class/traits #14599
- Drop special treatment for Scala-2 code in unapply #14766
Pickling
- Disable type simplify in unpickler #14506
- Check if package names will be encoded in desugar #14597
- Fix picking default syntax for comments #14725
- Fix lack of type avoidance in argument lifting #15229
Refchecks
- Don't skip override tests when overridden is
AbsOverride
#14527 - Extend "cannot override mutable variable" restriction to deferred var… #14724
Repl
- Avoid stale import context during REPL parsing #14493
- Fix #11202: Incorrect highlight for type constructor #14518
- Make empty catch an incomplete. #14519
- Add in feedback when resetting REPL state #14521
- Fix #14535: End marker now has the same color as its definition in repl #14555
- Add backticks when needed in completions #14594
- Autocomplete repl commands #14627
- Harden REPL in presence of values that fail to initialize #14702
Reporting
- Change error message text from "fully-initialized" to "fully initialized" #14400
- Improve -explain rendering #14357
- Propagate unreported features when flushing a reporter #14503
- Avoid using
·
character #14453 - Fix explain rendering with Windows EOL #14456
- Fix #14576: Ensure unreported warning summaries are also emitted via sbt-bridge #14602
- Add context to safe-init warnings for inlined methods #14646
- Show unique ids of pattern bound symbols #14716
- Don't replace typevars by their f-bounds in error messages #14723
- Error message improvement for illegal access extension methods #14730
- Warn on misleading indentation in single-case catch #14738
- Use correct ErrorMessageID for EmptyCatchOrFinallyBlock #14786
- Correct highlight interpolation in explain message #14802
Don't issue implicit errors if parameter has default value #14849
Typer
- Fix approximating RefinedTypes (n>1) #14361
- Allow override
protected[C]
in companion #14105 - Hide
apply
generated for rotected case class constructor #14266 - Infer parameters of eta applications with vararg parameters #14397
- Keep softness when widening unions #14399
- Fix #11008: Support generic tuples as a valid unapply result #14434
- Fix
TreeTypeMap
to correctly substitute type parameters #14537 - Handle ownership changes in
InlineTyper
#14568 - Handle more corner cases in
etaReduce
#14628 - Remove false unchecked warnings on refined types #14703
- Fix hoisting local symbols #14714
- Fix desugaring empty argument blocks in normArgs #14719
- Improve overloading resolution if expected type is not FunProto #14733
- Don't force
LazyRefs
when computingDepStatus
#14774 - Avoid NPE in simplify #15310
- Eta expand export forwarders that have context function types #15217
- Partially revert #14026 - Fixes 4 regressions #15343
Explicit nulls
- Fix override containing type param #13975
- Fix case null on non-nullable type in unsafe null #13976
- Thread context through block in transforms correctly and efficiently #14523
- Fix intercept
TypeApply
#14617 - Fix #14682: fix overriding check in mergeSingleDenot #14755
IDE Support
- Fix
contextOfPath
forTemplate
#12783 - Search all source trees for a given span #14436
- Set zero span for synthetic enum import selector #14498
- Set zero span for synthetic tuple type #14499
- Set proper position for ValDefs generated from tuples #14513
- Provide signature help for unapply methods #14611
- Add completions for specific MatchType cases #14639
- Support backticked imports in completions #14649
- Change completions filtering to now include package module classes #14756
Scaladoc
- Correctly handle context functions #14371
- Fix rendering dependent function types #14327
- Unescaped special characters in Quotes documentation #14377
- Refactor static site loading and directory structure #14378
- Make member filtering case-insensitive #14430
- Add member position IDs to anchors in searchbar #14454
- Repair links #14475
- Follow renames in content contributors script #14478
- Change default blog directory to
blog
#14485 - Refactor generation configuration in sbt. Generate reference documentation using Scaladoc #14489
- Fix issues with incorrect external links and special characters #14516
- Grouping entries in searchbar. Add hints to searchbar #14539
- Fix #14481: certain functions not being shown in searchbar #14546
- Fix function
classpathArgs()
#14559 - Add necessary parentheses in function types #14565
- Fix groupping entries using markdown syntax #14577
- Add table of content to static sites #14607
- Allow to set a comment syntax based on path to source #14650
- Tweak Language Reference documentation #14669
- Don't add extra newlines when there aren't extra sections in doc markdown #14734
- Fix regression with extension methods not being shown in searchbar #14779
- Fix snippets hiding and buttons animation #14839
SemanticDB
Other
- Kotlin interop: Find nested class if
InnerClass
entry is missing #14426 - Add 3.2 language mode internally, treat it like 3.0, 3.1 #14690
- Add -h to alternatives for -help #14792
- Avoid overeager completion of Java annotations in classfile parser #15185
- Implement scalac script in Scala #15212
- Fix #15220: Windows scripts do not delegate to MainGenericRunner #15325
Contributors
Thank you to all the contributors who made this release possible 🎉
According to git shortlog -sn --no-merges 3.1.2..3.1.3
these are:
66 odersky
48 Nicolas Stucki
38 Filip Zybała
36 Martin Odersky
29 noti0na1
27 Som Snytt
24 Dale Wijnand
19 Anatolii Kmetiuk
19 Chris Kipp
18 Paweł Marks
17 Rikito Taniguchi
13 Xavientois
13 Tom Grigg
12 Jan Chyb
11 Guillaume Martres
8 Jamie Thompson
8 Matt Bovel
6 Tomasz Godzik
5 Michael Pilquist
5 rochala
4 adampauls
4 Kacper Korban
3 Sébastien Doeraene
3 Andrzej Ressel
3 Olivier Blanvillain
3 Phil
3 Seth Tisue
2 Stéphane Micheloud
2 Yichen Xu
2 Arman Bilge
2 Julien Richard-Foy
2 Adrien Piquerez
1 ireina7
1 Alexander Ioffe
1 Jentsch
1 Jędrzej Rochala
1 Michał Pałka
1 Ondrej Lhotak
1 Pascal Weisenburger
1 Quentin Bernet
1 Ruslan Shevchenko
1 SrTobi
1 Stephane MICHELOUD
1 Vadim Chelyshov
1 Vasil Vasilev
1 bjornregnell
1 ghostbuster91
1 som-snytt
1 Łukasz Wroński