From 7bb4e538a624df7a59f77a74aad12ea1d96f1f12 Mon Sep 17 00:00:00 2001 From: Natalia Ukhorskaya Date: Wed, 29 Oct 2014 12:47:58 +0300 Subject: [PATCH] Use resolveAnnotations instead of getResolvedAnnotations for typeReference --- .../jet/lang/resolve/AnnotationResolver.java | 17 ----------------- .../jet/lang/resolve/TypeResolver.java | 2 +- .../tests/annotations/typeAnnotations.kt | 6 ++++++ .../tests/annotations/typeAnnotations.txt | 10 ++++++++++ .../checkers/JetDiagnosticsTestGenerated.java | 6 ++++++ 5 files changed, 23 insertions(+), 18 deletions(-) create mode 100644 compiler/testData/diagnostics/tests/annotations/typeAnnotations.kt create mode 100644 compiler/testData/diagnostics/tests/annotations/typeAnnotations.txt 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 85399725752..d9b413c7152 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/AnnotationResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/AnnotationResolver.java @@ -364,23 +364,6 @@ public class AnnotationResolver { return constants; } - @SuppressWarnings("MethodMayBeStatic") - @NotNull - public Annotations getResolvedAnnotations(@NotNull List annotations, @NotNull BindingTrace trace) { - List result = new ArrayList(annotations.size()); - for (JetAnnotationEntry annotation : annotations) { - AnnotationDescriptor annotationDescriptor = trace.get(BindingContext.ANNOTATION, annotation); - if (annotationDescriptor == null) { - throw new IllegalStateException("Annotation for annotation should have been resolved: \n" + - JetPsiUtil.getElementTextWithContext(annotation)); - } - - result.add(annotationDescriptor); - } - - return new AnnotationsImpl(result); - } - public static void reportUnsupportedAnnotationForTypeParameter(@NotNull JetTypeParameter jetTypeParameter, @NotNull BindingTrace trace) { JetModifierList modifierList = jetTypeParameter.getModifierList(); if (modifierList == null) return; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeResolver.java index a9447f74a87..ab7047b0982 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeResolver.java @@ -88,7 +88,7 @@ public class TypeResolver { JetType cachedType = c.trace.getBindingContext().get(BindingContext.TYPE, typeReference); if (cachedType != null) return type(cachedType); - Annotations annotations = annotationResolver.getResolvedAnnotations(typeReference.getAnnotations(), c.trace); + Annotations annotations = annotationResolver.resolveAnnotationsWithArguments(c.scope, typeReference.getAnnotations(), c.trace); JetTypeElement typeElement = typeReference.getTypeElement(); PossiblyBareType type = resolveTypeElement(c, annotations, typeElement); diff --git a/compiler/testData/diagnostics/tests/annotations/typeAnnotations.kt b/compiler/testData/diagnostics/tests/annotations/typeAnnotations.kt new file mode 100644 index 00000000000..f4b1e279a11 --- /dev/null +++ b/compiler/testData/diagnostics/tests/annotations/typeAnnotations.kt @@ -0,0 +1,6 @@ +// !DIAGNOSTICS: -UNUSED_VARIABLE, -UNUSED_PARAMETER +class A + +fun [x] A.foo(a: [x] Int) { + val v: [x] Int = 1 +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/annotations/typeAnnotations.txt b/compiler/testData/diagnostics/tests/annotations/typeAnnotations.txt new file mode 100644 index 00000000000..306979dda44 --- /dev/null +++ b/compiler/testData/diagnostics/tests/annotations/typeAnnotations.txt @@ -0,0 +1,10 @@ +package + +internal fun A.foo(/*0*/ a: kotlin.Int): kotlin.Unit + +internal final class A { + public constructor A() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index 56eaa64729b..8f9d55e4832 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -685,6 +685,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { doTest(fileName); } + @TestMetadata("typeAnnotations.kt") + public void testTypeAnnotations() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/annotations/typeAnnotations.kt"); + doTest(fileName); + } + @TestMetadata("compiler/testData/diagnostics/tests/annotations/annotationParameterMustBeConstant") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class)