aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuillaume Martres <smarter@ubuntu.com>2017-01-11 15:34:26 +0100
committerGitHub <noreply@github.com>2017-01-11 15:34:26 +0100
commite9165e46e24370e9e5dcccf2c49470ab00e30507 (patch)
treefe5574b415f0a4fa19733e303def9441744adb66
parent486b0293dd07a3d969d75aaa1aeb438ce14ae726 (diff)
parent50268a1847d58deeb65c3a762e0b99b2d99ccb67 (diff)
downloaddotty-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.scala5
-rw-r--r--tests/pos-java-interop/innerClass/Outer.scala8
-rw-r--r--tests/pos-java-interop/innerClass/Test.java9
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();
+ }
+}