Combine all metadata annotations into one kotlin/Metadata
This commit is contained in:
+12
-2
@@ -20,12 +20,15 @@ import com.intellij.codeInsight.completion.AllClassesGetter
|
||||
import com.intellij.codeInsight.completion.CompletionParameters
|
||||
import com.intellij.codeInsight.completion.PrefixMatcher
|
||||
import com.intellij.psi.PsiClass
|
||||
import com.intellij.psi.PsiLiteral
|
||||
import org.jetbrains.kotlin.asJava.KtLightClass
|
||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.idea.core.KotlinIndicesHelper
|
||||
import org.jetbrains.kotlin.idea.project.ProjectStructureUtil
|
||||
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
|
||||
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
|
||||
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
|
||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||
@@ -87,7 +90,14 @@ class AllClassesCompletion(private val parameters: CompletionParameters,
|
||||
}
|
||||
|
||||
private fun PsiClass.isSyntheticKotlinClass(): Boolean {
|
||||
if (!name!!.contains('$')) return false // optimization to not analyze annotations of all classes
|
||||
return modifierList?.findAnnotation(kotlin.jvm.internal.KotlinSyntheticClass::class.java.name) != null
|
||||
if ('$' !in name!!) return false // optimization to not analyze annotations of all classes
|
||||
val metadata = modifierList?.findAnnotation(JvmAnnotationNames.METADATA.asString())
|
||||
if (metadata != null &&
|
||||
(metadata.findAttributeValue(JvmAnnotationNames.KIND_FIELD_NAME) as? PsiLiteral)?.value ==
|
||||
KotlinClassHeader.Kind.SYNTHETIC_CLASS.id) {
|
||||
return true
|
||||
}
|
||||
|
||||
return modifierList?.findAnnotation(JvmAnnotationNames.KOTLIN_SYNTHETIC_CLASS.asString()) != null
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,7 +23,6 @@ import com.intellij.psi.JavaPsiFacade
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.asJava.LightClassTestCommon
|
||||
import org.jetbrains.kotlin.idea.KotlinDaemonAnalyzerTestCase
|
||||
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil
|
||||
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase
|
||||
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
@@ -81,14 +80,13 @@ private fun testLightClass(project: Project, testDataPath: String, normalize: (S
|
||||
.replace("java.lang.String s)", "java.lang.String p)")
|
||||
.replace("java.lang.String s1", "java.lang.String p1")
|
||||
.replace("java.lang.String s2", "java.lang.String p2")
|
||||
.removeLinesStartingWith("@kotlin.jvm.internal.KotlinClass")
|
||||
.removeLinesStartingWith("@kotlin.jvm.internal.KotlinFileFacade")
|
||||
.removeLinesStartingWith("@kotlin.jvm.internal.")
|
||||
.removeLinesStartingWith("@kotlin.Metadata")
|
||||
.run(normalize)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
private fun String.removeLinesStartingWith(prefix: String) : String {
|
||||
private fun String.removeLinesStartingWith(prefix: String): String {
|
||||
return lines().filterNot { it.trimStart().startsWith(prefix) }.joinToString(separator = "\n")
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user