@@ -769,6 +769,18 @@ class X {
769769 return id
770770 }
771771
772+ private fun getTypeAliasLabel (ta : IrTypeAlias ) : String {
773+ val parentId = useDeclarationParent(ta.parent)
774+ val label = " @\" type_alias;{$parentId };${ta.name.asString()} \" "
775+ return label
776+ }
777+
778+ fun useTypeAlias (ta : IrTypeAlias ): Label <out DbKt_type_alias > {
779+ var label = getTypeAliasLabel(ta)
780+ val id: Label <DbKt_type_alias > = tw.getLabelFor(label)
781+ return id
782+ }
783+
772784 fun useVariable (v : IrVariable ): Label <out DbLocalvar > {
773785 return tw.getVariableLabelFor<DbLocalvar >(v)
774786 }
@@ -793,6 +805,7 @@ open class KotlinFileExtractor(
793805 }
794806 is IrProperty -> extractProperty(declaration, parentId)
795807 is IrEnumEntry -> extractEnumEntry(declaration, parentId)
808+ is IrTypeAlias -> extractTypeAlias(declaration) // TODO: Pass in and use parentId
796809 else -> logger.warnElement(Severity .ErrorSevere , " Unrecognised IrDeclaration: " + declaration.javaClass, declaration)
797810 }
798811 }
@@ -1031,6 +1044,19 @@ open class KotlinFileExtractor(
10311044 }
10321045 }
10331046
1047+ fun extractTypeAlias (ta : IrTypeAlias ) {
1048+ if (ta.typeParameters.isNotEmpty()) {
1049+ // TODO: Extract this information
1050+ logger.warn(Severity .ErrorSevere , " Type alias type parameters ignored for " + ta.render())
1051+ }
1052+ val id = useTypeAlias(ta)
1053+ val locId = tw.getLocation(ta)
1054+ // TODO: We don't really want to generate any Java types here; we only want the KT type:
1055+ val type = useType(ta.expandedType)
1056+ tw.writeKt_type_alias(id, ta.name.asString(), type.kotlinResult.id)
1057+ tw.writeHasLocation(id, locId)
1058+ }
1059+
10341060 fun extractBody (b : IrBody , callable : Label <out DbCallable >) {
10351061 when (b) {
10361062 is IrBlockBody -> extractBlockBody(b, callable, callable, 0 )
0 commit comments