From 21ff13004810cbfe0d8904d0b9e4d32ac576a4f4 Mon Sep 17 00:00:00 2001 From: Lorenzo Gabriele Date: Tue, 19 Sep 2023 15:32:37 +0200 Subject: [PATCH 1/4] Avoid flattening `List` of `List`s [Cherry-picked c39d260042332803259563110603521ed6381db6] --- .../tools/dotc/transform/CheckUnused.scala | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/compiler/src/dotty/tools/dotc/transform/CheckUnused.scala b/compiler/src/dotty/tools/dotc/transform/CheckUnused.scala index 0eeec0f3cbec..eb3c37622e0d 100644 --- a/compiler/src/dotty/tools/dotc/transform/CheckUnused.scala +++ b/compiler/src/dotty/tools/dotc/transform/CheckUnused.scala @@ -561,11 +561,19 @@ object CheckUnused: else Nil val warnings = - List(sortedImp, sortedLocalDefs, sortedExplicitParams, sortedImplicitParams, - sortedPrivateDefs, sortedPatVars, unsetLocalDefs, unsetPrivateDefs).flatten.sortBy { s => - val pos = s.pos.sourcePos - (pos.line, pos.column) - } + val unsorted = + sortedImp ::: + sortedLocalDefs ::: + sortedExplicitParams ::: + sortedImplicitParams ::: + sortedPrivateDefs ::: + sortedPatVars ::: + unsetLocalDefs ::: + unsetPrivateDefs + unsorted.sortBy { s => + val pos = s.pos.sourcePos + (pos.line, pos.column) + } UnusedResult(warnings.toSet) end getUnused //============================ HELPERS ==================================== From 5a40ae6ec7b17a54bfe8b9aba571c2429e53edc3 Mon Sep 17 00:00:00 2001 From: Lorenzo Gabriele Date: Tue, 19 Sep 2023 15:44:14 +0200 Subject: [PATCH 2/4] Remove redundant `.toList` call on a `List` Co-authored-by: Nicolas Stucki [Cherry-picked 0c04c2e5206e8e5ade2cc8c31efb394803e62e28] --- compiler/src/dotty/tools/MainGenericRunner.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compiler/src/dotty/tools/MainGenericRunner.scala b/compiler/src/dotty/tools/MainGenericRunner.scala index 6f4366a00b77..0a5a1b191a44 100644 --- a/compiler/src/dotty/tools/MainGenericRunner.scala +++ b/compiler/src/dotty/tools/MainGenericRunner.scala @@ -148,7 +148,7 @@ object MainGenericRunner { case (o @ javaOption(striped)) :: tail => processArgs(tail, settings.withJavaArgs(striped).withScalaArgs(o)) case (o @ scalaOption(_*)) :: tail => - val remainingArgs = (CommandLineParser.expandArg(o) ++ tail).toList + val remainingArgs = CommandLineParser.expandArg(o) ++ tail processArgs(remainingArgs, settings) case (o @ colorOption(_*)) :: tail => processArgs(tail, settings.withScalaArgs(o)) From e5ed578999f2cf975022ac068be6475bc1ee7c02 Mon Sep 17 00:00:00 2001 From: Lorenzo Gabriele Date: Tue, 19 Sep 2023 15:48:18 +0200 Subject: [PATCH 3/4] Avoid creating a List to initialize fields [Cherry-picked c3377d4900cba307d291fc56e39187431fc9aa7a] --- compiler/src/dotty/tools/dotc/core/Definitions.scala | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/compiler/src/dotty/tools/dotc/core/Definitions.scala b/compiler/src/dotty/tools/dotc/core/Definitions.scala index 5e4b854fc9e2..c932f528404b 100644 --- a/compiler/src/dotty/tools/dotc/core/Definitions.scala +++ b/compiler/src/dotty/tools/dotc/core/Definitions.scala @@ -2119,8 +2119,10 @@ class Definitions { this.initCtx = ctx if (!isInitialized) { // force initialization of every symbol that is synthesized or hijacked by the compiler - val forced = - syntheticCoreClasses ++ syntheticCoreMethods ++ ScalaValueClasses() :+ JavaEnumClass + syntheticCoreClasses + syntheticCoreMethods + JavaEnumClass + // end force initialization isInitialized = true } addSyntheticSymbolsComments From e91fddf09e65d98ae58694d8ff2bb5893cfcbf0c Mon Sep 17 00:00:00 2001 From: Lorenzo Gabriele Date: Wed, 20 Sep 2023 12:01:46 +0200 Subject: [PATCH 4/4] Add back `ScalaValueClasses()` initialization The call to `apply` perform side effects that need to be executed [Cherry-picked 240e95ae148189c46ce990d0d71db968f7cffe63] --- compiler/src/dotty/tools/dotc/core/Definitions.scala | 1 + 1 file changed, 1 insertion(+) diff --git a/compiler/src/dotty/tools/dotc/core/Definitions.scala b/compiler/src/dotty/tools/dotc/core/Definitions.scala index c932f528404b..cebc2cb67c45 100644 --- a/compiler/src/dotty/tools/dotc/core/Definitions.scala +++ b/compiler/src/dotty/tools/dotc/core/Definitions.scala @@ -2121,6 +2121,7 @@ class Definitions { // force initialization of every symbol that is synthesized or hijacked by the compiler syntheticCoreClasses syntheticCoreMethods + ScalaValueClasses() JavaEnumClass // end force initialization isInitialized = true