From bbe9be51505e08219ff76386276318b031718e44 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Fri, 7 Mar 2014 20:54:17 +0400 Subject: [PATCH] Fix 'No type in binding context for: from light class generation' exception #KT-4668 Fixed --- .../jet/codegen/binding/CodegenAnnotatingVisitor.java | 2 ++ idea/testData/javaFacade/objectSubclassing.kt | 11 +++++++++++ .../jet/plugin/javaFacade/JetJavaFacadeTest.java | 4 ++++ 3 files changed, 17 insertions(+) create mode 100644 idea/testData/javaFacade/objectSubclassing.kt diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenAnnotatingVisitor.java b/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenAnnotatingVisitor.java index c15c00f2caf..7a8b3548f40 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenAnnotatingVisitor.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/binding/CodegenAnnotatingVisitor.java @@ -198,6 +198,8 @@ class CodegenAnnotatingVisitor extends JetVisitorVoid { super.visitObjectDeclaration(declaration); } else { + if (!filter.shouldProcess(declaration)) return; + ClassDescriptor classDescriptor = bindingContext.get(CLASS, declaration); // working around a problem with shallow analysis if (classDescriptor == null) return; diff --git a/idea/testData/javaFacade/objectSubclassing.kt b/idea/testData/javaFacade/objectSubclassing.kt new file mode 100644 index 00000000000..bafd9d9e002 --- /dev/null +++ b/idea/testData/javaFacade/objectSubclassing.kt @@ -0,0 +1,11 @@ +package some + +open class Test +object First: Test() // There's no info for Test in binding context + +class Second { + fun foo(statement: First) { // Reference to First, to make lazy resolve put it into binding context + } +} + +// For KT-4668 diff --git a/idea/tests/org/jetbrains/jet/plugin/javaFacade/JetJavaFacadeTest.java b/idea/tests/org/jetbrains/jet/plugin/javaFacade/JetJavaFacadeTest.java index e13f508be8c..1439b05819f 100644 --- a/idea/tests/org/jetbrains/jet/plugin/javaFacade/JetJavaFacadeTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/javaFacade/JetJavaFacadeTest.java @@ -51,6 +51,10 @@ public class JetJavaFacadeTest extends JetLightCodeInsightFixtureTestCase { doTestWrapMethod(false); } + public void testObjectSubclassing() { + doTestWrapMethod(true); + } + public void testDoNotWrapFunInAnonymousObject() { doTestWrapMethod(false); }