AnnotationChecker -> DeclarationChecker
This commit is contained in:
+5
-5
@@ -17,7 +17,7 @@
|
|||||||
package org.jetbrains.kotlin.load.kotlin
|
package org.jetbrains.kotlin.load.kotlin
|
||||||
|
|
||||||
import org.jetbrains.kotlin.resolve.AdditionalCheckerProvider
|
import org.jetbrains.kotlin.resolve.AdditionalCheckerProvider
|
||||||
import org.jetbrains.kotlin.resolve.AnnotationChecker
|
import org.jetbrains.kotlin.resolve.DeclarationChecker
|
||||||
import org.jetbrains.kotlin.resolve.annotations.hasPlatformStaticAnnotation
|
import org.jetbrains.kotlin.resolve.annotations.hasPlatformStaticAnnotation
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
@@ -59,12 +59,12 @@ import org.jetbrains.kotlin.resolve.BindingContext
|
|||||||
import org.jetbrains.kotlin.types.expressions.SenselessComparisonChecker
|
import org.jetbrains.kotlin.types.expressions.SenselessComparisonChecker
|
||||||
|
|
||||||
public object KotlinJvmCheckerProvider : AdditionalCheckerProvider(
|
public object KotlinJvmCheckerProvider : AdditionalCheckerProvider(
|
||||||
additionalAnnotationCheckers = listOf(PlatformStaticAnnotationChecker(), LocalFunInlineChecker(), ReifiedTypeParameterAnnotationChecker(), NativeFunChecker()),
|
additionalDeclarationCheckers = listOf(PlatformStaticAnnotationChecker(), LocalFunInlineChecker(), ReifiedTypeParameterAnnotationChecker(), NativeFunChecker()),
|
||||||
additionalCallCheckers = listOf(NeedSyntheticChecker()),
|
additionalCallCheckers = listOf(NeedSyntheticChecker()),
|
||||||
additionalTypeCheckers = listOf(JavaNullabilityWarningsChecker())
|
additionalTypeCheckers = listOf(JavaNullabilityWarningsChecker())
|
||||||
)
|
)
|
||||||
|
|
||||||
public class LocalFunInlineChecker : AnnotationChecker {
|
public class LocalFunInlineChecker : DeclarationChecker {
|
||||||
|
|
||||||
override fun check(declaration: JetDeclaration, descriptor: DeclarationDescriptor, diagnosticHolder: DiagnosticSink) {
|
override fun check(declaration: JetDeclaration, descriptor: DeclarationDescriptor, diagnosticHolder: DiagnosticSink) {
|
||||||
if (descriptor.hasInlineAnnotation() &&
|
if (descriptor.hasInlineAnnotation() &&
|
||||||
@@ -76,7 +76,7 @@ public class LocalFunInlineChecker : AnnotationChecker {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class PlatformStaticAnnotationChecker : AnnotationChecker {
|
public class PlatformStaticAnnotationChecker : DeclarationChecker {
|
||||||
|
|
||||||
override fun check(declaration: JetDeclaration, descriptor: DeclarationDescriptor, diagnosticHolder: DiagnosticSink) {
|
override fun check(declaration: JetDeclaration, descriptor: DeclarationDescriptor, diagnosticHolder: DiagnosticSink) {
|
||||||
if (descriptor.hasPlatformStaticAnnotation()) {
|
if (descriptor.hasPlatformStaticAnnotation()) {
|
||||||
@@ -116,7 +116,7 @@ public class PlatformStaticAnnotationChecker : AnnotationChecker {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ReifiedTypeParameterAnnotationChecker : AnnotationChecker {
|
public class ReifiedTypeParameterAnnotationChecker : DeclarationChecker {
|
||||||
|
|
||||||
override fun check(declaration: JetDeclaration, descriptor: DeclarationDescriptor, diagnosticHolder: DiagnosticSink) {
|
override fun check(declaration: JetDeclaration, descriptor: DeclarationDescriptor, diagnosticHolder: DiagnosticSink) {
|
||||||
if (descriptor.hasIntrinsicAnnotation()) return
|
if (descriptor.hasIntrinsicAnnotation()) return
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
package org.jetbrains.kotlin.load.kotlin.nativeDeclarations
|
package org.jetbrains.kotlin.load.kotlin.nativeDeclarations
|
||||||
|
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
import org.jetbrains.kotlin.resolve.AnnotationChecker
|
import org.jetbrains.kotlin.resolve.DeclarationChecker
|
||||||
import org.jetbrains.kotlin.psi.JetDeclaration
|
import org.jetbrains.kotlin.psi.JetDeclaration
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
|
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
|
||||||
@@ -38,7 +38,7 @@ public fun DeclarationDescriptor.hasNativeAnnotation(): Boolean {
|
|||||||
|
|
||||||
public class SuppressNoBodyErrorsForNativeDeclarations : SuppressDiagnosticsByAnnotations(FUNCTION_NO_BODY_ERRORS, NATIVE_ANNOTATION_CLASS_NAME)
|
public class SuppressNoBodyErrorsForNativeDeclarations : SuppressDiagnosticsByAnnotations(FUNCTION_NO_BODY_ERRORS, NATIVE_ANNOTATION_CLASS_NAME)
|
||||||
|
|
||||||
public class NativeFunChecker : AnnotationChecker {
|
public class NativeFunChecker : DeclarationChecker {
|
||||||
override fun check(declaration: JetDeclaration, descriptor: DeclarationDescriptor, diagnosticHolder: DiagnosticSink) {
|
override fun check(declaration: JetDeclaration, descriptor: DeclarationDescriptor, diagnosticHolder: DiagnosticSink) {
|
||||||
if (!descriptor.hasNativeAnnotation()) return
|
if (!descriptor.hasNativeAnnotation()) return
|
||||||
|
|
||||||
|
|||||||
@@ -18,17 +18,17 @@ package org.jetbrains.kotlin.resolve
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.resolve.calls.checkers.*
|
import org.jetbrains.kotlin.resolve.calls.checkers.*
|
||||||
|
|
||||||
private val DEFAULT_ANNOTATION_CHECKERS = listOf(DataClassAnnotationChecker())
|
private val DEFAULT_DECLARATION_CHECKERS = listOf(DataClassAnnotationChecker())
|
||||||
private val DEFAULT_CALL_CHECKERS = listOf(CapturingInClosureChecker(), InlineCheckerWrapper(), ReifiedTypeParameterSubstitutionChecker())
|
private val DEFAULT_CALL_CHECKERS = listOf(CapturingInClosureChecker(), InlineCheckerWrapper(), ReifiedTypeParameterSubstitutionChecker())
|
||||||
private val DEFAULT_TYPE_CHECKERS = listOf(TypeApproximator())
|
private val DEFAULT_TYPE_CHECKERS = listOf(TypeApproximator())
|
||||||
|
|
||||||
public abstract class AdditionalCheckerProvider(
|
public abstract class AdditionalCheckerProvider(
|
||||||
additionalAnnotationCheckers: List<AnnotationChecker>,
|
additionalDeclarationCheckers: List<DeclarationChecker>,
|
||||||
additionalCallCheckers: List<CallChecker>,
|
additionalCallCheckers: List<CallChecker>,
|
||||||
additionalTypeCheckers: List<AdditionalTypeChecker>
|
additionalTypeCheckers: List<AdditionalTypeChecker>
|
||||||
) {
|
) {
|
||||||
|
|
||||||
public val annotationCheckers: List<AnnotationChecker> = DEFAULT_ANNOTATION_CHECKERS + additionalAnnotationCheckers
|
public val declarationCheckers: List<DeclarationChecker> = DEFAULT_DECLARATION_CHECKERS + additionalDeclarationCheckers
|
||||||
public val callCheckers: List<CallChecker> = DEFAULT_CALL_CHECKERS + additionalCallCheckers
|
public val callCheckers: List<CallChecker> = DEFAULT_CALL_CHECKERS + additionalCallCheckers
|
||||||
public val additionalTypeCheckers: List<AdditionalTypeChecker> = DEFAULT_TYPE_CHECKERS + additionalTypeCheckers
|
public val additionalTypeCheckers: List<AdditionalTypeChecker> = DEFAULT_TYPE_CHECKERS + additionalTypeCheckers
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.diagnostics.*
|
|||||||
import org.jetbrains.kotlin.builtins.*
|
import org.jetbrains.kotlin.builtins.*
|
||||||
|
|
||||||
|
|
||||||
public class DataClassAnnotationChecker : AnnotationChecker {
|
public class DataClassAnnotationChecker : DeclarationChecker {
|
||||||
override fun check(declaration: JetDeclaration, descriptor: DeclarationDescriptor, diagnosticHolder: DiagnosticSink) {
|
override fun check(declaration: JetDeclaration, descriptor: DeclarationDescriptor, diagnosticHolder: DiagnosticSink) {
|
||||||
if (descriptor !is ClassDescriptor) return
|
if (descriptor !is ClassDescriptor) return
|
||||||
if (declaration !is JetClassOrObject) return
|
if (declaration !is JetClassOrObject) return
|
||||||
|
|||||||
+1
-1
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.psi.JetDeclaration
|
|||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
|
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
|
|
||||||
public trait AnnotationChecker {
|
public trait DeclarationChecker {
|
||||||
|
|
||||||
public fun check(declaration: JetDeclaration, descriptor: DeclarationDescriptor, diagnosticHolder: DiagnosticSink);
|
public fun check(declaration: JetDeclaration, descriptor: DeclarationDescriptor, diagnosticHolder: DiagnosticSink);
|
||||||
|
|
||||||
@@ -148,14 +148,14 @@ public class ModifiersChecker {
|
|||||||
checkVarianceModifiersOfTypeParameters(modifierListOwner);
|
checkVarianceModifiersOfTypeParameters(modifierListOwner);
|
||||||
}
|
}
|
||||||
checkPlatformNameApplicability(descriptor);
|
checkPlatformNameApplicability(descriptor);
|
||||||
runAnnotationCheckers(modifierListOwner, descriptor);
|
runDeclarationCheckers(modifierListOwner, descriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void checkModifiersForLocalDeclaration(@NotNull JetDeclaration modifierListOwner, @NotNull DeclarationDescriptor descriptor) {
|
public void checkModifiersForLocalDeclaration(@NotNull JetDeclaration modifierListOwner, @NotNull DeclarationDescriptor descriptor) {
|
||||||
reportIllegalModalityModifiers(modifierListOwner);
|
reportIllegalModalityModifiers(modifierListOwner);
|
||||||
reportIllegalVisibilityModifiers(modifierListOwner);
|
reportIllegalVisibilityModifiers(modifierListOwner);
|
||||||
checkPlatformNameApplicability(descriptor);
|
checkPlatformNameApplicability(descriptor);
|
||||||
runAnnotationCheckers(modifierListOwner, descriptor);
|
runDeclarationCheckers(modifierListOwner, descriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reportIllegalModalityModifiers(@NotNull JetModifierListOwner modifierListOwner) {
|
public void reportIllegalModalityModifiers(@NotNull JetModifierListOwner modifierListOwner) {
|
||||||
@@ -394,8 +394,8 @@ public class ModifiersChecker {
|
|||||||
return Visibilities.INTERNAL;
|
return Visibilities.INTERNAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void runAnnotationCheckers(@NotNull JetDeclaration declaration, @NotNull DeclarationDescriptor descriptor) {
|
private void runDeclarationCheckers(@NotNull JetDeclaration declaration, @NotNull DeclarationDescriptor descriptor) {
|
||||||
for (AnnotationChecker checker : additionalCheckerProvider.getAnnotationCheckers()) {
|
for (DeclarationChecker checker : additionalCheckerProvider.getDeclarationCheckers()) {
|
||||||
checker.check(declaration, descriptor, trace);
|
checker.check(declaration, descriptor, trace);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
package org.jetbrains.kotlin.js.resolve
|
package org.jetbrains.kotlin.js.resolve
|
||||||
|
|
||||||
import org.jetbrains.kotlin.resolve.AdditionalCheckerProvider
|
import org.jetbrains.kotlin.resolve.AdditionalCheckerProvider
|
||||||
import org.jetbrains.kotlin.resolve.AnnotationChecker
|
import org.jetbrains.kotlin.resolve.DeclarationChecker
|
||||||
import org.jetbrains.kotlin.psi.JetDeclaration
|
import org.jetbrains.kotlin.psi.JetDeclaration
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
|
import org.jetbrains.kotlin.diagnostics.DiagnosticSink
|
||||||
@@ -34,12 +34,12 @@ import org.jetbrains.kotlin.types.typeUtil.isSubtypeOf
|
|||||||
import org.jetbrains.kotlin.js.resolve.diagnostics.JsCallChecker
|
import org.jetbrains.kotlin.js.resolve.diagnostics.JsCallChecker
|
||||||
|
|
||||||
public object KotlinJsCheckerProvider : AdditionalCheckerProvider(
|
public object KotlinJsCheckerProvider : AdditionalCheckerProvider(
|
||||||
additionalAnnotationCheckers = listOf(NativeInvokeChecker(), NativeGetterChecker(), NativeSetterChecker()),
|
additionalDeclarationCheckers = listOf(NativeInvokeChecker(), NativeGetterChecker(), NativeSetterChecker()),
|
||||||
additionalCallCheckers = listOf(JsCallChecker()),
|
additionalCallCheckers = listOf(JsCallChecker()),
|
||||||
additionalTypeCheckers = listOf()
|
additionalTypeCheckers = listOf()
|
||||||
)
|
)
|
||||||
|
|
||||||
private abstract class AbstractNativeAnnotationsChecker(private val requiredAnnotation: PredefinedAnnotation) : AnnotationChecker {
|
private abstract class AbstractNativeAnnotationsChecker(private val requiredAnnotation: PredefinedAnnotation) : DeclarationChecker {
|
||||||
|
|
||||||
open fun additionalCheck(declaration: JetNamedFunction, descriptor: FunctionDescriptor, diagnosticHolder: DiagnosticSink) {}
|
open fun additionalCheck(declaration: JetNamedFunction, descriptor: FunctionDescriptor, diagnosticHolder: DiagnosticSink) {}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user