From 9644cf5b335f25ca239546ffcf26972a11e4e8c4 Mon Sep 17 00:00:00 2001 From: Fengyun Liu Date: Thu, 6 Apr 2023 07:58:12 +0200 Subject: [PATCH] Separate object init tests from class init tests --- .../test/dotty/tools/dotc/CompilationTests.scala | 8 ++++++++ .../neg/context-sensitivity.scala | 0 tests/{init => init-global}/neg/global-by-name.scala | 0 tests/{init => init-global}/neg/global-cycle1.check | 0 tests/{init => init-global}/neg/global-cycle1.scala | 0 tests/{init => init-global}/neg/global-cycle14.scala | 0 tests/{init => init-global}/neg/global-cycle5.scala | 0 tests/{init => init-global}/neg/global-cycle6.scala | 0 tests/{init => init-global}/neg/global-cycle7.scala | 0 tests/{init => init-global}/neg/global-cycle8.scala | 0 tests/{init => init-global}/neg/global-fun.scala | 0 .../neg/global-irrelevance1.scala | 0 .../neg/global-irrelevance2.scala | 0 .../neg/global-irrelevance3.scala | 0 .../neg/global-irrelevance4.scala | 0 .../neg/global-irrelevance5.scala | 0 .../neg/global-irrelevance6.scala | 0 .../neg/global-irrelevance7.scala | 0 tests/{init => init-global}/neg/global-list.scala | 0 tests/{init => init-global}/neg/global-region1.scala | 0 tests/{init => init-global}/neg/global-this.scala | 0 tests/{init => init-global}/neg/i11262.scala | 0 tests/{init => init-global}/neg/i12544b.scala | 0 tests/{init => init-global}/neg/i9176.scala | 0 tests/{init => init-global}/neg/mutable-read1.scala | 0 tests/{init => init-global}/neg/mutable-read2.scala | 0 tests/{init => init-global}/neg/mutable-read3.scala | 0 tests/{init => init-global}/neg/mutable-read4.scala | 0 tests/{init => init-global}/neg/mutable-read5.scala | 0 tests/{init => init-global}/neg/mutable-read6.scala | 0 tests/{init => init-global}/neg/mutable-read7.scala | 0 tests/{init => init-global}/neg/mutable-read8.scala | 0 .../{init => init-global}/neg/partial-ordering.scala | 0 tests/{init => init-global}/neg/t5366.scala | 0 tests/{init => init-global}/neg/t9115.scala | 0 tests/{init => init-global}/neg/t9261.scala | 0 tests/{init => init-global}/neg/t9312.scala | 0 tests/{init => init-global}/neg/t9360.scala | 0 tests/{init => init-global}/pos/global-by-name.scala | 0 tests/{init => init-global}/pos/global-cycle10.scala | 0 tests/{init => init-global}/pos/global-cycle11.scala | 0 tests/{init => init-global}/pos/global-cycle12.scala | 0 tests/{init => init-global}/pos/global-cycle2.scala | 0 tests/{init => init-global}/pos/global-cycle3.scala | 0 tests/{init => init-global}/pos/global-cycle4.scala | 0 tests/{init => init-global}/pos/global-cycle9.scala | 0 tests/{init => init-global}/pos/global-fun.scala | 0 .../pos/global-instantiation.scala | 0 .../{init => init-global}/pos/global-local-var.scala | 0 tests/{init => init-global}/pos/global-read.scala | 0 .../{init => init-global}/pos/global-recursion.scala | 0 .../pos/global-recursion2.scala | 0 tests/{init => init-global}/pos/global-region1.scala | 0 .../pos/global-trivial-cycle.scala | 0 .../{init => init-global}/pos/global-val-owner.scala | 0 .../pos/global-val-owner2.scala | 0 tests/{init => init-global}/pos/tree-counter.scala | 0 tests/init/neg/i12544.scala | 2 +- tests/init/pos/i12544.scala | 12 ++++++++++++ 59 files changed, 21 insertions(+), 1 deletion(-) rename tests/{init => init-global}/neg/context-sensitivity.scala (100%) rename tests/{init => init-global}/neg/global-by-name.scala (100%) rename tests/{init => init-global}/neg/global-cycle1.check (100%) rename tests/{init => init-global}/neg/global-cycle1.scala (100%) rename tests/{init => init-global}/neg/global-cycle14.scala (100%) rename tests/{init => init-global}/neg/global-cycle5.scala (100%) rename tests/{init => init-global}/neg/global-cycle6.scala (100%) rename tests/{init => init-global}/neg/global-cycle7.scala (100%) rename tests/{init => init-global}/neg/global-cycle8.scala (100%) rename tests/{init => init-global}/neg/global-fun.scala (100%) rename tests/{init => init-global}/neg/global-irrelevance1.scala (100%) rename tests/{init => init-global}/neg/global-irrelevance2.scala (100%) rename tests/{init => init-global}/neg/global-irrelevance3.scala (100%) rename tests/{init => init-global}/neg/global-irrelevance4.scala (100%) rename tests/{init => init-global}/neg/global-irrelevance5.scala (100%) rename tests/{init => init-global}/neg/global-irrelevance6.scala (100%) rename tests/{init => init-global}/neg/global-irrelevance7.scala (100%) rename tests/{init => init-global}/neg/global-list.scala (100%) rename tests/{init => init-global}/neg/global-region1.scala (100%) rename tests/{init => init-global}/neg/global-this.scala (100%) rename tests/{init => init-global}/neg/i11262.scala (100%) rename tests/{init => init-global}/neg/i12544b.scala (100%) rename tests/{init => init-global}/neg/i9176.scala (100%) rename tests/{init => init-global}/neg/mutable-read1.scala (100%) rename tests/{init => init-global}/neg/mutable-read2.scala (100%) rename tests/{init => init-global}/neg/mutable-read3.scala (100%) rename tests/{init => init-global}/neg/mutable-read4.scala (100%) rename tests/{init => init-global}/neg/mutable-read5.scala (100%) rename tests/{init => init-global}/neg/mutable-read6.scala (100%) rename tests/{init => init-global}/neg/mutable-read7.scala (100%) rename tests/{init => init-global}/neg/mutable-read8.scala (100%) rename tests/{init => init-global}/neg/partial-ordering.scala (100%) rename tests/{init => init-global}/neg/t5366.scala (100%) rename tests/{init => init-global}/neg/t9115.scala (100%) rename tests/{init => init-global}/neg/t9261.scala (100%) rename tests/{init => init-global}/neg/t9312.scala (100%) rename tests/{init => init-global}/neg/t9360.scala (100%) rename tests/{init => init-global}/pos/global-by-name.scala (100%) rename tests/{init => init-global}/pos/global-cycle10.scala (100%) rename tests/{init => init-global}/pos/global-cycle11.scala (100%) rename tests/{init => init-global}/pos/global-cycle12.scala (100%) rename tests/{init => init-global}/pos/global-cycle2.scala (100%) rename tests/{init => init-global}/pos/global-cycle3.scala (100%) rename tests/{init => init-global}/pos/global-cycle4.scala (100%) rename tests/{init => init-global}/pos/global-cycle9.scala (100%) rename tests/{init => init-global}/pos/global-fun.scala (100%) rename tests/{init => init-global}/pos/global-instantiation.scala (100%) rename tests/{init => init-global}/pos/global-local-var.scala (100%) rename tests/{init => init-global}/pos/global-read.scala (100%) rename tests/{init => init-global}/pos/global-recursion.scala (100%) rename tests/{init => init-global}/pos/global-recursion2.scala (100%) rename tests/{init => init-global}/pos/global-region1.scala (100%) rename tests/{init => init-global}/pos/global-trivial-cycle.scala (100%) rename tests/{init => init-global}/pos/global-val-owner.scala (100%) rename tests/{init => init-global}/pos/global-val-owner2.scala (100%) rename tests/{init => init-global}/pos/tree-counter.scala (100%) create mode 100644 tests/init/pos/i12544.scala diff --git a/compiler/test/dotty/tools/dotc/CompilationTests.scala b/compiler/test/dotty/tools/dotc/CompilationTests.scala index ed531aa404c2..d7bf3872ae1b 100644 --- a/compiler/test/dotty/tools/dotc/CompilationTests.scala +++ b/compiler/test/dotty/tools/dotc/CompilationTests.scala @@ -266,6 +266,14 @@ class CompilationTests { compileFilesInDir("tests/explicit-nulls/run", explicitNullsOptions) }.checkRuns() + // initialization tests + @Test def checkInitGlobal: Unit = { + implicit val testGroup: TestGroup = TestGroup("checkInitGlobal") + val options = defaultOptions.and("-Ysafe-init-global", "-Xfatal-warnings") + compileFilesInDir("tests/init-global/neg", options).checkExpectedErrors() + compileFilesInDir("tests/init-global/pos", options).checkCompile() + } + // initialization tests @Test def checkInit: Unit = { implicit val testGroup: TestGroup = TestGroup("checkInit") diff --git a/tests/init/neg/context-sensitivity.scala b/tests/init-global/neg/context-sensitivity.scala similarity index 100% rename from tests/init/neg/context-sensitivity.scala rename to tests/init-global/neg/context-sensitivity.scala diff --git a/tests/init/neg/global-by-name.scala b/tests/init-global/neg/global-by-name.scala similarity index 100% rename from tests/init/neg/global-by-name.scala rename to tests/init-global/neg/global-by-name.scala diff --git a/tests/init/neg/global-cycle1.check b/tests/init-global/neg/global-cycle1.check similarity index 100% rename from tests/init/neg/global-cycle1.check rename to tests/init-global/neg/global-cycle1.check diff --git a/tests/init/neg/global-cycle1.scala b/tests/init-global/neg/global-cycle1.scala similarity index 100% rename from tests/init/neg/global-cycle1.scala rename to tests/init-global/neg/global-cycle1.scala diff --git a/tests/init/neg/global-cycle14.scala b/tests/init-global/neg/global-cycle14.scala similarity index 100% rename from tests/init/neg/global-cycle14.scala rename to tests/init-global/neg/global-cycle14.scala diff --git a/tests/init/neg/global-cycle5.scala b/tests/init-global/neg/global-cycle5.scala similarity index 100% rename from tests/init/neg/global-cycle5.scala rename to tests/init-global/neg/global-cycle5.scala diff --git a/tests/init/neg/global-cycle6.scala b/tests/init-global/neg/global-cycle6.scala similarity index 100% rename from tests/init/neg/global-cycle6.scala rename to tests/init-global/neg/global-cycle6.scala diff --git a/tests/init/neg/global-cycle7.scala b/tests/init-global/neg/global-cycle7.scala similarity index 100% rename from tests/init/neg/global-cycle7.scala rename to tests/init-global/neg/global-cycle7.scala diff --git a/tests/init/neg/global-cycle8.scala b/tests/init-global/neg/global-cycle8.scala similarity index 100% rename from tests/init/neg/global-cycle8.scala rename to tests/init-global/neg/global-cycle8.scala diff --git a/tests/init/neg/global-fun.scala b/tests/init-global/neg/global-fun.scala similarity index 100% rename from tests/init/neg/global-fun.scala rename to tests/init-global/neg/global-fun.scala diff --git a/tests/init/neg/global-irrelevance1.scala b/tests/init-global/neg/global-irrelevance1.scala similarity index 100% rename from tests/init/neg/global-irrelevance1.scala rename to tests/init-global/neg/global-irrelevance1.scala diff --git a/tests/init/neg/global-irrelevance2.scala b/tests/init-global/neg/global-irrelevance2.scala similarity index 100% rename from tests/init/neg/global-irrelevance2.scala rename to tests/init-global/neg/global-irrelevance2.scala diff --git a/tests/init/neg/global-irrelevance3.scala b/tests/init-global/neg/global-irrelevance3.scala similarity index 100% rename from tests/init/neg/global-irrelevance3.scala rename to tests/init-global/neg/global-irrelevance3.scala diff --git a/tests/init/neg/global-irrelevance4.scala b/tests/init-global/neg/global-irrelevance4.scala similarity index 100% rename from tests/init/neg/global-irrelevance4.scala rename to tests/init-global/neg/global-irrelevance4.scala diff --git a/tests/init/neg/global-irrelevance5.scala b/tests/init-global/neg/global-irrelevance5.scala similarity index 100% rename from tests/init/neg/global-irrelevance5.scala rename to tests/init-global/neg/global-irrelevance5.scala diff --git a/tests/init/neg/global-irrelevance6.scala b/tests/init-global/neg/global-irrelevance6.scala similarity index 100% rename from tests/init/neg/global-irrelevance6.scala rename to tests/init-global/neg/global-irrelevance6.scala diff --git a/tests/init/neg/global-irrelevance7.scala b/tests/init-global/neg/global-irrelevance7.scala similarity index 100% rename from tests/init/neg/global-irrelevance7.scala rename to tests/init-global/neg/global-irrelevance7.scala diff --git a/tests/init/neg/global-list.scala b/tests/init-global/neg/global-list.scala similarity index 100% rename from tests/init/neg/global-list.scala rename to tests/init-global/neg/global-list.scala diff --git a/tests/init/neg/global-region1.scala b/tests/init-global/neg/global-region1.scala similarity index 100% rename from tests/init/neg/global-region1.scala rename to tests/init-global/neg/global-region1.scala diff --git a/tests/init/neg/global-this.scala b/tests/init-global/neg/global-this.scala similarity index 100% rename from tests/init/neg/global-this.scala rename to tests/init-global/neg/global-this.scala diff --git a/tests/init/neg/i11262.scala b/tests/init-global/neg/i11262.scala similarity index 100% rename from tests/init/neg/i11262.scala rename to tests/init-global/neg/i11262.scala diff --git a/tests/init/neg/i12544b.scala b/tests/init-global/neg/i12544b.scala similarity index 100% rename from tests/init/neg/i12544b.scala rename to tests/init-global/neg/i12544b.scala diff --git a/tests/init/neg/i9176.scala b/tests/init-global/neg/i9176.scala similarity index 100% rename from tests/init/neg/i9176.scala rename to tests/init-global/neg/i9176.scala diff --git a/tests/init/neg/mutable-read1.scala b/tests/init-global/neg/mutable-read1.scala similarity index 100% rename from tests/init/neg/mutable-read1.scala rename to tests/init-global/neg/mutable-read1.scala diff --git a/tests/init/neg/mutable-read2.scala b/tests/init-global/neg/mutable-read2.scala similarity index 100% rename from tests/init/neg/mutable-read2.scala rename to tests/init-global/neg/mutable-read2.scala diff --git a/tests/init/neg/mutable-read3.scala b/tests/init-global/neg/mutable-read3.scala similarity index 100% rename from tests/init/neg/mutable-read3.scala rename to tests/init-global/neg/mutable-read3.scala diff --git a/tests/init/neg/mutable-read4.scala b/tests/init-global/neg/mutable-read4.scala similarity index 100% rename from tests/init/neg/mutable-read4.scala rename to tests/init-global/neg/mutable-read4.scala diff --git a/tests/init/neg/mutable-read5.scala b/tests/init-global/neg/mutable-read5.scala similarity index 100% rename from tests/init/neg/mutable-read5.scala rename to tests/init-global/neg/mutable-read5.scala diff --git a/tests/init/neg/mutable-read6.scala b/tests/init-global/neg/mutable-read6.scala similarity index 100% rename from tests/init/neg/mutable-read6.scala rename to tests/init-global/neg/mutable-read6.scala diff --git a/tests/init/neg/mutable-read7.scala b/tests/init-global/neg/mutable-read7.scala similarity index 100% rename from tests/init/neg/mutable-read7.scala rename to tests/init-global/neg/mutable-read7.scala diff --git a/tests/init/neg/mutable-read8.scala b/tests/init-global/neg/mutable-read8.scala similarity index 100% rename from tests/init/neg/mutable-read8.scala rename to tests/init-global/neg/mutable-read8.scala diff --git a/tests/init/neg/partial-ordering.scala b/tests/init-global/neg/partial-ordering.scala similarity index 100% rename from tests/init/neg/partial-ordering.scala rename to tests/init-global/neg/partial-ordering.scala diff --git a/tests/init/neg/t5366.scala b/tests/init-global/neg/t5366.scala similarity index 100% rename from tests/init/neg/t5366.scala rename to tests/init-global/neg/t5366.scala diff --git a/tests/init/neg/t9115.scala b/tests/init-global/neg/t9115.scala similarity index 100% rename from tests/init/neg/t9115.scala rename to tests/init-global/neg/t9115.scala diff --git a/tests/init/neg/t9261.scala b/tests/init-global/neg/t9261.scala similarity index 100% rename from tests/init/neg/t9261.scala rename to tests/init-global/neg/t9261.scala diff --git a/tests/init/neg/t9312.scala b/tests/init-global/neg/t9312.scala similarity index 100% rename from tests/init/neg/t9312.scala rename to tests/init-global/neg/t9312.scala diff --git a/tests/init/neg/t9360.scala b/tests/init-global/neg/t9360.scala similarity index 100% rename from tests/init/neg/t9360.scala rename to tests/init-global/neg/t9360.scala diff --git a/tests/init/pos/global-by-name.scala b/tests/init-global/pos/global-by-name.scala similarity index 100% rename from tests/init/pos/global-by-name.scala rename to tests/init-global/pos/global-by-name.scala diff --git a/tests/init/pos/global-cycle10.scala b/tests/init-global/pos/global-cycle10.scala similarity index 100% rename from tests/init/pos/global-cycle10.scala rename to tests/init-global/pos/global-cycle10.scala diff --git a/tests/init/pos/global-cycle11.scala b/tests/init-global/pos/global-cycle11.scala similarity index 100% rename from tests/init/pos/global-cycle11.scala rename to tests/init-global/pos/global-cycle11.scala diff --git a/tests/init/pos/global-cycle12.scala b/tests/init-global/pos/global-cycle12.scala similarity index 100% rename from tests/init/pos/global-cycle12.scala rename to tests/init-global/pos/global-cycle12.scala diff --git a/tests/init/pos/global-cycle2.scala b/tests/init-global/pos/global-cycle2.scala similarity index 100% rename from tests/init/pos/global-cycle2.scala rename to tests/init-global/pos/global-cycle2.scala diff --git a/tests/init/pos/global-cycle3.scala b/tests/init-global/pos/global-cycle3.scala similarity index 100% rename from tests/init/pos/global-cycle3.scala rename to tests/init-global/pos/global-cycle3.scala diff --git a/tests/init/pos/global-cycle4.scala b/tests/init-global/pos/global-cycle4.scala similarity index 100% rename from tests/init/pos/global-cycle4.scala rename to tests/init-global/pos/global-cycle4.scala diff --git a/tests/init/pos/global-cycle9.scala b/tests/init-global/pos/global-cycle9.scala similarity index 100% rename from tests/init/pos/global-cycle9.scala rename to tests/init-global/pos/global-cycle9.scala diff --git a/tests/init/pos/global-fun.scala b/tests/init-global/pos/global-fun.scala similarity index 100% rename from tests/init/pos/global-fun.scala rename to tests/init-global/pos/global-fun.scala diff --git a/tests/init/pos/global-instantiation.scala b/tests/init-global/pos/global-instantiation.scala similarity index 100% rename from tests/init/pos/global-instantiation.scala rename to tests/init-global/pos/global-instantiation.scala diff --git a/tests/init/pos/global-local-var.scala b/tests/init-global/pos/global-local-var.scala similarity index 100% rename from tests/init/pos/global-local-var.scala rename to tests/init-global/pos/global-local-var.scala diff --git a/tests/init/pos/global-read.scala b/tests/init-global/pos/global-read.scala similarity index 100% rename from tests/init/pos/global-read.scala rename to tests/init-global/pos/global-read.scala diff --git a/tests/init/pos/global-recursion.scala b/tests/init-global/pos/global-recursion.scala similarity index 100% rename from tests/init/pos/global-recursion.scala rename to tests/init-global/pos/global-recursion.scala diff --git a/tests/init/pos/global-recursion2.scala b/tests/init-global/pos/global-recursion2.scala similarity index 100% rename from tests/init/pos/global-recursion2.scala rename to tests/init-global/pos/global-recursion2.scala diff --git a/tests/init/pos/global-region1.scala b/tests/init-global/pos/global-region1.scala similarity index 100% rename from tests/init/pos/global-region1.scala rename to tests/init-global/pos/global-region1.scala diff --git a/tests/init/pos/global-trivial-cycle.scala b/tests/init-global/pos/global-trivial-cycle.scala similarity index 100% rename from tests/init/pos/global-trivial-cycle.scala rename to tests/init-global/pos/global-trivial-cycle.scala diff --git a/tests/init/pos/global-val-owner.scala b/tests/init-global/pos/global-val-owner.scala similarity index 100% rename from tests/init/pos/global-val-owner.scala rename to tests/init-global/pos/global-val-owner.scala diff --git a/tests/init/pos/global-val-owner2.scala b/tests/init-global/pos/global-val-owner2.scala similarity index 100% rename from tests/init/pos/global-val-owner2.scala rename to tests/init-global/pos/global-val-owner2.scala diff --git a/tests/init/pos/tree-counter.scala b/tests/init-global/pos/tree-counter.scala similarity index 100% rename from tests/init/pos/tree-counter.scala rename to tests/init-global/pos/tree-counter.scala diff --git a/tests/init/neg/i12544.scala b/tests/init/neg/i12544.scala index 41e032d35c9e..2692c27134e0 100644 --- a/tests/init/neg/i12544.scala +++ b/tests/init/neg/i12544.scala @@ -5,7 +5,7 @@ enum Enum: def g(b: Enum.B): Int = b.foo() object Enum: - object nested: // error + object nested: val a: Enum = Case val b: Enum = f(nested.a) diff --git a/tests/init/pos/i12544.scala b/tests/init/pos/i12544.scala new file mode 100644 index 000000000000..e5e3c9a2ade2 --- /dev/null +++ b/tests/init/pos/i12544.scala @@ -0,0 +1,12 @@ +enum Enum: + case Case + +object Enum: + object nested: + val a: Enum = Case + + val b: Enum = f(nested.a) + + def f(e: Enum): Enum = e + +@main def main(): Unit = println(Enum.b)