Override getText() in light classes to prevent decompiler errors on Kotlin sources

Fixes EA-58277
This commit is contained in:
Alexander Udalov
2014-09-09 14:17:52 +04:00
parent 48de3b706d
commit d4b1797646
4 changed files with 15 additions and 4 deletions
@@ -19,7 +19,7 @@ package org.jetbrains.jet.lang.resolve.java.jetAsJava
import com.intellij.psi.PsiElement import com.intellij.psi.PsiElement
import org.jetbrains.jet.lang.psi.JetDeclaration import org.jetbrains.jet.lang.psi.JetDeclaration
public trait KotlinLightElement<T: JetDeclaration, D: PsiElement> { public trait KotlinLightElement<T : JetDeclaration, D : PsiElement> {
public val origin: T? public val origin: T?
public val delegate: D public val delegate: D
} }
@@ -83,4 +83,9 @@ public class FakeLightClassForFileOfPackage extends AbstractLightClass implement
public PsiElement copy() { public PsiElement copy() {
return new FakeLightClassForFileOfPackage(getManager(), delegate, file); return new FakeLightClassForFileOfPackage(getManager(), delegate, file);
} }
@Override
public String getText() {
return null;
}
} }
@@ -17,11 +17,10 @@
package org.jetbrains.jet.asJava; package org.jetbrains.jet.asJava;
import com.intellij.psi.PsiClass; import com.intellij.psi.PsiClass;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.java.jetAsJava.KotlinLightElement import org.jetbrains.jet.lang.resolve.java.jetAsJava.KotlinLightElement
import org.jetbrains.jet.lang.psi.JetClassOrObject import org.jetbrains.jet.lang.psi.JetClassOrObject
public trait KotlinLightClass: PsiClass, KotlinLightElement<JetClassOrObject, PsiClass> { public trait KotlinLightClass : PsiClass, KotlinLightElement<JetClassOrObject, PsiClass> {
val fqName: FqName val fqName: FqName
} }
@@ -24,13 +24,14 @@ import com.intellij.psi.PsiMethod;
import com.intellij.psi.impl.PsiClassImplUtil; import com.intellij.psi.impl.PsiClassImplUtil;
import com.intellij.psi.impl.light.AbstractLightClass; import com.intellij.psi.impl.light.AbstractLightClass;
import com.intellij.psi.impl.light.LightField; import com.intellij.psi.impl.light.LightField;
import org.jetbrains.jet.asJava.light.KotlinLightField;
import com.intellij.psi.impl.light.LightMethod; import com.intellij.psi.impl.light.LightMethod;
import com.intellij.psi.impl.source.ClassInnerStuffCache; import com.intellij.psi.impl.source.ClassInnerStuffCache;
import com.intellij.psi.impl.source.PsiExtensibleClass; import com.intellij.psi.impl.source.PsiExtensibleClass;
import com.intellij.util.Function; import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.asJava.light.KotlinLightField;
import org.jetbrains.jet.lang.psi.JetClassOrObject;
import org.jetbrains.jet.lang.psi.JetDeclaration; import org.jetbrains.jet.lang.psi.JetDeclaration;
import org.jetbrains.jet.lang.psi.JetProperty; import org.jetbrains.jet.lang.psi.JetProperty;
@@ -132,4 +133,10 @@ public abstract class KotlinWrappingLightClass extends AbstractLightClass implem
} }
}); });
} }
@Override
public String getText() {
JetClassOrObject origin = getOrigin();
return origin == null ? null : origin.getText();
}
} }