From c39d260042332803259563110603521ed6381db6 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 --- .../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 0c04c2e5206e8e5ade2cc8c31efb394803e62e28 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 --- 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 c3377d4900cba307d291fc56e39187431fc9aa7a 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 --- 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 22a49a760e57..73e731e89676 100644 --- a/compiler/src/dotty/tools/dotc/core/Definitions.scala +++ b/compiler/src/dotty/tools/dotc/core/Definitions.scala @@ -2131,8 +2131,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 240e95ae148189c46ce990d0d71db968f7cffe63 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 --- 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 73e731e89676..646496dcb4df 100644 --- a/compiler/src/dotty/tools/dotc/core/Definitions.scala +++ b/compiler/src/dotty/tools/dotc/core/Definitions.scala @@ -2133,6 +2133,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