FIR: add type alias descriptors
This commit is contained in:
@@ -155,6 +155,11 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
visitClass(enumEntry)
|
||||
}
|
||||
|
||||
override fun visitResolvedClass(resolvedClass: FirResolvedClass) {
|
||||
print("(resolved) ")
|
||||
visitClass(resolvedClass)
|
||||
}
|
||||
|
||||
override fun visitClass(klass: FirClass) {
|
||||
visitMemberDeclaration(klass)
|
||||
val attributes = listOfNotNull(
|
||||
@@ -257,11 +262,16 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
println("}")
|
||||
}
|
||||
|
||||
override fun visitResolvedTypeAlias(resolvedTypeAlias: FirResolvedTypeAlias) {
|
||||
print("(resolved) ")
|
||||
visitTypeAlias(resolvedTypeAlias)
|
||||
}
|
||||
|
||||
override fun visitTypeAlias(typeAlias: FirTypeAlias) {
|
||||
typeAlias.annotations.renderAnnotations()
|
||||
visitMemberDeclaration(typeAlias)
|
||||
print(" = ")
|
||||
typeAlias.abbreviatedType.accept(this)
|
||||
typeAlias.expandedType.accept(this)
|
||||
println()
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||
* that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir.declarations
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirDescriptorOwner
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
|
||||
interface FirResolvedTypeAlias : FirTypeAlias, FirDescriptorOwner<FirResolvedTypeAlias> {
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
visitor.visitResolvedTypeAlias(this, data)
|
||||
}
|
||||
@@ -9,13 +9,13 @@ import org.jetbrains.kotlin.fir.types.FirType
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
|
||||
interface FirTypeAlias : FirMemberDeclaration {
|
||||
val abbreviatedType: FirType
|
||||
val expandedType: FirType
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
visitor.visitTypeAlias(this, data)
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||
super.acceptChildren(visitor, data)
|
||||
abbreviatedType.accept(visitor, data)
|
||||
expandedType.accept(visitor, data)
|
||||
}
|
||||
}
|
||||
+4
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.declarations.impl
|
||||
import org.jetbrains.kotlin.fir.FirBasedDescriptor
|
||||
import org.jetbrains.kotlin.fir.declarations.FirClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedClass
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
|
||||
class FirResolvedClassImpl(val delegate: FirClass, override val descriptor: FirBasedDescriptor<FirResolvedClass>) :
|
||||
FirResolvedClass, FirClass by delegate {
|
||||
@@ -16,4 +17,7 @@ class FirResolvedClassImpl(val delegate: FirClass, override val descriptor: FirB
|
||||
descriptor.bind(this)
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R {
|
||||
return super<FirResolvedClass>.accept(visitor, data)
|
||||
}
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||
* that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.fir.declarations.impl
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirBasedDescriptor
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedTypeAlias
|
||||
import org.jetbrains.kotlin.fir.declarations.FirTypeAlias
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
|
||||
class FirResolvedTypeAliasImpl(val delegate: FirTypeAlias, override val descriptor: FirBasedDescriptor<FirResolvedTypeAlias>) :
|
||||
FirResolvedTypeAlias, FirTypeAlias by delegate {
|
||||
|
||||
init {
|
||||
descriptor.bind(this)
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R {
|
||||
return super<FirResolvedTypeAlias>.accept(visitor, data)
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -21,10 +21,10 @@ class FirTypeAliasImpl(
|
||||
psi: PsiElement?,
|
||||
name: Name,
|
||||
visibility: Visibility,
|
||||
override var abbreviatedType: FirType
|
||||
override var expandedType: FirType
|
||||
) : FirAbstractMemberDeclaration(session, psi, name, visibility, Modality.FINAL), FirTypeAlias {
|
||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirElement {
|
||||
abbreviatedType = abbreviatedType.transformSingle(transformer, data)
|
||||
expandedType = expandedType.transformSingle(transformer, data)
|
||||
|
||||
return this
|
||||
}
|
||||
|
||||
+12
-4
@@ -74,6 +74,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
||||
return transformMemberDeclaration(typeAlias, data)
|
||||
}
|
||||
|
||||
open fun transformResolvedTypeAlias(resolvedTypeAlias: FirResolvedTypeAlias, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
return transformTypeAlias(resolvedTypeAlias, data)
|
||||
}
|
||||
|
||||
open fun transformTypeParameter(typeParameter: FirTypeParameter, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
return transformNamedDeclaration(typeParameter, data)
|
||||
}
|
||||
@@ -238,6 +242,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
||||
return transformType(type, data)
|
||||
}
|
||||
|
||||
final override fun visitTypeAlias(typeAlias: FirTypeAlias, data: D): CompositeTransformResult<FirElement> {
|
||||
return transformTypeAlias(typeAlias, data)
|
||||
}
|
||||
|
||||
final override fun visitTypeProjection(typeProjection: FirTypeProjection, data: D): CompositeTransformResult<FirElement> {
|
||||
return transformTypeProjection(typeProjection, data)
|
||||
}
|
||||
@@ -314,10 +322,6 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
||||
return transformResolvedImport(resolvedImport, data)
|
||||
}
|
||||
|
||||
final override fun visitTypeAlias(typeAlias: FirTypeAlias, data: D): CompositeTransformResult<FirElement> {
|
||||
return transformTypeAlias(typeAlias, data)
|
||||
}
|
||||
|
||||
final override fun visitTypeParameter(typeParameter: FirTypeParameter, data: D): CompositeTransformResult<FirElement> {
|
||||
return transformTypeParameter(typeParameter, data)
|
||||
}
|
||||
@@ -338,6 +342,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
||||
return transformImplicitType(implicitType, data)
|
||||
}
|
||||
|
||||
final override fun visitResolvedTypeAlias(resolvedTypeAlias: FirResolvedTypeAlias, data: D): CompositeTransformResult<FirElement> {
|
||||
return transformResolvedTypeAlias(resolvedTypeAlias, data)
|
||||
}
|
||||
|
||||
final override fun visitStarProjection(starProjection: FirStarProjection, data: D): CompositeTransformResult<FirElement> {
|
||||
return transformStarProjection(starProjection, data)
|
||||
}
|
||||
|
||||
@@ -74,6 +74,10 @@ abstract class FirVisitor<out R, in D> {
|
||||
return visitMemberDeclaration(typeAlias, data)
|
||||
}
|
||||
|
||||
open fun visitResolvedTypeAlias(resolvedTypeAlias: FirResolvedTypeAlias, data: D): R {
|
||||
return visitTypeAlias(resolvedTypeAlias, data)
|
||||
}
|
||||
|
||||
open fun visitTypeParameter(typeParameter: FirTypeParameter, data: D): R {
|
||||
return visitNamedDeclaration(typeParameter, data)
|
||||
}
|
||||
|
||||
+12
-4
@@ -74,6 +74,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitMemberDeclaration(typeAlias, null)
|
||||
}
|
||||
|
||||
open fun visitResolvedTypeAlias(resolvedTypeAlias: FirResolvedTypeAlias) {
|
||||
visitTypeAlias(resolvedTypeAlias, null)
|
||||
}
|
||||
|
||||
open fun visitTypeParameter(typeParameter: FirTypeParameter) {
|
||||
visitNamedDeclaration(typeParameter, null)
|
||||
}
|
||||
@@ -238,6 +242,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitType(type)
|
||||
}
|
||||
|
||||
final override fun visitTypeAlias(typeAlias: FirTypeAlias, data: Nothing?) {
|
||||
visitTypeAlias(typeAlias)
|
||||
}
|
||||
|
||||
final override fun visitTypeProjection(typeProjection: FirTypeProjection, data: Nothing?) {
|
||||
visitTypeProjection(typeProjection)
|
||||
}
|
||||
@@ -314,10 +322,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitResolvedImport(resolvedImport)
|
||||
}
|
||||
|
||||
final override fun visitTypeAlias(typeAlias: FirTypeAlias, data: Nothing?) {
|
||||
visitTypeAlias(typeAlias)
|
||||
}
|
||||
|
||||
final override fun visitTypeParameter(typeParameter: FirTypeParameter, data: Nothing?) {
|
||||
visitTypeParameter(typeParameter)
|
||||
}
|
||||
@@ -338,6 +342,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitImplicitType(implicitType)
|
||||
}
|
||||
|
||||
final override fun visitResolvedTypeAlias(resolvedTypeAlias: FirResolvedTypeAlias, data: Nothing?) {
|
||||
visitResolvedTypeAlias(resolvedTypeAlias)
|
||||
}
|
||||
|
||||
final override fun visitStarProjection(starProjection: FirStarProjection, data: Nothing?) {
|
||||
visitStarProjection(starProjection)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user