diff options
author | Alex Saveau <asaveau@google.com> | 2020-06-30 04:13:26 +0000 |
---|---|---|
committer | Alex Saveau <asaveau@google.com> | 2020-06-30 18:44:36 +0000 |
commit | 92fcde47f4eaf8e9dfe26104ade0d9aeebe4461a (patch) | |
tree | a393daccb9485c393d2f0e33d54a575c390dfc92 /core | |
parent | 006b26ddd484d227d24cac4e724d6999b054f802 (diff) | |
download | dokka-92fcde47f4eaf8e9dfe26104ade0d9aeebe4461a.tar.gz |
Fix NPE loading JavadocManager in JavadocParser#resolveExternalLink
In `resolveExternalLink`, `getReference` is called on a psi element. When the implementation was a `PsiDocTagValueImpl`, the call would NPE after retrieving a null instance of the JavadocManager and trying to use it. This CL registers the JavadocManager and associated dependencies into the parsing environment.
Test: couldn't repo in this project, but the NPE is gone in framework/support when running ./gradlew generateDocs.
Change-Id: I8111091552f2f890d9643fa02c9f2346d41a6177
Diffstat (limited to 'core')
-rw-r--r-- | core/src/main/kotlin/Analysis/AnalysisEnvironment.kt | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/core/src/main/kotlin/Analysis/AnalysisEnvironment.kt b/core/src/main/kotlin/Analysis/AnalysisEnvironment.kt index 7003024c8..9fea67407 100644 --- a/core/src/main/kotlin/Analysis/AnalysisEnvironment.kt +++ b/core/src/main/kotlin/Analysis/AnalysisEnvironment.kt @@ -15,8 +15,11 @@ import com.intellij.openapi.roots.ProjectRootManager import com.intellij.openapi.util.Disposer import com.intellij.openapi.vfs.StandardFileSystems import com.intellij.psi.PsiElement +import com.intellij.psi.impl.source.javadoc.JavadocManagerImpl +import com.intellij.psi.javadoc.CustomJavadocTagProvider +import com.intellij.psi.javadoc.JavadocManager +import com.intellij.psi.javadoc.JavadocTagInfo import com.intellij.psi.search.GlobalSearchScope -import com.intellij.util.io.URLUtil import org.jetbrains.kotlin.analyzer.* import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.jvm.JvmBuiltIns @@ -96,10 +99,19 @@ class AnalysisEnvironment(val messageCollector: MessageCollector) : Disposable { CoreApplicationEnvironment.registerExtensionPoint(Extensions.getRootArea(), OrderEnumerationHandler.EP_NAME, OrderEnumerationHandler.Factory::class.java) + CoreApplicationEnvironment.registerExtensionPoint(Extensions.getArea(environment.project), + JavadocTagInfo.EP_NAME, JavadocTagInfo::class.java) + CoreApplicationEnvironment.registerExtensionPoint(Extensions.getRootArea(), + CustomJavadocTagProvider.EP_NAME, CustomJavadocTagProvider::class.java) + projectComponentManager.registerService(ProjectFileIndex::class.java, projectFileIndex) projectComponentManager.registerService(ProjectRootManager::class.java, CoreProjectRootManager(projectFileIndex)) + projectComponentManager.registerService(JavadocManager::class.java, + JavadocManagerImpl(environment.project)) + projectComponentManager.registerService(CustomJavadocTagProvider::class.java, + CustomJavadocTagProvider { emptyList() }) return environment } |