FIR resolve: support star imports, enum entries
This commit is contained in:
@@ -182,6 +182,11 @@ class FirRenderer(builder: StringBuilder) : FirVisitorVoid() {
|
||||
)
|
||||
}
|
||||
|
||||
override fun visitResolvedEnumEntry(resolvedEnumEntry: FirResolvedEnumEntry) {
|
||||
print("(resolved) ")
|
||||
visitEnumEntry(resolvedEnumEntry)
|
||||
}
|
||||
|
||||
override fun visitEnumEntry(enumEntry: FirEnumEntry) {
|
||||
visitClass(enumEntry)
|
||||
}
|
||||
|
||||
@@ -14,4 +14,9 @@ interface FirResolvedClass : FirClass, FirDescriptorOwner<FirResolvedClass> {
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
visitor.visitResolvedClass(this, data)
|
||||
}
|
||||
|
||||
interface FirResolvedEnumEntry : FirEnumEntry, FirDescriptorOwner<FirResolvedEnumEntry> {
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
visitor.visitResolvedEnumEntry(this, data)
|
||||
}
|
||||
@@ -7,9 +7,14 @@ package org.jetbrains.kotlin.fir.declarations
|
||||
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
|
||||
interface FirResolvedImport : FirImport {
|
||||
val resolvedFqName: ClassId
|
||||
val packageFqName: FqName
|
||||
|
||||
val relativeClassName: FqName?
|
||||
|
||||
val resolvedFqName: ClassId?
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
visitor.visitResolvedImport(this, data)
|
||||
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* 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.FirEnumEntry
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedEnumEntry
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
||||
|
||||
class FirResolvedEnumEntryImpl(
|
||||
val delegate: FirEnumEntry,
|
||||
override val descriptor: FirBasedDescriptor<FirResolvedEnumEntry>
|
||||
) : FirResolvedEnumEntry, FirEnumEntry by delegate {
|
||||
|
||||
init {
|
||||
descriptor.bind(this)
|
||||
}
|
||||
|
||||
override fun accept(visitor: FirVisitorVoid) {
|
||||
super<FirResolvedEnumEntry>.accept(visitor)
|
||||
}
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R {
|
||||
return super<FirResolvedEnumEntry>.accept(visitor, data)
|
||||
}
|
||||
}
|
||||
+7
@@ -9,11 +9,18 @@ import org.jetbrains.kotlin.fir.declarations.FirImport
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedImport
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
|
||||
class FirResolvedImportImpl(
|
||||
val delegate: FirImport,
|
||||
override val resolvedFqName: ClassId
|
||||
) : FirResolvedImport, FirImport by delegate {
|
||||
override val packageFqName: FqName
|
||||
get() = resolvedFqName.packageFqName
|
||||
|
||||
override val relativeClassName: FqName
|
||||
get() = resolvedFqName.relativeClassName
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
visitor.visitResolvedImport(this, data)
|
||||
}
|
||||
+26
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* 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.declarations.FirImport
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvedImport
|
||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
|
||||
class FirResolvedPackageStarImport(
|
||||
val delegate: FirImport,
|
||||
override val packageFqName: FqName
|
||||
) : FirResolvedImport, FirImport by delegate {
|
||||
override val relativeClassName: FqName?
|
||||
get() = null
|
||||
|
||||
override val resolvedFqName: ClassId?
|
||||
get() = null
|
||||
|
||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
|
||||
visitor.visitResolvedImport(this, data)
|
||||
}
|
||||
+12
-4
@@ -66,6 +66,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
||||
return transformClass(enumEntry, data)
|
||||
}
|
||||
|
||||
open fun transformResolvedEnumEntry(resolvedEnumEntry: FirResolvedEnumEntry, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
return transformEnumEntry(resolvedEnumEntry, data)
|
||||
}
|
||||
|
||||
open fun transformResolvedClass(resolvedClass: FirResolvedClass, data: D): CompositeTransformResult<FirDeclaration> {
|
||||
return transformClass(resolvedClass, data)
|
||||
}
|
||||
@@ -214,6 +218,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
||||
return transformElement(element, data)
|
||||
}
|
||||
|
||||
final override fun visitEnumEntry(enumEntry: FirEnumEntry, data: D): CompositeTransformResult<FirElement> {
|
||||
return transformEnumEntry(enumEntry, data)
|
||||
}
|
||||
|
||||
final override fun visitExpression(expression: FirExpression, data: D): CompositeTransformResult<FirElement> {
|
||||
return transformExpression(expression, data)
|
||||
}
|
||||
@@ -270,10 +278,6 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
||||
return transformDelegatedConstructorCall(delegatedConstructorCall, data)
|
||||
}
|
||||
|
||||
final override fun visitEnumEntry(enumEntry: FirEnumEntry, data: D): CompositeTransformResult<FirElement> {
|
||||
return transformEnumEntry(enumEntry, data)
|
||||
}
|
||||
|
||||
final override fun visitResolvedClass(resolvedClass: FirResolvedClass, data: D): CompositeTransformResult<FirElement> {
|
||||
return transformResolvedClass(resolvedClass, data)
|
||||
}
|
||||
@@ -306,6 +310,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
||||
return transformAnonymousInitializer(anonymousInitializer, data)
|
||||
}
|
||||
|
||||
final override fun visitResolvedEnumEntry(resolvedEnumEntry: FirResolvedEnumEntry, data: D): CompositeTransformResult<FirElement> {
|
||||
return transformResolvedEnumEntry(resolvedEnumEntry, data)
|
||||
}
|
||||
|
||||
final override fun visitBody(body: FirBody, data: D): CompositeTransformResult<FirElement> {
|
||||
return transformBody(body, data)
|
||||
}
|
||||
|
||||
@@ -66,6 +66,10 @@ abstract class FirVisitor<out R, in D> {
|
||||
return visitClass(enumEntry, data)
|
||||
}
|
||||
|
||||
open fun visitResolvedEnumEntry(resolvedEnumEntry: FirResolvedEnumEntry, data: D): R {
|
||||
return visitEnumEntry(resolvedEnumEntry, data)
|
||||
}
|
||||
|
||||
open fun visitResolvedClass(resolvedClass: FirResolvedClass, data: D): R {
|
||||
return visitClass(resolvedClass, data)
|
||||
}
|
||||
|
||||
+12
-4
@@ -66,6 +66,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitClass(enumEntry, null)
|
||||
}
|
||||
|
||||
open fun visitResolvedEnumEntry(resolvedEnumEntry: FirResolvedEnumEntry) {
|
||||
visitEnumEntry(resolvedEnumEntry, null)
|
||||
}
|
||||
|
||||
open fun visitResolvedClass(resolvedClass: FirResolvedClass) {
|
||||
visitClass(resolvedClass, null)
|
||||
}
|
||||
@@ -214,6 +218,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitElement(element)
|
||||
}
|
||||
|
||||
final override fun visitEnumEntry(enumEntry: FirEnumEntry, data: Nothing?) {
|
||||
visitEnumEntry(enumEntry)
|
||||
}
|
||||
|
||||
final override fun visitExpression(expression: FirExpression, data: Nothing?) {
|
||||
visitExpression(expression)
|
||||
}
|
||||
@@ -270,10 +278,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitDelegatedConstructorCall(delegatedConstructorCall)
|
||||
}
|
||||
|
||||
final override fun visitEnumEntry(enumEntry: FirEnumEntry, data: Nothing?) {
|
||||
visitEnumEntry(enumEntry)
|
||||
}
|
||||
|
||||
final override fun visitResolvedClass(resolvedClass: FirResolvedClass, data: Nothing?) {
|
||||
visitResolvedClass(resolvedClass)
|
||||
}
|
||||
@@ -306,6 +310,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitAnonymousInitializer(anonymousInitializer)
|
||||
}
|
||||
|
||||
final override fun visitResolvedEnumEntry(resolvedEnumEntry: FirResolvedEnumEntry, data: Nothing?) {
|
||||
visitResolvedEnumEntry(resolvedEnumEntry)
|
||||
}
|
||||
|
||||
final override fun visitBody(body: FirBody, data: Nothing?) {
|
||||
visitBody(body)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user