diff --git a/plugins/java-decompiler/engine/src/org/jetbrains/java/decompiler/main/ClassWriter.java b/plugins/java-decompiler/engine/src/org/jetbrains/java/decompiler/main/ClassWriter.java index b55f29d7578f..dc0f3fcaa32b 100644 --- a/plugins/java-decompiler/engine/src/org/jetbrains/java/decompiler/main/ClassWriter.java +++ b/plugins/java-decompiler/engine/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/plugins/java-decompiler/engine/test/org/jetbrains/java/decompiler/SingleClassesTest.java b/plugins/java-decompiler/engine/test/org/jetbrains/java/decompiler/SingleClassesTest.java index 6ef71c0f307d..e3a6f56a7979 100644 --- a/plugins/java-decompiler/engine/test/org/jetbrains/java/decompiler/SingleClassesTest.java +++ b/plugins/java-decompiler/engine/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/plugins/java-decompiler/engine/testData/classes/pkg/R.class b/plugins/java-decompiler/engine/testData/classes/pkg/R.class new file mode 100644 index 000000000000..7c9c9e22c83c Binary files /dev/null and b/plugins/java-decompiler/engine/testData/classes/pkg/R.class differ diff --git a/plugins/java-decompiler/engine/testData/classes/pkg/TestMethodReferenceLetterClass.class b/plugins/java-decompiler/engine/testData/classes/pkg/TestMethodReferenceLetterClass.class new file mode 100644 index 000000000000..74bb32df8d43 Binary files /dev/null and b/plugins/java-decompiler/engine/testData/classes/pkg/TestMethodReferenceLetterClass.class differ diff --git a/plugins/java-decompiler/engine/testData/results/TestMethodReferenceLetterClass.dec b/plugins/java-decompiler/engine/testData/results/TestMethodReferenceLetterClass.dec new file mode 100644 index 000000000000..0491efa3edf5 --- /dev/null +++ b/plugins/java-decompiler/engine/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/plugins/java-decompiler/engine/testData/src/pkg/TestMethodReferenceLetterClass.java b/plugins/java-decompiler/engine/testData/src/pkg/TestMethodReferenceLetterClass.java new file mode 100644 index 000000000000..5f290d8ae94c --- /dev/null +++ b/plugins/java-decompiler/engine/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