Mark value arguments in case of empty delegation call
It's useful for quickfixes for these diagnostics
This commit is contained in:
@@ -168,7 +168,8 @@ public interface Errors {
|
||||
DiagnosticFactory0.create(ERROR);
|
||||
|
||||
DiagnosticFactory0<PsiElement> PRIMARY_CONSTRUCTOR_REQUIRED_FOR_DATA_CLASS = DiagnosticFactory0.create(ERROR);
|
||||
DiagnosticFactory0<PsiElement> EXPLICIT_DELEGATION_CALL_REQUIRED = DiagnosticFactory0.create(ERROR);
|
||||
DiagnosticFactory0<JetConstructorDelegationCall> EXPLICIT_DELEGATION_CALL_REQUIRED =
|
||||
DiagnosticFactory0.create(ERROR, PositioningStrategies.SECONDARY_CONSTRUCTOR_DELEGATION_CALL);
|
||||
|
||||
// Trait-specific
|
||||
|
||||
|
||||
@@ -420,7 +420,8 @@ public object PositioningStrategies {
|
||||
override fun mark(element: JetConstructorDelegationCall): List<TextRange> {
|
||||
if (element.isEmpty()) {
|
||||
val constructor = element.getStrictParentOfType<JetSecondaryConstructor>()!!
|
||||
return markElement(constructor.getConstructorKeyword())
|
||||
val valueParameterList = constructor.getValueParameterList() ?: return markElement(constructor)
|
||||
return markRange(constructor.getConstructorKeyword(), valueParameterList.getLastChild())
|
||||
}
|
||||
return markElement(element.getCalleeExpression() ?: element)
|
||||
}
|
||||
|
||||
+1
-2
@@ -82,8 +82,7 @@ public class TracingStrategyForEmptyConstructorDelegationCall(
|
||||
}
|
||||
|
||||
private fun reportError(trace: BindingTrace) {
|
||||
val declaration = delegationCall.getParent() as JetSecondaryConstructor
|
||||
trace.report(Errors.EXPLICIT_DELEGATION_CALL_REQUIRED.on(declaration.getConstructorKeyword()))
|
||||
trace.report(Errors.EXPLICIT_DELEGATION_CALL_REQUIRED.on(delegationCall))
|
||||
}
|
||||
|
||||
// Underlying methods should not be called because such errors are impossible
|
||||
|
||||
+4
-4
@@ -2,7 +2,7 @@
|
||||
open class B0(x: Int)
|
||||
|
||||
class A0 : B0 {
|
||||
<!EXPLICIT_DELEGATION_CALL_REQUIRED!>constructor<!>()
|
||||
<!EXPLICIT_DELEGATION_CALL_REQUIRED!>constructor()<!>
|
||||
constructor(x: Int) : super(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ open class B1 {
|
||||
}
|
||||
|
||||
class A1 : B1 {
|
||||
<!EXPLICIT_DELEGATION_CALL_REQUIRED!>constructor<!>()
|
||||
<!EXPLICIT_DELEGATION_CALL_REQUIRED!>constructor()<!>
|
||||
constructor(x: Int) : <!OVERLOAD_RESOLUTION_AMBIGUITY!>super<!>()
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ open class B2 {
|
||||
}
|
||||
|
||||
class A2 : B2 {
|
||||
<!EXPLICIT_DELEGATION_CALL_REQUIRED!>constructor<!>()
|
||||
<!EXPLICIT_DELEGATION_CALL_REQUIRED!>constructor()<!>
|
||||
constructor(x: Int) : <!NONE_APPLICABLE!>super<!>()
|
||||
}
|
||||
|
||||
@@ -37,6 +37,6 @@ open class B3 {
|
||||
}
|
||||
|
||||
class A3 : B3 {
|
||||
<!EXPLICIT_DELEGATION_CALL_REQUIRED!>constructor<!>()
|
||||
<!EXPLICIT_DELEGATION_CALL_REQUIRED!>constructor()<!>
|
||||
constructor(x: Int) : <!INVISIBLE_MEMBER!>super<!>()
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
class A(x: Int) {
|
||||
<!PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED!>constructor<!>()
|
||||
<!PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED!>constructor()<!>
|
||||
}
|
||||
open class B(x: Int)
|
||||
class C(x: Int) : B(x) {
|
||||
|
||||
+1
-1
@@ -6,5 +6,5 @@ open class B(x: Double) {
|
||||
trait C
|
||||
class A : B, C {
|
||||
constructor(): <!NONE_APPLICABLE!>super<!>(' ')
|
||||
<!EXPLICIT_DELEGATION_CALL_REQUIRED!>constructor<!>(x: Int)
|
||||
<!EXPLICIT_DELEGATION_CALL_REQUIRED!>constructor(x: Int)<!>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user