From c5169f00968df7acc1a19c9d0a7fca9d29faabb7 Mon Sep 17 00:00:00 2001 From: Guillaume Martres Date: Wed, 28 Feb 2024 13:42:41 +0100 Subject: [PATCH 1/5] Reuse existing NameKind to preserve Tasty forward-compatibility --- .../src/dotty/tools/dotc/core/NameKinds.scala | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/compiler/src/dotty/tools/dotc/core/NameKinds.scala b/compiler/src/dotty/tools/dotc/core/NameKinds.scala index 6210553bda43..2b60e52ae13a 100644 --- a/compiler/src/dotty/tools/dotc/core/NameKinds.scala +++ b/compiler/src/dotty/tools/dotc/core/NameKinds.scala @@ -290,18 +290,16 @@ object NameKinds { */ val ContextBoundParamName: UniqueNameKind = new UniqueNameKind("evidence$") - /** The name of an inferred contextual function parameter: - * - * val x: A ?=> B = b - * - * becomes: - * - * val x: A ?=> B = (contextual$1: A) ?=> b - */ - val ContextFunctionParamName: UniqueNameKind = new UniqueNameKind("contextual$") + // Reuse an existing NameKind to avoid breaking the tasty readers of Scala 3.3.0 and 3.3.1 + // see https://github.com/playframework/playframework/issues/12418 + val ContextFunctionParamName: UniqueNameKind = ContextBoundParamName + val CanThrowEvidenceName: UniqueNameKind = ContextBoundParamName + + // Generate NameKinds matching the ones used in 3.3.2 so we can unpickle 3.3.2 code. + val ContextFunctionParamName_332: UniqueNameKind = new UniqueNameKind("contextual$") + val CanThrowEvidenceName_332: UniqueNameKind = new UniqueNameKind("canThrow$") /** Other unique names */ - val CanThrowEvidenceName: UniqueNameKind = new UniqueNameKind("canThrow$") val TempResultName: UniqueNameKind = new UniqueNameKind("ev$") val DepParamName: UniqueNameKind = new UniqueNameKind("(param)") val LazyImplicitName: UniqueNameKind = new UniqueNameKind("$_lazy_implicit_$") From 1f5a667bb66bca7ab9d27e323ec57b5e5f27b005 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Marks?= Date: Wed, 28 Feb 2024 18:43:06 +0100 Subject: [PATCH 2/5] Add name-kinds compat tests --- .../name-kinds-backward-3.3.1/app/Main.scala | 7 +++++++ .../scala3-compat/name-kinds-backward-3.3.1/build.sbt | 7 +++++++ .../name-kinds-backward-3.3.1/lib/Foo.scala | 5 +++++ .../project/DottyInjectedPlugin.scala | 11 +++++++++++ sbt-test/scala3-compat/name-kinds-backward-3.3.1/test | 1 + .../name-kinds-backward-3.3.2/app/Main.scala | 7 +++++++ .../scala3-compat/name-kinds-backward-3.3.2/build.sbt | 7 +++++++ .../name-kinds-backward-3.3.2/lib/Foo.scala | 5 +++++ .../project/DottyInjectedPlugin.scala | 11 +++++++++++ sbt-test/scala3-compat/name-kinds-backward-3.3.2/test | 1 + .../name-kinds-forward-3.3.1/app/Main.scala | 7 +++++++ .../scala3-compat/name-kinds-forward-3.3.1/build.sbt | 7 +++++++ .../name-kinds-forward-3.3.1/lib/Foo.scala | 5 +++++ .../project/DottyInjectedPlugin.scala | 11 +++++++++++ sbt-test/scala3-compat/name-kinds-forward-3.3.1/test | 1 + .../name-kinds-forward-3.3.2/app/Main.scala | 7 +++++++ .../scala3-compat/name-kinds-forward-3.3.2/build.sbt | 7 +++++++ .../name-kinds-forward-3.3.2/lib/Foo.scala | 5 +++++ .../project/DottyInjectedPlugin.scala | 11 +++++++++++ sbt-test/scala3-compat/name-kinds-forward-3.3.2/test | 1 + 20 files changed, 124 insertions(+) create mode 100644 sbt-test/scala3-compat/name-kinds-backward-3.3.1/app/Main.scala create mode 100644 sbt-test/scala3-compat/name-kinds-backward-3.3.1/build.sbt create mode 100644 sbt-test/scala3-compat/name-kinds-backward-3.3.1/lib/Foo.scala create mode 100644 sbt-test/scala3-compat/name-kinds-backward-3.3.1/project/DottyInjectedPlugin.scala create mode 100644 sbt-test/scala3-compat/name-kinds-backward-3.3.1/test create mode 100644 sbt-test/scala3-compat/name-kinds-backward-3.3.2/app/Main.scala create mode 100644 sbt-test/scala3-compat/name-kinds-backward-3.3.2/build.sbt create mode 100644 sbt-test/scala3-compat/name-kinds-backward-3.3.2/lib/Foo.scala create mode 100644 sbt-test/scala3-compat/name-kinds-backward-3.3.2/project/DottyInjectedPlugin.scala create mode 100644 sbt-test/scala3-compat/name-kinds-backward-3.3.2/test create mode 100644 sbt-test/scala3-compat/name-kinds-forward-3.3.1/app/Main.scala create mode 100644 sbt-test/scala3-compat/name-kinds-forward-3.3.1/build.sbt create mode 100644 sbt-test/scala3-compat/name-kinds-forward-3.3.1/lib/Foo.scala create mode 100644 sbt-test/scala3-compat/name-kinds-forward-3.3.1/project/DottyInjectedPlugin.scala create mode 100644 sbt-test/scala3-compat/name-kinds-forward-3.3.1/test create mode 100644 sbt-test/scala3-compat/name-kinds-forward-3.3.2/app/Main.scala create mode 100644 sbt-test/scala3-compat/name-kinds-forward-3.3.2/build.sbt create mode 100644 sbt-test/scala3-compat/name-kinds-forward-3.3.2/lib/Foo.scala create mode 100644 sbt-test/scala3-compat/name-kinds-forward-3.3.2/project/DottyInjectedPlugin.scala create mode 100644 sbt-test/scala3-compat/name-kinds-forward-3.3.2/test diff --git a/sbt-test/scala3-compat/name-kinds-backward-3.3.1/app/Main.scala b/sbt-test/scala3-compat/name-kinds-backward-3.3.1/app/Main.scala new file mode 100644 index 000000000000..196e7f61d290 --- /dev/null +++ b/sbt-test/scala3-compat/name-kinds-backward-3.3.1/app/Main.scala @@ -0,0 +1,7 @@ +package app + +import lib.* + +@main def test = println: + given String = "foo" + Wrap.foo[Long] diff --git a/sbt-test/scala3-compat/name-kinds-backward-3.3.1/build.sbt b/sbt-test/scala3-compat/name-kinds-backward-3.3.1/build.sbt new file mode 100644 index 000000000000..a7f526173a14 --- /dev/null +++ b/sbt-test/scala3-compat/name-kinds-backward-3.3.1/build.sbt @@ -0,0 +1,7 @@ +lazy val lib = project.in(file("lib")) + .settings( + scalaVersion := "3.3.1" + ) + +lazy val app = project.in(file("app")) + .dependsOn(lib) \ No newline at end of file diff --git a/sbt-test/scala3-compat/name-kinds-backward-3.3.1/lib/Foo.scala b/sbt-test/scala3-compat/name-kinds-backward-3.3.1/lib/Foo.scala new file mode 100644 index 000000000000..3243b87e7a45 --- /dev/null +++ b/sbt-test/scala3-compat/name-kinds-backward-3.3.1/lib/Foo.scala @@ -0,0 +1,5 @@ +package lib + +object Wrap: + def foo[T: Numeric]: String ?=> T = + summon[Numeric[T]].fromInt(summon[String].length) \ No newline at end of file diff --git a/sbt-test/scala3-compat/name-kinds-backward-3.3.1/project/DottyInjectedPlugin.scala b/sbt-test/scala3-compat/name-kinds-backward-3.3.1/project/DottyInjectedPlugin.scala new file mode 100644 index 000000000000..fb946c4b8c61 --- /dev/null +++ b/sbt-test/scala3-compat/name-kinds-backward-3.3.1/project/DottyInjectedPlugin.scala @@ -0,0 +1,11 @@ +import sbt._ +import Keys._ + +object DottyInjectedPlugin extends AutoPlugin { + override def requires = plugins.JvmPlugin + override def trigger = allRequirements + + override val projectSettings = Seq( + scalaVersion := sys.props("plugin.scalaVersion") + ) +} diff --git a/sbt-test/scala3-compat/name-kinds-backward-3.3.1/test b/sbt-test/scala3-compat/name-kinds-backward-3.3.1/test new file mode 100644 index 000000000000..63092ffa4a03 --- /dev/null +++ b/sbt-test/scala3-compat/name-kinds-backward-3.3.1/test @@ -0,0 +1 @@ +> app/run diff --git a/sbt-test/scala3-compat/name-kinds-backward-3.3.2/app/Main.scala b/sbt-test/scala3-compat/name-kinds-backward-3.3.2/app/Main.scala new file mode 100644 index 000000000000..196e7f61d290 --- /dev/null +++ b/sbt-test/scala3-compat/name-kinds-backward-3.3.2/app/Main.scala @@ -0,0 +1,7 @@ +package app + +import lib.* + +@main def test = println: + given String = "foo" + Wrap.foo[Long] diff --git a/sbt-test/scala3-compat/name-kinds-backward-3.3.2/build.sbt b/sbt-test/scala3-compat/name-kinds-backward-3.3.2/build.sbt new file mode 100644 index 000000000000..c909701ddf72 --- /dev/null +++ b/sbt-test/scala3-compat/name-kinds-backward-3.3.2/build.sbt @@ -0,0 +1,7 @@ +lazy val lib = project.in(file("lib")) + .settings( + scalaVersion := "3.3.2" + ) + +lazy val app = project.in(file("app")) + .dependsOn(lib) \ No newline at end of file diff --git a/sbt-test/scala3-compat/name-kinds-backward-3.3.2/lib/Foo.scala b/sbt-test/scala3-compat/name-kinds-backward-3.3.2/lib/Foo.scala new file mode 100644 index 000000000000..3243b87e7a45 --- /dev/null +++ b/sbt-test/scala3-compat/name-kinds-backward-3.3.2/lib/Foo.scala @@ -0,0 +1,5 @@ +package lib + +object Wrap: + def foo[T: Numeric]: String ?=> T = + summon[Numeric[T]].fromInt(summon[String].length) \ No newline at end of file diff --git a/sbt-test/scala3-compat/name-kinds-backward-3.3.2/project/DottyInjectedPlugin.scala b/sbt-test/scala3-compat/name-kinds-backward-3.3.2/project/DottyInjectedPlugin.scala new file mode 100644 index 000000000000..fb946c4b8c61 --- /dev/null +++ b/sbt-test/scala3-compat/name-kinds-backward-3.3.2/project/DottyInjectedPlugin.scala @@ -0,0 +1,11 @@ +import sbt._ +import Keys._ + +object DottyInjectedPlugin extends AutoPlugin { + override def requires = plugins.JvmPlugin + override def trigger = allRequirements + + override val projectSettings = Seq( + scalaVersion := sys.props("plugin.scalaVersion") + ) +} diff --git a/sbt-test/scala3-compat/name-kinds-backward-3.3.2/test b/sbt-test/scala3-compat/name-kinds-backward-3.3.2/test new file mode 100644 index 000000000000..63092ffa4a03 --- /dev/null +++ b/sbt-test/scala3-compat/name-kinds-backward-3.3.2/test @@ -0,0 +1 @@ +> app/run diff --git a/sbt-test/scala3-compat/name-kinds-forward-3.3.1/app/Main.scala b/sbt-test/scala3-compat/name-kinds-forward-3.3.1/app/Main.scala new file mode 100644 index 000000000000..196e7f61d290 --- /dev/null +++ b/sbt-test/scala3-compat/name-kinds-forward-3.3.1/app/Main.scala @@ -0,0 +1,7 @@ +package app + +import lib.* + +@main def test = println: + given String = "foo" + Wrap.foo[Long] diff --git a/sbt-test/scala3-compat/name-kinds-forward-3.3.1/build.sbt b/sbt-test/scala3-compat/name-kinds-forward-3.3.1/build.sbt new file mode 100644 index 000000000000..e04099829f32 --- /dev/null +++ b/sbt-test/scala3-compat/name-kinds-forward-3.3.1/build.sbt @@ -0,0 +1,7 @@ +lazy val lib = project.in(file("lib")) + +lazy val app = project.in(file("app")) + .dependsOn(lib) + .settings( + scalaVersion := "3.3.1" + ) \ No newline at end of file diff --git a/sbt-test/scala3-compat/name-kinds-forward-3.3.1/lib/Foo.scala b/sbt-test/scala3-compat/name-kinds-forward-3.3.1/lib/Foo.scala new file mode 100644 index 000000000000..3243b87e7a45 --- /dev/null +++ b/sbt-test/scala3-compat/name-kinds-forward-3.3.1/lib/Foo.scala @@ -0,0 +1,5 @@ +package lib + +object Wrap: + def foo[T: Numeric]: String ?=> T = + summon[Numeric[T]].fromInt(summon[String].length) \ No newline at end of file diff --git a/sbt-test/scala3-compat/name-kinds-forward-3.3.1/project/DottyInjectedPlugin.scala b/sbt-test/scala3-compat/name-kinds-forward-3.3.1/project/DottyInjectedPlugin.scala new file mode 100644 index 000000000000..fb946c4b8c61 --- /dev/null +++ b/sbt-test/scala3-compat/name-kinds-forward-3.3.1/project/DottyInjectedPlugin.scala @@ -0,0 +1,11 @@ +import sbt._ +import Keys._ + +object DottyInjectedPlugin extends AutoPlugin { + override def requires = plugins.JvmPlugin + override def trigger = allRequirements + + override val projectSettings = Seq( + scalaVersion := sys.props("plugin.scalaVersion") + ) +} diff --git a/sbt-test/scala3-compat/name-kinds-forward-3.3.1/test b/sbt-test/scala3-compat/name-kinds-forward-3.3.1/test new file mode 100644 index 000000000000..63092ffa4a03 --- /dev/null +++ b/sbt-test/scala3-compat/name-kinds-forward-3.3.1/test @@ -0,0 +1 @@ +> app/run diff --git a/sbt-test/scala3-compat/name-kinds-forward-3.3.2/app/Main.scala b/sbt-test/scala3-compat/name-kinds-forward-3.3.2/app/Main.scala new file mode 100644 index 000000000000..196e7f61d290 --- /dev/null +++ b/sbt-test/scala3-compat/name-kinds-forward-3.3.2/app/Main.scala @@ -0,0 +1,7 @@ +package app + +import lib.* + +@main def test = println: + given String = "foo" + Wrap.foo[Long] diff --git a/sbt-test/scala3-compat/name-kinds-forward-3.3.2/build.sbt b/sbt-test/scala3-compat/name-kinds-forward-3.3.2/build.sbt new file mode 100644 index 000000000000..24121358ab83 --- /dev/null +++ b/sbt-test/scala3-compat/name-kinds-forward-3.3.2/build.sbt @@ -0,0 +1,7 @@ +lazy val lib = project.in(file("lib")) + +lazy val app = project.in(file("app")) + .dependsOn(lib) + .settings( + scalaVersion := "3.3.2" + ) \ No newline at end of file diff --git a/sbt-test/scala3-compat/name-kinds-forward-3.3.2/lib/Foo.scala b/sbt-test/scala3-compat/name-kinds-forward-3.3.2/lib/Foo.scala new file mode 100644 index 000000000000..3243b87e7a45 --- /dev/null +++ b/sbt-test/scala3-compat/name-kinds-forward-3.3.2/lib/Foo.scala @@ -0,0 +1,5 @@ +package lib + +object Wrap: + def foo[T: Numeric]: String ?=> T = + summon[Numeric[T]].fromInt(summon[String].length) \ No newline at end of file diff --git a/sbt-test/scala3-compat/name-kinds-forward-3.3.2/project/DottyInjectedPlugin.scala b/sbt-test/scala3-compat/name-kinds-forward-3.3.2/project/DottyInjectedPlugin.scala new file mode 100644 index 000000000000..fb946c4b8c61 --- /dev/null +++ b/sbt-test/scala3-compat/name-kinds-forward-3.3.2/project/DottyInjectedPlugin.scala @@ -0,0 +1,11 @@ +import sbt._ +import Keys._ + +object DottyInjectedPlugin extends AutoPlugin { + override def requires = plugins.JvmPlugin + override def trigger = allRequirements + + override val projectSettings = Seq( + scalaVersion := sys.props("plugin.scalaVersion") + ) +} diff --git a/sbt-test/scala3-compat/name-kinds-forward-3.3.2/test b/sbt-test/scala3-compat/name-kinds-forward-3.3.2/test new file mode 100644 index 000000000000..63092ffa4a03 --- /dev/null +++ b/sbt-test/scala3-compat/name-kinds-forward-3.3.2/test @@ -0,0 +1 @@ +> app/run From 8e693188e3b324eae9c25fae5f3b1554f2598c21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Marks?= Date: Thu, 29 Feb 2024 10:33:53 +0100 Subject: [PATCH 3/5] Fix checkfiles --- tests/neg/i11350.check | 4 ++-- tests/run-staging/multi-staging.check | 2 +- tests/run-staging/quote-nested-2.check | 2 +- tests/run-staging/quote-nested-5.check | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/neg/i11350.check b/tests/neg/i11350.check index 63ea4618b9c1..cf9524d36ec1 100644 --- a/tests/neg/i11350.check +++ b/tests/neg/i11350.check @@ -1,7 +1,7 @@ -- [E081] Type Error: tests/neg/i11350.scala:1:39 ---------------------------------------------------------------------- 1 |class A1[T](action: A1[T] ?=> String = "") // error | ^ - | Could not infer type for parameter contextual$1 of anonymous function + | Could not infer type for parameter evidence$1 of anonymous function | | Partially inferred type for the parameter: A1[] | @@ -9,7 +9,7 @@ -- [E081] Type Error: tests/neg/i11350.scala:2:39 ---------------------------------------------------------------------- 2 |class A2[T](action: A1[T] ?=> String = summon[A1[T]]) // error | ^ - | Could not infer type for parameter contextual$2 of anonymous function + | Could not infer type for parameter evidence$2 of anonymous function | | Partially inferred type for the parameter: A1[] | diff --git a/tests/run-staging/multi-staging.check b/tests/run-staging/multi-staging.check index c5f53e51a7d2..76adcfec3034 100644 --- a/tests/run-staging/multi-staging.check +++ b/tests/run-staging/multi-staging.check @@ -1,5 +1,5 @@ stage1 code: ((q1: scala.quoted.Quotes) ?=> { val x1: scala.Int = 2 - scala.quoted.runtime.Expr.quote[scala.Int](1.+(scala.quoted.runtime.Expr.splice[scala.Int](((contextual$5: scala.quoted.Quotes) ?=> scala.quoted.Expr.apply[scala.Int](x1)(scala.quoted.ToExpr.IntToExpr[scala.Int])(contextual$5))))).apply(using q1) + scala.quoted.runtime.Expr.quote[scala.Int](1.+(scala.quoted.runtime.Expr.splice[scala.Int](((evidence$5: scala.quoted.Quotes) ?=> scala.quoted.Expr.apply[scala.Int](x1)(scala.quoted.ToExpr.IntToExpr[scala.Int])(evidence$5))))).apply(using q1) }) 3 diff --git a/tests/run-staging/quote-nested-2.check b/tests/run-staging/quote-nested-2.check index 48ecf87577ab..7db9edb0424e 100644 --- a/tests/run-staging/quote-nested-2.check +++ b/tests/run-staging/quote-nested-2.check @@ -1,4 +1,4 @@ ((q: scala.quoted.Quotes) ?=> { val a: scala.quoted.Expr[scala.Int] = scala.quoted.runtime.Expr.quote[scala.Int](4).apply(using q) - ((contextual$2: scala.quoted.Quotes) ?=> a).apply(using q) + ((evidence$2: scala.quoted.Quotes) ?=> a).apply(using q) }) diff --git a/tests/run-staging/quote-nested-5.check b/tests/run-staging/quote-nested-5.check index 47d39cc92611..53600d16a8da 100644 --- a/tests/run-staging/quote-nested-5.check +++ b/tests/run-staging/quote-nested-5.check @@ -1,4 +1,4 @@ ((q: scala.quoted.Quotes) ?=> { val a: scala.quoted.Expr[scala.Int] = scala.quoted.runtime.Expr.quote[scala.Int](4).apply(using q) - ((q2: scala.quoted.Quotes) ?=> ((contextual$2: scala.quoted.Quotes) ?=> a).apply(using q2)) + ((q2: scala.quoted.Quotes) ?=> ((evidence$2: scala.quoted.Quotes) ?=> a).apply(using q2)) }.apply(using q)) From cfd1540e2dbd99e3d2cd9dbea6fc71aaa420a214 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Marks?= Date: Wed, 28 Feb 2024 18:48:57 +0100 Subject: [PATCH 4/5] Add changelog for 3.3.3 --- changelogs/3.3.3.md | 164 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 changelogs/3.3.3.md diff --git a/changelogs/3.3.3.md b/changelogs/3.3.3.md new file mode 100644 index 000000000000..51aaa610a743 --- /dev/null +++ b/changelogs/3.3.3.md @@ -0,0 +1,164 @@ +# HOTFIX 3.3.3 + +This is a hotfix release to [a subtle bug](https://github.com/playframework/playframework/issues/12418) in the TASTy reader managed to survive the Release Candidate (RC) process. The bug caused 3.3.2 to emit TASTy files incompatible with previous releases in the LTS line, namely 3.3.1 and 3.3.0. + +Below you can find the original release notes for 3.3.2: + +# Highlights of the release + +- Improvements to the Coverage (detailed list below) +- Add Stable Presentation Compiler [#17528](https://github.com/lampepfl/dotty/pull/17528) + +# Other changes and fixes + +## Backend + +- Make sure synthetic apply methods are generated in deterministic order [#18210](https://github.com/lampepfl/dotty/pull/18210) + +## Coverage + +- Only lift inner expressions when lifting repeated `Typed` arguments [#18424](https://github.com/lampepfl/dotty/pull/18424) +- Fix: scoverage statement's line number should be 1-base [#18932](https://github.com/lampepfl/dotty/pull/18932) +- Do not lift applications of context functions [#18498](https://github.com/lampepfl/dotty/pull/18498) +- Don't lift the argument of a `synchronized` block in scoverage [#16941](https://github.com/lampepfl/dotty/pull/16941) +- Fix the issue with coverage inside of a TypeApply [#18420](https://github.com/lampepfl/dotty/pull/18420) +- Coverage: mark case bodies as branches; don't ignore branches with synthetic spans [#18437](https://github.com/lampepfl/dotty/pull/18437) + +## Documentation + +- Compiler plugin Scaladoc: document phase requirement [#18394](https://github.com/lampepfl/dotty/pull/18394) + +## Exports + +- Refine override exclude criterion for export forwarders [#17590](https://github.com/lampepfl/dotty/pull/17590) + +## Incremental Compilation + +- Fix overcompilation due to unstable context bound desugaring [#18280](https://github.com/lampepfl/dotty/pull/18280) + +## Inline + +- Don't generate a super accessor for an inline method call [#17598](https://github.com/lampepfl/dotty/pull/17598) + +## Linting + +- Wunused: Only use type treverser for checking refinements in refined type trees [#17929](https://github.com/lampepfl/dotty/pull/17929) + +## Parser + +- Add examples taken from reference page [#18066](https://github.com/lampepfl/dotty/pull/18066) +- Test for #18345 [#18349](https://github.com/lampepfl/dotty/pull/18349) + +## Pattern Matching + +- Properly refine type of inlined unapply pattern [#18292](https://github.com/lampepfl/dotty/pull/18292) + +## Presentation Compiler + +- Bugfix: suggest correct arg name completions for lambda expressions [#18379](https://github.com/lampepfl/dotty/pull/18379) +- Improvement: print better bracket suffix in completion item label [#18380](https://github.com/lampepfl/dotty/pull/18380) +- Fix presentation compiler autoimports, update presentation compiler dependencies [#18264](https://github.com/lampepfl/dotty/pull/18264) +- Update scala3-presentation-compiler to 39e349e [#18296](https://github.com/lampepfl/dotty/pull/18296) +- Update presentation compiler with changes from PR 5287 [#18301](https://github.com/lampepfl/dotty/pull/18301) +- Update presentation compiler to a829a6a [#18347](https://github.com/lampepfl/dotty/pull/18347) +- Bugfix: highlight enum cases correctly [#18362](https://github.com/lampepfl/dotty/pull/18362) + +## Quotes + +- Do not beta-reduce/eta-expand pattern splices with contextual function types [#18198](https://github.com/lampepfl/dotty/pull/18198) +- XcheckMacro types of Block expression and Apply/TypeApply function [#18242](https://github.com/lampepfl/dotty/pull/18242) +- Fix owner of splices in class statements [#18359](https://github.com/lampepfl/dotty/pull/18359) +- Handle macro dependencies through class of `this` [#18396](https://github.com/lampepfl/dotty/pull/18396) +- Add missing span in `QuoteMatcher` [#18178](https://github.com/lampepfl/dotty/pull/18178) +- Fix stale symbol crashes in some path depended types in macro contexts [#18077](https://github.com/lampepfl/dotty/pull/18077) +- Simplify avoidance of local types of Hole [#17571](https://github.com/lampepfl/dotty/pull/17571) + +## Reporting + +- Detail "not a constant type" message [#17626](https://github.com/lampepfl/dotty/pull/17626) +- Suggest imports for the expected type of the underlying implicit not found error [#17976](https://github.com/lampepfl/dotty/pull/17976) +- Fix: report correct location on a repeat modifier [#17982](https://github.com/lampepfl/dotty/pull/17982) +- Warn when calling synchronized on AnyVal [#18021](https://github.com/lampepfl/dotty/pull/18021) +- Fix compile error message in wildcard exports [#18189](https://github.com/lampepfl/dotty/pull/18189) +- Improve parameter type inference error messaging [#18190](https://github.com/lampepfl/dotty/pull/18190) +- Don't report warnings in migration when performing rewrites [#15589](https://github.com/lampepfl/dotty/pull/15589) +- Fix crash reporter, units and phases [#17754](https://github.com/lampepfl/dotty/pull/17754) +- Omit more prefixes in non-package module printing [#17758](https://github.com/lampepfl/dotty/pull/17758) +- Fix pretty printer to handle using and erased modifier [#17952](https://github.com/lampepfl/dotty/pull/17952) +- Add -Yprint-tasty compiler flag [#17986](https://github.com/lampepfl/dotty/pull/17986) +- Add actionable item to PatternMatchExhaustivity diagnostic [#18314](https://github.com/lampepfl/dotty/pull/18314) + +## Scaladoc + +- Fix: -no-link-warnings does not work [#17028](https://github.com/lampepfl/dotty/pull/17028) +- Fix: Validation for API link [#17099](https://github.com/lampepfl/dotty/pull/17099) +- Scaladoc: type rendering fixes and improvements [#17213](https://github.com/lampepfl/dotty/pull/17213) +- Feat: Add a custom icon [#17241](https://github.com/lampepfl/dotty/pull/17241) +- Fix: Correction of the siteRoot path [#17297](https://github.com/lampepfl/dotty/pull/17297) +- Fix: Correct the navigation to anchor [#17910](https://github.com/lampepfl/dotty/pull/17910) +- Fix: Style for wiki syntax [#18079](https://github.com/lampepfl/dotty/pull/18079) +- Fix NoSuchElementException in scaladoc [#18184](https://github.com/lampepfl/dotty/pull/18184) +- Update jsoup dependency of Scaladoc to 7.2 [#19584](https://github.com/lampepfl/dotty/pull/19584) + +## SemanticDB + +- Check for primary constructor in namePresentInSource [#18325](https://github.com/lampepfl/dotty/pull/18325) +- Add -semanticdb-text compiler option [#18307](https://github.com/lampepfl/dotty/pull/18307) + +## Typer + +- Fix pattern generation in "ordinal" mirror method [#17570](https://github.com/lampepfl/dotty/pull/17570) +- Fix superType of SuperType [#17574](https://github.com/lampepfl/dotty/pull/17574) +- Avoid crash in erasure when reference cannot be emitted [#18056](https://github.com/lampepfl/dotty/pull/18056) +- Disallow overloading from breaking stable patterns [#18327](https://github.com/lampepfl/dotty/pull/18327) +- Fix widen types before checking an implicit view exists [#18719](https://github.com/lampepfl/dotty/pull/18719) +- Properly handle SAM types with wildcards [#18201](https://github.com/lampepfl/dotty/pull/18201) +- Handle recursion in collectParts [#18214](https://github.com/lampepfl/dotty/pull/18214) +- Allow eta-expansion of inline defs [#18249](https://github.com/lampepfl/dotty/pull/18249) +- Stable names for lambda lifted methods [#18281](https://github.com/lampepfl/dotty/pull/18281) +- Fix expandParam's use of argForParam/isArgPrefixOf. [#19412](https://github.com/lampepfl/dotty/pull/19412) + +# Contributors + +Thank you to all the contributors who made this release possible 🎉 + +According to `git shortlog -sn --no-merges 3.3.1..3.3.2` these are: + +``` + 42 Paweł Marks + 38 Nicolas Stucki + 28 Chris Kipp + 15 Sébastien Doeraene + 13 Lucas Leblanc + 13 Martin Odersky + 12 Guillaume Martres + 11 Dale Wijnand + 10 Jamie Thompson + 8 ghostbuster91 + 6 Florian3k + 5 Kacper Korban + 4 Jan Chyb + 4 Jędrzej Rochala + 4 Katarzyna Marek + 4 Quentin Bernet + 4 Seth Tisue + 3 Lucas + 3 Matt Bovel + 2 Julien Richard-Foy + 2 Wojciech Mazur + 1 Aleksey Troitskiy + 1 Arnout Engelen + 1 Bjorn Regnell + 1 Eugene Yokota + 1 Fabián Heredia Montiel + 1 Justin Reardon + 1 Kisaragi + 1 Martin Kučera + 1 Matthew Rooney + 1 Matthias Kurz + 1 Ondrej Lhotak + 1 Rikito Taniguchi + 1 Stefan Wachter + 1 Yuito Murase + 1 rochala +``` From 5e0de6475701c81841b92f647211aadb18029c92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Marks?= Date: Wed, 28 Feb 2024 18:50:50 +0100 Subject: [PATCH 5/5] Release 3.3.3 --- project/Build.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Build.scala b/project/Build.scala index 5fa2cd727f80..0135ebb69f48 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -83,7 +83,7 @@ object Build { val referenceVersion = "3.3.1" - val baseVersion = "3.3.2" + val baseVersion = "3.3.3" // Versions used by the vscode extension to create a new project // This should be the latest published releases.