Minor, add extra constant to JvmAnnotationNames, drop unneeded utility
This commit is contained in:
@@ -800,11 +800,6 @@ public class AsmUtil {
|
|||||||
strings.visitEnd();
|
strings.visitEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public static String asmDescByFqNameWithoutInnerClasses(@NotNull FqName fqName) {
|
|
||||||
return asmTypeByFqNameWithoutInnerClasses(fqName).getDescriptor();
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static Type asmTypeByFqNameWithoutInnerClasses(@NotNull FqName fqName) {
|
public static Type asmTypeByFqNameWithoutInnerClasses(@NotNull FqName fqName) {
|
||||||
return Type.getObjectType(internalNameByFqNameWithoutInnerClasses(fqName));
|
return Type.getObjectType(internalNameByFqNameWithoutInnerClasses(fqName));
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
|
|||||||
import org.jetbrains.org.objectweb.asm.AnnotationVisitor
|
import org.jetbrains.org.objectweb.asm.AnnotationVisitor
|
||||||
|
|
||||||
fun writeKotlinMetadata(cb: ClassBuilder, kind: KotlinClassHeader.Kind, action: (AnnotationVisitor) -> Unit) {
|
fun writeKotlinMetadata(cb: ClassBuilder, kind: KotlinClassHeader.Kind, action: (AnnotationVisitor) -> Unit) {
|
||||||
val av = cb.newAnnotation(AsmUtil.asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.METADATA), true)
|
val av = cb.newAnnotation(JvmAnnotationNames.METADATA_DESC, true)
|
||||||
av.visit(JvmAnnotationNames.METADATA_VERSION_FIELD_NAME, JvmMetadataVersion.INSTANCE.toArray())
|
av.visit(JvmAnnotationNames.METADATA_VERSION_FIELD_NAME, JvmMetadataVersion.INSTANCE.toArray())
|
||||||
av.visit(JvmAnnotationNames.BYTECODE_VERSION_FIELD_NAME, JvmBytecodeBinaryVersion.INSTANCE.toArray())
|
av.visit(JvmAnnotationNames.BYTECODE_VERSION_FIELD_NAME, JvmBytecodeBinaryVersion.INSTANCE.toArray())
|
||||||
av.visit(JvmAnnotationNames.KIND_FIELD_NAME, kind.id)
|
av.visit(JvmAnnotationNames.KIND_FIELD_NAME, kind.id)
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ import com.intellij.ide.highlighter.JavaClassFileType
|
|||||||
import com.intellij.testFramework.UsefulTestCase
|
import com.intellij.testFramework.UsefulTestCase
|
||||||
import org.jetbrains.kotlin.cli.common.ExitCode
|
import org.jetbrains.kotlin.cli.common.ExitCode
|
||||||
import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler
|
import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler
|
||||||
import org.jetbrains.kotlin.codegen.AsmUtil
|
|
||||||
import org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil
|
import org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil
|
||||||
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
|
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
|
||||||
import org.jetbrains.kotlin.load.java.JvmBytecodeBinaryVersion
|
import org.jetbrains.kotlin.load.java.JvmBytecodeBinaryVersion
|
||||||
@@ -64,7 +63,7 @@ class WrongBytecodeVersionTest : UsefulTestCase() {
|
|||||||
ClassReader(file.inputStream()).accept(object : ClassVisitor(Opcodes.ASM5, writer) {
|
ClassReader(file.inputStream()).accept(object : ClassVisitor(Opcodes.ASM5, writer) {
|
||||||
override fun visitAnnotation(desc: String, visible: Boolean): AnnotationVisitor? {
|
override fun visitAnnotation(desc: String, visible: Boolean): AnnotationVisitor? {
|
||||||
val superVisitor = super.visitAnnotation(desc, visible)!!
|
val superVisitor = super.visitAnnotation(desc, visible)!!
|
||||||
if (desc == AsmUtil.asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.METADATA)) {
|
if (desc == JvmAnnotationNames.METADATA_DESC) {
|
||||||
return object : AnnotationVisitor(Opcodes.ASM5, superVisitor) {
|
return object : AnnotationVisitor(Opcodes.ASM5, superVisitor) {
|
||||||
override fun visit(name: String?, value: Any) {
|
override fun visit(name: String?, value: Any) {
|
||||||
val updatedValue: Any =
|
val updatedValue: Any =
|
||||||
|
|||||||
@@ -30,8 +30,6 @@ import org.jetbrains.org.objectweb.asm.tree.MethodNode
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
object InlineTestUtil {
|
object InlineTestUtil {
|
||||||
private val KOTLIN_METADATA_DESC = AsmUtil.asmDescByFqNameWithoutInnerClasses(JvmAnnotationNames.METADATA)
|
|
||||||
|
|
||||||
fun checkNoCallsToInline(files: Iterable<OutputFile>, sourceFiles: List<KtFile>) {
|
fun checkNoCallsToInline(files: Iterable<OutputFile>, sourceFiles: List<KtFile>) {
|
||||||
val inlineInfo = obtainInlineInfo(files)
|
val inlineInfo = obtainInlineInfo(files)
|
||||||
val inlineMethods = inlineInfo.inlineMethods
|
val inlineMethods = inlineInfo.inlineMethods
|
||||||
@@ -90,7 +88,7 @@ object InlineTestUtil {
|
|||||||
private var skipMethodsOfThisClass = false
|
private var skipMethodsOfThisClass = false
|
||||||
|
|
||||||
override fun visitAnnotation(desc: String, visible: Boolean): AnnotationVisitor? {
|
override fun visitAnnotation(desc: String, visible: Boolean): AnnotationVisitor? {
|
||||||
if (desc == KOTLIN_METADATA_DESC) {
|
if (desc == JvmAnnotationNames.METADATA_DESC) {
|
||||||
return object : AnnotationVisitor(Opcodes.ASM5) {
|
return object : AnnotationVisitor(Opcodes.ASM5) {
|
||||||
override fun visit(name: String?, value: Any) {
|
override fun visit(name: String?, value: Any) {
|
||||||
if (name == JvmAnnotationNames.KIND_FIELD_NAME && value == KotlinClassHeader.Kind.MULTIFILE_CLASS.id) {
|
if (name == JvmAnnotationNames.KIND_FIELD_NAME && value == KotlinClassHeader.Kind.MULTIFILE_CLASS.id) {
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import java.lang.annotation.Annotation;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.jetbrains.kotlin.load.java.JvmAnnotationNames.METADATA;
|
import static org.jetbrains.kotlin.load.java.JvmAnnotationNames.METADATA_FQ_NAME;
|
||||||
import static org.jetbrains.kotlin.load.java.JvmAnnotationNames.METADATA_VERSION_FIELD_NAME;
|
import static org.jetbrains.kotlin.load.java.JvmAnnotationNames.METADATA_VERSION_FIELD_NAME;
|
||||||
|
|
||||||
public class KotlinSyntheticClassAnnotationTest extends CodegenTestCase {
|
public class KotlinSyntheticClassAnnotationTest extends CodegenTestCase {
|
||||||
@@ -139,7 +139,7 @@ public class KotlinSyntheticClassAnnotationTest extends CodegenTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void assertAnnotatedWithMetadata(@NotNull Class<?> aClass) {
|
private void assertAnnotatedWithMetadata(@NotNull Class<?> aClass) {
|
||||||
String annotationFqName = METADATA.asString();
|
String annotationFqName = METADATA_FQ_NAME.asString();
|
||||||
Class<? extends Annotation> annotationClass = loadAnnotationClassQuietly(annotationFqName);
|
Class<? extends Annotation> annotationClass = loadAnnotationClassQuietly(annotationFqName);
|
||||||
assertTrue("No annotation " + annotationFqName + " found in " + aClass, aClass.isAnnotationPresent(annotationClass));
|
assertTrue("No annotation " + annotationFqName + " found in " + aClass, aClass.isAnnotationPresent(annotationClass));
|
||||||
|
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ abstract class AbstractLocalClassProtoTest : TestCaseWithTmpdir() {
|
|||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
private fun assertHasAnnotationData(clazz: Class<*>) {
|
private fun assertHasAnnotationData(clazz: Class<*>) {
|
||||||
checkNotNull(clazz.getAnnotation(
|
checkNotNull(clazz.getAnnotation(
|
||||||
clazz.classLoader.loadClass(JvmAnnotationNames.METADATA.asString()) as Class<Annotation>
|
clazz.classLoader.loadClass(JvmAnnotationNames.METADATA_FQ_NAME.asString()) as Class<Annotation>
|
||||||
)) { "Metadata annotation is not found for class $clazz" }
|
)) { "Metadata annotation is not found for class $clazz" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -27,7 +27,8 @@ import java.util.HashSet;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public final class JvmAnnotationNames {
|
public final class JvmAnnotationNames {
|
||||||
public static final FqName METADATA = new FqName("kotlin.Metadata");
|
public static final FqName METADATA_FQ_NAME = new FqName("kotlin.Metadata");
|
||||||
|
public static final String METADATA_DESC = "L" + JvmClassName.byFqNameWithoutInnerClasses(METADATA_FQ_NAME).getInternalName() + ";";
|
||||||
|
|
||||||
public static final String METADATA_VERSION_FIELD_NAME = "mv";
|
public static final String METADATA_VERSION_FIELD_NAME = "mv";
|
||||||
public static final String BYTECODE_VERSION_FIELD_NAME = "bv";
|
public static final String BYTECODE_VERSION_FIELD_NAME = "bv";
|
||||||
@@ -68,7 +69,7 @@ public final class JvmAnnotationNames {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isSpecialAnnotation(@NotNull ClassId classId, boolean javaSpecificAnnotationsAreSpecial) {
|
public static boolean isSpecialAnnotation(@NotNull ClassId classId, boolean javaSpecificAnnotationsAreSpecial) {
|
||||||
if (classId.asSingleFqName().equals(METADATA)) return true;
|
if (classId.asSingleFqName().equals(METADATA_FQ_NAME)) return true;
|
||||||
|
|
||||||
if (javaSpecificAnnotationsAreSpecial) {
|
if (javaSpecificAnnotationsAreSpecial) {
|
||||||
JvmClassName className = JvmClassName.byClassId(classId);
|
JvmClassName className = JvmClassName.byClassId(classId);
|
||||||
|
|||||||
+1
-1
@@ -90,7 +90,7 @@ public class ReadKotlinClassHeaderAnnotationVisitor implements AnnotationVisitor
|
|||||||
@Override
|
@Override
|
||||||
public AnnotationArgumentVisitor visitAnnotation(@NotNull ClassId classId, @NotNull SourceElement source) {
|
public AnnotationArgumentVisitor visitAnnotation(@NotNull ClassId classId, @NotNull SourceElement source) {
|
||||||
FqName fqName = classId.asSingleFqName();
|
FqName fqName = classId.asSingleFqName();
|
||||||
if (fqName.equals(METADATA)) {
|
if (fqName.equals(METADATA_FQ_NAME)) {
|
||||||
return new KotlinMetadataArgumentVisitor();
|
return new KotlinMetadataArgumentVisitor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -93,7 +93,7 @@ class AllClassesCompletion(private val parameters: CompletionParameters,
|
|||||||
|
|
||||||
private fun PsiClass.isSyntheticKotlinClass(): Boolean {
|
private fun PsiClass.isSyntheticKotlinClass(): Boolean {
|
||||||
if ('$' !in name!!) return false // optimization to not analyze annotations of all classes
|
if ('$' !in name!!) return false // optimization to not analyze annotations of all classes
|
||||||
val metadata = modifierList?.findAnnotation(JvmAnnotationNames.METADATA.asString())
|
val metadata = modifierList?.findAnnotation(JvmAnnotationNames.METADATA_FQ_NAME.asString())
|
||||||
return (metadata?.findAttributeValue(JvmAnnotationNames.KIND_FIELD_NAME) as? PsiLiteral)?.value ==
|
return (metadata?.findAttributeValue(JvmAnnotationNames.KIND_FIELD_NAME) as? PsiLiteral)?.value ==
|
||||||
KotlinClassHeader.Kind.SYNTHETIC_CLASS.id
|
KotlinClassHeader.Kind.SYNTHETIC_CLASS.id
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ import com.intellij.openapi.fileTypes.StdFileTypes
|
|||||||
import com.intellij.util.indexing.DataIndexer
|
import com.intellij.util.indexing.DataIndexer
|
||||||
import com.intellij.util.indexing.FileBasedIndex
|
import com.intellij.util.indexing.FileBasedIndex
|
||||||
import com.intellij.util.indexing.FileContent
|
import com.intellij.util.indexing.FileContent
|
||||||
import org.jetbrains.kotlin.codegen.AsmUtil.asmDescByFqNameWithoutInnerClasses
|
|
||||||
import org.jetbrains.kotlin.load.java.JvmAnnotationNames.*
|
import org.jetbrains.kotlin.load.java.JvmAnnotationNames.*
|
||||||
import org.jetbrains.kotlin.load.kotlin.JvmMetadataVersion
|
import org.jetbrains.kotlin.load.kotlin.JvmMetadataVersion
|
||||||
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
|
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
|
||||||
@@ -41,8 +40,6 @@ object KotlinMetadataVersionIndex : KotlinAbiVersionIndexBase<KotlinMetadataVers
|
|||||||
|
|
||||||
private val VERSION = 4
|
private val VERSION = 4
|
||||||
|
|
||||||
private val METADATA_DESC = asmDescByFqNameWithoutInnerClasses(METADATA)
|
|
||||||
|
|
||||||
private val kindsToIndex = setOf(
|
private val kindsToIndex = setOf(
|
||||||
KotlinClassHeader.Kind.CLASS,
|
KotlinClassHeader.Kind.CLASS,
|
||||||
KotlinClassHeader.Kind.FILE_FACADE,
|
KotlinClassHeader.Kind.FILE_FACADE,
|
||||||
|
|||||||
Reference in New Issue
Block a user