[FIR] Add FirErrorResolvedQualifier for qualifiers with resolve diagnostic
This commit is contained in:
committed by
Mikhail Glukhikh
parent
a5e9401a0a
commit
ffd30566be
+6
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.fir.diagnostics.*
|
|||||||
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind.*
|
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirErrorExpression
|
import org.jetbrains.kotlin.fir.expressions.FirErrorExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirErrorLoop
|
import org.jetbrains.kotlin.fir.expressions.FirErrorLoop
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirErrorResolvedQualifier
|
||||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.CandidateApplicability
|
import org.jetbrains.kotlin.fir.resolve.calls.CandidateApplicability
|
||||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.*
|
import org.jetbrains.kotlin.fir.resolve.diagnostics.*
|
||||||
@@ -62,6 +63,11 @@ class ErrorNodeDiagnosticCollectorComponent(collector: AbstractDiagnosticCollect
|
|||||||
runCheck { reportFirDiagnostic(errorFunction.diagnostic, source, it) }
|
runCheck { reportFirDiagnostic(errorFunction.diagnostic, source, it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun visitErrorResolvedQualifier(errorResolvedQualifier: FirErrorResolvedQualifier, data: CheckerContext) {
|
||||||
|
val source = errorResolvedQualifier.source ?: return
|
||||||
|
runCheck { reportFirDiagnostic(errorResolvedQualifier.diagnostic, source, it) }
|
||||||
|
}
|
||||||
|
|
||||||
private fun reportFirDiagnostic(diagnostic: ConeDiagnostic, source: FirSourceElement, reporter: DiagnosticReporter) {
|
private fun reportFirDiagnostic(diagnostic: ConeDiagnostic, source: FirSourceElement, reporter: DiagnosticReporter) {
|
||||||
val coneDiagnostic = when (diagnostic) {
|
val coneDiagnostic = when (diagnostic) {
|
||||||
is ConeUnresolvedReferenceError -> FirErrors.UNRESOLVED_REFERENCE.on(source, diagnostic.name?.asString() ?: "<No name>")
|
is ConeUnresolvedReferenceError -> FirErrors.UNRESOLVED_REFERENCE.on(source, diagnostic.name?.asString() ?: "<No name>")
|
||||||
|
|||||||
@@ -11,10 +11,7 @@ import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
|||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildExpressionStub
|
import org.jetbrains.kotlin.fir.expressions.builder.buildExpressionStub
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildResolvedReifiedParameterReference
|
import org.jetbrains.kotlin.fir.expressions.builder.buildResolvedReifiedParameterReference
|
||||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
import org.jetbrains.kotlin.fir.references.*
|
||||||
import org.jetbrains.kotlin.fir.references.FirReference
|
|
||||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
|
||||||
import org.jetbrains.kotlin.fir.references.FirSuperReference
|
|
||||||
import org.jetbrains.kotlin.fir.references.builder.buildBackingFieldReference
|
import org.jetbrains.kotlin.fir.references.builder.buildBackingFieldReference
|
||||||
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference
|
import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference
|
||||||
@@ -211,9 +208,15 @@ class FirCallResolver(
|
|||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val diagnostic = when (nameReference) {
|
||||||
|
is FirErrorReferenceWithCandidate -> nameReference.diagnostic
|
||||||
|
is FirErrorNamedReference -> nameReference.diagnostic
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
|
||||||
when {
|
when {
|
||||||
referencedSymbol is FirClassLikeSymbol<*> -> {
|
referencedSymbol is FirClassLikeSymbol<*> -> {
|
||||||
return buildResolvedQualifierForClass(referencedSymbol, nameReference.source, qualifiedAccess.typeArguments)
|
return buildResolvedQualifierForClass(referencedSymbol, nameReference.source, qualifiedAccess.typeArguments, diagnostic)
|
||||||
}
|
}
|
||||||
referencedSymbol is FirTypeParameterSymbol && referencedSymbol.fir.isReified -> {
|
referencedSymbol is FirTypeParameterSymbol && referencedSymbol.fir.isReified -> {
|
||||||
return buildResolvedReifiedParameterReference {
|
return buildResolvedReifiedParameterReference {
|
||||||
|
|||||||
@@ -10,11 +10,11 @@ import org.jetbrains.kotlin.builtins.functions.FunctionClassDescriptor
|
|||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
import org.jetbrains.kotlin.fir.*
|
import org.jetbrains.kotlin.fir.*
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
|
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||||
import org.jetbrains.kotlin.fir.diagnostics.*
|
import org.jetbrains.kotlin.fir.diagnostics.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.FirResolvedReifiedParameterReferenceBuilder
|
import org.jetbrains.kotlin.fir.expressions.builder.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildExpressionWithSmartcast
|
import org.jetbrains.kotlin.fir.typeContext
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildResolvedQualifier
|
|
||||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.FirSuperReference
|
import org.jetbrains.kotlin.fir.references.FirSuperReference
|
||||||
@@ -255,16 +255,24 @@ fun BodyResolveComponents.buildResolvedQualifierForClass(
|
|||||||
regularClass: FirClassLikeSymbol<*>,
|
regularClass: FirClassLikeSymbol<*>,
|
||||||
sourceElement: FirSourceElement? = null,
|
sourceElement: FirSourceElement? = null,
|
||||||
// TODO: Clarify if we actually need type arguments for qualifier?
|
// TODO: Clarify if we actually need type arguments for qualifier?
|
||||||
typeArgumentsForQualifier: List<FirTypeProjection> = emptyList()
|
typeArgumentsForQualifier: List<FirTypeProjection> = emptyList(),
|
||||||
|
diagnostic: ConeDiagnostic? = null
|
||||||
): FirResolvedQualifier {
|
): FirResolvedQualifier {
|
||||||
val classId = regularClass.classId
|
val classId = regularClass.classId
|
||||||
return buildResolvedQualifier {
|
|
||||||
|
val builder: FirAbstractResolvedQualifierBuilder = if (diagnostic == null) {
|
||||||
|
FirResolvedQualifierBuilder()
|
||||||
|
} else {
|
||||||
|
FirErrorResolvedQualifierBuilder().apply { this.diagnostic = diagnostic }
|
||||||
|
}
|
||||||
|
|
||||||
|
return builder.apply {
|
||||||
source = sourceElement
|
source = sourceElement
|
||||||
packageFqName = classId.packageFqName
|
packageFqName = classId.packageFqName
|
||||||
relativeClassFqName = classId.relativeClassName
|
relativeClassFqName = classId.relativeClassName
|
||||||
typeArguments.addAll(typeArgumentsForQualifier)
|
typeArguments.addAll(typeArgumentsForQualifier)
|
||||||
symbol = regularClass
|
symbol = regularClass
|
||||||
}.apply {
|
}.build().apply {
|
||||||
resultType = if (classId.isLocal) {
|
resultType = if (classId.isLocal) {
|
||||||
typeForQualifierByDeclaration(regularClass.fir, resultType, session)
|
typeForQualifierByDeclaration(regularClass.fir, resultType, session)
|
||||||
?: session.builtinTypes.unitType
|
?: session.builtinTypes.unitType
|
||||||
|
|||||||
+46
@@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* 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.expressions
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
|
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||||
|
import org.jetbrains.kotlin.fir.diagnostics.FirDiagnosticHolder
|
||||||
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
|
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||||
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file was generated automatically
|
||||||
|
* DO NOT MODIFY IT MANUALLY
|
||||||
|
*/
|
||||||
|
|
||||||
|
abstract class FirErrorResolvedQualifier : FirResolvedQualifier(), FirDiagnosticHolder {
|
||||||
|
abstract override val source: FirSourceElement?
|
||||||
|
abstract override val typeRef: FirTypeRef
|
||||||
|
abstract override val annotations: List<FirAnnotationCall>
|
||||||
|
abstract override val packageFqName: FqName
|
||||||
|
abstract override val relativeClassFqName: FqName?
|
||||||
|
abstract override val classId: ClassId?
|
||||||
|
abstract override val symbol: FirClassLikeSymbol<*>?
|
||||||
|
abstract override val isNullableLHSForCallableReference: Boolean
|
||||||
|
abstract override val typeArguments: List<FirTypeProjection>
|
||||||
|
abstract override val diagnostic: ConeDiagnostic
|
||||||
|
|
||||||
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitErrorResolvedQualifier(this, data)
|
||||||
|
|
||||||
|
abstract override fun replaceTypeRef(newTypeRef: FirTypeRef)
|
||||||
|
|
||||||
|
abstract override fun replaceIsNullableLHSForCallableReference(newIsNullableLHSForCallableReference: Boolean)
|
||||||
|
|
||||||
|
abstract override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>)
|
||||||
|
|
||||||
|
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirErrorResolvedQualifier
|
||||||
|
|
||||||
|
abstract override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirErrorResolvedQualifier
|
||||||
|
}
|
||||||
+37
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* 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.expressions.builder
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
|
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
||||||
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
|
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||||
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file was generated automatically
|
||||||
|
* DO NOT MODIFY IT MANUALLY
|
||||||
|
*/
|
||||||
|
|
||||||
|
@FirBuilderDsl
|
||||||
|
interface FirAbstractResolvedQualifierBuilder {
|
||||||
|
abstract var source: FirSourceElement?
|
||||||
|
abstract var typeRef: FirTypeRef
|
||||||
|
abstract val annotations: MutableList<FirAnnotationCall>
|
||||||
|
abstract var packageFqName: FqName
|
||||||
|
abstract var relativeClassFqName: FqName?
|
||||||
|
abstract var classId: ClassId?
|
||||||
|
abstract var symbol: FirClassLikeSymbol<*>?
|
||||||
|
abstract var isNullableLHSForCallableReference: Boolean
|
||||||
|
abstract val typeArguments: MutableList<FirTypeProjection>
|
||||||
|
|
||||||
|
fun build(): FirResolvedQualifier
|
||||||
|
}
|
||||||
+72
@@ -0,0 +1,72 @@
|
|||||||
|
/*
|
||||||
|
* 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.expressions.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.diagnostics.ConeDiagnostic
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirErrorResolvedQualifier
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.builder.FirAbstractResolvedQualifierBuilder
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.builder.FirExpressionBuilder
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.impl.FirErrorResolvedQualifierImpl
|
||||||
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
|
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||||
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
|
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file was generated automatically
|
||||||
|
* DO NOT MODIFY IT MANUALLY
|
||||||
|
*/
|
||||||
|
|
||||||
|
@FirBuilderDsl
|
||||||
|
class FirErrorResolvedQualifierBuilder : FirAbstractResolvedQualifierBuilder, FirAnnotationContainerBuilder, FirExpressionBuilder {
|
||||||
|
override var source: FirSourceElement? = null
|
||||||
|
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||||
|
override lateinit var packageFqName: FqName
|
||||||
|
override var relativeClassFqName: FqName? = null
|
||||||
|
override var classId: ClassId? = null
|
||||||
|
override var symbol: FirClassLikeSymbol<*>? = null
|
||||||
|
override var isNullableLHSForCallableReference: Boolean = false
|
||||||
|
override val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
||||||
|
lateinit var diagnostic: ConeDiagnostic
|
||||||
|
|
||||||
|
override fun build(): FirErrorResolvedQualifier {
|
||||||
|
return FirErrorResolvedQualifierImpl(
|
||||||
|
source,
|
||||||
|
annotations,
|
||||||
|
packageFqName,
|
||||||
|
relativeClassFqName,
|
||||||
|
classId,
|
||||||
|
symbol,
|
||||||
|
isNullableLHSForCallableReference,
|
||||||
|
typeArguments,
|
||||||
|
diagnostic,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Deprecated("Modification of 'typeRef' has no impact for FirErrorResolvedQualifierBuilder", level = DeprecationLevel.HIDDEN)
|
||||||
|
override var typeRef: FirTypeRef
|
||||||
|
get() = throw IllegalStateException()
|
||||||
|
set(value) {
|
||||||
|
throw IllegalStateException()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@OptIn(ExperimentalContracts::class)
|
||||||
|
inline fun buildErrorResolvedQualifier(init: FirErrorResolvedQualifierBuilder.() -> Unit): FirErrorResolvedQualifier {
|
||||||
|
contract {
|
||||||
|
callsInPlace(init, kotlin.contracts.InvocationKind.EXACTLY_ONCE)
|
||||||
|
}
|
||||||
|
return FirErrorResolvedQualifierBuilder().apply(init).build()
|
||||||
|
}
|
||||||
+14
-6
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
|||||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.builder.FirAbstractResolvedQualifierBuilder
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.FirExpressionBuilder
|
import org.jetbrains.kotlin.fir.expressions.builder.FirExpressionBuilder
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirResolvedQualifierImpl
|
import org.jetbrains.kotlin.fir.expressions.impl.FirResolvedQualifierImpl
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
@@ -27,15 +28,15 @@ import org.jetbrains.kotlin.name.FqName
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
@FirBuilderDsl
|
@FirBuilderDsl
|
||||||
class FirResolvedQualifierBuilder : FirAnnotationContainerBuilder, FirExpressionBuilder {
|
class FirResolvedQualifierBuilder : FirAbstractResolvedQualifierBuilder, FirAnnotationContainerBuilder, FirExpressionBuilder {
|
||||||
override var source: FirSourceElement? = null
|
override var source: FirSourceElement? = null
|
||||||
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null)
|
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null)
|
||||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||||
lateinit var packageFqName: FqName
|
override lateinit var packageFqName: FqName
|
||||||
var relativeClassFqName: FqName? = null
|
override var relativeClassFqName: FqName? = null
|
||||||
var symbol: FirClassLikeSymbol<*>? = null
|
override var symbol: FirClassLikeSymbol<*>? = null
|
||||||
var isNullableLHSForCallableReference: Boolean = false
|
override var isNullableLHSForCallableReference: Boolean = false
|
||||||
val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
override val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
||||||
|
|
||||||
override fun build(): FirResolvedQualifier {
|
override fun build(): FirResolvedQualifier {
|
||||||
return FirResolvedQualifierImpl(
|
return FirResolvedQualifierImpl(
|
||||||
@@ -50,6 +51,13 @@ class FirResolvedQualifierBuilder : FirAnnotationContainerBuilder, FirExpression
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Deprecated("Modification of 'classId' has no impact for FirResolvedQualifierBuilder", level = DeprecationLevel.HIDDEN)
|
||||||
|
override var classId: ClassId?
|
||||||
|
get() = throw IllegalStateException()
|
||||||
|
set(value) {
|
||||||
|
throw IllegalStateException()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(ExperimentalContracts::class)
|
@OptIn(ExperimentalContracts::class)
|
||||||
|
|||||||
+73
@@ -0,0 +1,73 @@
|
|||||||
|
/*
|
||||||
|
* 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.expressions.impl
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
|
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirErrorResolvedQualifier
|
||||||
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
|
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||||
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
|
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
|
||||||
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file was generated automatically
|
||||||
|
* DO NOT MODIFY IT MANUALLY
|
||||||
|
*/
|
||||||
|
|
||||||
|
internal class FirErrorResolvedQualifierImpl(
|
||||||
|
override val source: FirSourceElement?,
|
||||||
|
override val annotations: MutableList<FirAnnotationCall>,
|
||||||
|
override val packageFqName: FqName,
|
||||||
|
override val relativeClassFqName: FqName?,
|
||||||
|
override val classId: ClassId?,
|
||||||
|
override val symbol: FirClassLikeSymbol<*>?,
|
||||||
|
override var isNullableLHSForCallableReference: Boolean,
|
||||||
|
override val typeArguments: MutableList<FirTypeProjection>,
|
||||||
|
override val diagnostic: ConeDiagnostic,
|
||||||
|
) : FirErrorResolvedQualifier() {
|
||||||
|
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null)
|
||||||
|
|
||||||
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
|
typeRef.accept(visitor, data)
|
||||||
|
annotations.forEach { it.accept(visitor, data) }
|
||||||
|
typeArguments.forEach { it.accept(visitor, data) }
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirErrorResolvedQualifierImpl {
|
||||||
|
typeRef = typeRef.transformSingle(transformer, data)
|
||||||
|
transformAnnotations(transformer, data)
|
||||||
|
transformTypeArguments(transformer, data)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirErrorResolvedQualifierImpl {
|
||||||
|
annotations.transformInplace(transformer, data)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun <D> transformTypeArguments(transformer: FirTransformer<D>, data: D): FirErrorResolvedQualifierImpl {
|
||||||
|
typeArguments.transformInplace(transformer, data)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun replaceTypeRef(newTypeRef: FirTypeRef) {
|
||||||
|
typeRef = newTypeRef
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun replaceIsNullableLHSForCallableReference(newIsNullableLHSForCallableReference: Boolean) {
|
||||||
|
isNullableLHSForCallableReference = newIsNullableLHSForCallableReference
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun replaceTypeArguments(newTypeArguments: List<FirTypeProjection>) {
|
||||||
|
typeArguments.clear()
|
||||||
|
typeArguments.addAll(newTypeArguments)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -101,6 +101,7 @@ import org.jetbrains.kotlin.fir.expressions.FirSpreadArgumentExpression
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirNamedArgumentExpression
|
import org.jetbrains.kotlin.fir.expressions.FirNamedArgumentExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirVarargArgumentsExpression
|
import org.jetbrains.kotlin.fir.expressions.FirVarargArgumentsExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirErrorResolvedQualifier
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirResolvedReifiedParameterReference
|
import org.jetbrains.kotlin.fir.expressions.FirResolvedReifiedParameterReference
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirReturnExpression
|
import org.jetbrains.kotlin.fir.expressions.FirReturnExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirStringConcatenationCall
|
import org.jetbrains.kotlin.fir.expressions.FirStringConcatenationCall
|
||||||
@@ -521,6 +522,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformElement(resolvedQualifier, data)
|
return transformElement(resolvedQualifier, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun transformErrorResolvedQualifier(errorResolvedQualifier: FirErrorResolvedQualifier, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformElement(errorResolvedQualifier, data)
|
||||||
|
}
|
||||||
|
|
||||||
open fun transformResolvedReifiedParameterReference(resolvedReifiedParameterReference: FirResolvedReifiedParameterReference, data: D): CompositeTransformResult<FirStatement> {
|
open fun transformResolvedReifiedParameterReference(resolvedReifiedParameterReference: FirResolvedReifiedParameterReference, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformElement(resolvedReifiedParameterReference, data)
|
return transformElement(resolvedReifiedParameterReference, data)
|
||||||
}
|
}
|
||||||
@@ -1021,6 +1026,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
|||||||
return transformResolvedQualifier(resolvedQualifier, data)
|
return transformResolvedQualifier(resolvedQualifier, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitErrorResolvedQualifier(errorResolvedQualifier: FirErrorResolvedQualifier, data: D): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformErrorResolvedQualifier(errorResolvedQualifier, data)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun visitResolvedReifiedParameterReference(resolvedReifiedParameterReference: FirResolvedReifiedParameterReference, data: D): CompositeTransformResult<FirStatement> {
|
final override fun visitResolvedReifiedParameterReference(resolvedReifiedParameterReference: FirResolvedReifiedParameterReference, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformResolvedReifiedParameterReference(resolvedReifiedParameterReference, data)
|
return transformResolvedReifiedParameterReference(resolvedReifiedParameterReference, data)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -101,6 +101,7 @@ import org.jetbrains.kotlin.fir.expressions.FirSpreadArgumentExpression
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirNamedArgumentExpression
|
import org.jetbrains.kotlin.fir.expressions.FirNamedArgumentExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirVarargArgumentsExpression
|
import org.jetbrains.kotlin.fir.expressions.FirVarargArgumentsExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirErrorResolvedQualifier
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirResolvedReifiedParameterReference
|
import org.jetbrains.kotlin.fir.expressions.FirResolvedReifiedParameterReference
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirReturnExpression
|
import org.jetbrains.kotlin.fir.expressions.FirReturnExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirStringConcatenationCall
|
import org.jetbrains.kotlin.fir.expressions.FirStringConcatenationCall
|
||||||
@@ -329,6 +330,8 @@ abstract class FirVisitor<out R, in D> {
|
|||||||
|
|
||||||
open fun visitResolvedQualifier(resolvedQualifier: FirResolvedQualifier, data: D): R = visitElement(resolvedQualifier, data)
|
open fun visitResolvedQualifier(resolvedQualifier: FirResolvedQualifier, data: D): R = visitElement(resolvedQualifier, data)
|
||||||
|
|
||||||
|
open fun visitErrorResolvedQualifier(errorResolvedQualifier: FirErrorResolvedQualifier, data: D): R = visitElement(errorResolvedQualifier, data)
|
||||||
|
|
||||||
open fun visitResolvedReifiedParameterReference(resolvedReifiedParameterReference: FirResolvedReifiedParameterReference, data: D): R = visitElement(resolvedReifiedParameterReference, data)
|
open fun visitResolvedReifiedParameterReference(resolvedReifiedParameterReference: FirResolvedReifiedParameterReference, data: D): R = visitElement(resolvedReifiedParameterReference, data)
|
||||||
|
|
||||||
open fun visitReturnExpression(returnExpression: FirReturnExpression, data: D): R = visitElement(returnExpression, data)
|
open fun visitReturnExpression(returnExpression: FirReturnExpression, data: D): R = visitElement(returnExpression, data)
|
||||||
|
|||||||
@@ -101,6 +101,7 @@ import org.jetbrains.kotlin.fir.expressions.FirSpreadArgumentExpression
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirNamedArgumentExpression
|
import org.jetbrains.kotlin.fir.expressions.FirNamedArgumentExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirVarargArgumentsExpression
|
import org.jetbrains.kotlin.fir.expressions.FirVarargArgumentsExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirErrorResolvedQualifier
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirResolvedReifiedParameterReference
|
import org.jetbrains.kotlin.fir.expressions.FirResolvedReifiedParameterReference
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirReturnExpression
|
import org.jetbrains.kotlin.fir.expressions.FirReturnExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirStringConcatenationCall
|
import org.jetbrains.kotlin.fir.expressions.FirStringConcatenationCall
|
||||||
@@ -519,6 +520,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitElement(resolvedQualifier)
|
visitElement(resolvedQualifier)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
open fun visitErrorResolvedQualifier(errorResolvedQualifier: FirErrorResolvedQualifier) {
|
||||||
|
visitElement(errorResolvedQualifier)
|
||||||
|
}
|
||||||
|
|
||||||
open fun visitResolvedReifiedParameterReference(resolvedReifiedParameterReference: FirResolvedReifiedParameterReference) {
|
open fun visitResolvedReifiedParameterReference(resolvedReifiedParameterReference: FirResolvedReifiedParameterReference) {
|
||||||
visitElement(resolvedReifiedParameterReference)
|
visitElement(resolvedReifiedParameterReference)
|
||||||
}
|
}
|
||||||
@@ -1019,6 +1024,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
|||||||
visitResolvedQualifier(resolvedQualifier)
|
visitResolvedQualifier(resolvedQualifier)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final override fun visitErrorResolvedQualifier(errorResolvedQualifier: FirErrorResolvedQualifier, data: Nothing?) {
|
||||||
|
visitErrorResolvedQualifier(errorResolvedQualifier)
|
||||||
|
}
|
||||||
|
|
||||||
final override fun visitResolvedReifiedParameterReference(resolvedReifiedParameterReference: FirResolvedReifiedParameterReference, data: Nothing?) {
|
final override fun visitResolvedReifiedParameterReference(resolvedReifiedParameterReference: FirResolvedReifiedParameterReference, data: Nothing?) {
|
||||||
visitResolvedReifiedParameterReference(resolvedReifiedParameterReference)
|
visitResolvedReifiedParameterReference(resolvedReifiedParameterReference)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,5 +99,12 @@ abstract class FirDefaultTransformer<D> : FirTransformer<D>() {
|
|||||||
override fun transformErrorFunction(errorFunction: FirErrorFunction, data: D): CompositeTransformResult<FirStatement> {
|
override fun transformErrorFunction(errorFunction: FirErrorFunction, data: D): CompositeTransformResult<FirStatement> {
|
||||||
return transformFunction(errorFunction, data)
|
return transformFunction(errorFunction, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun transformErrorResolvedQualifier(
|
||||||
|
errorResolvedQualifier: FirErrorResolvedQualifier,
|
||||||
|
data: D
|
||||||
|
): CompositeTransformResult<FirStatement> {
|
||||||
|
return transformResolvedQualifier(errorResolvedQualifier, data)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -95,5 +95,9 @@ abstract class FirDefaultVisitor<R, D> : FirVisitor<R, D>() {
|
|||||||
override fun visitErrorFunction(errorFunction: FirErrorFunction, data: D): R {
|
override fun visitErrorFunction(errorFunction: FirErrorFunction, data: D): R {
|
||||||
return visitFunction(errorFunction, data)
|
return visitFunction(errorFunction, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun visitErrorResolvedQualifier(errorResolvedQualifier: FirErrorResolvedQualifier, data: D): R {
|
||||||
|
return visitResolvedQualifier(errorResolvedQualifier, data)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -95,4 +95,8 @@ abstract class FirDefaultVisitorVoid : FirVisitorVoid() {
|
|||||||
override fun visitErrorFunction(errorFunction: FirErrorFunction) {
|
override fun visitErrorFunction(errorFunction: FirErrorFunction) {
|
||||||
return visitFunction(errorFunction)
|
return visitFunction(errorFunction)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
override fun visitErrorResolvedQualifier(errorResolvedQualifier: FirErrorResolvedQualifier) {
|
||||||
|
return visitResolvedQualifier(errorResolvedQualifier)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
+10
@@ -292,7 +292,17 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
|
|||||||
default("symbol", "FirAnonymousInitializerSymbol()")
|
default("symbol", "FirAnonymousInitializerSymbol()")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val abstractResolvedQualifierBuilder by builder {
|
||||||
|
fields from resolvedQualifier
|
||||||
|
}
|
||||||
|
|
||||||
builder(resolvedQualifier) {
|
builder(resolvedQualifier) {
|
||||||
|
parents += abstractResolvedQualifierBuilder
|
||||||
|
defaultFalse("isNullableLHSForCallableReference")
|
||||||
|
}
|
||||||
|
|
||||||
|
builder(errorResolvedQualifier) {
|
||||||
|
parents += abstractResolvedQualifierBuilder
|
||||||
defaultFalse("isNullableLHSForCallableReference")
|
defaultFalse("isNullableLHSForCallableReference")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.tree.generator
|
|||||||
import org.jetbrains.kotlin.fir.tree.generator.context.AbstractFirTreeBuilder
|
import org.jetbrains.kotlin.fir.tree.generator.context.AbstractFirTreeBuilder
|
||||||
import org.jetbrains.kotlin.fir.tree.generator.model.Element.Kind.*
|
import org.jetbrains.kotlin.fir.tree.generator.model.Element.Kind.*
|
||||||
|
|
||||||
|
@Suppress("unused", "MemberVisibilityCanBePrivate")
|
||||||
object FirTreeBuilder : AbstractFirTreeBuilder() {
|
object FirTreeBuilder : AbstractFirTreeBuilder() {
|
||||||
val annotationContainer = element("AnnotationContainer", Other)
|
val annotationContainer = element("AnnotationContainer", Other)
|
||||||
val typeRef = element("TypeRef", TypeRef, annotationContainer)
|
val typeRef = element("TypeRef", TypeRef, annotationContainer)
|
||||||
@@ -118,6 +119,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
|||||||
val varargArgumentsExpression = element("VarargArgumentsExpression", Expression, expression)
|
val varargArgumentsExpression = element("VarargArgumentsExpression", Expression, expression)
|
||||||
|
|
||||||
val resolvedQualifier = element("ResolvedQualifier", Expression, expression)
|
val resolvedQualifier = element("ResolvedQualifier", Expression, expression)
|
||||||
|
val errorResolvedQualifier = element("ErrorResolvedQualifier", Expression, resolvedQualifier, diagnosticHolder)
|
||||||
val resolvedReifiedParameterReference = element("ResolvedReifiedParameterReference", Expression, expression)
|
val resolvedReifiedParameterReference = element("ResolvedReifiedParameterReference", Expression, expression)
|
||||||
val returnExpression = element("ReturnExpression", Expression, jump)
|
val returnExpression = element("ReturnExpression", Expression, jump)
|
||||||
val stringConcatenationCall = element("StringConcatenationCall", Expression, call, expression)
|
val stringConcatenationCall = element("StringConcatenationCall", Expression, call, expression)
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@ package foo
|
|||||||
|
|
||||||
fun test() {
|
fun test() {
|
||||||
A.d
|
A.d
|
||||||
A.Companion.f
|
A.Companion.<!HIDDEN!>f<!>
|
||||||
B.D
|
B.D
|
||||||
CCC
|
CCC
|
||||||
CCC.classObjectVar
|
CCC.classObjectVar
|
||||||
|
|||||||
+4
-4
@@ -35,14 +35,14 @@ import a.D
|
|||||||
|
|
||||||
fun test() {
|
fun test() {
|
||||||
f(A)
|
f(A)
|
||||||
f(B)
|
f(<!HIDDEN!>B<!>)
|
||||||
f(C)
|
f(C)
|
||||||
f(D)
|
f(<!HIDDEN!>D<!>)
|
||||||
|
|
||||||
A.foo()
|
A.foo()
|
||||||
B.bar()
|
<!HIDDEN!>B<!>.bar()
|
||||||
C.baz()
|
C.baz()
|
||||||
D.quux()
|
<!HIDDEN!>D<!>.quux()
|
||||||
|
|
||||||
a.A.foo()
|
a.A.foo()
|
||||||
a.C.baz()
|
a.C.baz()
|
||||||
|
|||||||
@@ -28,9 +28,9 @@ import a.MyJavaClass
|
|||||||
|
|
||||||
val <!EXPOSED_PROPERTY_TYPE!>mc1<!> = <!HIDDEN!>MyJavaClass<!>()
|
val <!EXPOSED_PROPERTY_TYPE!>mc1<!> = <!HIDDEN!>MyJavaClass<!>()
|
||||||
|
|
||||||
val x = MyJavaClass.<!HIDDEN!>staticMethod<!>()
|
val x = <!HIDDEN!>MyJavaClass<!>.<!HIDDEN!>staticMethod<!>()
|
||||||
val y = MyJavaClass.NestedClass.<!HIDDEN!>staticMethodOfNested<!>()
|
val y = MyJavaClass.<!HIDDEN!>NestedClass<!>.<!HIDDEN!>staticMethodOfNested<!>()
|
||||||
val <!EXPOSED_PROPERTY_TYPE!>z<!> = MyJavaClass.<!HIDDEN!>NestedClass<!>()
|
val <!EXPOSED_PROPERTY_TYPE!>z<!> = <!HIDDEN!>MyJavaClass<!>.<!HIDDEN!>NestedClass<!>()
|
||||||
|
|
||||||
//FILE: c.kt
|
//FILE: c.kt
|
||||||
package a.c
|
package a.c
|
||||||
@@ -39,6 +39,6 @@ import a.MyJavaClass
|
|||||||
|
|
||||||
val <!EXPOSED_PROPERTY_TYPE!>mc1<!> = <!HIDDEN!>MyJavaClass<!>()
|
val <!EXPOSED_PROPERTY_TYPE!>mc1<!> = <!HIDDEN!>MyJavaClass<!>()
|
||||||
|
|
||||||
val x = MyJavaClass.<!HIDDEN!>staticMethod<!>()
|
val x = <!HIDDEN!>MyJavaClass<!>.<!HIDDEN!>staticMethod<!>()
|
||||||
val y = MyJavaClass.NestedClass.<!HIDDEN!>staticMethodOfNested<!>()
|
val y = MyJavaClass.<!HIDDEN!>NestedClass<!>.<!HIDDEN!>staticMethodOfNested<!>()
|
||||||
val <!EXPOSED_PROPERTY_TYPE!>z<!> = MyJavaClass.<!HIDDEN!>NestedClass<!>()
|
val <!EXPOSED_PROPERTY_TYPE!>z<!> = <!HIDDEN!>MyJavaClass<!>.<!HIDDEN!>NestedClass<!>()
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ fun test() {
|
|||||||
val z = <!HIDDEN!>x<!>
|
val z = <!HIDDEN!>x<!>
|
||||||
<!HIDDEN!>x<!> = 30
|
<!HIDDEN!>x<!> = 30
|
||||||
|
|
||||||
val po = PO
|
val po = <!HIDDEN!>PO<!>
|
||||||
|
|
||||||
val v = xx
|
val v = xx
|
||||||
xx = 40
|
xx = 40
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ fun test() {
|
|||||||
val u : A = <!HIDDEN!>A<!>()
|
val u : A = <!HIDDEN!>A<!>()
|
||||||
val a : java.util.Arrays.ArrayList<Int>;
|
val a : java.util.Arrays.ArrayList<Int>;
|
||||||
|
|
||||||
val po = PO
|
val po = <!HIDDEN!>PO<!>
|
||||||
}
|
}
|
||||||
|
|
||||||
class B : <!EXPOSED_SUPER_CLASS, HIDDEN!>A<!>() {}
|
class B : <!EXPOSED_SUPER_CLASS, HIDDEN!>A<!>() {}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ fun test() {
|
|||||||
val z = <!HIDDEN!>x<!>
|
val z = <!HIDDEN!>x<!>
|
||||||
<!HIDDEN!>x<!> = 30
|
<!HIDDEN!>x<!> = 30
|
||||||
|
|
||||||
val po = PO
|
val po = <!HIDDEN!>PO<!>
|
||||||
}
|
}
|
||||||
|
|
||||||
class B : <!EXPOSED_SUPER_CLASS, HIDDEN!>A<!>() {}
|
class B : <!EXPOSED_SUPER_CLASS, HIDDEN!>A<!>() {}
|
||||||
|
|||||||
Reference in New Issue
Block a user