diff --git a/src/org/jetbrains/java/decompiler/main/ClassWriter.java b/src/org/jetbrains/java/decompiler/main/ClassWriter.java index b55f29d..dc0f3fc 100644 --- a/src/org/jetbrains/java/decompiler/main/ClassWriter.java +++ b/src/org/jetbrains/java/decompiler/main/ClassWriter.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -98,7 +98,7 @@ public class ClassWriter { } else { // reference to a static method - buffer.append(ExprProcessor.getCastTypeName(new VarType(node.lambdaInformation.content_class_name, false))); + buffer.append(ExprProcessor.getCastTypeName(new VarType(node.lambdaInformation.content_class_name, true))); } buffer.append("::"); diff --git a/test/org/jetbrains/java/decompiler/SingleClassesTest.java b/test/org/jetbrains/java/decompiler/SingleClassesTest.java index 6ef71c0..e3a6f56 100644 --- a/test/org/jetbrains/java/decompiler/SingleClassesTest.java +++ b/test/org/jetbrains/java/decompiler/SingleClassesTest.java @@ -80,6 +80,7 @@ public class SingleClassesTest { @Test public void testStringConcat() { doTest("pkg/TestStringConcat"); } @Test public void testJava9StringConcat() { doTest("java9/TestJava9StringConcat"); } @Test public void testMethodReferenceSameName() { doTest("pkg/TestMethodReferenceSameName"); } + @Test public void testMethodReferenceLetterClass() { doTest("pkg/TestMethodReferenceLetterClass"); } protected void doTest(String testFile, String... companionFiles) { ConsoleDecompiler decompiler = fixture.getDecompiler(); diff --git a/testData/classes/pkg/R.class b/testData/classes/pkg/R.class new file mode 100644 index 0000000..7c9c9e2 Binary files /dev/null and b/testData/classes/pkg/R.class differ diff --git a/testData/classes/pkg/TestMethodReferenceLetterClass.class b/testData/classes/pkg/TestMethodReferenceLetterClass.class new file mode 100644 index 0000000..74bb32d Binary files /dev/null and b/testData/classes/pkg/TestMethodReferenceLetterClass.class differ diff --git a/testData/results/TestMethodReferenceLetterClass.dec b/testData/results/TestMethodReferenceLetterClass.dec new file mode 100644 index 0000000..0491efa --- /dev/null +++ b/testData/results/TestMethodReferenceLetterClass.dec @@ -0,0 +1,18 @@ +import java.util.function.Consumer; + +public class TestMethodReferenceLetterClass { + void boo() { + Consumer var1 = R::foo;// 21 + }// 22 +} + +class 'TestMethodReferenceLetterClass' { + method 'boo ()V' { + 5 4 + 6 5 + } +} + +Lines mapping: +21 <-> 5 +22 <-> 6 diff --git a/testData/src/pkg/TestMethodReferenceLetterClass.java b/testData/src/pkg/TestMethodReferenceLetterClass.java new file mode 100644 index 0000000..5f290d8 --- /dev/null +++ b/testData/src/pkg/TestMethodReferenceLetterClass.java @@ -0,0 +1,27 @@ +/* + * Copyright 2000-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import java.util.function.Consumer; + +public class TestMethodReferenceLetterClass { + void boo() { + Consumer foo = R::foo; + } +} + +class R { + void foo() {} +} \ No newline at end of file