From c198c57e6236b4bec41ce9e265a3b60bb6b71d7a Mon Sep 17 00:00:00 2001 From: Tianyu Geng Date: Tue, 16 Mar 2021 14:09:09 -0700 Subject: [PATCH] FIR checker: fix diagnostic parameter renderer Some of the current renderer is fallbacking to `toString` and output the fully qualified class name with hash code. --- .../diagnostics/FirDefaultErrorMessages.kt | 19 +++++---- .../checker/ObjectLiteralInDelegate.fir.kt | 12 ++---- idea/testData/checker/Override.fir.kt | 12 ++---- .../ReturnTypeMismatchOnOverride.fir.kt | 8 ++-- .../checker/ReturnTypeMismatchOnOverride.kt | 2 - .../checker/TypeArgumentsNotAllowed.fir.kt | 6 +-- .../checker/TypeArgumentsNotAllowed.kt | 2 - idea/testData/checker/Unresolved.fir.kt | 42 +++++++------------ idea/testData/checker/Unresolved.kt | 2 - .../incompleteTypeArgumentList.kt | 2 - .../nArgumentsExpectedMessage.fir.kt | 4 +- .../nArgumentsExpectedMessage.kt | 2 - .../testData/checker/regression/kt9887.fir.kt | 4 +- idea/testData/checker/regression/kt9887.kt | 2 - 14 files changed, 41 insertions(+), 78 deletions(-) diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDefaultErrorMessages.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDefaultErrorMessages.kt index 3687b9ffbe1..9aee94349c8 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDefaultErrorMessages.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/FirDefaultErrorMessages.kt @@ -124,6 +124,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.LOCAL_INTERFACE_N import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.LOCAL_OBJECT_NOT_ALLOWED import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MANY_COMPANION_OBJECTS import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MANY_IMPL_MEMBER_NOT_IMPLEMENTED +import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.METHOD_OF_ANY_IMPLEMENTED_IN_INTERFACE import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MISSING_VAL_ON_ANNOTATION_PARAMETER import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors.MULTIPLE_VARARG_PARAMETERS @@ -401,7 +402,7 @@ class FirDefaultErrorMessages : DefaultErrorMessages.Extension { WRONG_NUMBER_OF_TYPE_ARGUMENTS, "{0,choice,0#No type arguments|1#One type argument|1<{0,number,integer} type arguments} expected for {1}", null, - TO_STRING + SYMBOL ) map.put(TYPE_PARAMETERS_IN_OBJECT, "Type parameters are not allowed for objects") // map.put(ILLEGAL_PROJECTION_USAGE, ...) // & @@ -485,44 +486,44 @@ class FirDefaultErrorMessages : DefaultErrorMessages.Extension { ABSTRACT_MEMBER_NOT_IMPLEMENTED, "{0} is not abstract and does not implement abstract member {1}", RENDER_CLASS_OR_OBJECT, - FQ_NAMES_IN_TYPES + NAME ) map.put( ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED, "{0} is not abstract and does not implement abstract base class member {1}", RENDER_CLASS_OR_OBJECT, - FQ_NAMES_IN_TYPES + NAME ) map.put( MANY_IMPL_MEMBER_NOT_IMPLEMENTED, "{0} must override {1} because it inherits many implementations of it", RENDER_CLASS_OR_OBJECT, - FQ_NAMES_IN_TYPES + NAME ) map.put( - MANY_IMPL_MEMBER_NOT_IMPLEMENTED, + MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED, "{0} must override {1} because it inherits multiple interface methods of it", RENDER_CLASS_OR_OBJECT, - FQ_NAMES_IN_TYPES + NAME ) map.put( RETURN_TYPE_MISMATCH_ON_OVERRIDE, "Return type of ''{0}'' is not a subtype of the return type of the overridden member ''{1}''", DECLARATION_NAME, - FQ_NAMES_IN_TYPES + DECLARATION_NAME ) map.put( PROPERTY_TYPE_MISMATCH_ON_OVERRIDE, "Type of ''{0}'' is not a subtype of the overridden property ''{1}''", DECLARATION_NAME, - FQ_NAMES_IN_TYPES + DECLARATION_NAME ) map.put( VAR_TYPE_MISMATCH_ON_OVERRIDE, "Type of ''{0}'' doesn''t match the type of the overridden var-property ''{1}''", DECLARATION_NAME, - FQ_NAMES_IN_TYPES + DECLARATION_NAME ) map.put( diff --git a/idea/testData/checker/ObjectLiteralInDelegate.fir.kt b/idea/testData/checker/ObjectLiteralInDelegate.fir.kt index 33c19fee094..c4ff14021b3 100644 --- a/idea/testData/checker/ObjectLiteralInDelegate.fir.kt +++ b/idea/testData/checker/ObjectLiteralInDelegate.fir.kt @@ -3,16 +3,12 @@ interface A { fun get(x: Int) } -class B : A by object : A {} +class B : A by object : A {} -class C : A by (object : A {}) +class C : A by (object : A {}) -class D : A by 1 + (object : A {}) +class D : A by 1 + (object : A {}) fun bar() { - val e = object : A by object : A {} {} + val e = object : A by object : A {} {} } diff --git a/idea/testData/checker/Override.fir.kt b/idea/testData/checker/Override.fir.kt index c90c0f43c11..427574a8206 100644 --- a/idea/testData/checker/Override.fir.kt +++ b/idea/testData/checker/Override.fir.kt @@ -15,21 +15,17 @@ package override class MyChildClass : MyClass() {} - class MyIllegalClass : MyTrait, MyAbstractClass() {} + class MyIllegalClass : MyTrait, MyAbstractClass() {} - class MyIllegalClass2 : MyTrait, MyAbstractClass() { + class MyIllegalClass2 : MyTrait, MyAbstractClass() { override fun foo() {} } - class MyIllegalClass3 : MyTrait, MyAbstractClass() { + class MyIllegalClass3 : MyTrait, MyAbstractClass() { override fun bar() {} } - class MyIllegalClass4 : MyTrait, MyAbstractClass() { + class MyIllegalClass4 : MyTrait, MyAbstractClass() { fun foo() {} override fun other() {} } diff --git a/idea/testData/checker/ReturnTypeMismatchOnOverride.fir.kt b/idea/testData/checker/ReturnTypeMismatchOnOverride.fir.kt index 03aec79470b..4608345f49b 100644 --- a/idea/testData/checker/ReturnTypeMismatchOnOverride.fir.kt +++ b/idea/testData/checker/ReturnTypeMismatchOnOverride.fir.kt @@ -1,5 +1,3 @@ -// IGNORE_FIR - interface Base { fun foo(): Int var bar: Int @@ -7,7 +5,7 @@ interface Base { } class Derived : Base { - override fun foo(): String = "" - override var bar: String = "" - override val qux: String = "" + override fun foo(): String = "" + override var bar: String = "" + override val qux: String = "" } diff --git a/idea/testData/checker/ReturnTypeMismatchOnOverride.kt b/idea/testData/checker/ReturnTypeMismatchOnOverride.kt index 03aec79470b..550f21dd5b1 100644 --- a/idea/testData/checker/ReturnTypeMismatchOnOverride.kt +++ b/idea/testData/checker/ReturnTypeMismatchOnOverride.kt @@ -1,5 +1,3 @@ -// IGNORE_FIR - interface Base { fun foo(): Int var bar: Int diff --git a/idea/testData/checker/TypeArgumentsNotAllowed.fir.kt b/idea/testData/checker/TypeArgumentsNotAllowed.fir.kt index 707f40d8d57..63f96384601 100644 --- a/idea/testData/checker/TypeArgumentsNotAllowed.fir.kt +++ b/idea/testData/checker/TypeArgumentsNotAllowed.fir.kt @@ -1,9 +1,7 @@ -// IGNORE_FIR - package foo open class A -fun f(t: T) {} +fun f(t: T) {} -fun use(b: foo.A) {} +fun use(b: foo.A) {} diff --git a/idea/testData/checker/TypeArgumentsNotAllowed.kt b/idea/testData/checker/TypeArgumentsNotAllowed.kt index 707f40d8d57..b6ba2b892af 100644 --- a/idea/testData/checker/TypeArgumentsNotAllowed.kt +++ b/idea/testData/checker/TypeArgumentsNotAllowed.kt @@ -1,5 +1,3 @@ -// IGNORE_FIR - package foo open class A diff --git a/idea/testData/checker/Unresolved.fir.kt b/idea/testData/checker/Unresolved.fir.kt index 62f5b5de57a..9a089ddb090 100644 --- a/idea/testData/checker/Unresolved.fir.kt +++ b/idea/testData/checker/Unresolved.fir.kt @@ -1,43 +1,33 @@ -// IGNORE_FIR - package unresolved -class Pair(a: A, b: B) +class Pair(a: A, b: B) fun testGenericArgumentsCount() { - val p1: Pair = Pair(2, 2) - val p2: Pair = Pair(2, 2) + val p1: Pair = Pair(2, 2) + val p2: Pair = Pair(2, 2) } fun testUnresolved() { - if (a is String) { - val s = a + if (a is String) { + val s = a } - foo(a) + foo(a) val s = "s" - foo(s) - foo1(i) - s.foo() + foo(s) + foo1(i) + s.foo() - when(a) { - is Int -> a - is String -> a - else -> a + when(a) { + is Int -> a + is String -> a + else -> a } -<<<<<<< Updated upstream - for (j in collection) { - var i: Int = j - i += 1 - foo1(j) - } -======= - for (j in collection) { + for (j in collection) { var i: Int = j i += 1 foo1(j) - } ->>>>>>> Stashed changes + } } -fun foo1(i: Int) {} +fun foo1(i: Int) {} diff --git a/idea/testData/checker/Unresolved.kt b/idea/testData/checker/Unresolved.kt index 866e2430bce..7d384ad75e1 100644 --- a/idea/testData/checker/Unresolved.kt +++ b/idea/testData/checker/Unresolved.kt @@ -1,5 +1,3 @@ -// IGNORE_FIR - package unresolved class Pair(a: A, b: B) diff --git a/idea/testData/checker/diagnosticsMessage/incompleteTypeArgumentList.kt b/idea/testData/checker/diagnosticsMessage/incompleteTypeArgumentList.kt index 6db81da7b18..c5948365e5a 100644 --- a/idea/testData/checker/diagnosticsMessage/incompleteTypeArgumentList.kt +++ b/idea/testData/checker/diagnosticsMessage/incompleteTypeArgumentList.kt @@ -1,5 +1,3 @@ -// IGNORE_FIR - interface ApplicationFeature, B : Any, V> open class Pipeline() fun , T : Any, V> A.feature(feature: ApplicationFeature) : Unit {} diff --git a/idea/testData/checker/diagnosticsMessage/nArgumentsExpectedMessage.fir.kt b/idea/testData/checker/diagnosticsMessage/nArgumentsExpectedMessage.fir.kt index 0d07188bb82..03fcca7195f 100644 --- a/idea/testData/checker/diagnosticsMessage/nArgumentsExpectedMessage.fir.kt +++ b/idea/testData/checker/diagnosticsMessage/nArgumentsExpectedMessage.fir.kt @@ -1,9 +1,7 @@ -// IGNORE_FIR - package name.that.may.be.very.long import java.io.Serializable interface Foo : Comparable>, Serializable, Cloneable -fun test(f: Foo) {} +fun test(f: Foo) {} diff --git a/idea/testData/checker/diagnosticsMessage/nArgumentsExpectedMessage.kt b/idea/testData/checker/diagnosticsMessage/nArgumentsExpectedMessage.kt index 0d07188bb82..2373ef7828d 100644 --- a/idea/testData/checker/diagnosticsMessage/nArgumentsExpectedMessage.kt +++ b/idea/testData/checker/diagnosticsMessage/nArgumentsExpectedMessage.kt @@ -1,5 +1,3 @@ -// IGNORE_FIR - package name.that.may.be.very.long import java.io.Serializable diff --git a/idea/testData/checker/regression/kt9887.fir.kt b/idea/testData/checker/regression/kt9887.fir.kt index 8ae32fa024c..fceaf741f8d 100644 --- a/idea/testData/checker/regression/kt9887.fir.kt +++ b/idea/testData/checker/regression/kt9887.fir.kt @@ -1,7 +1,5 @@ -// IGNORE_FIR - open class A() class G() -class B : A<G>() +class B : A<G>() diff --git a/idea/testData/checker/regression/kt9887.kt b/idea/testData/checker/regression/kt9887.kt index 8ae32fa024c..5ff49fbc44f 100644 --- a/idea/testData/checker/regression/kt9887.kt +++ b/idea/testData/checker/regression/kt9887.kt @@ -1,5 +1,3 @@ -// IGNORE_FIR - open class A() class G()