github scala/scala3 3.3.7

5 days ago

Highlights of the release

  • Warn a standard interpolator used toString on a reference type with -Wtostring-interpolated #20578
  • Unblock Scala 3 on Android #22632
  • Implement :jar (deprecate :require) in REPL #22343
  • Linting rework: In selector check, prefix of reference must match import qualifier #20894
  • Add REPL flag to quit after evaluating init script #22636
  • Warn if implicit default shadows given with -Wrecurse-with-default #23559

Other changes and fixes

Annotations

  • Approximate annotated types in wildApprox #22893
  • Fix copy of annotation on @main methods #22582

Coverage

  • Make coverage more similar to the one in Scala 2 #23722

CI

  • Disable Cats flaky tests #23007
  • Switch releasing to Sontype Central instead of legacy Sonatype OSS #23290
  • Revert dubious retry in vulpix #21801

Developer Experience

  • Add support for running the test sub-command with the bisect script #22796

Documentation

  • Improve the usage of inclusive language #22360
  • Update indentation.md to fix a typo #23505

Enums

  • Make hashcode of enum items stable #23218

Erasure

  • Add regression test for #23616 #23623
  • Disallow context function types as value-class parameters to avoid crashes #23015
  • Handle type aliases in contextFunctionResultTypeAfter #21517
  • Align erasure of Array[Nothing] and Array[Null] with Scala 2 #22517

Experimental: Erased definitions

  • Erased fields are not nullable #23311

Implicits

  • Refine implicit search fallbacks for better ClassTag handling #23532
  • Try extensions for arguments with type mismatch error #23212

Inline

  • Fix Symbol.info remapping in TreeTypeMap #23432

Lambda Lift

  • Fix: treat static vals as enclosures in lambdalift #22452
  • Fix: record calls to constructors in lambdaLift #22487

Linting

  • Check OrType in interpolated toString lint #23365
  • Consider setter of effectively private var #23211
  • Nowarn receiver of extension taking params #23351
  • Dealias when looking into imports #22889
  • Revert unconditional lint of Inlined expansion #22815
  • Warn unused member of anonymous class #22729
  • No warning for parameter of overriding method #22757
  • Lazy val def member is pattern var #22750
  • Ignore params to default arg getters #22749
  • Restore resolving prefixes of implicit Ident #22751
  • Exclude synthetic this.m, Any.m from import lookup #22695
  • Nowarn public implicit val class params #22664
  • Don't warn retainedBody #22510
  • Suppress spurious Suppression #22383
  • Handle Typeable #22663
  • CheckUnused checks span.exists before testing its parts #22504
  • Process Export for unused check #22984
  • Enclosing package p.q not visible as q #23069
  • Remove premature caching of lookups for unused lint #22982
  • Improve checking LHS of Assign #22977
  • Improve Unit ascription escape hatch #23147
  • Mention extension in unused param warning #23132
  • Dealias for unused param check #23256
  • Take inferred or explicit refinement result for unused check #23325
  • Add accessible check for import usage #23348
  • Use result of lambda type of implicit in CheckUnused #23497

Match Types

  • Handle NoType in TypeComparer.disjointnessBoundary #21520
  • Distinguish 0.0 and -0.0 in ConstantType match types #23265

Metaprogramming

  • Add a check for correct Array shape in quotes.reflect.ClassOfConstant #22033

Opaque Types

  • Fix stack overflow errors when generating opaque type proxies #22479

Optional Braces

  • Correctly detect colon lambda eol indent for optional brace of argument #22477

Overloading

  • Fail compilation if multiple conflicting top-level private defs/vals are in the same package #22759

Parser

  • Allow observing an indent after conditional #22611
  • No outdent at eof #22435
  • Fix annotations not expected in the middle of an array type by java parser #22391
  • Fix incorrect warning with -no-indent #23216

Pattern Matching

  • Fix issue in lazy symbol completion or bug in nested classfile parser #23634
  • Fix existing GADT constraints with introduced pattern-bound symbols #22928
  • Avoid crash in uninhab check in Space #22601

Pickling

  • Try to handle SkolemTypes in SingletonTypeTree during pickling #23236

Presentation Compiler

  • Compare span points in pathTo to determine best span #23581
  • Fix: Fix extracting refinements from intersection types in dynamic select hovers #23640
  • Completions for requests just before string #22894
  • Add enum type param support in sourceSymbol #18603
  • Use untpd.Tree instead of tpd.Tree for SelectionRangeProvider #22702
  • Fix: handle multiple params lists in for infer type #23197
  • Fix completion mode filtering + optimize scopeCompletions #23172
  • Add selection ranges for more names #23257
  • Add inlay hints for by-name parameters #23283
  • Add jpath to VirtualFile (for pc) #23203
  • Add X-Ray Inlay Hints #23891
  • Add using to completions when applicable #23647
  • Do not add [] after derives #23811

Quotes

  • Fix issue with static this references erroring in quoted code #22618
  • Skip splice level checking for symbols #22782
  • Fix stale top level synthetic package object being used in later runs #23464

REPL

  • REPL: JLine 3.29.0 (was 3.27.1) #22679
  • REPL: emit warning for the :sh command #22694

Reflection

  • Fix regression: do not approximate prefixes when using memberType in reflect API #22448
  • Forbid StringConstant(null) #23064
  • Quotes reflect: sort the typeMembers output list and filter out non-members #22876

Reporting

  • Register nowarn when inlining #22682
  • Filter help renders box border #22434
  • Fix incorrect warning on type ascription for backquoted identifiers #23088
  • Add an explainer to the DoubleDefinition error #23470

Scaladoc

Settings

  • Chore: filter allowed source versions by import and by settings #23215

Transform

  • Check only stable qual for import prefix #22633
  • Warn trivial recursion with module prefix #23278

Tuples

  • Normalize tuple types in var args seq literals and classOf instances #23465

Typer

  • Generalize "Don't approximate a type using Nothing as prefix" #23628
  • Don't approximate a type using Nothing as prefix #23531
  • Tighten condition to preserve denotation in IntegrateMap #23060
  • Disallow context bounds in type lambdas #22659
  • Revert the PolyType case in #21744 #22820
  • Fix isGenericArrayElement for higher-kinded types #22938
  • Revert lambda cleanup #22697
  • Constructor companion gets privateWithin #22627
  • Add regression test for #22076 #22602
  • Constructor proxy is restricted if class is protected #22563
  • Check if a prefix is valid before selecting from a type #22368
  • Preserve hard unions in widenSingletons #22369
  • Revert recent changes to opaque type proxy generation #23059
  • Compare TypeVar and TypeParamRef in mergeRefinedOrApplied #23045
  • 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
  • Fix #22922: Add TypeParamRef handling in isSingletonBounded #23501
  • Fix this references everywhere in dependent function types #23514
  • More careful ClassTag instantiation #23659
  • Use more context for implicit search only if no default argument #23664

JDK

  • Check path of module prefix for tailrec #23491

Contributors

Thank you to all the contributors who made this release possible 🎉

According to git shortlog -sn --no-merges 3.3.6..3.3.7 these are:

   164  Tomasz Godzik
    81  Som Snytt
    27  Jan Chyb
    25  Matt Bovel
    23  aherlihy
    20  kasiaMarek
    15  Martin Odersky
    13  Hamza Remmal
    11  Dale Wijnand
    11  noti0na1
    10  Kacper Korban
    10  Wojciech Mazur
     8  Guillaume Martres
     7  Zieliński Patryk
     5  Jędrzej Rochala
     5  Quentin Bernet
     5  Seth Tisue
     4  Alexander
     4  Joel Wilsson
     4  Katarzyna Marek
     4  Oliver Bračevac
     3  Natsu Kagami
     3  Yoonjae Jeon
     3  anna herlihy
     2  Daisy Li
     2  Dolphin von Chips
     2  Mikołaj Fornal
     2  Sébastien Doeraene
     2  Vadim Chelyshov
     2  rochala
     1  Alec Theriault
     1  Aleksey Troitskiy
     1  Alex1005a
     1  Daniel Thoma
     1  Felix Herrmann
     1  HarrisL2
     1  Jan
     1  Jan-Pieter van den Heuvel
     1  Jentsch
     1  João Ferreira
     1  Lukas Rytz
     1  Marc GRIS
     1  MatthieuSLR9
     1  Nikita Glushchenko
     1  Niklas Fiekas
     1  Patryk Zieliński
     1  Piotr Chabelski
     1  Przemysław Sajnóg
     1  Rocco Mathijn Andela
     1  Tomas Mikula
     1  Yichen Xu
     1  bingchen-li
     1  fan-tom
     1  katrinafyi
     1  kijuky
     1  philippus
     1  philwalk
     1  vder

Don't miss a new scala3 release

NewReleases is sending notifications on new releases.