S/LC: avoid building light classes for decompiled built-ins
This commit is contained in:
committed by
Ilya Kirillov
parent
0b63f294ab
commit
f9e086a6e3
+9
-1
@@ -21,13 +21,13 @@ import org.jetbrains.kotlin.asJava.ImpreciseResolveResult
|
|||||||
import org.jetbrains.kotlin.asJava.ImpreciseResolveResult.UNSURE
|
import org.jetbrains.kotlin.asJava.ImpreciseResolveResult.UNSURE
|
||||||
import org.jetbrains.kotlin.asJava.elements.KtLightIdentifier
|
import org.jetbrains.kotlin.asJava.elements.KtLightIdentifier
|
||||||
import org.jetbrains.kotlin.config.JvmDefaultMode
|
import org.jetbrains.kotlin.config.JvmDefaultMode
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens.*
|
|
||||||
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
|
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.debugText.getDebugText
|
import org.jetbrains.kotlin.psi.debugText.getDebugText
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.hasExpectModifier
|
import org.jetbrains.kotlin.psi.psiUtil.hasExpectModifier
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
|
import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
|
||||||
import org.jetbrains.kotlin.psi.stubs.KotlinClassOrObjectStub
|
import org.jetbrains.kotlin.psi.stubs.KotlinClassOrObjectStub
|
||||||
|
import org.jetbrains.kotlin.serialization.deserialization.builtins.BuiltInSerializerProtocol
|
||||||
import javax.swing.Icon
|
import javax.swing.Icon
|
||||||
|
|
||||||
abstract class KtLightClassForSourceDeclaration(
|
abstract class KtLightClassForSourceDeclaration(
|
||||||
@@ -211,11 +211,19 @@ fun KtClassOrObject.defaultJavaAncestorQualifiedName(): String? {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun KtClassOrObject.shouldNotBeVisibleAsLightClass(): Boolean {
|
fun KtClassOrObject.shouldNotBeVisibleAsLightClass(): Boolean {
|
||||||
|
val containingFile = containingFile
|
||||||
if (containingFile is KtCodeFragment) {
|
if (containingFile is KtCodeFragment) {
|
||||||
// Avoid building light classes for code fragments
|
// Avoid building light classes for code fragments
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Avoid building light classes for decompiled built-ins
|
||||||
|
if ((containingFile as? KtFile)?.isCompiled == true &&
|
||||||
|
containingFile.virtualFile.extension == BuiltInSerializerProtocol.BUILTINS_FILE_EXTENSION
|
||||||
|
) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
if (parentsWithSelf.filterIsInstance<KtClassOrObject>().any { it.hasExpectModifier() }) {
|
if (parentsWithSelf.filterIsInstance<KtClassOrObject>().any { it.hasExpectModifier() }) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user