Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sync main with language-reference-stable #18718

Merged
merged 22 commits into from
Oct 18, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
225 changes: 225 additions & 0 deletions changelogs/3.3.0-RC1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@
# Highlights of the release

- Stabilize new lazy vals [#16614](https://github.com/lampepfl/dotty/pull/16614)
- Experimental Macro annotations [#16392](https://github.com/lampepfl/dotty/pull/16392) [#16454](https://github.com/lampepfl/dotty/pull/16454) [#16534](https://github.com/lampepfl/dotty/pull/16534)
- Fix stability check for inline parameters [#15511](https://github.com/lampepfl/dotty/pull/15511)
- Make `fewerBraces` a standard feature [#16297](https://github.com/lampepfl/dotty/pull/16297)
- Add new front-end phase for unused entities and add support for unused imports [#16157](https://github.com/lampepfl/dotty/pull/16157)
- Implement -Wvalue-discard warning [#15975](https://github.com/lampepfl/dotty/pull/15975)
- Introduce boundary/break control abstraction. [#16612](https://github.com/lampepfl/dotty/pull/16612)

# Other changes and fixes

## Annotations

- Support use-site meta-annotations [#16445](https://github.com/lampepfl/dotty/pull/16445)

## Desugaring

- Reuse typed prefix for `applyDynamic` and `applyDynamicNamed` [#16552](https://github.com/lampepfl/dotty/pull/16552)
- Fix object selftype match error [#16441](https://github.com/lampepfl/dotty/pull/16441)

## Erasure

- Dealias before checking for outer references in types [#16525](https://github.com/lampepfl/dotty/pull/16525)
- Fix generic signature for type params bounded by primitive [#16442](https://github.com/lampepfl/dotty/pull/16442)
- Avoid EmptyScope.cloneScope crashing, eg on missing references [#16314](https://github.com/lampepfl/dotty/pull/16314)

## GADTs

- Inline GADT state restoring in TypeComparer [#16564](https://github.com/lampepfl/dotty/pull/16564)
- Add extension/conversion to GADT selection healing [#16638](https://github.com/lampepfl/dotty/pull/16638)

## Incremental compilation

- Unpickle arguments of parent constructors in Templates lazily [#16688](https://github.com/lampepfl/dotty/pull/16688)

## Initialization

- Fix #16438: Supply dummy args for erroneous parent call in init check [#16448](https://github.com/lampepfl/dotty/pull/16448)

## Inline

- Dealias in ConstantValue, for inline if cond [#16652](https://github.com/lampepfl/dotty/pull/16652)
- Set Span for top level annotations generated in PostTyper [#16378](https://github.com/lampepfl/dotty/pull/16378)
- Interpolate any type vars from comparing against SelectionProto [#16348](https://github.com/lampepfl/dotty/pull/16348)
- Handle binding of beta reduced inlined lambdas [#16377](https://github.com/lampepfl/dotty/pull/16377)
- Do not add dummy RHS to abstract inline methods [#16510](https://github.com/lampepfl/dotty/pull/16510)
- Warn on inline given aliases with functions as RHS [#16499](https://github.com/lampepfl/dotty/pull/16499)
- Support inline overrides in value classes [#16523](https://github.com/lampepfl/dotty/pull/16523)

## Java interop

- Represent Java annotations as interfaces so they can be extended, and disallow various misuses of them [#16260](https://github.com/lampepfl/dotty/pull/16260)

## Opaque Types

- Delay opaque alias checking until PostTyper [#16644](https://github.com/lampepfl/dotty/pull/16644)

## Overloading

- Handle context function arguments in overloading resolution [#16511](https://github.com/lampepfl/dotty/pull/16511)

## Parser

- Improve support for Unicode supplementary characters in identifiers and string interpolation (as in Scala 2) [#16278](https://github.com/lampepfl/dotty/pull/16278)
- Require indent after colon at EOL [#16466](https://github.com/lampepfl/dotty/pull/16466)
- Help givens return refined types [#16293](https://github.com/lampepfl/dotty/pull/16293)

## Pattern Matching

- Tweak AvoidMap's derivedSelect [#16563](https://github.com/lampepfl/dotty/pull/16563)
- Space: Use RHS of & when refining subtypes [#16573](https://github.com/lampepfl/dotty/pull/16573)
- Freeze constraints in a condition check of maximiseType [#16526](https://github.com/lampepfl/dotty/pull/16526)
- Restrict syntax of typed patterns [#16150](https://github.com/lampepfl/dotty/pull/16150)
- Test case to show that #16252 works with transparent [#16262](https://github.com/lampepfl/dotty/pull/16262)
- Support inline unapplySeq and with leading given parameters [#16358](https://github.com/lampepfl/dotty/pull/16358)
- Handle sealed prefixes in exh checking [#16621](https://github.com/lampepfl/dotty/pull/16621)
- Detect irrefutable quoted patterns [#16674](https://github.com/lampepfl/dotty/pull/16674)

## Pickling

- Allow case classes with up to 254 parameters [#16501](https://github.com/lampepfl/dotty/pull/16501)
- Correctly unpickle Scala 2 private case classes in traits [#16519](https://github.com/lampepfl/dotty/pull/16519)

## Polyfunctions

- Fix #9996: Crash with function accepting polymorphic function type with singleton result [#16327](https://github.com/lampepfl/dotty/pull/16327)

## Quotes

- Remove contents of inline methods [#16345](https://github.com/lampepfl/dotty/pull/16345)
- Fix errors in explicit type annotations in inline match cases [#16257](https://github.com/lampepfl/dotty/pull/16257)
- Handle macro annotation suspends and crashes [#16509](https://github.com/lampepfl/dotty/pull/16509)
- Fix macro annotations `spliceOwner` [#16513](https://github.com/lampepfl/dotty/pull/16513)

## REPL

- REPL: Fix crash when printing instances of value classes [#16393](https://github.com/lampepfl/dotty/pull/16393)
- Attempt to fix completion crash [#16267](https://github.com/lampepfl/dotty/pull/16267)
- Fix REPL shadowing bug [#16389](https://github.com/lampepfl/dotty/pull/16389)
- Open up for extensibility [#16276](https://github.com/lampepfl/dotty/pull/16276)
- Don't crash if completions throw [#16687](https://github.com/lampepfl/dotty/pull/16687)

## Reflection

- Fix reflect typeMembers to return all members [#15033](https://github.com/lampepfl/dotty/pull/15033)
- Deprecate reflect Flags.Static [#16568](https://github.com/lampepfl/dotty/pull/16568)

## Reporting

- Suppress follow-on errors for erroneous import qualifiers [#16658](https://github.com/lampepfl/dotty/pull/16658)
- Fix order in which errors are reported for assignment to val [#16660](https://github.com/lampepfl/dotty/pull/16660)
- Fix class name in error message [#16635](https://github.com/lampepfl/dotty/pull/16635)
- Make refined type printing more source compatible [#16303](https://github.com/lampepfl/dotty/pull/16303)
- Add error hint on local inline def used in quotes [#16572](https://github.com/lampepfl/dotty/pull/16572)
- Fix Text wrapping [#16277](https://github.com/lampepfl/dotty/pull/16277)
- Fix -Wunused:import registering constructor `<init>` instead of its owner (also fix false positive for enum) [#16661](https://github.com/lampepfl/dotty/pull/16661)
- Fix #16675 : -Wunused false positive on case class generated method, due to flags used to distinguish case accessors. [#16683](https://github.com/lampepfl/dotty/pull/16683)
- Fix #16680 by registering Ident not containing a symbol [#16689](https://github.com/lampepfl/dotty/pull/16689)
- Fix #16682: CheckUnused missed some used symbols [#16690](https://github.com/lampepfl/dotty/pull/16690)
- Fix the non-miniphase tree traverser [#16684](https://github.com/lampepfl/dotty/pull/16684)

## Scala-JS

- Fix #14289: Accept Ident refs to `js.native` in native member rhs. [#16185](https://github.com/lampepfl/dotty/pull/16185)

## Standard Library

- Add `CanEqual` instance for `Map` [#15886](https://github.com/lampepfl/dotty/pull/15886)
- Refine `Tuple.Append` return type [#16140](https://github.com/lampepfl/dotty/pull/16140)

## TASTy format

- Make it a fatal error if erasure cannot resolve a type [#16373](https://github.com/lampepfl/dotty/pull/16373)

## Tooling

- Add -Yimports compiler flag [#16218](https://github.com/lampepfl/dotty/pull/16218)
- Allow BooleanSettings to be set with a colon [#16425](https://github.com/lampepfl/dotty/pull/16425)

## Transform

- Avoid stackoverflow in ExplicitOuter [#16381](https://github.com/lampepfl/dotty/pull/16381)
- Make lazy vals run on non-fallback graal image - remove dynamic reflection [#16346](https://github.com/lampepfl/dotty/pull/16346)
- Patch to avoid crash in #16351 [#16354](https://github.com/lampepfl/dotty/pull/16354)
- Don't treat package object's `<init>` methods as package members [#16667](https://github.com/lampepfl/dotty/pull/16667)
- Space: Refine isSubspace property & an example [#16574](https://github.com/lampepfl/dotty/pull/16574)

## Typer

- Drop requirement that self types are closed [#16648](https://github.com/lampepfl/dotty/pull/16648)
- Disallow constructor params from appearing in parent types for soundness [#16664](https://github.com/lampepfl/dotty/pull/16664)
- Don't search implicit arguments in singleton type prefix [#16490](https://github.com/lampepfl/dotty/pull/16490)
- Don't rely on isProvisional to determine whether atoms computed [#16489](https://github.com/lampepfl/dotty/pull/16489)
- Support signature polymorphic methods (`MethodHandle` and `VarHandle`) [#16225](https://github.com/lampepfl/dotty/pull/16225)
- Prefer parameterless alternatives during ambiguous overload resolution [#16315](https://github.com/lampepfl/dotty/pull/16315)
- Fix calculation to drop transparent classes [#16344](https://github.com/lampepfl/dotty/pull/16344)
- Test case for issue 16311 [#16317](https://github.com/lampepfl/dotty/pull/16317)
- Skip caching provisional OrType atoms [#16295](https://github.com/lampepfl/dotty/pull/16295)
- Avoid cyclic references due to experimental check when inlining [#16195](https://github.com/lampepfl/dotty/pull/16195)
- Track type variable dependencies to guide instantiation decisions [#16042](https://github.com/lampepfl/dotty/pull/16042)
- Two fixes to constraint solving [#16353](https://github.com/lampepfl/dotty/pull/16353)
- Fix regression in cyclic constraint handling [#16514](https://github.com/lampepfl/dotty/pull/16514)
- Sharpen range approximation for applied types with capture set ranges [#16261](https://github.com/lampepfl/dotty/pull/16261)
- Cut the Gordian Knot: Don't widen unions to transparent [#15642](https://github.com/lampepfl/dotty/pull/15642)
- Fix widening logic to keep instantiation within bounds [#16417](https://github.com/lampepfl/dotty/pull/16417)
- Skip ambiguous reference error when symbols are aliases [#16401](https://github.com/lampepfl/dotty/pull/16401)
- Avoid incorrect simplifications when updating bounds in the constraint [#16410](https://github.com/lampepfl/dotty/pull/16410)
- Take `@targetName` into account when resolving extension methods [#16487](https://github.com/lampepfl/dotty/pull/16487)
- Improve ClassTag handling to avoid invalid ClassTag generation and inference failure [#16492](https://github.com/lampepfl/dotty/pull/16492)
- Fix extracting the elemType of a union of arrays [#16569](https://github.com/lampepfl/dotty/pull/16569)
- Make sure annotations are typed in expression contexts [#16699](https://github.com/lampepfl/dotty/pull/16699)
- Throw a type error when using hk-types in unions or intersections [#16712](https://github.com/lampepfl/dotty/pull/16712)

# 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-RC1` these are:

```
225 Martin Odersky
73 Dale Wijnand
58 Szymon Rodziewicz
54 Nicolas Stucki
48 Kamil Szewczyk
48 Paul Coral
30 Paweł Marks
28 Florian3k
28 Yichen Xu
14 Guillaume Martres
8 Fengyun Liu
8 Michał Pałka
7 Chris Birchall
7 rochala
6 Kacper Korban
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 Jamie Thompson
2 Alex
2 Anatolii Kmetiuk
2 Dmitrii Naumenko
2 Lukas Rytz
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 Philippus
1 Szymon R
1 Tim Spence
1 s.bazarsadaev

```
Loading
Loading