KtLightClassForDecompiledDeclaration is now marked by KtLightClassMarker

Rename: KtJavaMirrorMarker -> KtLightClassMarker
Introduce code to be able to tell light classes from source and binaries apart in 'frontend.java'
This commit is contained in:
Pavel V. Talanov
2016-07-28 16:46:37 +03:00
parent d402a15049
commit 30892e0154
12 changed files with 51 additions and 21 deletions
@@ -14,7 +14,10 @@
* limitations under the License.
*/
package org.jetbrains.kotlin.asJava;
package org.jetbrains.kotlin.asJava
public interface KtJavaMirrorMarker {
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
interface KtLightClassMarker {
val originKind: LightClassOriginKind
}
@@ -24,7 +24,7 @@ import com.intellij.psi.search.DelegatingGlobalSearchScope;
import com.intellij.psi.search.GlobalSearchScope;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.asJava.KtJavaMirrorMarker;
import org.jetbrains.kotlin.asJava.KtLightClassMarker;
import org.jetbrains.kotlin.idea.KotlinFileType;
import org.jetbrains.kotlin.load.java.structure.JavaClass;
import org.jetbrains.kotlin.load.java.structure.JavaPackage;
@@ -107,7 +107,7 @@ public class JavaClassFinderImpl implements JavaClassFinder {
throw new IllegalStateException("Requested " + fqName + ", got " + javaClass.getFqName());
}
if (psiClass instanceof KtJavaMirrorMarker) {
if (psiClass instanceof KtLightClassMarker) {
throw new IllegalStateException("Kotlin light classes should not be found by JavaPsiFacade, resolving: " + fqName);
}
@@ -22,7 +22,7 @@ import kotlin.collections.CollectionsKt;
import kotlin.jvm.functions.Function1;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.asJava.KtJavaMirrorMarker;
import org.jetbrains.kotlin.asJava.KtLightClassMarker;
import org.jetbrains.kotlin.descriptors.Visibility;
import org.jetbrains.kotlin.load.java.structure.*;
import org.jetbrains.kotlin.name.FqName;
@@ -154,9 +154,14 @@ public class JavaClassImpl extends JavaClassifierImpl<PsiClass> implements JavaC
return JavaElementUtil.getVisibility(this);
}
@Nullable
@Override
public boolean isKotlinLightClass() {
return getPsi() instanceof KtJavaMirrorMarker;
public LightClassOriginKind getLightClassOriginKind() {
PsiClass psiClass = getPsi();
if (psiClass instanceof KtLightClassMarker) {
return ((KtLightClassMarker) psiClass).getOriginKind();
}
return null;
}
@Nullable