[Analysis API] Hide FIR-specific diagnostic details.

Change the public-facing KtFirDiagnostic to be an interface, not
a class, and change the internal implementations to be classes, not
interfaces. This allows hiding access to the KtPsiDiagnostic underlying
the AA diagnostic class.
This commit is contained in:
Justin Paupore
2023-05-16 16:11:51 -07:00
committed by Ilya Kirillov
parent 3eeb867f56
commit dd9e127d2c
7 changed files with 3523 additions and 3519 deletions
@@ -32,17 +32,17 @@ object KtDiagnosticClassImplementationRenderer : AbstractDiagnosticsDataClassRen
withIndent {
printParameters(diagnostic, diagnosticList)
}
print(") : KtFirDiagnostic.${diagnostic.className}(), KtAbstractFirDiagnostic<")
print(") : KtAbstractFirDiagnostic<")
printTypeWithShortNames(diagnostic.original.psiType)
println(">")
println(">(firDiagnostic, token), KtFirDiagnostic.${diagnostic.className}")
}
private fun SmartPrinter.printParameters(diagnostic: HLDiagnostic, diagnosticList: HLDiagnosticList) {
for (parameter in diagnostic.parameters) {
printParameter(parameter, diagnosticList)
}
println("override val firDiagnostic: KtPsiDiagnostic,")
println("override val token: KtLifetimeToken,")
println("firDiagnostic: KtPsiDiagnostic,")
println("token: KtLifetimeToken,")
}
private fun SmartPrinter.printParameter(parameter: HLDiagnosticParameter, diagnosticList: HLDiagnosticList) {
@@ -18,7 +18,7 @@ object KtDiagnosticClassRenderer : AbstractDiagnosticsDataClassRenderer() {
}
private fun SmartPrinter.printDiagnosticClasses(diagnosticList: HLDiagnosticList) {
inBracketsWithIndent("sealed class KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI>") {
inBracketsWithIndent("sealed interface KtFirDiagnostic<PSI : PsiElement> : KtDiagnosticWithPsi<PSI>") {
for (diagnostic in diagnosticList.diagnostics) {
printDiagnosticClass(diagnostic, diagnosticList)
println()
@@ -27,9 +27,9 @@ object KtDiagnosticClassRenderer : AbstractDiagnosticsDataClassRenderer() {
}
private fun SmartPrinter.printDiagnosticClass(diagnostic: HLDiagnostic, diagnosticList: HLDiagnosticList) {
print("abstract class ${diagnostic.className} : KtFirDiagnostic<")
print("interface ${diagnostic.className} : KtFirDiagnostic<")
printTypeWithShortNames(diagnostic.original.psiType)
print(">()")
print(">")
inBracketsWithIndent {
println("override val diagnosticClass get() = ${diagnostic.className}::class")
printDiagnosticParameters(diagnostic, diagnosticList)
@@ -38,7 +38,7 @@ object KtDiagnosticClassRenderer : AbstractDiagnosticsDataClassRenderer() {
private fun SmartPrinter.printDiagnosticParameters(diagnostic: HLDiagnostic, diagnosticList: HLDiagnosticList) {
diagnostic.parameters.forEach { parameter ->
print("abstract val ${parameter.name}: ")
print("val ${parameter.name}: ")
printTypeWithShortNames(parameter.type) { type ->
diagnosticList.containsClashingBySimpleNameType(type)
}