AnnotationChecker -> DeclarationChecker

This commit is contained in:
Zalim Bashorov
2015-03-18 20:50:04 +03:00
parent 1d703c39ef
commit 8673f95dc5
7 changed files with 19 additions and 19 deletions
@@ -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
@@ -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) {}