[FIR] Introduce FirDiagnostic in FIR instead of errorReason

This commit is contained in:
Dmitriy Novozhilov
2019-10-30 17:45:03 +03:00
parent 8eabe08e7a
commit 8b5f568a15
46 changed files with 296 additions and 152 deletions
@@ -12,6 +12,7 @@ import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirFunction
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.diagnostics.FirSimpleDiagnostic
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirArrayOfCall
import org.jetbrains.kotlin.fir.expressions.FirExpression
@@ -260,7 +261,7 @@ private fun JavaAnnotationArgument.toFirExpression(
null
}
this.calleeReference = calleeReference
?: FirErrorNamedReferenceImpl(null, "Strange Java enum value: $classId.$entryName")
?: FirErrorNamedReferenceImpl(null, FirSimpleDiagnostic("Strange Java enum value: $classId.$entryName"))
}
}
is JavaClassObjectAnnotationArgument -> FirGetClassCallImpl(null).apply {
@@ -270,7 +271,7 @@ private fun JavaAnnotationArgument.toFirExpression(
)
}
is JavaAnnotationAsAnnotationArgument -> getAnnotation().toFirAnnotationCall(session, javaTypeParameterStack)
else -> FirErrorExpressionImpl(null, "Unknown JavaAnnotationArgument: ${this::class.java}")
else -> FirErrorExpressionImpl(null, FirSimpleDiagnostic("Unknown JavaAnnotationArgument: ${this::class.java}"))
}
}
@@ -304,7 +305,7 @@ internal fun Any?.createConstant(session: FirSession): FirExpression {
is BooleanArray -> toList().createArrayOfCall(session, IrConstKind.Boolean)
null -> FirConstExpressionImpl(null, IrConstKind.Null, null)
else -> FirErrorExpressionImpl(null, "Unknown value in JavaLiteralAnnotationArgument: $this")
else -> FirErrorExpressionImpl(null, FirSimpleDiagnostic("Unknown value in JavaLiteralAnnotationArgument: $this"))
}
}
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirSimpleFunctionImpl
import org.jetbrains.kotlin.fir.declarations.impl.FirPropertyImpl
import org.jetbrains.kotlin.fir.deserialization.FirDeserializationContext
import org.jetbrains.kotlin.fir.deserialization.deserializeClassToSymbol
import org.jetbrains.kotlin.fir.diagnostics.FirSimpleDiagnostic
import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall
import org.jetbrains.kotlin.fir.expressions.FirClassReferenceExpression
import org.jetbrains.kotlin.fir.expressions.FirExpression
@@ -174,7 +175,7 @@ class KotlinDeserializedJvmSymbolsProvider(
FirResolvedTypeRefImpl(
null, it.constructType(emptyList(), isNullable = false)
)
} ?: FirErrorTypeRefImpl(null, "Symbol not found for $classId")
} ?: FirErrorTypeRefImpl(null, FirSimpleDiagnostic("Symbol not found for $classId"))
}
@@ -226,7 +227,7 @@ class KotlinDeserializedJvmSymbolsProvider(
else -> {
FirErrorNamedReferenceImpl(
null,
errorReason = "Strange deserialized enum value: ${this@toEnumEntryReferenceExpression}.$name"
FirSimpleDiagnostic("Strange deserialized enum value: ${this@toEnumEntryReferenceExpression}.$name")
)
}
}