Update annotation rendering in diagnostics
Disable annotation rendering in default type and descriptor renderers. Preserve annotations in Android and Serialization plugins. Update error texts in ide tests. Nullability annotations in Java descriptors are rendered with context-dependent renderer. #KT-20258 Fixed
This commit is contained in:
@@ -19,7 +19,6 @@ package org.jetbrains.kotlin.frontend.java.di
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import org.jetbrains.kotlin.builtins.jvm.JvmBuiltIns
|
||||
import org.jetbrains.kotlin.builtins.jvm.JvmBuiltInsPackageFragmentProvider
|
||||
import org.jetbrains.kotlin.config.AnalysisFlags
|
||||
import org.jetbrains.kotlin.config.JvmAnalysisFlags
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
@@ -44,6 +43,7 @@ import org.jetbrains.kotlin.load.kotlin.VirtualFileFinderFactory
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.resolve.*
|
||||
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver
|
||||
import org.jetbrains.kotlin.resolve.jvm.JvmDiagnosticComponents
|
||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
|
||||
import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer
|
||||
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory
|
||||
@@ -128,6 +128,7 @@ fun StorageComponentContainer.configureJavaSpecificComponents(
|
||||
)
|
||||
|
||||
useImpl<FilesByFacadeFqNameIndexer>()
|
||||
useImpl<JvmDiagnosticComponents>()
|
||||
}
|
||||
|
||||
fun ComponentProvider.initJvmBuiltInsForTopDownAnalysis() {
|
||||
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.resolve.jvm
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||
import org.jetbrains.kotlin.load.java.AnnotationTypeQualifierResolver
|
||||
import org.jetbrains.kotlin.load.java.NULLABILITY_ANNOTATIONS
|
||||
import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor
|
||||
import org.jetbrains.kotlin.platform.PlatformSpecificDiagnosticComponents
|
||||
|
||||
class JvmDiagnosticComponents(
|
||||
private val typeQualifierResolver: AnnotationTypeQualifierResolver
|
||||
) : PlatformSpecificDiagnosticComponents {
|
||||
override fun isNullabilityAnnotation(
|
||||
annotationDescriptor: AnnotationDescriptor,
|
||||
containingDeclaration: DeclarationDescriptor
|
||||
): Boolean {
|
||||
if (containingDeclaration !is JavaCallableMemberDescriptor) {
|
||||
return false
|
||||
}
|
||||
return annotationDescriptor.fqName?.let { it in NULLABILITY_ANNOTATIONS } == true
|
||||
|| typeQualifierResolver.resolveTypeQualifierAnnotation(annotationDescriptor) != null
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user