3.7.2-RC1
Pre-release
      Pre-release
    
        
          ·
          
            9696 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::eqandAnyRef::neas infix instead of special casing when emitting the warning #23252 - Mark 
eqandnein 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 
muttoupdate#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 
@useand@consumeannotations to parameter types #23324 - Fix handling of 
@useand@consumein 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 
intoscheme 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 
extensiondefinition #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-givenflag 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.typeinValueOf#23094 - Hide constructor proxies at PostTyper #23269