[FIR] Add FirErrorResolvedQualifier for qualifiers with resolve diagnostic

This commit is contained in:
Dmitriy Novozhilov
2020-07-23 12:48:43 +03:00
committed by Mikhail Glukhikh
parent a5e9401a0a
commit ffd30566be
22 changed files with 333 additions and 32 deletions
@@ -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
@@ -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
}
@@ -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
}
@@ -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()
}
@@ -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)
@@ -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)
}
}
@@ -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")
}
@@ -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)
@@ -2,7 +2,7 @@ package foo
fun test() {
A.d
A.Companion.f
A.Companion.<!HIDDEN!>f<!>
B.D
CCC
CCC.classObjectVar
@@ -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<!>() {}