FIR: Report EXPLICIT_DELEGATION_CALL_REQUIRED in some missing cases
^KT-55877 Fixed
This commit is contained in:
committed by
Space Team
parent
91f68f0e17
commit
efc957586d
Vendored
+1
-1
@@ -63,5 +63,5 @@ open class M {
|
||||
}
|
||||
|
||||
class U : M {
|
||||
constructor()
|
||||
<!EXPLICIT_DELEGATION_CALL_REQUIRED!>constructor()<!>
|
||||
}
|
||||
|
||||
+2
-5
@@ -13,8 +13,8 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
||||
import org.jetbrains.kotlin.fir.declarations.FirConstructor
|
||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.diagnostics.FirDiagnosticHolder
|
||||
import org.jetbrains.kotlin.fir.references.*
|
||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeAmbiguityError
|
||||
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
||||
import org.jetbrains.kotlin.fir.symbols.lazyResolveToPhase
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.lastIsInstanceOrNull
|
||||
@@ -59,11 +59,8 @@ object FirCommonConstructorDelegationIssuesChecker : FirRegularClassChecker() {
|
||||
}
|
||||
} else {
|
||||
for (it in otherConstructors) {
|
||||
val callee = it.delegatedConstructor?.calleeReference
|
||||
|
||||
// couldn't find proper super() constructor implicitly
|
||||
if (
|
||||
callee is FirErrorNamedReference && callee.diagnostic is ConeAmbiguityError &&
|
||||
if (it.delegatedConstructor?.calleeReference is FirDiagnosticHolder &&
|
||||
it.delegatedConstructor?.source?.kind is KtFakeSourceElementKind
|
||||
) {
|
||||
reporter.reportOn(it.source, FirErrors.EXPLICIT_DELEGATION_CALL_REQUIRED, context)
|
||||
|
||||
Vendored
+2
-2
@@ -2,7 +2,7 @@
|
||||
open class B0(x: Int)
|
||||
|
||||
class A0 : B0 {
|
||||
constructor()
|
||||
<!EXPLICIT_DELEGATION_CALL_REQUIRED!>constructor()<!>
|
||||
constructor(x: Int) : <!NO_VALUE_FOR_PARAMETER!>super<!>()
|
||||
}
|
||||
|
||||
@@ -37,6 +37,6 @@ open class B3 {
|
||||
}
|
||||
|
||||
class A3 : B3 {
|
||||
constructor()
|
||||
<!EXPLICIT_DELEGATION_CALL_REQUIRED!>constructor()<!>
|
||||
constructor(x: Int) : <!INVISIBLE_REFERENCE!>super<!>()
|
||||
}
|
||||
|
||||
+1
-1
@@ -2,6 +2,6 @@ class A {
|
||||
open inner class Inner
|
||||
|
||||
class Nested : Inner {
|
||||
constructor()
|
||||
<!EXPLICIT_DELEGATION_CALL_REQUIRED!>constructor()<!>
|
||||
}
|
||||
}
|
||||
|
||||
compiler/testData/diagnostics/tests/secondaryConstructors/reportResolutionErrorOnImplicitOnce.fir.kt
Vendored
-6
@@ -1,6 +0,0 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
open class A(p1: String, p2: String, p3: String, p4: String, p5: String)
|
||||
|
||||
class B : A {
|
||||
constructor(s: String)
|
||||
}
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
open class A(p1: String, p2: String, p3: String, p4: String, p5: String)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user