diff --git a/compiler/frontend.common-psi/src/org/jetbrains/kotlin/diagnostics/DiagnosticMarker.kt b/compiler/frontend.common-psi/src/org/jetbrains/kotlin/diagnostics/DiagnosticMarker.kt
new file mode 100644
index 00000000000..b8b50252b9c
--- /dev/null
+++ b/compiler/frontend.common-psi/src/org/jetbrains/kotlin/diagnostics/DiagnosticMarker.kt
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
+ */
+
+package org.jetbrains.kotlin.diagnostics
+
+import com.intellij.psi.PsiElement
+
+interface DiagnosticMarker {
+ val psiElement: PsiElement
+ val factoryName: String
+}
+
+interface DiagnosticWithParameters1Marker : DiagnosticMarker {
+ val a: A
+}
+
+interface DiagnosticWithParameters2Marker : DiagnosticMarker {
+ val a: A
+ val b: B
+}
+
+interface DiagnosticWithParameters3Marker : DiagnosticMarker {
+ val a: A
+ val b: B
+ val c: C
+}
+
+interface DiagnosticWithParameters4Marker : DiagnosticMarker {
+ val a: A
+ val b: B
+ val c: C
+ val d: D
+}
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Diagnostic.kt b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Diagnostic.kt
index 59de0365151..fc7981a22c6 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Diagnostic.kt
+++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Diagnostic.kt
@@ -18,7 +18,10 @@ package org.jetbrains.kotlin.diagnostics
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiFile
-interface Diagnostic : UnboundDiagnostic {
- val psiElement: PsiElement
+interface Diagnostic : UnboundDiagnostic, DiagnosticMarker {
+ override val psiElement: PsiElement
val psiFile: PsiFile
-}
\ No newline at end of file
+
+ override val factoryName: String
+ get() = factory.name
+}
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/DiagnosticWithParameters1.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/DiagnosticWithParameters1.java
index 2bdea063b8f..f578ec5674f 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/DiagnosticWithParameters1.java
+++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/DiagnosticWithParameters1.java
@@ -21,7 +21,7 @@ import org.jetbrains.annotations.NotNull;
import java.util.Objects;
-public class DiagnosticWithParameters1 extends AbstractDiagnostic {
+public class DiagnosticWithParameters1 extends AbstractDiagnostic implements DiagnosticWithParameters1Marker {
private final A a;
public DiagnosticWithParameters1(
@@ -42,6 +42,7 @@ public class DiagnosticWithParameters1 extends Abstract
}
@NotNull
+ @Override
public A getA() {
return a;
}
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/DiagnosticWithParameters2.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/DiagnosticWithParameters2.java
index bb4c4713e5f..166a25a8e27 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/DiagnosticWithParameters2.java
+++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/DiagnosticWithParameters2.java
@@ -21,7 +21,7 @@ import org.jetbrains.annotations.NotNull;
import java.util.Objects;
-public class DiagnosticWithParameters2 extends AbstractDiagnostic {
+public class DiagnosticWithParameters2 extends AbstractDiagnostic implements DiagnosticWithParameters2Marker{
private final A a;
private final B b;
@@ -45,11 +45,13 @@ public class DiagnosticWithParameters2 extends Abstr
}
@NotNull
+ @Override
public A getA() {
return a;
}
@NotNull
+ @Override
public B getB() {
return b;
}
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/DiagnosticWithParameters3.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/DiagnosticWithParameters3.java
index 021da0e06bf..f2f180118bb 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/DiagnosticWithParameters3.java
+++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/DiagnosticWithParameters3.java
@@ -21,7 +21,7 @@ import org.jetbrains.annotations.NotNull;
import java.util.Objects;
-public class DiagnosticWithParameters3 extends AbstractDiagnostic {
+public class DiagnosticWithParameters3 extends AbstractDiagnostic implements DiagnosticWithParameters3Marker {
private final A a;
private final B b;
private final C c;
@@ -48,16 +48,19 @@ public class DiagnosticWithParameters3 extends Ab
}
@NotNull
- public A getA() {
- return a;
- }
-
- @NotNull
+ @Override
public B getB() {
return b;
}
@NotNull
+ @Override
+ public A getA() {
+ return a;
+ }
+
+ @NotNull
+ @Override
public C getC() {
return c;
}
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/DiagnosticWithParameters4.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/DiagnosticWithParameters4.java
index 94e12775690..4a6e6009fa1 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/DiagnosticWithParameters4.java
+++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/DiagnosticWithParameters4.java
@@ -21,7 +21,7 @@ import org.jetbrains.annotations.NotNull;
import java.util.Objects;
-public class DiagnosticWithParameters4 extends AbstractDiagnostic {
+public class DiagnosticWithParameters4 extends AbstractDiagnostic implements DiagnosticWithParameters4Marker {
private final A a;
private final B b;
private final C c;
@@ -51,21 +51,25 @@ public class DiagnosticWithParameters4 extends
}
@NotNull
+ @Override
public A getA() {
return a;
}
@NotNull
+ @Override
public B getB() {
return b;
}
@NotNull
+ @Override
public C getC() {
return c;
}
@NotNull
+ @Override
public D getD() {
return d;
}
diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/ParametrizedDiagnostic.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/ParametrizedDiagnostic.java
index f07148e955c..c13f9c12593 100644
--- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/ParametrizedDiagnostic.java
+++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/ParametrizedDiagnostic.java
@@ -23,4 +23,10 @@ public interface ParametrizedDiagnostic extends Diagnostic
@NotNull
@Override
E getPsiElement();
+
+ @NotNull
+ @Override
+ default String getFactoryName() {
+ return getFactory().getName();
+ }
}