[FIR] Get rid of FirResolvedFunctionTypeRef

This commit is contained in:
Dmitriy Novozhilov
2020-09-14 14:46:31 +03:00
parent edab50ac61
commit 93d63f7c66
25 changed files with 39 additions and 257 deletions
@@ -7,12 +7,12 @@ package org.jetbrains.kotlin.fir.resolve.transformers
import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic
import org.jetbrains.kotlin.fir.diagnostics.ConeUnexpectedTypeArgumentsError import org.jetbrains.kotlin.fir.diagnostics.ConeUnexpectedTypeArgumentsError
import org.jetbrains.kotlin.fir.resolve.typeResolver import org.jetbrains.kotlin.fir.resolve.typeResolver
import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.scopes.FirScope
import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.types.builder.buildErrorTypeRef import org.jetbrains.kotlin.fir.types.builder.buildErrorTypeRef
import org.jetbrains.kotlin.fir.types.builder.buildResolvedFunctionTypeRef
import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult import org.jetbrains.kotlin.fir.visitors.CompositeTransformResult
import org.jetbrains.kotlin.fir.visitors.compose import org.jetbrains.kotlin.fir.visitors.compose
@@ -45,15 +45,19 @@ class FirSpecificTypeResolverTransformer(
override fun transformFunctionTypeRef(functionTypeRef: FirFunctionTypeRef, data: FirScope): CompositeTransformResult<FirTypeRef> { override fun transformFunctionTypeRef(functionTypeRef: FirFunctionTypeRef, data: FirScope): CompositeTransformResult<FirTypeRef> {
functionTypeRef.transformChildren(this, data) functionTypeRef.transformChildren(this, data)
return buildResolvedFunctionTypeRef { val resolvedType = typeResolver.resolveType(functionTypeRef, data, areBareTypesAllowed).takeIfAcceptable()
source = functionTypeRef.source return if (resolvedType != null && resolvedType !is ConeClassErrorType) {
type = typeResolver.resolveType(functionTypeRef, data, areBareTypesAllowed).takeIfAcceptable() ?: return functionTypeRef.compose() buildResolvedTypeRef {
isMarkedNullable = functionTypeRef.isMarkedNullable source = functionTypeRef.source
isSuspend = functionTypeRef.isSuspend type = resolvedType
receiverTypeRef = functionTypeRef.receiverTypeRef annotations += functionTypeRef.annotations
returnTypeRef = functionTypeRef.returnTypeRef }
annotations += functionTypeRef.annotations } else {
valueParameters += functionTypeRef.valueParameters buildErrorTypeRef {
source = functionTypeRef.source
diagnostic = (resolvedType as? ConeClassErrorType)?.diagnostic
?: ConeSimpleDiagnostic("Unresolved functional type: ${functionTypeRef.render()}")
}
}.compose() }.compose()
} }
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.fir.types package org.jetbrains.kotlin.fir.types
import org.jetbrains.kotlin.fir.FirPureAbstractElement
import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.visitors.* import org.jetbrains.kotlin.fir.visitors.*
@@ -15,7 +14,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY * DO NOT MODIFY IT MANUALLY
*/ */
abstract class FirComposedSuperTypeRef : FirPureAbstractElement(), FirTypeRef { abstract class FirComposedSuperTypeRef : FirTypeRef() {
abstract override val source: FirSourceElement? abstract override val source: FirSourceElement?
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
abstract val superTypeRefs: List<FirResolvedTypeRef> abstract val superTypeRefs: List<FirResolvedTypeRef>
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.fir.types package org.jetbrains.kotlin.fir.types
import org.jetbrains.kotlin.fir.FirPureAbstractElement
import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.visitors.* import org.jetbrains.kotlin.fir.visitors.*
@@ -15,7 +14,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY * DO NOT MODIFY IT MANUALLY
*/ */
abstract class FirDynamicTypeRef : FirPureAbstractElement(), FirTypeRefWithNullability { abstract class FirDynamicTypeRef : FirTypeRefWithNullability() {
abstract override val source: FirSourceElement? abstract override val source: FirSourceElement?
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
abstract override val isMarkedNullable: Boolean abstract override val isMarkedNullable: Boolean
@@ -15,16 +15,16 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY * DO NOT MODIFY IT MANUALLY
*/ */
interface FirFunctionTypeRef : FirTypeRefWithNullability { abstract class FirFunctionTypeRef : FirTypeRefWithNullability() {
override val source: FirSourceElement? abstract override val source: FirSourceElement?
override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
override val isMarkedNullable: Boolean abstract override val isMarkedNullable: Boolean
val receiverTypeRef: FirTypeRef? abstract val receiverTypeRef: FirTypeRef?
val valueParameters: List<FirValueParameter> abstract val valueParameters: List<FirValueParameter>
val returnTypeRef: FirTypeRef abstract val returnTypeRef: FirTypeRef
val isSuspend: Boolean abstract val isSuspend: Boolean
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitFunctionTypeRef(this, data) override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitFunctionTypeRef(this, data)
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirFunctionTypeRef abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirFunctionTypeRef
} }
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.fir.types package org.jetbrains.kotlin.fir.types
import org.jetbrains.kotlin.fir.FirPureAbstractElement
import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.visitors.* import org.jetbrains.kotlin.fir.visitors.*
@@ -15,7 +14,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY * DO NOT MODIFY IT MANUALLY
*/ */
abstract class FirImplicitTypeRef : FirPureAbstractElement(), FirTypeRef { abstract class FirImplicitTypeRef : FirTypeRef() {
abstract override val source: FirSourceElement? abstract override val source: FirSourceElement?
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
@@ -1,32 +0,0 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* 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.types
import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.visitors.*
/*
* This file was generated automatically
* DO NOT MODIFY IT MANUALLY
*/
abstract class FirResolvedFunctionTypeRef : FirResolvedTypeRef(), FirFunctionTypeRef {
abstract override val source: FirSourceElement?
abstract override val annotations: List<FirAnnotationCall>
abstract override val type: ConeKotlinType
abstract override val delegatedTypeRef: FirTypeRef?
abstract override val isMarkedNullable: Boolean
abstract override val receiverTypeRef: FirTypeRef?
abstract override val valueParameters: List<FirValueParameter>
abstract override val returnTypeRef: FirTypeRef
abstract override val isSuspend: Boolean
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitResolvedFunctionTypeRef(this, data)
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirResolvedFunctionTypeRef
}
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.fir.types package org.jetbrains.kotlin.fir.types
import org.jetbrains.kotlin.fir.FirPureAbstractElement
import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.visitors.* import org.jetbrains.kotlin.fir.visitors.*
@@ -15,7 +14,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY * DO NOT MODIFY IT MANUALLY
*/ */
abstract class FirResolvedTypeRef : FirPureAbstractElement(), FirTypeRef { abstract class FirResolvedTypeRef : FirTypeRef() {
abstract override val source: FirSourceElement? abstract override val source: FirSourceElement?
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
abstract val type: ConeKotlinType abstract val type: ConeKotlinType
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.fir.types package org.jetbrains.kotlin.fir.types
import org.jetbrains.kotlin.fir.FirAnnotationContainer import org.jetbrains.kotlin.fir.FirAnnotationContainer
import org.jetbrains.kotlin.fir.FirPureAbstractElement
import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.visitors.* import org.jetbrains.kotlin.fir.visitors.*
@@ -15,11 +16,11 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY * DO NOT MODIFY IT MANUALLY
*/ */
interface FirTypeRef : FirAnnotationContainer { abstract class FirTypeRef : FirPureAbstractElement(), FirAnnotationContainer {
override val source: FirSourceElement? abstract override val source: FirSourceElement?
override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitTypeRef(this, data) override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitTypeRef(this, data)
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirTypeRef abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirTypeRef
} }
@@ -14,12 +14,12 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY * DO NOT MODIFY IT MANUALLY
*/ */
interface FirTypeRefWithNullability : FirTypeRef { abstract class FirTypeRefWithNullability : FirTypeRef() {
override val source: FirSourceElement? abstract override val source: FirSourceElement?
override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
val isMarkedNullable: Boolean abstract val isMarkedNullable: Boolean
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitTypeRefWithNullability(this, data) override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitTypeRefWithNullability(this, data)
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirTypeRefWithNullability abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirTypeRefWithNullability
} }
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.fir.types package org.jetbrains.kotlin.fir.types
import org.jetbrains.kotlin.fir.FirPureAbstractElement
import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.visitors.* import org.jetbrains.kotlin.fir.visitors.*
@@ -15,7 +14,7 @@ import org.jetbrains.kotlin.fir.visitors.*
* DO NOT MODIFY IT MANUALLY * DO NOT MODIFY IT MANUALLY
*/ */
abstract class FirUserTypeRef : FirPureAbstractElement(), FirTypeRefWithNullability { abstract class FirUserTypeRef : FirTypeRefWithNullability() {
abstract override val source: FirSourceElement? abstract override val source: FirSourceElement?
abstract override val annotations: List<FirAnnotationCall> abstract override val annotations: List<FirAnnotationCall>
abstract override val isMarkedNullable: Boolean abstract override val isMarkedNullable: Boolean
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.fir.types.builder package org.jetbrains.kotlin.fir.types.builder
import kotlin.contracts.* import kotlin.contracts.*
import org.jetbrains.kotlin.fir.FirPureAbstractElement
import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
@@ -1,74 +0,0 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* 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.types.builder
import kotlin.contracts.*
import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirResolvedFunctionTypeRef
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.types.impl.FirResolvedFunctionTypeRefImpl
import org.jetbrains.kotlin.fir.visitors.*
/*
* This file was generated automatically
* DO NOT MODIFY IT MANUALLY
*/
@FirBuilderDsl
class FirResolvedFunctionTypeRefBuilder : FirAnnotationContainerBuilder {
override var source: FirSourceElement? = null
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
lateinit var type: ConeKotlinType
var isMarkedNullable: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
var receiverTypeRef: FirTypeRef? = null
val valueParameters: MutableList<FirValueParameter> = mutableListOf()
lateinit var returnTypeRef: FirTypeRef
var isSuspend: Boolean by kotlin.properties.Delegates.notNull<Boolean>()
override fun build(): FirResolvedFunctionTypeRef {
return FirResolvedFunctionTypeRefImpl(
source,
annotations,
type,
isMarkedNullable,
receiverTypeRef,
valueParameters,
returnTypeRef,
isSuspend,
)
}
}
@OptIn(ExperimentalContracts::class)
inline fun buildResolvedFunctionTypeRef(init: FirResolvedFunctionTypeRefBuilder.() -> Unit): FirResolvedFunctionTypeRef {
contract {
callsInPlace(init, kotlin.contracts.InvocationKind.EXACTLY_ONCE)
}
return FirResolvedFunctionTypeRefBuilder().apply(init).build()
}
@OptIn(ExperimentalContracts::class)
inline fun buildResolvedFunctionTypeRefCopy(original: FirResolvedFunctionTypeRef, init: FirResolvedFunctionTypeRefBuilder.() -> Unit): FirResolvedFunctionTypeRef {
contract {
callsInPlace(init, kotlin.contracts.InvocationKind.EXACTLY_ONCE)
}
val copyBuilder = FirResolvedFunctionTypeRefBuilder()
copyBuilder.source = original.source
copyBuilder.annotations.addAll(original.annotations)
copyBuilder.type = original.type
copyBuilder.isMarkedNullable = original.isMarkedNullable
copyBuilder.receiverTypeRef = original.receiverTypeRef
copyBuilder.valueParameters.addAll(original.valueParameters)
copyBuilder.returnTypeRef = original.returnTypeRef
copyBuilder.isSuspend = original.isSuspend
return copyBuilder.apply(init).build()
}
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.fir.types.impl package org.jetbrains.kotlin.fir.types.impl
import org.jetbrains.kotlin.fir.FirPureAbstractElement
import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.declarations.FirValueParameter import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
@@ -26,7 +25,7 @@ internal class FirFunctionTypeRefImpl(
override val valueParameters: MutableList<FirValueParameter>, override val valueParameters: MutableList<FirValueParameter>,
override var returnTypeRef: FirTypeRef, override var returnTypeRef: FirTypeRef,
override val isSuspend: Boolean, override val isSuspend: Boolean,
) : FirPureAbstractElement(), FirFunctionTypeRef { ) : FirFunctionTypeRef() {
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) { override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
annotations.forEach { it.accept(visitor, data) } annotations.forEach { it.accept(visitor, data) }
receiverTypeRef?.accept(visitor, data) receiverTypeRef?.accept(visitor, data)
@@ -1,52 +0,0 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* 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.types.impl
import org.jetbrains.kotlin.fir.FirSourceElement
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.types.ConeKotlinType
import org.jetbrains.kotlin.fir.types.FirResolvedFunctionTypeRef
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.visitors.*
/*
* This file was generated automatically
* DO NOT MODIFY IT MANUALLY
*/
internal class FirResolvedFunctionTypeRefImpl(
override val source: FirSourceElement?,
override val annotations: MutableList<FirAnnotationCall>,
override val type: ConeKotlinType,
override val isMarkedNullable: Boolean,
override var receiverTypeRef: FirTypeRef?,
override val valueParameters: MutableList<FirValueParameter>,
override var returnTypeRef: FirTypeRef,
override val isSuspend: Boolean,
) : FirResolvedFunctionTypeRef() {
override val delegatedTypeRef: FirTypeRef? get() = null
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
annotations.forEach { it.accept(visitor, data) }
receiverTypeRef?.accept(visitor, data)
valueParameters.forEach { it.accept(visitor, data) }
returnTypeRef.accept(visitor, data)
}
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirResolvedFunctionTypeRefImpl {
transformAnnotations(transformer, data)
receiverTypeRef = receiverTypeRef?.transformSingle(transformer, data)
valueParameters.transformInplace(transformer, data)
returnTypeRef = returnTypeRef.transformSingle(transformer, data)
return this
}
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirResolvedFunctionTypeRefImpl {
annotations.transformInplace(transformer, data)
return this
}
}
@@ -123,7 +123,6 @@ import org.jetbrains.kotlin.fir.types.FirTypeRefWithNullability
import org.jetbrains.kotlin.fir.types.FirUserTypeRef import org.jetbrains.kotlin.fir.types.FirUserTypeRef
import org.jetbrains.kotlin.fir.types.FirDynamicTypeRef import org.jetbrains.kotlin.fir.types.FirDynamicTypeRef
import org.jetbrains.kotlin.fir.types.FirFunctionTypeRef import org.jetbrains.kotlin.fir.types.FirFunctionTypeRef
import org.jetbrains.kotlin.fir.types.FirResolvedFunctionTypeRef
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
import org.jetbrains.kotlin.fir.types.FirComposedSuperTypeRef import org.jetbrains.kotlin.fir.types.FirComposedSuperTypeRef
import org.jetbrains.kotlin.fir.contracts.FirEffectDeclaration import org.jetbrains.kotlin.fir.contracts.FirEffectDeclaration
@@ -610,10 +609,6 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformElement(functionTypeRef, data) return transformElement(functionTypeRef, data)
} }
open fun transformResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef, data: D): CompositeTransformResult<FirTypeRef> {
return transformElement(resolvedFunctionTypeRef, data)
}
open fun transformImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef, data: D): CompositeTransformResult<FirTypeRef> { open fun transformImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef, data: D): CompositeTransformResult<FirTypeRef> {
return transformElement(implicitTypeRef, data) return transformElement(implicitTypeRef, data)
} }
@@ -1114,10 +1109,6 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformFunctionTypeRef(functionTypeRef, data) return transformFunctionTypeRef(functionTypeRef, data)
} }
final override fun visitResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef, data: D): CompositeTransformResult<FirTypeRef> {
return transformResolvedFunctionTypeRef(resolvedFunctionTypeRef, data)
}
final override fun visitImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef, data: D): CompositeTransformResult<FirTypeRef> { final override fun visitImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef, data: D): CompositeTransformResult<FirTypeRef> {
return transformImplicitTypeRef(implicitTypeRef, data) return transformImplicitTypeRef(implicitTypeRef, data)
} }
@@ -123,7 +123,6 @@ import org.jetbrains.kotlin.fir.types.FirTypeRefWithNullability
import org.jetbrains.kotlin.fir.types.FirUserTypeRef import org.jetbrains.kotlin.fir.types.FirUserTypeRef
import org.jetbrains.kotlin.fir.types.FirDynamicTypeRef import org.jetbrains.kotlin.fir.types.FirDynamicTypeRef
import org.jetbrains.kotlin.fir.types.FirFunctionTypeRef import org.jetbrains.kotlin.fir.types.FirFunctionTypeRef
import org.jetbrains.kotlin.fir.types.FirResolvedFunctionTypeRef
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
import org.jetbrains.kotlin.fir.types.FirComposedSuperTypeRef import org.jetbrains.kotlin.fir.types.FirComposedSuperTypeRef
import org.jetbrains.kotlin.fir.contracts.FirEffectDeclaration import org.jetbrains.kotlin.fir.contracts.FirEffectDeclaration
@@ -374,8 +373,6 @@ abstract class FirVisitor<out R, in D> {
open fun visitFunctionTypeRef(functionTypeRef: FirFunctionTypeRef, data: D): R = visitElement(functionTypeRef, data) open fun visitFunctionTypeRef(functionTypeRef: FirFunctionTypeRef, data: D): R = visitElement(functionTypeRef, data)
open fun visitResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef, data: D): R = visitElement(resolvedFunctionTypeRef, data)
open fun visitImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef, data: D): R = visitElement(implicitTypeRef, data) open fun visitImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef, data: D): R = visitElement(implicitTypeRef, data)
open fun visitComposedSuperTypeRef(composedSuperTypeRef: FirComposedSuperTypeRef, data: D): R = visitElement(composedSuperTypeRef, data) open fun visitComposedSuperTypeRef(composedSuperTypeRef: FirComposedSuperTypeRef, data: D): R = visitElement(composedSuperTypeRef, data)
@@ -123,7 +123,6 @@ import org.jetbrains.kotlin.fir.types.FirTypeRefWithNullability
import org.jetbrains.kotlin.fir.types.FirUserTypeRef import org.jetbrains.kotlin.fir.types.FirUserTypeRef
import org.jetbrains.kotlin.fir.types.FirDynamicTypeRef import org.jetbrains.kotlin.fir.types.FirDynamicTypeRef
import org.jetbrains.kotlin.fir.types.FirFunctionTypeRef import org.jetbrains.kotlin.fir.types.FirFunctionTypeRef
import org.jetbrains.kotlin.fir.types.FirResolvedFunctionTypeRef
import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef import org.jetbrains.kotlin.fir.types.FirImplicitTypeRef
import org.jetbrains.kotlin.fir.types.FirComposedSuperTypeRef import org.jetbrains.kotlin.fir.types.FirComposedSuperTypeRef
import org.jetbrains.kotlin.fir.contracts.FirEffectDeclaration import org.jetbrains.kotlin.fir.contracts.FirEffectDeclaration
@@ -608,10 +607,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitElement(functionTypeRef) visitElement(functionTypeRef)
} }
open fun visitResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef) {
visitElement(resolvedFunctionTypeRef)
}
open fun visitImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef) { open fun visitImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef) {
visitElement(implicitTypeRef) visitElement(implicitTypeRef)
} }
@@ -1112,10 +1107,6 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitFunctionTypeRef(functionTypeRef) visitFunctionTypeRef(functionTypeRef)
} }
final override fun visitResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef, data: Nothing?) {
visitResolvedFunctionTypeRef(resolvedFunctionTypeRef)
}
final override fun visitImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef, data: Nothing?) { final override fun visitImplicitTypeRef(implicitTypeRef: FirImplicitTypeRef, data: Nothing?) {
visitImplicitTypeRef(implicitTypeRef) visitImplicitTypeRef(implicitTypeRef)
} }
@@ -39,9 +39,6 @@ fun <R : FirTypeRef> R.copyWithNewSourceKind(newKind: FirFakeSourceElementKind):
qualifier += typeRef.qualifier qualifier += typeRef.qualifier
annotations += typeRef.annotations annotations += typeRef.annotations
} }
is FirResolvedFunctionTypeRef -> buildResolvedFunctionTypeRefCopy(typeRef) {
source = newSource
}
is FirImplicitTypeRef -> buildImplicitTypeRefCopy(typeRef) { is FirImplicitTypeRef -> buildImplicitTypeRefCopy(typeRef) {
source = newSource source = newSource
} }
@@ -24,10 +24,6 @@ abstract class FirDefaultTransformer<D> : FirTransformer<D>() {
return transformResolvedTypeRef(errorTypeRef, data) return transformResolvedTypeRef(errorTypeRef, data)
} }
override fun transformResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef, data: D): CompositeTransformResult<FirTypeRef> {
return transformResolvedTypeRef(resolvedFunctionTypeRef, data)
}
override fun transformTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability, data: D): CompositeTransformResult<FirTypeRef> { override fun transformTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability, data: D): CompositeTransformResult<FirTypeRef> {
return transformTypeRef(typeRefWithNullability, data) return transformTypeRef(typeRefWithNullability, data)
} }
@@ -23,10 +23,6 @@ abstract class FirDefaultVisitor<R, D> : FirVisitor<R, D>() {
return visitResolvedTypeRef(errorTypeRef, data) return visitResolvedTypeRef(errorTypeRef, data)
} }
override fun visitResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef, data: D): R {
return visitResolvedTypeRef(resolvedFunctionTypeRef, data)
}
override fun visitTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability, data: D): R { override fun visitTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability, data: D): R {
return visitTypeRef(typeRefWithNullability, data) return visitTypeRef(typeRefWithNullability, data)
} }
@@ -23,10 +23,6 @@ abstract class FirDefaultVisitorVoid : FirVisitorVoid() {
return visitResolvedTypeRef(errorTypeRef) return visitResolvedTypeRef(errorTypeRef)
} }
override fun visitResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef) {
return visitResolvedTypeRef(resolvedFunctionTypeRef)
}
override fun visitTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability) { override fun visitTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability) {
return visitTypeRef(typeRefWithNullability) return visitTypeRef(typeRefWithNullability)
} }
@@ -228,10 +228,6 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
withCopy() withCopy()
} }
builder(resolvedFunctionTypeRef) {
withCopy()
}
builder(implicitTypeRef) { builder(implicitTypeRef) {
withCopy() withCopy()
} }
@@ -146,7 +146,6 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
val userTypeRef = element("UserTypeRef", TypeRef, typeRefWithNullability) val userTypeRef = element("UserTypeRef", TypeRef, typeRefWithNullability)
val dynamicTypeRef = element("DynamicTypeRef", TypeRef, typeRefWithNullability) val dynamicTypeRef = element("DynamicTypeRef", TypeRef, typeRefWithNullability)
val functionTypeRef = element("FunctionTypeRef", TypeRef, typeRefWithNullability) val functionTypeRef = element("FunctionTypeRef", TypeRef, typeRefWithNullability)
val resolvedFunctionTypeRef = element("ResolvedFunctionTypeRef", TypeRef, resolvedTypeRef, functionTypeRef)
val implicitTypeRef = element("ImplicitTypeRef", TypeRef, typeRef) val implicitTypeRef = element("ImplicitTypeRef", TypeRef, typeRef)
val composedSuperTypeRef = element("ComposedSuperTypeRef", TypeRef, typeRef) val composedSuperTypeRef = element("ComposedSuperTypeRef", TypeRef, typeRef)
@@ -370,13 +370,6 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
useTypes(errorTypeRefImpl, coneStubDiagnosticType) useTypes(errorTypeRefImpl, coneStubDiagnosticType)
} }
impl(resolvedFunctionTypeRef) {
default("delegatedTypeRef") {
value = "null"
withGetter = true
}
}
impl(errorFunction) { impl(errorFunction) {
defaultNull("receiverTypeRef", "body", withGetter = true) defaultNull("receiverTypeRef", "body", withGetter = true)
default("returnTypeRef", "FirErrorTypeRefImpl(null, diagnostic)") default("returnTypeRef", "FirErrorTypeRefImpl(null, diagnostic)")
@@ -489,16 +489,6 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() {
data.append("[ERROR : ${errorTypeRef.diagnostic.reason}]") data.append("[ERROR : ${errorTypeRef.diagnostic.reason}]")
} }
override fun visitResolvedFunctionTypeRef(resolvedFunctionTypeRef: FirResolvedFunctionTypeRef, data: StringBuilder) {
resolvedFunctionTypeRef.receiverTypeRef?.let {
it.accept(this, data)
data.append(".")
}
visitValueParameters(resolvedFunctionTypeRef.valueParameters, data)
data.append(" -> ")
resolvedFunctionTypeRef.returnTypeRef.accept(this, data)
}
override fun visitTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability, data: StringBuilder) { override fun visitTypeRefWithNullability(typeRefWithNullability: FirTypeRefWithNullability, data: StringBuilder) {
if (typeRefWithNullability.isMarkedNullable) { if (typeRefWithNullability.isMarkedNullable) {
data.append("?") data.append("?")