Skip to content

Commit

Permalink
Sync main with language-reference-stable (scala#18718)
Browse files Browse the repository at this point in the history
Replaces scala#17614

This PR is semi-automatically generated to synchronize
`language-reference-stable` with `main`.

It takes all commits from the first branch that are not present on the
second and filters out all that were backported from `main` or have more
than one parent. Then it examines changes introduced by each commit.

Changes are divided into three groups:
- safe - those affect files in `changelogs`, `docs`, `scaladoc`, and
`scaladoc-testcases` directories or any `**.md` file.
- potentially safe - affect files in `project` direcotry
- unsafe - all other modifications

Commits only having safe changes were cherry-picked. Those having any
potentially safe changes and those that contained both safe and unsafe
changes were examined individually. Other commits were skipped.

Running a script and answering about each questionable commit took less
than 10 minutes, and as a result, we have no conflicts. Working on
scala#17614 would have required hours of fixing dozens of conflicts resulting
from merging changes cherry-picked from the `main` branch. It could also
have led to subtle problems.

If there is no problem with this approach, I'll modify the script
slightly and make it a part of a CI instead of the current step that
tries to merge the documentation branch to `main` after every change.
  • Loading branch information
Kordyjan authored Oct 18, 2023
2 parents b71c2d0 + e741946 commit e6242ca
Show file tree
Hide file tree
Showing 19 changed files with 1,522 additions and 12 deletions.
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

0 comments on commit e6242ca

Please sign in to comment.