From c3c769194d20de62e406004d66e633a105eddeb9 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Wed, 26 Feb 2014 19:00:04 +0400 Subject: [PATCH] Report UNSUPPORTED on annotations on type parameters of classes --- .../jetbrains/jet/lang/resolve/AnnotationResolver.java | 4 ++-- .../jet/lang/resolve/DeclarationsChecker.java | 10 ++++++++++ .../jetbrains/jet/lang/resolve/DescriptorResolver.java | 8 +++++--- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/AnnotationResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/AnnotationResolver.java index 672fcfe5b9e..731a0cc7260 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/AnnotationResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/AnnotationResolver.java @@ -345,8 +345,8 @@ public class AnnotationResolver { return new AnnotationsImpl(result); } - public static void reportUnsupportedAnnotationForTypeParameter(@NotNull JetModifierListOwner modifierListOwner, BindingTrace trace) { - JetModifierList modifierList = modifierListOwner.getModifierList(); + public static void reportUnsupportedAnnotationForTypeParameter(@NotNull JetTypeParameter jetTypeParameter, @NotNull BindingTrace trace) { + JetModifierList modifierList = jetTypeParameter.getModifierList(); if (modifierList == null) return; for (JetAnnotationEntry annotationEntry : modifierList.getAnnotationEntries()) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java index 39e6a6f09d3..8984c0738cf 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java @@ -206,6 +206,9 @@ public class DeclarationsChecker { private void checkClass(JetClass aClass, ClassDescriptorWithResolutionScopes classDescriptor) { checkOpenMembers(classDescriptor); + if (TopDownAnalyzer.LAZY) { + checkTypeParameters(aClass); + } if (aClass.isTrait()) { checkTraitModifiers(aClass); checkConstructorInTrait(aClass); @@ -222,6 +225,13 @@ public class DeclarationsChecker { } } + private void checkTypeParameters(JetTypeParameterListOwner typeParameterListOwner) { + // TODO: Support annotation for type parameters + for (JetTypeParameter typeParameter : typeParameterListOwner.getTypeParameters()) { + AnnotationResolver.reportUnsupportedAnnotationForTypeParameter(typeParameter, trace); + } + } + private void checkConstructorInTrait(JetClass klass) { JetParameterList primaryConstructorParameterList = klass.getPrimaryConstructorParameterList(); if (primaryConstructorParameterList != null) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java index 2a32153d0e6..f67e5db9068 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java @@ -111,8 +111,10 @@ public class DescriptorResolver { List typeParameters = Lists.newArrayList(); int index = 0; for (JetTypeParameter typeParameter : classElement.getTypeParameters()) { - // TODO: Support - AnnotationResolver.reportUnsupportedAnnotationForTypeParameter(typeParameter, trace); + if (!TopDownAnalyzer.LAZY) { + // TODO: Support + AnnotationResolver.reportUnsupportedAnnotationForTypeParameter(typeParameter, trace); + } TypeParameterDescriptor typeParameterDescriptor = TypeParameterDescriptorImpl.createForFurtherModification( descriptor, @@ -1429,4 +1431,4 @@ public class DescriptorResolver { trace.record(RESOLUTION_SCOPE, nameExpression, parentPackageView.getMemberScope()); } } -} \ No newline at end of file +}