[FIR] Improve symbol rendering in *_NOT_IMPLEMENTED diagnostics
This commit is contained in:
committed by
Space Team
parent
44a4498ee5
commit
2613a337ae
@@ -1,3 +1,3 @@
|
||||
/enum.kt:(506,508): error: 'static enum entry E2: EnumClass = object : EnumClass' does not implement abstract members: [fun foo(): Int, val bar: String].
|
||||
/enum.kt:(506,508): error: Enum entry 'EnumClass.E2' does not implement abstract members: [fun foo(): Int, val bar: String].
|
||||
|
||||
/enum.kt:(524,526): error: 'static enum entry E3: EnumClass = object : EnumClass' does not implement abstract members: [fun foo(): Int, val bar: String].
|
||||
/enum.kt:(524,526): error: Enum entry 'EnumClass.E3' does not implement abstract members: [fun foo(): Int, val bar: String].
|
||||
|
||||
+9
-1
@@ -109,7 +109,15 @@ object FirDiagnosticRenderers {
|
||||
ClassKind.INTERFACE -> "Interface"
|
||||
else -> "Class"
|
||||
}
|
||||
"$classOrObject $name"
|
||||
"$classOrObject '$name'"
|
||||
}
|
||||
|
||||
val RENDER_ENUM_ENTRY = Renderer { enumEntry: FirEnumEntrySymbol ->
|
||||
var name = enumEntry.callableId.callableName.asString()
|
||||
enumEntry.callableId.classId?.let {
|
||||
name = "${it.shortClassName.asString()}.$name"
|
||||
}
|
||||
"Enum entry '$name'"
|
||||
}
|
||||
|
||||
val RENDER_CLASS_OR_OBJECT_NAME = Renderer { firClassLike: FirClassLikeSymbol<*> ->
|
||||
|
||||
+8
-7
@@ -36,6 +36,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.OPTI
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.RENDER_CLASS_OR_OBJECT
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.RENDER_CLASS_OR_OBJECT_NAME
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.RENDER_COLLECTION_OF_TYPES
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.RENDER_ENUM_ENTRY
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.RENDER_TYPE
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.REQUIRE_KOTLIN_VERSION
|
||||
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers.SYMBOL
|
||||
@@ -1600,19 +1601,19 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() {
|
||||
|
||||
map.put(
|
||||
ABSTRACT_MEMBER_NOT_IMPLEMENTED,
|
||||
"''{0}'' is not abstract and does not implement abstract member ''{1}''.",
|
||||
"{0} is not abstract and does not implement abstract member ''{1}''.",
|
||||
RENDER_CLASS_OR_OBJECT,
|
||||
DECLARATION_NAME
|
||||
)
|
||||
map.put(
|
||||
ABSTRACT_MEMBER_NOT_IMPLEMENTED_BY_ENUM_ENTRY,
|
||||
"''{0}'' does not implement abstract members: {1}.",
|
||||
SYMBOL,
|
||||
"{0} does not implement abstract members: {1}.",
|
||||
RENDER_ENUM_ENTRY,
|
||||
SYMBOLS,
|
||||
)
|
||||
map.put(
|
||||
ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED,
|
||||
"''{0}'' is not abstract and does not implement abstract base class member ''{1}''.",
|
||||
"{0} is not abstract and does not implement abstract base class member ''{1}''.",
|
||||
RENDER_CLASS_OR_OBJECT,
|
||||
DECLARATION_NAME
|
||||
)
|
||||
@@ -1625,13 +1626,13 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() {
|
||||
map.put(AMBIGUOUS_ANONYMOUS_TYPE_INFERRED, "Right-hand side has an anonymous type. Please specify the type explicitly.", NOT_RENDERED)
|
||||
map.put(
|
||||
MANY_IMPL_MEMBER_NOT_IMPLEMENTED,
|
||||
"''{0}'' must override ''{1}'' because it inherits multiple implementations for it.",
|
||||
"{0} must override ''{1}'' because it inherits multiple implementations for it.",
|
||||
RENDER_CLASS_OR_OBJECT,
|
||||
DECLARATION_NAME
|
||||
)
|
||||
map.put(
|
||||
MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED,
|
||||
"''{0}'' must override ''{1}'' because it inherits multiple interface methods for it.",
|
||||
"{0} must override ''{1}'' because it inherits multiple interface methods for it.",
|
||||
RENDER_CLASS_OR_OBJECT,
|
||||
DECLARATION_NAME
|
||||
)
|
||||
@@ -1663,7 +1664,7 @@ object FirErrorsDefaultMessages : BaseDiagnosticRendererFactory() {
|
||||
)
|
||||
map.put(
|
||||
VAR_IMPLEMENTED_BY_INHERITED_VAL,
|
||||
"''{0}'' overrides ''var'' property ''{1}'' with inherited ''val'' property ''{2}''.",
|
||||
"{0} overrides ''var'' property ''{1}'' with inherited ''val'' property ''{2}''.",
|
||||
RENDER_CLASS_OR_OBJECT,
|
||||
DECLARATION_NAME,
|
||||
FQ_NAMES_IN_TYPES
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
compiler/testData/cli/jvm/internalArgEnableLanguageFeature.kt:9:1: error: 'Class Impl' overrides 'var' property 'a' with inherited 'val' property 'public final val /Open.a: kotlin/String
|
||||
compiler/testData/cli/jvm/internalArgEnableLanguageFeature.kt:9:1: error: class 'Impl' overrides 'var' property 'a' with inherited 'val' property 'public final val /Open.a: kotlin/String
|
||||
public get(): kotlin/String'.
|
||||
class Impl : Open(), Interface
|
||||
^
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
compiler/testData/cli/jvm/twoDiagnosticsOnSingleElement.kt:11:1: error: 'Class C' is not abstract and does not implement abstract member 'foo'.
|
||||
compiler/testData/cli/jvm/twoDiagnosticsOnSingleElement.kt:11:1: error: class 'C' is not abstract and does not implement abstract member 'foo'.
|
||||
class C : I1, I2
|
||||
^
|
||||
compiler/testData/cli/jvm/twoDiagnosticsOnSingleElement.kt:11:1: error: 'C' inherits conflicting members: foo, foo.
|
||||
|
||||
+4
-4
@@ -23,8 +23,8 @@ abstract class D {
|
||||
abstract val d: @An Int
|
||||
}
|
||||
|
||||
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED("Class E; d")!>class E<!> : D(), A
|
||||
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED("Class F; a")!>class F<!> : A
|
||||
<!ABSTRACT_CLASS_MEMBER_NOT_IMPLEMENTED("Class 'E'; d")!>class E<!> : D(), A
|
||||
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED("Class 'F'; a")!>class F<!> : A
|
||||
|
||||
@An
|
||||
interface G {
|
||||
@@ -44,5 +44,5 @@ interface GI : G {
|
||||
override fun a(@An arg: @An Int) {}
|
||||
}
|
||||
|
||||
<!MANY_IMPL_MEMBER_NOT_IMPLEMENTED("Class AG1; a")!>class AG1<!>(val a: A, val g: G) : A by a, G by g
|
||||
<!MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED("Class AG2; a")!>class AG2<!>() : AI, GI
|
||||
<!MANY_IMPL_MEMBER_NOT_IMPLEMENTED("Class 'AG1'; a")!>class AG1<!>(val a: A, val g: G) : A by a, G by g
|
||||
<!MANY_INTERFACES_MEMBER_NOT_IMPLEMENTED("Class 'AG2'; a")!>class AG2<!>() : AI, GI
|
||||
|
||||
Reference in New Issue
Block a user