FIR: introduce type resolvers #KT-24019 Fixed

This commit is contained in:
Simon Ogorodnik
2018-03-20 01:25:51 +03:00
committed by Mikhail Glukhikh
parent aa20d88dff
commit 3e7b9c4e27
22 changed files with 386 additions and 3 deletions
@@ -371,7 +371,12 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
is ConeClassType -> {
val sb = StringBuilder()
val fqName = fqName
sb.append(fqName.packageFqName.asString().replace('.', '/'))
val packageFqName = fqName.packageFqName
if (packageFqName.isRoot) {
sb.append("<root>")
} else {
sb.append(packageFqName.asString().replace('.', '/'))
}
sb.append('.')
sb.append(fqName.classFqName.asString())
sb.append(typeArguments.joinToString { it ->
@@ -0,0 +1,10 @@
/*
* 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
interface FirResolvedClass : FirClass, FirDescriptorOwner<FirResolvedClass>
@@ -0,0 +1,19 @@
/*
* 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.FirClass
import org.jetbrains.kotlin.fir.declarations.FirResolvedClass
class FirResolvedClassImpl(val delegate: FirClass, override val descriptor: FirBasedDescriptor<FirResolvedClass>) :
FirResolvedClass, FirClass by delegate {
init {
descriptor.bind(this)
}
}
@@ -66,6 +66,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformClass(enumEntry, data)
}
open fun transformResolvedClass(resolvedClass: FirResolvedClass, data: D): CompositeTransformResult<FirDeclaration> {
return transformClass(resolvedClass, data)
}
open fun transformTypeAlias(typeAlias: FirTypeAlias, data: D): CompositeTransformResult<FirDeclaration> {
return transformMemberDeclaration(typeAlias, data)
}
@@ -246,6 +250,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformEnumEntry(enumEntry, data)
}
final override fun visitResolvedClass(resolvedClass: FirResolvedClass, data: D): CompositeTransformResult<FirElement> {
return transformResolvedClass(resolvedClass, data)
}
final override fun visitCallableMember(callableMember: FirCallableMember, data: D): CompositeTransformResult<FirElement> {
return transformCallableMember(callableMember, data)
}
@@ -66,6 +66,10 @@ abstract class FirVisitor<out R, in D> {
return visitClass(enumEntry, data)
}
open fun visitResolvedClass(resolvedClass: FirResolvedClass, data: D): R {
return visitClass(resolvedClass, data)
}
open fun visitTypeAlias(typeAlias: FirTypeAlias, data: D): R {
return visitMemberDeclaration(typeAlias, data)
}
@@ -66,6 +66,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitClass(enumEntry, null)
}
open fun visitResolvedClass(resolvedClass: FirResolvedClass) {
visitClass(resolvedClass, null)
}
open fun visitTypeAlias(typeAlias: FirTypeAlias) {
visitMemberDeclaration(typeAlias, null)
}
@@ -246,6 +250,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitEnumEntry(enumEntry)
}
final override fun visitResolvedClass(resolvedClass: FirResolvedClass, data: Nothing?) {
visitResolvedClass(resolvedClass)
}
final override fun visitCallableMember(callableMember: FirCallableMember, data: Nothing?) {
visitCallableMember(callableMember)
}