[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.expressions.FirErrorExpression
|
||||
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.resolve.calls.CandidateApplicability
|
||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.*
|
||||
@@ -62,6 +63,11 @@ class ErrorNodeDiagnosticCollectorComponent(collector: AbstractDiagnosticCollect
|
||||
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) {
|
||||
val coneDiagnostic = when (diagnostic) {
|
||||
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.builder.buildExpressionStub
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildResolvedReifiedParameterReference
|
||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||
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.*
|
||||
import org.jetbrains.kotlin.fir.references.builder.buildBackingFieldReference
|
||||
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference
|
||||
@@ -211,9 +208,15 @@ class FirCallResolver(
|
||||
else -> null
|
||||
}
|
||||
|
||||
val diagnostic = when (nameReference) {
|
||||
is FirErrorReferenceWithCandidate -> nameReference.diagnostic
|
||||
is FirErrorNamedReference -> nameReference.diagnostic
|
||||
else -> null
|
||||
}
|
||||
|
||||
when {
|
||||
referencedSymbol is FirClassLikeSymbol<*> -> {
|
||||
return buildResolvedQualifierForClass(referencedSymbol, nameReference.source, qualifiedAccess.typeArguments)
|
||||
return buildResolvedQualifierForClass(referencedSymbol, nameReference.source, qualifiedAccess.typeArguments, diagnostic)
|
||||
}
|
||||
referencedSymbol is FirTypeParameterSymbol && referencedSymbol.fir.isReified -> {
|
||||
return buildResolvedReifiedParameterReference {
|
||||
|
||||
@@ -10,11 +10,11 @@ import org.jetbrains.kotlin.builtins.functions.FunctionClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||
import org.jetbrains.kotlin.fir.*
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||
import org.jetbrains.kotlin.fir.diagnostics.*
|
||||
import org.jetbrains.kotlin.fir.expressions.*
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.FirResolvedReifiedParameterReferenceBuilder
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildExpressionWithSmartcast
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildResolvedQualifier
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.*
|
||||
import org.jetbrains.kotlin.fir.typeContext
|
||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||
import org.jetbrains.kotlin.fir.references.FirSuperReference
|
||||
@@ -255,16 +255,24 @@ fun BodyResolveComponents.buildResolvedQualifierForClass(
|
||||
regularClass: FirClassLikeSymbol<*>,
|
||||
sourceElement: FirSourceElement? = null,
|
||||
// TODO: Clarify if we actually need type arguments for qualifier?
|
||||
typeArgumentsForQualifier: List<FirTypeProjection> = emptyList()
|
||||
typeArgumentsForQualifier: List<FirTypeProjection> = emptyList(),
|
||||
diagnostic: ConeDiagnostic? = null
|
||||
): FirResolvedQualifier {
|
||||
val classId = regularClass.classId
|
||||
return buildResolvedQualifier {
|
||||
|
||||
val builder: FirAbstractResolvedQualifierBuilder = if (diagnostic == null) {
|
||||
FirResolvedQualifierBuilder()
|
||||
} else {
|
||||
FirErrorResolvedQualifierBuilder().apply { this.diagnostic = diagnostic }
|
||||
}
|
||||
|
||||
return builder.apply {
|
||||
source = sourceElement
|
||||
packageFqName = classId.packageFqName
|
||||
relativeClassFqName = classId.relativeClassName
|
||||
typeArguments.addAll(typeArgumentsForQualifier)
|
||||
symbol = regularClass
|
||||
}.apply {
|
||||
}.build().apply {
|
||||
resultType = if (classId.isLocal) {
|
||||
typeForQualifierByDeclaration(regularClass.fir, resultType, session)
|
||||
?: 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.expressions.FirAnnotationCall
|
||||
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.impl.FirResolvedQualifierImpl
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||
@@ -27,15 +28,15 @@ import org.jetbrains.kotlin.name.FqName
|
||||
*/
|
||||
|
||||
@FirBuilderDsl
|
||||
class FirResolvedQualifierBuilder : FirAnnotationContainerBuilder, FirExpressionBuilder {
|
||||
class FirResolvedQualifierBuilder : FirAbstractResolvedQualifierBuilder, FirAnnotationContainerBuilder, FirExpressionBuilder {
|
||||
override var source: FirSourceElement? = null
|
||||
override var typeRef: FirTypeRef = FirImplicitTypeRefImpl(null)
|
||||
override val annotations: MutableList<FirAnnotationCall> = mutableListOf()
|
||||
lateinit var packageFqName: FqName
|
||||
var relativeClassFqName: FqName? = null
|
||||
var symbol: FirClassLikeSymbol<*>? = null
|
||||
var isNullableLHSForCallableReference: Boolean = false
|
||||
val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
||||
override lateinit var packageFqName: FqName
|
||||
override var relativeClassFqName: FqName? = null
|
||||
override var symbol: FirClassLikeSymbol<*>? = null
|
||||
override var isNullableLHSForCallableReference: Boolean = false
|
||||
override val typeArguments: MutableList<FirTypeProjection> = mutableListOf()
|
||||
|
||||
override fun build(): FirResolvedQualifier {
|
||||
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)
|
||||
|
||||
+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.FirVarargArgumentsExpression
|
||||
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.FirReturnExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStringConcatenationCall
|
||||
@@ -521,6 +522,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
||||
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> {
|
||||
return transformElement(resolvedReifiedParameterReference, data)
|
||||
}
|
||||
@@ -1021,6 +1026,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
|
||||
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> {
|
||||
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.FirVarargArgumentsExpression
|
||||
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.FirReturnExpression
|
||||
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 visitErrorResolvedQualifier(errorResolvedQualifier: FirErrorResolvedQualifier, data: D): R = visitElement(errorResolvedQualifier, data)
|
||||
|
||||
open fun visitResolvedReifiedParameterReference(resolvedReifiedParameterReference: FirResolvedReifiedParameterReference, data: D): R = visitElement(resolvedReifiedParameterReference, 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.FirVarargArgumentsExpression
|
||||
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.FirReturnExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirStringConcatenationCall
|
||||
@@ -519,6 +520,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitElement(resolvedQualifier)
|
||||
}
|
||||
|
||||
open fun visitErrorResolvedQualifier(errorResolvedQualifier: FirErrorResolvedQualifier) {
|
||||
visitElement(errorResolvedQualifier)
|
||||
}
|
||||
|
||||
open fun visitResolvedReifiedParameterReference(resolvedReifiedParameterReference: FirResolvedReifiedParameterReference) {
|
||||
visitElement(resolvedReifiedParameterReference)
|
||||
}
|
||||
@@ -1019,6 +1024,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
|
||||
visitResolvedQualifier(resolvedQualifier)
|
||||
}
|
||||
|
||||
final override fun visitErrorResolvedQualifier(errorResolvedQualifier: FirErrorResolvedQualifier, data: Nothing?) {
|
||||
visitErrorResolvedQualifier(errorResolvedQualifier)
|
||||
}
|
||||
|
||||
final override fun visitResolvedReifiedParameterReference(resolvedReifiedParameterReference: FirResolvedReifiedParameterReference, data: Nothing?) {
|
||||
visitResolvedReifiedParameterReference(resolvedReifiedParameterReference)
|
||||
}
|
||||
|
||||
@@ -99,5 +99,12 @@ abstract class FirDefaultTransformer<D> : FirTransformer<D>() {
|
||||
override fun transformErrorFunction(errorFunction: FirErrorFunction, data: D): CompositeTransformResult<FirStatement> {
|
||||
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 {
|
||||
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) {
|
||||
return visitFunction(errorFunction)
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitErrorResolvedQualifier(errorResolvedQualifier: FirErrorResolvedQualifier) {
|
||||
return visitResolvedQualifier(errorResolvedQualifier)
|
||||
}
|
||||
}
|
||||
|
||||
+10
@@ -292,7 +292,17 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
|
||||
default("symbol", "FirAnonymousInitializerSymbol()")
|
||||
}
|
||||
|
||||
val abstractResolvedQualifierBuilder by builder {
|
||||
fields from resolvedQualifier
|
||||
}
|
||||
|
||||
builder(resolvedQualifier) {
|
||||
parents += abstractResolvedQualifierBuilder
|
||||
defaultFalse("isNullableLHSForCallableReference")
|
||||
}
|
||||
|
||||
builder(errorResolvedQualifier) {
|
||||
parents += abstractResolvedQualifierBuilder
|
||||
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.model.Element.Kind.*
|
||||
|
||||
@Suppress("unused", "MemberVisibilityCanBePrivate")
|
||||
object FirTreeBuilder : AbstractFirTreeBuilder() {
|
||||
val annotationContainer = element("AnnotationContainer", Other)
|
||||
val typeRef = element("TypeRef", TypeRef, annotationContainer)
|
||||
@@ -118,6 +119,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() {
|
||||
val varargArgumentsExpression = element("VarargArgumentsExpression", Expression, expression)
|
||||
|
||||
val resolvedQualifier = element("ResolvedQualifier", Expression, expression)
|
||||
val errorResolvedQualifier = element("ErrorResolvedQualifier", Expression, resolvedQualifier, diagnosticHolder)
|
||||
val resolvedReifiedParameterReference = element("ResolvedReifiedParameterReference", Expression, expression)
|
||||
val returnExpression = element("ReturnExpression", Expression, jump)
|
||||
val stringConcatenationCall = element("StringConcatenationCall", Expression, call, expression)
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ package foo
|
||||
|
||||
fun test() {
|
||||
A.d
|
||||
A.Companion.f
|
||||
A.Companion.<!HIDDEN!>f<!>
|
||||
B.D
|
||||
CCC
|
||||
CCC.classObjectVar
|
||||
|
||||
+4
-4
@@ -35,14 +35,14 @@ import a.D
|
||||
|
||||
fun test() {
|
||||
f(A)
|
||||
f(B)
|
||||
f(<!HIDDEN!>B<!>)
|
||||
f(C)
|
||||
f(D)
|
||||
f(<!HIDDEN!>D<!>)
|
||||
|
||||
A.foo()
|
||||
B.bar()
|
||||
<!HIDDEN!>B<!>.bar()
|
||||
C.baz()
|
||||
D.quux()
|
||||
<!HIDDEN!>D<!>.quux()
|
||||
|
||||
a.A.foo()
|
||||
a.C.baz()
|
||||
|
||||
@@ -28,9 +28,9 @@ import a.MyJavaClass
|
||||
|
||||
val <!EXPOSED_PROPERTY_TYPE!>mc1<!> = <!HIDDEN!>MyJavaClass<!>()
|
||||
|
||||
val x = MyJavaClass.<!HIDDEN!>staticMethod<!>()
|
||||
val y = MyJavaClass.NestedClass.<!HIDDEN!>staticMethodOfNested<!>()
|
||||
val <!EXPOSED_PROPERTY_TYPE!>z<!> = MyJavaClass.<!HIDDEN!>NestedClass<!>()
|
||||
val x = <!HIDDEN!>MyJavaClass<!>.<!HIDDEN!>staticMethod<!>()
|
||||
val y = MyJavaClass.<!HIDDEN!>NestedClass<!>.<!HIDDEN!>staticMethodOfNested<!>()
|
||||
val <!EXPOSED_PROPERTY_TYPE!>z<!> = <!HIDDEN!>MyJavaClass<!>.<!HIDDEN!>NestedClass<!>()
|
||||
|
||||
//FILE: c.kt
|
||||
package a.c
|
||||
@@ -39,6 +39,6 @@ import a.MyJavaClass
|
||||
|
||||
val <!EXPOSED_PROPERTY_TYPE!>mc1<!> = <!HIDDEN!>MyJavaClass<!>()
|
||||
|
||||
val x = MyJavaClass.<!HIDDEN!>staticMethod<!>()
|
||||
val y = MyJavaClass.NestedClass.<!HIDDEN!>staticMethodOfNested<!>()
|
||||
val <!EXPOSED_PROPERTY_TYPE!>z<!> = MyJavaClass.<!HIDDEN!>NestedClass<!>()
|
||||
val x = <!HIDDEN!>MyJavaClass<!>.<!HIDDEN!>staticMethod<!>()
|
||||
val y = MyJavaClass.<!HIDDEN!>NestedClass<!>.<!HIDDEN!>staticMethodOfNested<!>()
|
||||
val <!EXPOSED_PROPERTY_TYPE!>z<!> = <!HIDDEN!>MyJavaClass<!>.<!HIDDEN!>NestedClass<!>()
|
||||
|
||||
@@ -37,7 +37,7 @@ fun test() {
|
||||
val z = <!HIDDEN!>x<!>
|
||||
<!HIDDEN!>x<!> = 30
|
||||
|
||||
val po = PO
|
||||
val po = <!HIDDEN!>PO<!>
|
||||
|
||||
val v = xx
|
||||
xx = 40
|
||||
|
||||
@@ -30,7 +30,7 @@ fun test() {
|
||||
val u : A = <!HIDDEN!>A<!>()
|
||||
val a : java.util.Arrays.ArrayList<Int>;
|
||||
|
||||
val po = PO
|
||||
val po = <!HIDDEN!>PO<!>
|
||||
}
|
||||
|
||||
class B : <!EXPOSED_SUPER_CLASS, HIDDEN!>A<!>() {}
|
||||
|
||||
@@ -33,7 +33,7 @@ fun test() {
|
||||
val z = <!HIDDEN!>x<!>
|
||||
<!HIDDEN!>x<!> = 30
|
||||
|
||||
val po = PO
|
||||
val po = <!HIDDEN!>PO<!>
|
||||
}
|
||||
|
||||
class B : <!EXPOSED_SUPER_CLASS, HIDDEN!>A<!>() {}
|
||||
|
||||
Reference in New Issue
Block a user