Snap for 5280121 from 509e6a75f2aefe9629c7366d8180f7c555ebec8f to qt-release
Change-Id: Ie540e36dee9f80472fae0911638d13ab0582f607
diff --git a/src/main/java/com/android/tools/metalava/Constants.kt b/src/main/java/com/android/tools/metalava/Constants.kt
index 88cd3a7..59ffda5 100644
--- a/src/main/java/com/android/tools/metalava/Constants.kt
+++ b/src/main/java/com/android/tools/metalava/Constants.kt
@@ -32,6 +32,8 @@
const val ANDROID_REQUIRES_PERMISSION = "android.annotation.RequiresPermission"
const val RECENTLY_NULLABLE = "androidx.annotation.RecentlyNullable"
const val RECENTLY_NONNULL = "androidx.annotation.RecentlyNonNull"
+const val ANDROID_NULLABLE = "android.annotation.Nullable"
+const val ANDROID_NONNULL = "android.annotation.NonNull"
const val ANDROIDX_VISIBLE_FOR_TESTING = "androidx.annotation.VisibleForTesting"
const val ANDROID_SUPPORT_VISIBLE_FOR_TESTING = "android.support.annotation.VisibleForTesting"
const val ATTR_OTHERWISE = "otherwise"
diff --git a/src/main/java/com/android/tools/metalava/Driver.kt b/src/main/java/com/android/tools/metalava/Driver.kt
index 2a440bd..c455923 100644
--- a/src/main/java/com/android/tools/metalava/Driver.kt
+++ b/src/main/java/com/android/tools/metalava/Driver.kt
@@ -48,9 +48,13 @@
import com.google.common.base.Stopwatch
import com.google.common.collect.Lists
import com.google.common.io.Files
+import com.intellij.core.CoreApplicationEnvironment
import com.intellij.openapi.diagnostic.DefaultLogger
+import com.intellij.openapi.extensions.Extensions
import com.intellij.openapi.roots.LanguageLevelProjectExtension
import com.intellij.openapi.util.Disposer
+import com.intellij.psi.javadoc.CustomJavadocTagProvider
+import com.intellij.psi.javadoc.JavadocTagInfo
import com.intellij.util.execution.ParametersListUtil
import java.io.File
import java.io.IOException
@@ -909,7 +913,20 @@
DefaultLogger.disableStderrDumping(parentDisposable)
}
- return LintCoreProjectEnvironment.create(parentDisposable, appEnv)
+ val environment = LintCoreProjectEnvironment.create(parentDisposable, appEnv)
+
+ // Missing service needed in metalava but not in lint: javadoc handling
+ environment.project.registerService(
+ com.intellij.psi.javadoc.JavadocManager::class.java,
+ com.intellij.psi.impl.source.javadoc.JavadocManagerImpl::class.java
+ )
+ environment.registerProjectExtensionPoint(JavadocTagInfo.EP_NAME,
+ com.intellij.psi.javadoc.JavadocTagInfo::class.java)
+ CoreApplicationEnvironment.registerExtensionPoint(
+ Extensions.getRootArea(), CustomJavadocTagProvider.EP_NAME, CustomJavadocTagProvider::class.java
+ )
+
+ return environment
}
private fun ensurePsiFileCapacity() {
diff --git a/src/main/java/com/android/tools/metalava/RewriteAnnotations.kt b/src/main/java/com/android/tools/metalava/RewriteAnnotations.kt
index fb56a10..d256e10 100644
--- a/src/main/java/com/android/tools/metalava/RewriteAnnotations.kt
+++ b/src/main/java/com/android/tools/metalava/RewriteAnnotations.kt
@@ -123,10 +123,10 @@
*/
private fun hasSourceRetention(codebase: Codebase?, qualifiedName: String): Boolean {
when {
- qualifiedName == "androidx.annotation.RecentlyNullable" ||
- qualifiedName == "androidx.annotation.RecentlyNonNull" ||
- qualifiedName == "android.annotation.Nullable" ||
- qualifiedName == "android.annotation.NonNull" -> return false
+ qualifiedName == RECENTLY_NULLABLE ||
+ qualifiedName == RECENTLY_NONNULL ||
+ qualifiedName == ANDROID_NULLABLE ||
+ qualifiedName == ANDROID_NONNULL -> return false
qualifiedName.startsWith("androidx.annotation.") -> return true
}
diff --git a/src/main/java/com/android/tools/metalava/model/AnnotationItem.kt b/src/main/java/com/android/tools/metalava/model/AnnotationItem.kt
index a7c04ed..ae61fdd 100644
--- a/src/main/java/com/android/tools/metalava/model/AnnotationItem.kt
+++ b/src/main/java/com/android/tools/metalava/model/AnnotationItem.kt
@@ -27,6 +27,8 @@
import com.android.tools.metalava.ANDROIDX_ANNOTATION_PREFIX
import com.android.tools.metalava.ANDROIDX_NONNULL
import com.android.tools.metalava.ANDROIDX_NULLABLE
+import com.android.tools.metalava.ANDROID_NONNULL
+import com.android.tools.metalava.ANDROID_NULLABLE
import com.android.tools.metalava.ANDROID_SUPPORT_ANNOTATION_PREFIX
import com.android.tools.metalava.Compatibility
import com.android.tools.metalava.JAVA_LANG_PREFIX
@@ -238,17 +240,18 @@
// We only change recently/newly nullable annotation in stubs
RECENTLY_NULLABLE -> return if (target == AnnotationTarget.SDK_STUBS_FILE) qualifiedName else ANDROIDX_NULLABLE
RECENTLY_NONNULL -> return if (target == AnnotationTarget.SDK_STUBS_FILE) qualifiedName else ANDROIDX_NONNULL
- "android.annotation.Nullable" -> return if (target == AnnotationTarget.SDK_STUBS_FILE) qualifiedName else ANDROIDX_NULLABLE
- "android.annotation.NonNull" -> return if (target == AnnotationTarget.SDK_STUBS_FILE) qualifiedName else ANDROIDX_NONNULL
- ANDROIDX_NULLABLE -> return if (target == AnnotationTarget.SDK_STUBS_FILE) "android.annotation.Nullable" else ANDROIDX_NULLABLE
- ANDROIDX_NONNULL -> return if (target == AnnotationTarget.SDK_STUBS_FILE) "android.annotation.NonNull" else ANDROIDX_NONNULL
- "android.support.annotation.NonNull" -> return ANDROIDX_NONNULL
- "android.support.annotation.Nullable" -> return ANDROIDX_NULLABLE
- "libcore.util.NonNull" -> return ANDROIDX_NONNULL
- "libcore.util.Nullable" -> return ANDROIDX_NULLABLE
- "org.jetbrains.annotations.NotNull" -> return ANDROIDX_NONNULL
- "org.jetbrains.annotations.Nullable" -> return ANDROIDX_NULLABLE
+ ANDROIDX_NULLABLE,
+ ANDROID_NULLABLE,
+ "android.support.annotation.Nullable",
+ "libcore.util.Nullable",
+ "org.jetbrains.annotations.Nullable" -> return if (target == AnnotationTarget.SDK_STUBS_FILE) ANDROID_NULLABLE else ANDROIDX_NULLABLE
+
+ ANDROIDX_NONNULL,
+ ANDROID_NONNULL,
+ "android.support.annotation.NonNull",
+ "libcore.util.NonNull",
+ "org.jetbrains.annotations.NotNull" -> return if (target == AnnotationTarget.SDK_STUBS_FILE) ANDROID_NONNULL else ANDROIDX_NONNULL
// Typedefs
"android.support.annotation.IntDef",
@@ -408,8 +411,8 @@
// @android.annotation.Nullable and NonNullable specially recognized annotations by the Kotlin
// compiler 1.3 and above: they always go in the stubs.
- if (qualifiedName == "android.annotation.Nullable" ||
- qualifiedName == "android.annotation.NonNull" ||
+ if (qualifiedName == ANDROID_NULLABLE ||
+ qualifiedName == ANDROID_NONNULL ||
qualifiedName == ANDROIDX_NULLABLE ||
qualifiedName == ANDROIDX_NONNULL
) {
@@ -424,8 +427,8 @@
// @RecentlyNullable and @RecentlyNonNull are specially recognized annotations by the Kotlin
// compiler: they always go in the stubs.
- if (qualifiedName == "androidx.annotation.RecentlyNullable" ||
- qualifiedName == "androidx.annotation.RecentlyNonNull"
+ if (qualifiedName == RECENTLY_NULLABLE ||
+ qualifiedName == RECENTLY_NONNULL
) {
return ANNOTATION_IN_ALL_STUBS
}
diff --git a/src/test/java/com/android/tools/metalava/DocAnalyzerTest.kt b/src/test/java/com/android/tools/metalava/DocAnalyzerTest.kt
index ea5b13f..d309a11 100644
--- a/src/test/java/com/android/tools/metalava/DocAnalyzerTest.kt
+++ b/src/test/java/com/android/tools/metalava/DocAnalyzerTest.kt
@@ -1333,7 +1333,7 @@
* @deprecated Blah blah blah 1
*/
@Deprecated
- @androidx.annotation.NonNull
+ @android.annotation.NonNull
public java.lang.String toString() { throw new RuntimeException("Stub!"); }
/**
* My description
diff --git a/src/test/java/com/android/tools/metalava/StubsTest.kt b/src/test/java/com/android/tools/metalava/StubsTest.kt
index fca7dea..da65e5c 100644
--- a/src/test/java/com/android/tools/metalava/StubsTest.kt
+++ b/src/test/java/com/android/tools/metalava/StubsTest.kt
@@ -1352,17 +1352,17 @@
/** My class doc */
@SuppressWarnings({"unchecked", "deprecation", "all"})
public final class Kotlin extends test.pkg.Parent {
- public Kotlin(@androidx.annotation.NonNull java.lang.String property1, int arg2) { throw new RuntimeException("Stub!"); }
- @androidx.annotation.NonNull
+ public Kotlin(@android.annotation.NonNull java.lang.String property1, int arg2) { throw new RuntimeException("Stub!"); }
+ @android.annotation.NonNull
public java.lang.String method() { throw new RuntimeException("Stub!"); }
/** My method doc */
public void otherMethod(boolean ok, int times) { throw new RuntimeException("Stub!"); }
/** property doc */
- @androidx.annotation.Nullable
+ @android.annotation.Nullable
public java.lang.String getProperty2() { throw new RuntimeException("Stub!"); }
/** property doc */
- public void setProperty2(@androidx.annotation.Nullable java.lang.String p) { throw new RuntimeException("Stub!"); }
- @androidx.annotation.NonNull
+ public void setProperty2(@android.annotation.Nullable java.lang.String p) { throw new RuntimeException("Stub!"); }
+ @android.annotation.NonNull
public java.lang.String getProperty1() { throw new RuntimeException("Stub!"); }
public int someField2;
}