diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DeclarationGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DeclarationGenerator.kt index 7733e1ec29a..ed67a9b9640 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DeclarationGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/DeclarationGenerator.kt @@ -135,7 +135,7 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator { getterDescriptor, getterBody) if (propertyDescriptor.isVar) { - val setterDescriptor = propertyDescriptor.setter ?: throw AssertionError("Delegated property should have setter: $propertyDescriptor") + val setterDescriptor = propertyDescriptor.setter ?: throw AssertionError("Delegated var should have setter: $propertyDescriptor") val setterBody = createBodyGenerator(setterDescriptor).generateDelegatedPropertySetter(ktDelegate, delegateDescriptor, setterDescriptor) irProperty.setter = IrPropertySetterImpl(ktDelegate.startOffset, ktDelegate.endOffset, IrDeclarationOrigin.DELEGATED_PROPERTY_ACCESSOR, setterDescriptor, setterBody) @@ -153,18 +153,16 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator { val accessorDescriptor = getOrFail(BindingContext.PROPERTY_ACCESSOR, ktGetter) val getterDescriptor = accessorDescriptor as? PropertyGetterDescriptor ?: TODO("not a getter?") val irGetterBody = generateFunctionBody(getterDescriptor, ktGetter.bodyExpression ?: TODO("default getter")) - val irGetter = IrPropertyGetterImpl(ktGetter.startOffset, ktGetter.endOffset, IrDeclarationOrigin.DEFINED, - getterDescriptor, irGetterBody) - irGetter + IrPropertyGetterImpl(ktGetter.startOffset, ktGetter.endOffset, IrDeclarationOrigin.DEFINED, + getterDescriptor, irGetterBody) } irProperty.setter = ktProperty.setter?.let { ktSetter -> val accessorDescriptor = getOrFail(BindingContext.PROPERTY_ACCESSOR, ktSetter) val setterDescriptor = accessorDescriptor as? PropertySetterDescriptor ?: TODO("not a setter?") val irSetterBody = generateFunctionBody(setterDescriptor, ktSetter.bodyExpression ?: TODO("default setter")) - val irSetter = IrPropertySetterImpl(ktSetter.startOffset, ktSetter.endOffset, IrDeclarationOrigin.DEFINED, - setterDescriptor, irSetterBody) - irSetter + IrPropertySetterImpl(ktSetter.startOffset, ktSetter.endOffset, IrDeclarationOrigin.DEFINED, + setterDescriptor, irSetterBody) } return irProperty diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/Generator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/Generator.kt index 93fb810eaf1..5ea9b4b2b92 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/Generator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/Generator.kt @@ -52,7 +52,7 @@ fun Generator.getInferredTypeWithImplicitCasts(key: KtExpression): KotlinType? = context.bindingContext.getType(key) fun Generator.getInferredTypeWithImplicitCastsOrFail(key: KtExpression): KotlinType = - getInferredTypeWithImplicitCasts(key) ?: throw AssertionError("No type for expression: ${key.text}") + getInferredTypeWithImplicitCasts(key) ?: throw RuntimeException("No type for expression: ${key.text}") fun Generator.getResolvedCall(key: KtElement): ResolvedCall? = key.getResolvedCall(context.bindingContext) diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StatementGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StatementGenerator.kt index 7ef7a5e17a9..da3b3f2b8de 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StatementGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/StatementGenerator.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.ir.IrStatement import org.jetbrains.kotlin.ir.assertCast import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin +import org.jetbrains.kotlin.ir.declarations.IrTypeAliasImpl import org.jetbrains.kotlin.ir.declarations.IrVariableImpl import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.psi.* @@ -345,6 +346,10 @@ class StatementGenerator( override fun visitClassOrObject(classOrObject: KtClassOrObject, data: Nothing?): IrStatement = LocalClassGenerator(this).generateLocalClass(classOrObject) + + override fun visitTypeAlias(typeAlias: KtTypeAlias, data: Nothing?): IrStatement = + IrTypeAliasImpl(typeAlias.startOffset, typeAlias.endOffset, IrDeclarationOrigin.DEFINED, + getOrFail(BindingContext.TYPE_ALIAS, typeAlias)) } abstract class StatementGeneratorExtension(val statementGenerator: StatementGenerator) : GeneratorWithScope { diff --git a/compiler/testData/ir/irText/declarations/typeAlias.kt b/compiler/testData/ir/irText/declarations/typeAlias.kt new file mode 100644 index 00000000000..9b366d74dd5 --- /dev/null +++ b/compiler/testData/ir/irText/declarations/typeAlias.kt @@ -0,0 +1,9 @@ +typealias Test1 = String + +fun foo() { + typealias TestLocal = String +} + +class C { + typealias TestNested = String +} \ No newline at end of file diff --git a/compiler/testData/ir/irText/declarations/typeAlias.txt b/compiler/testData/ir/irText/declarations/typeAlias.txt new file mode 100644 index 00000000000..fd1156cc6da --- /dev/null +++ b/compiler/testData/ir/irText/declarations/typeAlias.txt @@ -0,0 +1,10 @@ +FILE /typeAlias.kt + TYPEALIAS Test1 type=kotlin.String + FUN public fun foo(): kotlin.Unit + BLOCK_BODY + TYPEALIAS TestLocal type=kotlin.String + CLASS CLASS C + CONSTRUCTOR public constructor C() + BLOCK_BODY + INSTANCE_INITIALIZER_CALL classDescriptor=C + TYPEALIAS TestNested type=kotlin.String diff --git a/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java b/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java index 9505087a8e3..682ca8dd2b8 100644 --- a/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java @@ -171,6 +171,12 @@ public class IrTextTestCaseGenerated extends AbstractIrTextTestCase { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/ir/irText/declarations/delegatedProperties.kt"); doTest(fileName); } + + @TestMetadata("typeAlias.kt") + public void testTypeAlias() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/ir/irText/declarations/typeAlias.kt"); + doTest(fileName); + } } @TestMetadata("compiler/testData/ir/irText/expressions")