diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java index d33cfd4d48b..98c51812509 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/ImplementationBodyCodegen.java @@ -214,6 +214,10 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { @Override protected void generateKotlinAnnotation() { + if (state.getClassBuilderMode() != ClassBuilderMode.FULL) { + return; + } + if (!isTopLevelOrInnerClass(descriptor)) return; DescriptorSerializer serializer = new DescriptorSerializer(new JavaSerializerExtension(v.getMemberMap())); diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java index 33129270c67..94dd573a117 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java @@ -137,6 +137,10 @@ public class NamespaceCodegen extends MemberCodegen { } private void writeKotlinPackageAnnotationIfNeeded(@NotNull MemberMap members) { + if (state.getClassBuilderMode() != ClassBuilderMode.FULL) { + return; + } + for (JetFile file : files) { if (file.isScript()) return; } diff --git a/compiler/testData/asJava/lightClasses/CodeWithErrors.kt b/compiler/testData/asJava/lightClasses/CodeWithErrors.kt new file mode 100644 index 00000000000..ad2f174f769 --- /dev/null +++ b/compiler/testData/asJava/lightClasses/CodeWithErrors.kt @@ -0,0 +1,11 @@ +package test + +class C() { + fun V.f() : { + + } +} + +fun V.f() { + +} diff --git a/compiler/tests/org/jetbrains/jet/asJava/KotlinLightClassTest.java b/compiler/tests/org/jetbrains/jet/asJava/KotlinLightClassTest.java index 3bda2cf09a1..2add8c575fe 100644 --- a/compiler/tests/org/jetbrains/jet/asJava/KotlinLightClassTest.java +++ b/compiler/tests/org/jetbrains/jet/asJava/KotlinLightClassTest.java @@ -19,15 +19,10 @@ package org.jetbrains.jet.asJava; import com.google.common.base.Function; import com.google.common.collect.Collections2; import com.google.common.collect.Sets; -import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiClassType; -import com.intellij.psi.PsiModifier; -import com.intellij.psi.PsiTypeParameter; +import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.jet.lang.resolve.java.PackageClassUtils; -import org.jetbrains.jet.lang.resolve.name.FqName; import java.io.File; import java.util.Arrays; @@ -142,6 +137,25 @@ public abstract class KotlinLightClassTest extends KotlinAsJavaTestBase { } } + public static class CodeWithErrors extends KotlinLightClassTest { + @Override + protected List getKotlinSourceRoots() { + return Collections.singletonList(new File("compiler/testData/asJava/lightClasses/CodeWithErrors.kt")); + } + + public void testClassWithErrors() { + assertTrue(findMethodsOfClass("test.C").length == 2); + } + + public void testPackageWithErrors() { + assertTrue(findMethodsOfClass("test.TestPackage").length == 1); + } + + private PsiMethod[] findMethodsOfClass(String qualifiedName) { + return findClass(qualifiedName).getMethods(); + } + } + @NotNull protected PsiClass findClass(String qualifiedName) { PsiClass psiClass = finder.findClass(qualifiedName, GlobalSearchScope.allScope(getProject()));