FIR: Improve error reporting for EXPRESSION_EXPECTED_PACKAGE_FOUND
This commit is contained in:
committed by
teamcityserver
parent
8f6ec42304
commit
ef684c0dff
+1
-1
@@ -12,7 +12,7 @@ FILE: innerQualifier.kt
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
public final val x: R|kotlin/Unit| = R|kotlin/Unit|
|
public final val x: R|kotlin/Unit| = Q|Outer.Inner|
|
||||||
public get(): R|kotlin/Unit|
|
public get(): R|kotlin/Unit|
|
||||||
public final val klass: R|kotlin/reflect/KClass<Outer.Inner>| = <getClass>(Q|Outer.Inner|)
|
public final val klass: R|kotlin/reflect/KClass<Outer.Inner>| = <getClass>(Q|Outer.Inner|)
|
||||||
public get(): R|kotlin/reflect/KClass<Outer.Inner>|
|
public get(): R|kotlin/reflect/KClass<Outer.Inner>|
|
||||||
|
|||||||
@@ -232,7 +232,13 @@ class FirCallResolver(
|
|||||||
val qualifiedAccess = qualifiedAccess.transformExplicitReceiver<FirQualifiedAccess>()
|
val qualifiedAccess = qualifiedAccess.transformExplicitReceiver<FirQualifiedAccess>()
|
||||||
val nonFatalDiagnosticFromExpression = (qualifiedAccess as? FirPropertyAccessExpression)?.nonFatalDiagnostics
|
val nonFatalDiagnosticFromExpression = (qualifiedAccess as? FirPropertyAccessExpression)?.nonFatalDiagnostics
|
||||||
|
|
||||||
if (isUsedAsReceiver) {
|
val basicResult by lazy(LazyThreadSafetyMode.NONE) {
|
||||||
|
collectCandidates(qualifiedAccess, callee.name)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Even if it's not receiver, it makes sense to continue qualifier if resolution is unsuccessful
|
||||||
|
// just to try to resolve to package/class and then report meaningful error at FirStandaloneQualifierChecker
|
||||||
|
if (isUsedAsReceiver || !basicResult.applicability.isSuccess) {
|
||||||
(qualifiedAccess.explicitReceiver as? FirResolvedQualifier)
|
(qualifiedAccess.explicitReceiver as? FirResolvedQualifier)
|
||||||
?.continueQualifier(
|
?.continueQualifier(
|
||||||
callee,
|
callee,
|
||||||
@@ -244,7 +250,7 @@ class FirCallResolver(
|
|||||||
?.let { return it }
|
?.let { return it }
|
||||||
}
|
}
|
||||||
|
|
||||||
var result = collectCandidates(qualifiedAccess, callee.name)
|
var result = basicResult
|
||||||
|
|
||||||
if (qualifiedAccess.explicitReceiver == null) {
|
if (qualifiedAccess.explicitReceiver == null) {
|
||||||
// Even if we successfully resolved to some companion/named object, we should re-try with qualifier resolution
|
// Even if we successfully resolved to some companion/named object, we should re-try with qualifier resolution
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// COMPARE_WITH_LIGHT_TREE
|
||||||
package foo
|
package foo
|
||||||
|
|
||||||
class X {}
|
class X {}
|
||||||
@@ -6,7 +7,7 @@ val s = <!EXPRESSION_EXPECTED_PACKAGE_FOUND!>java<!>
|
|||||||
val ss = <!NO_COMPANION_OBJECT!>System<!>
|
val ss = <!NO_COMPANION_OBJECT!>System<!>
|
||||||
val sss = <!NO_COMPANION_OBJECT!>X<!>
|
val sss = <!NO_COMPANION_OBJECT!>X<!>
|
||||||
val x = "${<!NO_COMPANION_OBJECT!>System<!>}"
|
val x = "${<!NO_COMPANION_OBJECT!>System<!>}"
|
||||||
val xs = java.<!UNRESOLVED_REFERENCE!>lang<!>
|
val xs = java.<!EXPRESSION_EXPECTED_PACKAGE_FOUND!>lang<!>
|
||||||
val xss = java.lang.<!NO_COMPANION_OBJECT!>System<!>
|
val xss = java.lang.<!NO_COMPANION_OBJECT!>System<!>
|
||||||
val xsss = foo.<!NO_COMPANION_OBJECT!>X<!>
|
val xsss = foo.<!NO_COMPANION_OBJECT!>X<!>
|
||||||
val xssss = <!EXPRESSION_EXPECTED_PACKAGE_FOUND!>foo<!>
|
val xssss = <!EXPRESSION_EXPECTED_PACKAGE_FOUND!>foo<!>
|
||||||
@@ -16,7 +17,7 @@ fun main() {
|
|||||||
<!EXPRESSION_EXPECTED_PACKAGE_FOUND!>java<!> = null
|
<!EXPRESSION_EXPECTED_PACKAGE_FOUND!>java<!> = null
|
||||||
<!NO_COMPANION_OBJECT!>System<!> = null
|
<!NO_COMPANION_OBJECT!>System<!> = null
|
||||||
<!NO_COMPANION_OBJECT!>System<!>!!
|
<!NO_COMPANION_OBJECT!>System<!>!!
|
||||||
java.lang.<!NO_COMPANION_OBJECT!>System<!> = null
|
<!NO_COMPANION_OBJECT{LT}!>java.lang.<!NO_COMPANION_OBJECT{PSI}!>System<!><!> = null
|
||||||
java.lang.<!NO_COMPANION_OBJECT!>System<!>!!
|
java.lang.<!NO_COMPANION_OBJECT!>System<!>!!
|
||||||
<!NO_COMPANION_OBJECT!>System<!> is Int
|
<!NO_COMPANION_OBJECT!>System<!> is Int
|
||||||
<!INVISIBLE_REFERENCE!>System<!>()
|
<!INVISIBLE_REFERENCE!>System<!>()
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// COMPARE_WITH_LIGHT_TREE
|
||||||
package foo
|
package foo
|
||||||
|
|
||||||
class X {}
|
class X {}
|
||||||
|
|||||||
Reference in New Issue
Block a user