Add FIR enhancement tests, fix some exceptions / problems around them

Test data and tests themselves are based on
compiler/testData/loadJava/compiledJava
This commit is contained in:
Mikhail Glukhikh
2019-03-04 14:09:48 +03:00
parent f31faafd72
commit 4255c9f774
274 changed files with 2636 additions and 43 deletions
@@ -207,7 +207,7 @@ private fun JavaAnnotationArgument.toFirExpression(session: FirSession): FirExpr
null
}
this.calleeReference = calleeReference
?: FirErrorNamedReference(session, null, "Strange Java enum value: ${this@toFirExpression}")
?: FirErrorNamedReference(session, null, "Strange Java enum value: $classId.$entryName")
}
}
is JavaClassObjectAnnotationArgument -> FirGetClassCallImpl(session, null).apply {
@@ -53,9 +53,12 @@ internal class EnhancementSignatureParts(
}
val containsFunctionN = current.toNotNullConeKotlinType().contains {
val classId = it.lookupTag.classId
classId.shortClassName == JavaToKotlinClassMap.FUNCTION_N_FQ_NAME.shortName() &&
classId.asSingleFqName() == JavaToKotlinClassMap.FUNCTION_N_FQ_NAME
if (it is ConeClassErrorType) false
else {
val classId = it.lookupTag.classId
classId.shortClassName == JavaToKotlinClassMap.FUNCTION_N_FQ_NAME.shortName() &&
classId.asSingleFqName() == JavaToKotlinClassMap.FUNCTION_N_FQ_NAME
}
}
val enhancedCurrent = current.enhance(qualifiersWithPredefined ?: qualifiers)
@@ -10,8 +10,6 @@ import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
import org.jetbrains.kotlin.load.java.*
import org.jetbrains.kotlin.load.java.lazy.NullabilityQualifierWithApplicability
import org.jetbrains.kotlin.utils.Jsr305State
@@ -50,10 +48,7 @@ class FirAnnotationTypeQualifierResolver(private val jsr305State: Jsr305State) {
}
private val FirAnnotationCall.resolvedClass: FirRegularClass?
get() {
val lookupTag = ((annotationTypeRef as? FirResolvedTypeRef)?.type as? ConeClassLikeType)?.lookupTag
return (lookupTag?.toSymbol(session) as? FirClassSymbol)?.fir
}
get() = (coneClassLikeType?.lookupTag?.toSymbol(session) as? FirClassSymbol)?.fir
fun resolveTypeQualifierAnnotation(annotationCall: FirAnnotationCall): FirAnnotationCall? {
if (jsr305State.disabled) {