KT-8206 java.lang.NoSuchFieldError: $kotlinClass for deprecated::class

Instantiate class literals for annotation classes as foreign.
This commit is contained in:
Dmitry Petrov
2015-07-09 10:41:47 +03:00
committed by Alexander Udalov
parent 95f5d24988
commit d540ff8890
3 changed files with 17 additions and 1 deletions
@@ -2795,7 +2795,10 @@ public class ExpressionCodegen extends JetVisitor<StackValue, StackValue> implem
ClassifierDescriptor descriptor = type.getConstructor().getDeclarationDescriptor();
//noinspection ConstantConditions
ModuleDescriptor module = DescriptorUtils.getContainingModule(descriptor);
if (descriptor instanceof JavaClassDescriptor || module == module.getBuiltIns().getBuiltInsModule()) {
// Instantiate annotation classes as foreign due to bug in JDK 6 and 7:
// http://bugs.java.com/bugdatabase/view_bug.do?bug_id=6857918
if (descriptor instanceof JavaClassDescriptor || module == module.getBuiltIns().getBuiltInsModule() ||
DescriptorUtils.isAnnotationClass(descriptor)) {
putJavaLangClassInstance(v, classAsmType);
wrapJavaClassIntoKClass(v);
}