Support Class<?> as annotation arguments in java
This commit is contained in:
@@ -131,6 +131,7 @@ public class InjectorForJavaDescriptorResolver {
|
||||
|
||||
javaAnnotationArgumentResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||
javaAnnotationArgumentResolver.setClassResolver(javaClassResolver);
|
||||
javaAnnotationArgumentResolver.setTypeTransformer(javaTypeTransformer);
|
||||
|
||||
javaClassResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||
javaClassResolver.setCache(traceBasedJavaResolverCache);
|
||||
|
||||
+6
-5
@@ -59,12 +59,12 @@ import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationArgumentResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeTransformer;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.DeserializedDescriptorResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.AnnotationDescriptorDeserializer;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaNamespaceResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaMemberResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeTransformer;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeParameterResolver;
|
||||
@@ -119,12 +119,12 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
private final JavaClassResolver javaClassResolver;
|
||||
private final JavaAnnotationResolver javaAnnotationResolver;
|
||||
private final JavaAnnotationArgumentResolver javaAnnotationArgumentResolver;
|
||||
private final JavaTypeTransformer javaTypeTransformer;
|
||||
private final DeserializedDescriptorResolver deserializedDescriptorResolver;
|
||||
private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
|
||||
private final JavaNamespaceResolver javaNamespaceResolver;
|
||||
private final JavaMemberResolver javaMemberResolver;
|
||||
private final JavaConstructorResolver javaConstructorResolver;
|
||||
private final JavaTypeTransformer javaTypeTransformer;
|
||||
private final JavaValueParameterResolver javaValueParameterResolver;
|
||||
private final JavaFunctionResolver javaFunctionResolver;
|
||||
private final JavaTypeParameterResolver javaTypeParameterResolver;
|
||||
@@ -180,12 +180,12 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
this.javaClassResolver = new JavaClassResolver();
|
||||
this.javaAnnotationResolver = new JavaAnnotationResolver();
|
||||
this.javaAnnotationArgumentResolver = new JavaAnnotationArgumentResolver();
|
||||
this.javaTypeTransformer = new JavaTypeTransformer();
|
||||
this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
|
||||
this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer();
|
||||
this.javaNamespaceResolver = new JavaNamespaceResolver();
|
||||
this.javaMemberResolver = new JavaMemberResolver();
|
||||
this.javaConstructorResolver = new JavaConstructorResolver();
|
||||
this.javaTypeTransformer = new JavaTypeTransformer();
|
||||
this.javaValueParameterResolver = new JavaValueParameterResolver();
|
||||
this.javaFunctionResolver = new JavaFunctionResolver();
|
||||
this.javaTypeParameterResolver = new JavaTypeParameterResolver();
|
||||
@@ -333,6 +333,9 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
|
||||
javaAnnotationArgumentResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||
javaAnnotationArgumentResolver.setClassResolver(javaClassResolver);
|
||||
javaAnnotationArgumentResolver.setTypeTransformer(javaTypeTransformer);
|
||||
|
||||
javaTypeTransformer.setClassResolver(javaClassResolver);
|
||||
|
||||
deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer);
|
||||
deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
|
||||
@@ -359,8 +362,6 @@ public class InjectorForTopDownAnalyzerForJvm implements InjectorForTopDownAnaly
|
||||
javaConstructorResolver.setTypeTransformer(javaTypeTransformer);
|
||||
javaConstructorResolver.setValueParameterResolver(javaValueParameterResolver);
|
||||
|
||||
javaTypeTransformer.setClassResolver(javaClassResolver);
|
||||
|
||||
javaValueParameterResolver.setAnnotationResolver(javaAnnotationResolver);
|
||||
javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
|
||||
|
||||
|
||||
+3
@@ -47,6 +47,9 @@ public abstract class JavaAnnotationArgumentImpl<Psi extends PsiAnnotationMember
|
||||
else if (argument instanceof PsiAnnotation) {
|
||||
return new JavaAnnotationAsAnnotationArgumentImpl((PsiAnnotation) argument, name);
|
||||
}
|
||||
else if (argument instanceof PsiClassObjectAccessExpression) {
|
||||
return new JavaClassObjectAnnotationArgumentImpl((PsiClassObjectAccessExpression) argument, name);
|
||||
}
|
||||
else {
|
||||
throw new UnsupportedOperationException("Unsupported annotation argument type: " + argument);
|
||||
}
|
||||
|
||||
+37
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright 2010-2013 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.jet.lang.resolve.java.structure.impl;
|
||||
|
||||
import com.intellij.psi.PsiClassObjectAccessExpression;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaClassObjectAnnotationArgument;
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaType;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
|
||||
public class JavaClassObjectAnnotationArgumentImpl extends JavaAnnotationArgumentImpl<PsiClassObjectAccessExpression>
|
||||
implements JavaClassObjectAnnotationArgument {
|
||||
public JavaClassObjectAnnotationArgumentImpl(@NotNull PsiClassObjectAccessExpression expression, @Nullable Name name) {
|
||||
super(expression, name);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public JavaType getReferencedType() {
|
||||
return JavaTypeImpl.create(getPsi().getOperand().getType());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user