Kapt: Replace error.NonExistentClass usages to Object (as it does not break class hierarchies)

This commit is contained in:
Yan Zhulanow
2017-11-20 23:03:52 +09:00
parent e46fe9b255
commit c7645bcf03
2 changed files with 21 additions and 6 deletions
@@ -80,6 +80,8 @@ class ClassFileToSourceStubConverter(
"kotlin.jvm." // Kotlin annotations from runtime
)
private val NON_EXISTENT_CLASS_NAME = FqName("error.NonExistentClass")
private val JAVA_KEYWORD_FILTER_REGEX = "[a-z]+".toRegex()
private val JAVA_KEYWORDS = Tokens.TokenKind.values()
@@ -121,13 +123,13 @@ class ClassFileToSourceStubConverter(
private fun generateNonExistentClass(): JCCompilationUnit {
val nonExistentClass = treeMaker.ClassDef(
treeMaker.Modifiers((Flags.PUBLIC or Flags.FINAL).toLong()),
treeMaker.name("NonExistentClass"),
treeMaker.name(NON_EXISTENT_CLASS_NAME.shortName().asString()),
JavacList.nil(),
null,
JavacList.nil(),
JavacList.nil())
val topLevel = treeMaker.TopLevelJava9Aware(treeMaker.SimpleName("error"), JavacList.of(nonExistentClass))
val topLevel = treeMaker.TopLevelJava9Aware(treeMaker.FqName(NON_EXISTENT_CLASS_NAME.parent()), JavacList.of(nonExistentClass))
topLevel.sourcefile = KaptJavaFileObject(topLevel, nonExistentClass)
@@ -641,7 +643,20 @@ class ClassFileToSourceStubConverter(
}
}
return ifNonError()
val nonErrorType = ifNonError()
if (nonErrorType is JCFieldAccess) {
val qualifier = nonErrorType.selected
if (nonErrorType.name.toString() == NON_EXISTENT_CLASS_NAME.shortName().asString()
&& qualifier is JCIdent
&& qualifier.name.toString() == NON_EXISTENT_CLASS_NAME.parent().asString()
) {
@Suppress("UNCHECKED_CAST")
return treeMaker.FqName("java.lang.Object") as T
}
}
return nonErrorType
}
private fun isValidQualifiedName(name: FqName) = name.pathSegments().all { isValidIdentifier(it.asString()) }
@@ -94,7 +94,7 @@ public final class Test<G extends java.lang.Object> {
@org.jetbrains.annotations.NotNull()
public ABC nested;
@org.jetbrains.annotations.NotNull()
private final error.NonExistentClass m = null;
private final java.lang.Object m = null;
@org.jetbrains.annotations.NotNull()
private final java.lang.String n = "";
@org.jetbrains.annotations.NotNull()
@@ -289,7 +289,7 @@ public final class Test<G extends java.lang.Object> {
@org.jetbrains.annotations.NotNull()
@kapt.internal.KaptSignature("getM()Lerror/NonExistentClass;")
public final error.NonExistentClass getM() {
public final java.lang.Object getM() {
return null;
}
@@ -352,7 +352,7 @@ public final class Test<G extends java.lang.Object> {
@org.jetbrains.annotations.NotNull()
@kapt.internal.KaptSignature("f4()Lerror/NonExistentClass;")
public final error.NonExistentClass f4() {
public final java.lang.Object f4() {
return null;
}