3.7.2-RC1
Pre-release
Pre-release
·
129 commits
to main
since this release
Highlights of the release
- Implement applied constructor types #22543
- Bump Scala CLI to v1.8.1 (was v1.8.0) #23334
- Support for URLs in using file directives
- See full Scala CLI changelog
Other changes and fixes
Documentation
- Mark
AnyRef::eq
andAnyRef::ne
as infix instead of special casing when emitting the warning #23252 - Mark
eq
andne
in Predef asinfix
#23255
Experimental: Capture Checking
- Allow caps in result types of functions to be mapped to reaches #23275
- Adapt types according to read-only status #23332
- Rename
mut
toupdate
#23335 - Change retains annotation from using term arguments to using type arguments #22909
- New Syntax for Capture Variables and Explicit Capture Polymorphism v3 #23063
- Fix #23223: Add handling for classes deriving from Capability during Setup #23248
- Copy
@use
and@consume
annotations to parameter types #23324 - Fix handling of
@use
and@consume
in class parameters #23342 - Some usability improvements relating to errors #23370
- Loosen the "does not match previously inferred" criterion #23067
- Use level checking for Fresh instances #23101
- Ensure all capture variables carry the attachment #23162
- Cache ResultCaps #23198
- Move separation checking to
-source:3.8
#23249 - Refactorings for CC error reporting #23260
- Standardize on log-based undo #23357
- Flag nonsensical capturing types with pure parents as errors #23367
Experimental: Erased Definitions
- Erased fields are not nullable #23311
Experimental: Explicit Nulls
- Relax comparison between Null and reference types in explicit nulls #23308
- Warn about unnecessary uses of .nn #23327
Experimental: Global Initialization
- Modified abstract domain in global initialization checker #23138
Experimental: Into Modifier
- Change
into
scheme to be fully type-based #23014
Implicits
- Try extensions for arguments with type mismatch error #23212
Linting
- Improve checking LHS of Assign #22977
- Remove premature caching of lookups for unused lint #22982
- Enclosing package p.q not visible as q #23069
- Mention extension in unused param warning #23132
- Improve Unit ascription escape hatch #23147
- Dealias for unused param check #23256
- Take inferred or explicit refinement result for unused check #23325
- Nowarn receiver of extension taking params #23351
- Improved edit span for import #23083
Parser
- Fix incorrect warning with -no-indent #23216
- Patvar: adjust caret in error message #23115
- Disallow empty parameter clauses in
extension
definition #23143
Pattern Matching
- Improve GADT reasoning for pattern alternatives #23205
Pickling
- Try to handle SkolemTypes in SingletonTypeTree during pickling #23236
- Avoid creating constructors where not warranted #23178
Presentation Compiler
- Use untpd.Tree instead of tpd.Tree for SelectionRangeProvider #22702
- Fix completion mode filtering + optimize scopeCompletions #23172
- Handle multiple params lists in for infer type #23197
- Add jpath to VirtualFile (for pc) #23203
- Add selection ranges for more names #23257
- Add inlay hints for by-name parameters #23283
- Implement code action 'convert to named lambda parameters' #22799
- Buffix: Make PC actions work for re-exported symbols #22722
- Bugfix: Fix enumeration issues when Value is imported #23124
- Bugfix: Check in the collector for empty arrays #23341
- Bugfix: Don't check scope members if not needed #23384
- Improvement: Don't dealias named tuples for type hints #23013
- Improvement: Simplify match types when possible #23146
- Improvement: Improve efficiency of completions #23355
- Improvement: Cache compilation on . and don't add CURSOR #23356
Private Options
- Add an
-Yimplicit-to-given
flag for rewrites to easily test changes in the ecosystem #22580 - Add
scala.language.2.13
#23219
Rewrites
- Remove empty parentheses when rewriting implicits to givens #23339
Quotes
- Preserve implicits in Quotes context #23263
- Don't StackOverflow when printing RecursiveType structure. #22859
Reflection
- Forbid
StringConstant(null)
#23064
Reporting
- Fix incorrect warning on type ascription for backquoted identifiers #23088
- Improve position of deprecation #23052
- Have a better error message when context bounds are not allowed #23190
- Avoid false warning when synthesising deferred givens #23087
- Fix insufficient number width allocated when using
-print-lines
#23336
SemanticDB
- Fix SemantiDB production of method signature with shadowed parameters #23161
- Check if symbol exists before calling methods on it #23376
Settings
- Filter allowed source versions by import and by settings #23215
Tooling
- Suggest to add using as a code action #23079
Transform
- Warn trivial recursion with module prefix #23278
- Partial function synthesis changesOwner of selector #23337
Typer
- Compare TypeVar and TypeParamRef in mergeRefinedOrApplied #23045
- Revert recent changes to opaque type proxy generation #23059
- 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
- Tweak parameter dependency test when typing applications #23346
- Ensure pt span exists in implicitParams migration #23372
- Check for error before checking members of product type in getUnapplySelectors #23358
- Synthesise value of
this.type
inValueOf
#23094 - Hide constructor proxies at PostTyper #23269