diff --git a/compiler/src/dotty/tools/dotc/core/SymDenotations.scala b/compiler/src/dotty/tools/dotc/core/SymDenotations.scala index 09f826c1b154..2a6df10a76de 100644 --- a/compiler/src/dotty/tools/dotc/core/SymDenotations.scala +++ b/compiler/src/dotty/tools/dotc/core/SymDenotations.scala @@ -480,7 +480,8 @@ object SymDenotations { // duplicate scalac's behavior: don't write a double '$$' for module class members. prefix = prefix.exclude(ModuleClassName) def qualify(n: SimpleName) = - kind(prefix.toTermName, if (filler.isEmpty) n else termName(filler + n)) + val qn = kind(prefix.toTermName, if (filler.isEmpty) n else termName(filler + n)) + if kind == FlatName && !encl.is(JavaDefined) then qn.compactified else qn val fn = name replace { case name: SimpleName => qualify(name) case name @ AnyQualifiedName(_, _) => qualify(name.mangled.toSimpleName) diff --git a/sbt-dotty/sbt-test/scala2-compat/longnames/build.sbt b/sbt-dotty/sbt-test/scala2-compat/longnames/build.sbt new file mode 100644 index 000000000000..67bfb8edb65f --- /dev/null +++ b/sbt-dotty/sbt-test/scala2-compat/longnames/build.sbt @@ -0,0 +1,9 @@ +val scala3Version = sys.props("plugin.scalaVersion") +val scala2Version = "2.13.4" + +lazy val lib = (project in file ("lib")) + .settings(scalaVersion := scala2Version) + +lazy val test = (project in file ("main")) + .dependsOn(lib) + .settings(scalaVersion := scala3Version) diff --git a/sbt-dotty/sbt-test/scala2-compat/longnames/lib/lib.scala b/sbt-dotty/sbt-test/scala2-compat/longnames/lib/lib.scala new file mode 100644 index 000000000000..00a14043278b --- /dev/null +++ b/sbt-dotty/sbt-test/scala2-compat/longnames/lib/lib.scala @@ -0,0 +1,35 @@ +class reallongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongname { + object obj0 + object obj01 + object obj012 + object obj0123 + object obj01234 + object obj012345 + object obj0123456 + object obj01234567 + object obj012345678 + object obj0123456789 + object obj01234567890 + class cls0 + class cls01 + class cls012 + class cls0123 + class cls01234 + class cls012345 + class cls0123456 + class cls01234567 + class cls012345678 + class cls0123456789 + class cls01234567890 + trait trt0 + trait trt01 + trait trt012 + trait trt0123 + trait trt01234 + trait trt012345 + trait trt0123456 + trait trt01234567 + trait trt012345678 + trait trt0123456789 + trait trt01234567890 +} diff --git a/sbt-dotty/sbt-test/scala2-compat/longnames/main/test.scala b/sbt-dotty/sbt-test/scala2-compat/longnames/main/test.scala new file mode 100644 index 000000000000..4a5ee58a8125 --- /dev/null +++ b/sbt-dotty/sbt-test/scala2-compat/longnames/main/test.scala @@ -0,0 +1,41 @@ +object Test extends App { + val c = new reallongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongnamereallylongname + + import c._ + + val o0 = obj0 + val o1 = obj01 + val o2 = obj012 + val o3 = obj0123 + val o4 = obj01234 + val o5 = obj012345 + val o6 = obj0123456 + val o7 = obj01234567 + val o8 = obj012345678 + val o9 = obj0123456789 + val o10 = obj01234567890 + + val c0 = new cls0 + val c1 = new cls01 + val c2 = new cls012 + val c3 = new cls0123 + val c4 = new cls01234 + val c5 = new cls012345 + val c6 = new cls0123456 + val c7 = new cls01234567 + val c8 = new cls012345678 + val c9 = new cls0123456789 + val c10 = new cls01234567890 + + val t0 = new trt0 {} + val t1 = new trt01 {} + val t2 = new trt012 {} + val t3 = new trt0123 {} + val t4 = new trt01234 {} + val t5 = new trt012345 {} + val t6 = new trt0123456 {} + val t7 = new trt01234567 {} + val t8 = new trt012345678 {} + val t9 = new trt0123456789 {} + val t10 = new trt01234567890 {} +} diff --git a/sbt-dotty/sbt-test/scala2-compat/longnames/project/plugins.sbt b/sbt-dotty/sbt-test/scala2-compat/longnames/project/plugins.sbt new file mode 100644 index 000000000000..c17caab2d98c --- /dev/null +++ b/sbt-dotty/sbt-test/scala2-compat/longnames/project/plugins.sbt @@ -0,0 +1 @@ +addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % sys.props("plugin.version")) diff --git a/sbt-dotty/sbt-test/scala2-compat/longnames/test b/sbt-dotty/sbt-test/scala2-compat/longnames/test new file mode 100644 index 000000000000..8aedcd64cf5b --- /dev/null +++ b/sbt-dotty/sbt-test/scala2-compat/longnames/test @@ -0,0 +1 @@ +> test/run diff --git a/tests/run/java-longnames/Long_1.java b/tests/run/java-longnames/Long_1.java new file mode 100644 index 000000000000..7c449a489358 --- /dev/null +++ b/tests/run/java-longnames/Long_1.java @@ -0,0 +1,6 @@ +package p; + +public class Long_1 { + public static class ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ_1 { + } +} diff --git a/tests/run/java-longnames/Test_2.scala b/tests/run/java-longnames/Test_2.scala new file mode 100644 index 000000000000..b03954825173 --- /dev/null +++ b/tests/run/java-longnames/Test_2.scala @@ -0,0 +1,9 @@ +import p._ + +object Test extends App { + println( + new Long_1.ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ_1() + .getClass + .getName + ) +} diff --git a/tests/pending/run/t8199.scala b/tests/run/t8199.scala similarity index 98% rename from tests/pending/run/t8199.scala rename to tests/run/t8199.scala index afd417ffd23f..ffd847ef3787 100644 --- a/tests/pending/run/t8199.scala +++ b/tests/run/t8199.scala @@ -44,7 +44,6 @@ object Test extends App { } def checkCallerImplClassName(): Unit = { val name = Thread.currentThread.getStackTrace.apply(2).getClassName - assert(name.contains("$class")) Test.checkClassName(name) }