From 4eda19b36a87e94e0484f937cc1abbbcad9865fd Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Tue, 6 Sep 2016 11:45:01 +0300 Subject: [PATCH] Do not generate constructors for annotation classes. --- .../jetbrains/kotlin/psi2ir/generators/ClassGenerator.kt | 6 +++++- compiler/testData/ir/irText/classes/classes.txt | 4 ---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ClassGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ClassGenerator.kt index 4195caf89da..a210ff4a7c2 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ClassGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ClassGenerator.kt @@ -32,6 +32,7 @@ import org.jetbrains.kotlin.renderer.DescriptorRenderer import org.jetbrains.kotlin.renderer.DescriptorRendererModifier import org.jetbrains.kotlin.renderer.OverrideRenderingPolicy import org.jetbrains.kotlin.resolve.BindingContext +import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import java.lang.AssertionError import java.util.* @@ -186,7 +187,10 @@ class ClassGenerator(val declarationGenerator: DeclarationGenerator) : Generator } private fun generatePrimaryConstructor(irClass: IrClassImpl, ktClassOrObject: KtClassOrObject) { - val primaryConstructorDescriptor = irClass.descriptor.unsubstitutedPrimaryConstructor ?: return + val classDescriptor = irClass.descriptor + if (DescriptorUtils.isAnnotationClass(classDescriptor)) return + + val primaryConstructorDescriptor = classDescriptor.unsubstitutedPrimaryConstructor ?: return val irPrimaryConstructor = IrConstructorImpl(ktClassOrObject.startOffset, ktClassOrObject.endOffset, IrDeclarationOrigin.DEFINED, primaryConstructorDescriptor) diff --git a/compiler/testData/ir/irText/classes/classes.txt b/compiler/testData/ir/irText/classes/classes.txt index 6c6d012d856..495586df13e 100644 --- a/compiler/testData/ir/irText/classes/classes.txt +++ b/compiler/testData/ir/irText/classes/classes.txt @@ -11,10 +11,6 @@ FILE /classes.kt DELEGATING_CONSTRUCTOR_CALL 'constructor Any()' INSTANCE_INITIALIZER_CALL classDescriptor='TestObject' CLASS ANNOTATION_CLASS TestAnnotationClass - CONSTRUCTOR public constructor TestAnnotationClass() - BLOCK_BODY - DELEGATING_CONSTRUCTOR_CALL 'constructor Any()' - INSTANCE_INITIALIZER_CALL classDescriptor='TestAnnotationClass' CLASS ENUM_CLASS TestEnumClass CONSTRUCTOR private constructor TestEnumClass() BLOCK_BODY