diff options
author | Guillaume Martres <smarter@ubuntu.com> | 2017-01-11 15:34:26 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-11 15:34:26 +0100 |
commit | e9165e46e24370e9e5dcccf2c49470ab00e30507 (patch) | |
tree | fe5574b415f0a4fa19733e303def9441744adb66 | |
parent | 486b0293dd07a3d969d75aaa1aeb438ce14ae726 (diff) | |
parent | 50268a1847d58deeb65c3a762e0b99b2d99ccb67 (diff) | |
download | dotty-e9165e46e24370e9e5dcccf2c49470ab00e30507.tar.gz dotty-e9165e46e24370e9e5dcccf2c49470ab00e30507.tar.bz2 dotty-e9165e46e24370e9e5dcccf2c49470ab00e30507.zip |
Merge pull request #1894 from dotty-staging/fix/inner-class-emission
Partially fix Java interop for emitted inner classes
-rw-r--r-- | compiler/src/dotty/tools/backend/jvm/DottyBackendInterface.scala | 5 | ||||
-rw-r--r-- | tests/pos-java-interop/innerClass/Outer.scala | 8 | ||||
-rw-r--r-- | tests/pos-java-interop/innerClass/Test.java | 9 |
3 files changed, 21 insertions, 1 deletions
diff --git a/compiler/src/dotty/tools/backend/jvm/DottyBackendInterface.scala b/compiler/src/dotty/tools/backend/jvm/DottyBackendInterface.scala index c17a32744..51fa15706 100644 --- a/compiler/src/dotty/tools/backend/jvm/DottyBackendInterface.scala +++ b/compiler/src/dotty/tools/backend/jvm/DottyBackendInterface.scala @@ -560,7 +560,10 @@ class DottyBackendInterface(outputDirectory: AbstractFile, val superCallsMap: Ma def javaBinaryName: Name = toDenot(sym).fullNameSeparated("/") // addModuleSuffix(fullNameInternal('/')) def javaClassName: String = toDenot(sym).fullName.toString// addModuleSuffix(fullNameInternal('.')).toString def name: Name = sym.name - def rawname: Name = sym.name // todo ???? + def rawname: Name = { + val original = toDenot(sym).initial + sym.name(ctx.withPhase(original.validFor.phaseId)) + } // types def info: Type = toDenot(sym).info diff --git a/tests/pos-java-interop/innerClass/Outer.scala b/tests/pos-java-interop/innerClass/Outer.scala new file mode 100644 index 000000000..b47d91cc1 --- /dev/null +++ b/tests/pos-java-interop/innerClass/Outer.scala @@ -0,0 +1,8 @@ +class Outer { + class InnerInClass + + def inner() = new InnerInClass +} +object Outer { + class InnerInObject +} diff --git a/tests/pos-java-interop/innerClass/Test.java b/tests/pos-java-interop/innerClass/Test.java new file mode 100644 index 000000000..53bb826d7 --- /dev/null +++ b/tests/pos-java-interop/innerClass/Test.java @@ -0,0 +1,9 @@ +public class Test { + public static void test() { + Outer outer = new Outer(); + Outer.InnerInClass innerInClass = outer.inner(); + + // Does not work yet, requires https://github.com/DarkDimius/scala/pull/4 + // Outer.InnerInObject innerInObject = new Outer.InnerInObject(); + } +} |