FIR generator: support type parameters with bounds for interfaces

This commits also reorders bridge visit functions
This commit is contained in:
Mikhail Glukhikh
2019-01-15 13:14:32 +03:00
parent fa1f3871c0
commit aa97175d40
7 changed files with 286 additions and 243 deletions
@@ -14,7 +14,7 @@ abstract class AbstractVisitorGenerator(val referencesData: DataCollector.Refere
returnType: String,
override: Boolean = false,
final: Boolean = false,
typeParameters: List<String> = emptyList(),
typeParametersWithBounds: List<String> = emptyList(),
body: (Printer.() -> Unit)?
) {
@@ -33,15 +33,15 @@ abstract class AbstractVisitorGenerator(val referencesData: DataCollector.Refere
}
}
printWithNoIndent("fun ")
if (typeParameters.isNotEmpty()) {
if (typeParametersWithBounds.isNotEmpty()) {
printWithNoIndent("<")
separatedOneLine(typeParameters, ", ")
separatedOneLine(typeParametersWithBounds, ", ")
printWithNoIndent("> ")
}
printWithNoIndent(name, "(")
parameters
.flatMap { (a, b) ->
listOf(a, ": ", b, ", ")
.flatMap { (parameterName, typeNameWithTypeParameters) ->
listOf(parameterName, ": ", typeNameWithTypeParameters.asStringWithoutBounds(), ", ")
}.dropLast(1)
.forEach {
printWithNoIndent(it)
@@ -118,7 +118,7 @@ abstract class AbstractVisitorGenerator(val referencesData: DataCollector.Refere
fun allElementTypes() =
referencesData.back.let { map ->
referencesData.direct.let { map ->
map.keys + map.values.flatten()
}.distinct()
@@ -11,16 +11,56 @@ import org.jetbrains.kotlin.psi.psiUtil.findDescendantOfType
class DataCollector {
data class NameWithTypeParameters(val name: String, val typeParameters: List<String>) : Comparable<NameWithTypeParameters> {
class NameWithTypeParameters private constructor(
val name: String,
val typeParameters: List<String>,
private val typeParameterBounds: Map<String, String>
) : Comparable<NameWithTypeParameters> {
override fun compareTo(other: NameWithTypeParameters): Int = name.compareTo(other.name)
constructor(name: String, typeParameterString: String) :
this(name, typeParameterString.drop(1).dropLast(1).split(" ", "\t", ",").filter { it.isNotEmpty() })
private constructor(name: String, typeParameters: Pair<List<String>, Map<String, String>>) :
this(name, typeParameters.first, typeParameters.second)
constructor(name: String) : this(name, emptyList())
constructor(name: String, typeParameterString: String) :
this(name, typeParameterString.splitToParametersAndBounds())
constructor(name: String) : this(name, emptyList(), emptyMap())
fun typeParametersWithBounds(): List<String> =
typeParameters.map { parameter ->
parameter + (typeParameterBounds[parameter]?.let { " : $it" } ?: "")
}
fun asStringWithoutBounds(): String =
name + if (typeParameters.isEmpty()) "" else typeParameters.joinToString(prefix = "<", postfix = ">", separator = ", ")
override fun equals(other: Any?): Boolean =
other is NameWithTypeParameters && name == other.name
override fun hashCode(): Int = name.hashCode()
override fun toString(): String =
name + if (typeParameters.isEmpty()) "" else typeParameters.joinToString(prefix = "<", postfix = ">", separator = ", ")
name + if (typeParameters.isEmpty()) "" else typeParameters.joinToString(prefix = "<", postfix = ">", separator = ", ") {
val bound = typeParameterBounds[it]
if (bound == null) it else "$it : $bound"
}
companion object {
private fun String.splitToParametersAndBounds(): Pair<List<String>, Map<String, String>> {
val typeParametersWithBounds = drop(1).dropLast(1).split(",").map { it.trim() }.filter { it.isNotBlank() }
val typeParameters = mutableListOf<String>()
val bounds = mutableMapOf<String, String>()
for (parameterWithBounds in typeParametersWithBounds) {
val parts = parameterWithBounds.split(":").map { it.trim() }
typeParameters += parts[0]
if (parts.size > 1) {
bounds[parts[0]] = parts[1]
}
}
return typeParameters to bounds
}
}
}
private val references = mutableMapOf<NameWithTypeParameters, List<NameWithTypeParameters>>()
@@ -66,9 +106,9 @@ class DataCollector {
references[classNameWithParameters] = listOfNotNull(manual.toNameWithTypeParameters())
} else {
references[classNameWithParameters] =
klass.superTypeListEntries.mapNotNull {
it.toNameWithTypeParameters()
}
klass.superTypeListEntries.mapNotNull {
it.toNameWithTypeParameters()
}
}
}
@@ -20,7 +20,7 @@ class ParametricTransformerGenerator(data: DataCollector.ReferencesData) : Abstr
"data" to NameWithTypeParameters("D")
),
constructCompositeBoxType("E"),
typeParameters = listOf("E : $FIR_ELEMENT_CLASS_NAME"),
typeParametersWithBounds = listOf("E : $FIR_ELEMENT_CLASS_NAME"),
body = null
)
@@ -63,7 +63,7 @@ class ParametricTransformerGenerator(data: DataCollector.ReferencesData) : Abstr
returnType = constructCompositeBoxType(FIR_ELEMENT_CLASS_NAME.name),
override = true,
final = true,
typeParameters = className.typeParameters
typeParametersWithBounds = className.typeParametersWithBounds()
) {
print("return ")
generateCall("transform$shortcutName", listOf(parameterName, "data"))
@@ -87,7 +87,7 @@ class ParametricTransformerGenerator(data: DataCollector.ReferencesData) : Abstr
"data" to NameWithTypeParameters("D")
),
constructCompositeBoxType("E"),
typeParameters = listOf("E : $parent") + className.typeParameters
typeParametersWithBounds = listOf("E : $parent") + className.typeParametersWithBounds()
) {
print("return ")
generateCall("transform${parent.name.classNameWithoutFir}", listOf(parameterName, "data"))
@@ -101,7 +101,7 @@ class ParametricTransformerGenerator(data: DataCollector.ReferencesData) : Abstr
"data" to NameWithTypeParameters("D")
),
constructCompositeBoxType(baseType.name),
typeParameters = className.typeParameters
typeParametersWithBounds = className.typeParametersWithBounds()
) {
print("return ")
generateCall("transform${parent.name.classNameWithoutFir}", listOf(parameterName, "data"))
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.fir.visitors.generator
import org.jetbrains.kotlin.fir.visitors.generator.DataCollector.NameWithTypeParameters
import org.jetbrains.kotlin.utils.Printer
class SimpleVisitorGenerator(referencesData: DataCollector.ReferencesData) : AbstractVisitorGenerator(referencesData) {
@@ -15,11 +16,12 @@ class SimpleVisitorGenerator(referencesData: DataCollector.ReferencesData) : Abs
"visitElement",
parameters = mapOf(
"element" to FIR_ELEMENT_CLASS_NAME,
"data" to DataCollector.NameWithTypeParameters("D")
"data" to NameWithTypeParameters("D")
),
returnType = "R",
body = null
)
referencesData.walkHierarchyTopDown(from = FIR_ELEMENT_CLASS_NAME) { parent, element ->
generateVisit(element, parent)
}
@@ -27,9 +29,10 @@ class SimpleVisitorGenerator(referencesData: DataCollector.ReferencesData) : Abs
println("}")
}
private fun Printer.generateVisit(
className: DataCollector.NameWithTypeParameters,
parent: DataCollector.NameWithTypeParameters
className: NameWithTypeParameters,
parent: NameWithTypeParameters
) {
val shortcutName = className.name.classNameWithoutFir
val parameterName = shortcutName.decapitalize().safeName
@@ -37,10 +40,10 @@ class SimpleVisitorGenerator(referencesData: DataCollector.ReferencesData) : Abs
name = "visit$shortcutName",
parameters = mapOf(
parameterName to className,
"data" to DataCollector.NameWithTypeParameters("D")
"data" to NameWithTypeParameters("D")
),
returnType = "R",
typeParameters = className.typeParameters
typeParametersWithBounds = className.typeParametersWithBounds()
) {
print("return ")
generateCall("visit${parent.name.classNameWithoutFir}", listOf(parameterName, "data"))
@@ -21,8 +21,8 @@ class UnitVisitorGenerator(referencesData: DataCollector.ReferencesData) : Abstr
body = null
)
referencesData.walkHierarchyTopDown(FIR_ELEMENT_CLASS_NAME) { parent, klass ->
generateVisit(klass, parent)
referencesData.walkHierarchyTopDown(from = FIR_ELEMENT_CLASS_NAME) { parent, element ->
generateVisit(element, parent)
}
allElementTypes().forEach {
@@ -46,7 +46,7 @@ class UnitVisitorGenerator(referencesData: DataCollector.ReferencesData) : Abstr
parameterName to className
),
returnType = "Unit",
typeParameters = className.typeParameters
typeParametersWithBounds = className.typeParametersWithBounds()
) {
printIndent()
generateCall("visit${parent.name.classNameWithoutFir}", listOf(parameterName, "null"))
@@ -66,7 +66,7 @@ class UnitVisitorGenerator(referencesData: DataCollector.ReferencesData) : Abstr
returnType = "Unit",
override = true,
final = true,
typeParameters = className.typeParameters
typeParametersWithBounds = className.typeParametersWithBounds()
) {
printIndent()
generateCall("visit$shortcutName", listOf(parameterName))
@@ -198,14 +198,38 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformTypeProjection(typeProjectionWithVariance, data)
}
final override fun visitAnnotationCall(annotationCall: FirAnnotationCall, data: D): CompositeTransformResult<FirElement> {
return transformAnnotationCall(annotationCall, data)
}
final override fun visitAnonymousInitializer(anonymousInitializer: FirAnonymousInitializer, data: D): CompositeTransformResult<FirElement> {
return transformAnonymousInitializer(anonymousInitializer, data)
}
final override fun visitBody(body: FirBody, data: D): CompositeTransformResult<FirElement> {
return transformBody(body, data)
}
final override fun visitCall(call: FirCall, data: D): CompositeTransformResult<FirElement> {
return transformCall(call, data)
}
final override fun visitCallableMember(callableMember: FirCallableMember, data: D): CompositeTransformResult<FirElement> {
return transformCallableMember(callableMember, data)
}
final override fun visitClass(klass: FirClass, data: D): CompositeTransformResult<FirElement> {
return transformClass(klass, data)
}
final override fun <T> visitConstExpression(constExpression: FirConstExpression<T>, data: D): CompositeTransformResult<FirElement> {
return transformConstExpression(constExpression, data)
}
final override fun visitConstructor(constructor: FirConstructor, data: D): CompositeTransformResult<FirElement> {
return transformConstructor(constructor, data)
}
final override fun visitDeclaration(declaration: FirDeclaration, data: D): CompositeTransformResult<FirElement> {
return transformDeclaration(declaration, data)
}
@@ -218,18 +242,54 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformDeclarationWithBody(declarationWithBody, data)
}
final override fun visitElement(element: FirElement, data: D): CompositeTransformResult<FirElement> {
return transformElement(element, data)
final override fun visitDelegatedConstructorCall(delegatedConstructorCall: FirDelegatedConstructorCall, data: D): CompositeTransformResult<FirElement> {
return transformDelegatedConstructorCall(delegatedConstructorCall, data)
}
final override fun visitDelegatedType(delegatedType: FirDelegatedType, data: D): CompositeTransformResult<FirElement> {
return transformDelegatedType(delegatedType, data)
}
final override fun visitDynamicType(dynamicType: FirDynamicType, data: D): CompositeTransformResult<FirElement> {
return transformDynamicType(dynamicType, data)
}
final override fun visitEnumEntry(enumEntry: FirEnumEntry, data: D): CompositeTransformResult<FirElement> {
return transformEnumEntry(enumEntry, data)
}
final override fun visitErrorDeclaration(errorDeclaration: FirErrorDeclaration, data: D): CompositeTransformResult<FirElement> {
return transformErrorDeclaration(errorDeclaration, data)
}
final override fun visitErrorExpression(errorExpression: FirErrorExpression, data: D): CompositeTransformResult<FirElement> {
return transformErrorExpression(errorExpression, data)
}
final override fun visitErrorType(errorType: FirErrorType, data: D): CompositeTransformResult<FirElement> {
return transformErrorType(errorType, data)
}
final override fun visitExpression(expression: FirExpression, data: D): CompositeTransformResult<FirElement> {
return transformExpression(expression, data)
}
final override fun visitFile(file: FirFile, data: D): CompositeTransformResult<FirElement> {
return transformFile(file, data)
}
final override fun visitFunction(function: FirFunction, data: D): CompositeTransformResult<FirElement> {
return transformFunction(function, data)
}
final override fun visitFunctionType(functionType: FirFunctionType, data: D): CompositeTransformResult<FirElement> {
return transformFunctionType(functionType, data)
}
final override fun visitImplicitType(implicitType: FirImplicitType, data: D): CompositeTransformResult<FirElement> {
return transformImplicitType(implicitType, data)
}
final override fun visitImport(import: FirImport, data: D): CompositeTransformResult<FirElement> {
return transformImport(import, data)
}
@@ -242,14 +302,42 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformNamedDeclaration(namedDeclaration, data)
}
final override fun visitNamedFunction(namedFunction: FirNamedFunction, data: D): CompositeTransformResult<FirElement> {
return transformNamedFunction(namedFunction, data)
}
final override fun visitPackageFragment(packageFragment: FirPackageFragment, data: D): CompositeTransformResult<FirElement> {
return transformPackageFragment(packageFragment, data)
}
final override fun visitProperty(property: FirProperty, data: D): CompositeTransformResult<FirElement> {
return transformProperty(property, data)
}
final override fun visitPropertyAccessor(propertyAccessor: FirPropertyAccessor, data: D): CompositeTransformResult<FirElement> {
return transformPropertyAccessor(propertyAccessor, data)
}
final override fun visitResolvedDeclarationStatus(resolvedDeclarationStatus: FirResolvedDeclarationStatus, data: D): CompositeTransformResult<FirElement> {
return transformResolvedDeclarationStatus(resolvedDeclarationStatus, data)
}
final override fun visitResolvedFunctionType(resolvedFunctionType: FirResolvedFunctionType, data: D): CompositeTransformResult<FirElement> {
return transformResolvedFunctionType(resolvedFunctionType, data)
}
final override fun visitResolvedImport(resolvedImport: FirResolvedImport, data: D): CompositeTransformResult<FirElement> {
return transformResolvedImport(resolvedImport, data)
}
final override fun visitResolvedType(resolvedType: FirResolvedType, data: D): CompositeTransformResult<FirElement> {
return transformResolvedType(resolvedType, data)
}
final override fun visitStarProjection(starProjection: FirStarProjection, data: D): CompositeTransformResult<FirElement> {
return transformStarProjection(starProjection, data)
}
final override fun visitStatement(statement: FirStatement, data: D): CompositeTransformResult<FirElement> {
return transformStatement(statement, data)
}
@@ -258,42 +346,34 @@ 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 visitTypeParameter(typeParameter: FirTypeParameter, data: D): CompositeTransformResult<FirElement> {
return transformTypeParameter(typeParameter, data)
}
final override fun visitTypeProjection(typeProjection: FirTypeProjection, data: D): CompositeTransformResult<FirElement> {
return transformTypeProjection(typeProjection, data)
}
final override fun visitTypeProjectionWithVariance(typeProjectionWithVariance: FirTypeProjectionWithVariance, data: D): CompositeTransformResult<FirElement> {
return transformTypeProjectionWithVariance(typeProjectionWithVariance, data)
}
final override fun visitTypeWithNullability(typeWithNullability: FirTypeWithNullability, data: D): CompositeTransformResult<FirElement> {
return transformTypeWithNullability(typeWithNullability, data)
}
final override fun visitAnnotationCall(annotationCall: FirAnnotationCall, data: D): CompositeTransformResult<FirElement> {
return transformAnnotationCall(annotationCall, data)
}
final override fun visitDelegatedConstructorCall(delegatedConstructorCall: FirDelegatedConstructorCall, data: D): CompositeTransformResult<FirElement> {
return transformDelegatedConstructorCall(delegatedConstructorCall, data)
}
final override fun visitEnumEntry(enumEntry: FirEnumEntry, data: D): CompositeTransformResult<FirElement> {
return transformEnumEntry(enumEntry, data)
}
final override fun visitCallableMember(callableMember: FirCallableMember, data: D): CompositeTransformResult<FirElement> {
return transformCallableMember(callableMember, data)
}
final override fun visitErrorDeclaration(errorDeclaration: FirErrorDeclaration, data: D): CompositeTransformResult<FirElement> {
return transformErrorDeclaration(errorDeclaration, data)
}
final override fun visitProperty(property: FirProperty, data: D): CompositeTransformResult<FirElement> {
return transformProperty(property, data)
}
final override fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration, data: D): CompositeTransformResult<FirElement> {
return transformTypedDeclaration(typedDeclaration, data)
}
final override fun visitUserType(userType: FirUserType, data: D): CompositeTransformResult<FirElement> {
return transformUserType(userType, data)
}
final override fun visitValueParameter(valueParameter: FirValueParameter, data: D): CompositeTransformResult<FirElement> {
return transformValueParameter(valueParameter, data)
}
@@ -302,88 +382,8 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformVariable(variable, data)
}
final override fun visitResolvedDeclarationStatus(resolvedDeclarationStatus: FirResolvedDeclarationStatus, data: D): CompositeTransformResult<FirElement> {
return transformResolvedDeclarationStatus(resolvedDeclarationStatus, data)
}
final override fun visitAnonymousInitializer(anonymousInitializer: FirAnonymousInitializer, data: D): CompositeTransformResult<FirElement> {
return transformAnonymousInitializer(anonymousInitializer, data)
}
final override fun visitBody(body: FirBody, data: D): CompositeTransformResult<FirElement> {
return transformBody(body, data)
}
final override fun <T> visitConstExpression(constExpression: FirConstExpression<T>, data: D): CompositeTransformResult<FirElement> {
return transformConstExpression(constExpression, data)
}
final override fun visitErrorExpression(errorExpression: FirErrorExpression, data: D): CompositeTransformResult<FirElement> {
return transformErrorExpression(errorExpression, data)
}
final override fun visitConstructor(constructor: FirConstructor, data: D): CompositeTransformResult<FirElement> {
return transformConstructor(constructor, data)
}
final override fun visitNamedFunction(namedFunction: FirNamedFunction, data: D): CompositeTransformResult<FirElement> {
return transformNamedFunction(namedFunction, data)
}
final override fun visitPropertyAccessor(propertyAccessor: FirPropertyAccessor, data: D): CompositeTransformResult<FirElement> {
return transformPropertyAccessor(propertyAccessor, data)
}
final override fun visitResolvedImport(resolvedImport: FirResolvedImport, data: D): CompositeTransformResult<FirElement> {
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)
}
final override fun visitFile(file: FirFile, data: D): CompositeTransformResult<FirElement> {
return transformFile(file, data)
}
final override fun visitResolvedFunctionType(resolvedFunctionType: FirResolvedFunctionType, data: D): CompositeTransformResult<FirElement> {
return transformResolvedFunctionType(resolvedFunctionType, data)
}
final override fun visitDelegatedType(delegatedType: FirDelegatedType, data: D): CompositeTransformResult<FirElement> {
return transformDelegatedType(delegatedType, data)
}
final override fun visitErrorType(errorType: FirErrorType, data: D): CompositeTransformResult<FirElement> {
return transformErrorType(errorType, data)
}
final override fun visitImplicitType(implicitType: FirImplicitType, data: D): CompositeTransformResult<FirElement> {
return transformImplicitType(implicitType, data)
}
final override fun visitStarProjection(starProjection: FirStarProjection, data: D): CompositeTransformResult<FirElement> {
return transformStarProjection(starProjection, data)
}
final override fun visitTypeProjectionWithVariance(typeProjectionWithVariance: FirTypeProjectionWithVariance, data: D): CompositeTransformResult<FirElement> {
return transformTypeProjectionWithVariance(typeProjectionWithVariance, data)
}
final override fun visitDynamicType(dynamicType: FirDynamicType, data: D): CompositeTransformResult<FirElement> {
return transformDynamicType(dynamicType, data)
}
final override fun visitFunctionType(functionType: FirFunctionType, data: D): CompositeTransformResult<FirElement> {
return transformFunctionType(functionType, data)
}
final override fun visitUserType(userType: FirUserType, data: D): CompositeTransformResult<FirElement> {
return transformUserType(userType, data)
final override fun visitElement(element: FirElement, data: D): CompositeTransformResult<FirElement> {
return transformElement(element, data)
}
}
@@ -198,14 +198,38 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitTypeProjection(typeProjectionWithVariance, null)
}
final override fun visitAnnotationCall(annotationCall: FirAnnotationCall, data: Nothing?) {
visitAnnotationCall(annotationCall)
}
final override fun visitAnonymousInitializer(anonymousInitializer: FirAnonymousInitializer, data: Nothing?) {
visitAnonymousInitializer(anonymousInitializer)
}
final override fun visitBody(body: FirBody, data: Nothing?) {
visitBody(body)
}
final override fun visitCall(call: FirCall, data: Nothing?) {
visitCall(call)
}
final override fun visitCallableMember(callableMember: FirCallableMember, data: Nothing?) {
visitCallableMember(callableMember)
}
final override fun visitClass(klass: FirClass, data: Nothing?) {
visitClass(klass)
}
final override fun <T> visitConstExpression(constExpression: FirConstExpression<T>, data: Nothing?) {
visitConstExpression(constExpression)
}
final override fun visitConstructor(constructor: FirConstructor, data: Nothing?) {
visitConstructor(constructor)
}
final override fun visitDeclaration(declaration: FirDeclaration, data: Nothing?) {
visitDeclaration(declaration)
}
@@ -218,18 +242,54 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitDeclarationWithBody(declarationWithBody)
}
final override fun visitElement(element: FirElement, data: Nothing?) {
visitElement(element)
final override fun visitDelegatedConstructorCall(delegatedConstructorCall: FirDelegatedConstructorCall, data: Nothing?) {
visitDelegatedConstructorCall(delegatedConstructorCall)
}
final override fun visitDelegatedType(delegatedType: FirDelegatedType, data: Nothing?) {
visitDelegatedType(delegatedType)
}
final override fun visitDynamicType(dynamicType: FirDynamicType, data: Nothing?) {
visitDynamicType(dynamicType)
}
final override fun visitEnumEntry(enumEntry: FirEnumEntry, data: Nothing?) {
visitEnumEntry(enumEntry)
}
final override fun visitErrorDeclaration(errorDeclaration: FirErrorDeclaration, data: Nothing?) {
visitErrorDeclaration(errorDeclaration)
}
final override fun visitErrorExpression(errorExpression: FirErrorExpression, data: Nothing?) {
visitErrorExpression(errorExpression)
}
final override fun visitErrorType(errorType: FirErrorType, data: Nothing?) {
visitErrorType(errorType)
}
final override fun visitExpression(expression: FirExpression, data: Nothing?) {
visitExpression(expression)
}
final override fun visitFile(file: FirFile, data: Nothing?) {
visitFile(file)
}
final override fun visitFunction(function: FirFunction, data: Nothing?) {
visitFunction(function)
}
final override fun visitFunctionType(functionType: FirFunctionType, data: Nothing?) {
visitFunctionType(functionType)
}
final override fun visitImplicitType(implicitType: FirImplicitType, data: Nothing?) {
visitImplicitType(implicitType)
}
final override fun visitImport(import: FirImport, data: Nothing?) {
visitImport(import)
}
@@ -242,14 +302,42 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitNamedDeclaration(namedDeclaration)
}
final override fun visitNamedFunction(namedFunction: FirNamedFunction, data: Nothing?) {
visitNamedFunction(namedFunction)
}
final override fun visitPackageFragment(packageFragment: FirPackageFragment, data: Nothing?) {
visitPackageFragment(packageFragment)
}
final override fun visitProperty(property: FirProperty, data: Nothing?) {
visitProperty(property)
}
final override fun visitPropertyAccessor(propertyAccessor: FirPropertyAccessor, data: Nothing?) {
visitPropertyAccessor(propertyAccessor)
}
final override fun visitResolvedDeclarationStatus(resolvedDeclarationStatus: FirResolvedDeclarationStatus, data: Nothing?) {
visitResolvedDeclarationStatus(resolvedDeclarationStatus)
}
final override fun visitResolvedFunctionType(resolvedFunctionType: FirResolvedFunctionType, data: Nothing?) {
visitResolvedFunctionType(resolvedFunctionType)
}
final override fun visitResolvedImport(resolvedImport: FirResolvedImport, data: Nothing?) {
visitResolvedImport(resolvedImport)
}
final override fun visitResolvedType(resolvedType: FirResolvedType, data: Nothing?) {
visitResolvedType(resolvedType)
}
final override fun visitStarProjection(starProjection: FirStarProjection, data: Nothing?) {
visitStarProjection(starProjection)
}
final override fun visitStatement(statement: FirStatement, data: Nothing?) {
visitStatement(statement)
}
@@ -258,42 +346,34 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitType(type)
}
final override fun visitTypeAlias(typeAlias: FirTypeAlias, data: Nothing?) {
visitTypeAlias(typeAlias)
}
final override fun visitTypeParameter(typeParameter: FirTypeParameter, data: Nothing?) {
visitTypeParameter(typeParameter)
}
final override fun visitTypeProjection(typeProjection: FirTypeProjection, data: Nothing?) {
visitTypeProjection(typeProjection)
}
final override fun visitTypeProjectionWithVariance(typeProjectionWithVariance: FirTypeProjectionWithVariance, data: Nothing?) {
visitTypeProjectionWithVariance(typeProjectionWithVariance)
}
final override fun visitTypeWithNullability(typeWithNullability: FirTypeWithNullability, data: Nothing?) {
visitTypeWithNullability(typeWithNullability)
}
final override fun visitAnnotationCall(annotationCall: FirAnnotationCall, data: Nothing?) {
visitAnnotationCall(annotationCall)
}
final override fun visitDelegatedConstructorCall(delegatedConstructorCall: FirDelegatedConstructorCall, data: Nothing?) {
visitDelegatedConstructorCall(delegatedConstructorCall)
}
final override fun visitEnumEntry(enumEntry: FirEnumEntry, data: Nothing?) {
visitEnumEntry(enumEntry)
}
final override fun visitCallableMember(callableMember: FirCallableMember, data: Nothing?) {
visitCallableMember(callableMember)
}
final override fun visitErrorDeclaration(errorDeclaration: FirErrorDeclaration, data: Nothing?) {
visitErrorDeclaration(errorDeclaration)
}
final override fun visitProperty(property: FirProperty, data: Nothing?) {
visitProperty(property)
}
final override fun visitTypedDeclaration(typedDeclaration: FirTypedDeclaration, data: Nothing?) {
visitTypedDeclaration(typedDeclaration)
}
final override fun visitUserType(userType: FirUserType, data: Nothing?) {
visitUserType(userType)
}
final override fun visitValueParameter(valueParameter: FirValueParameter, data: Nothing?) {
visitValueParameter(valueParameter)
}
@@ -302,88 +382,8 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitVariable(variable)
}
final override fun visitResolvedDeclarationStatus(resolvedDeclarationStatus: FirResolvedDeclarationStatus, data: Nothing?) {
visitResolvedDeclarationStatus(resolvedDeclarationStatus)
}
final override fun visitAnonymousInitializer(anonymousInitializer: FirAnonymousInitializer, data: Nothing?) {
visitAnonymousInitializer(anonymousInitializer)
}
final override fun visitBody(body: FirBody, data: Nothing?) {
visitBody(body)
}
final override fun <T> visitConstExpression(constExpression: FirConstExpression<T>, data: Nothing?) {
visitConstExpression(constExpression)
}
final override fun visitErrorExpression(errorExpression: FirErrorExpression, data: Nothing?) {
visitErrorExpression(errorExpression)
}
final override fun visitConstructor(constructor: FirConstructor, data: Nothing?) {
visitConstructor(constructor)
}
final override fun visitNamedFunction(namedFunction: FirNamedFunction, data: Nothing?) {
visitNamedFunction(namedFunction)
}
final override fun visitPropertyAccessor(propertyAccessor: FirPropertyAccessor, data: Nothing?) {
visitPropertyAccessor(propertyAccessor)
}
final override fun visitResolvedImport(resolvedImport: FirResolvedImport, data: Nothing?) {
visitResolvedImport(resolvedImport)
}
final override fun visitTypeAlias(typeAlias: FirTypeAlias, data: Nothing?) {
visitTypeAlias(typeAlias)
}
final override fun visitTypeParameter(typeParameter: FirTypeParameter, data: Nothing?) {
visitTypeParameter(typeParameter)
}
final override fun visitFile(file: FirFile, data: Nothing?) {
visitFile(file)
}
final override fun visitResolvedFunctionType(resolvedFunctionType: FirResolvedFunctionType, data: Nothing?) {
visitResolvedFunctionType(resolvedFunctionType)
}
final override fun visitDelegatedType(delegatedType: FirDelegatedType, data: Nothing?) {
visitDelegatedType(delegatedType)
}
final override fun visitErrorType(errorType: FirErrorType, data: Nothing?) {
visitErrorType(errorType)
}
final override fun visitImplicitType(implicitType: FirImplicitType, data: Nothing?) {
visitImplicitType(implicitType)
}
final override fun visitStarProjection(starProjection: FirStarProjection, data: Nothing?) {
visitStarProjection(starProjection)
}
final override fun visitTypeProjectionWithVariance(typeProjectionWithVariance: FirTypeProjectionWithVariance, data: Nothing?) {
visitTypeProjectionWithVariance(typeProjectionWithVariance)
}
final override fun visitDynamicType(dynamicType: FirDynamicType, data: Nothing?) {
visitDynamicType(dynamicType)
}
final override fun visitFunctionType(functionType: FirFunctionType, data: Nothing?) {
visitFunctionType(functionType)
}
final override fun visitUserType(userType: FirUserType, data: Nothing?) {
visitUserType(userType)
final override fun visitElement(element: FirElement, data: Nothing?) {
visitElement(element)
}
}