Checking static members in JdkAnnotationsSanityTest.
This commit is contained in:
@@ -43,6 +43,7 @@ import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
|||||||
import org.jetbrains.jet.lang.resolve.java.JvmStdlibNames;
|
import org.jetbrains.jet.lang.resolve.java.JvmStdlibNames;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.KotlinTestWithEnvironment;
|
import org.jetbrains.jet.lang.resolve.lazy.KotlinTestWithEnvironment;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.resolve.DescriptorRenderer;
|
import org.jetbrains.jet.resolve.DescriptorRenderer;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -78,38 +79,17 @@ public class JdkAnnotationsSanityTest extends KotlinTestWithEnvironment {
|
|||||||
final Map<DeclarationDescriptor, String> errors = Maps.newHashMap();
|
final Map<DeclarationDescriptor, String> errors = Maps.newHashMap();
|
||||||
|
|
||||||
Iterable<FqName> affectedClasses = getAffectedClasses(kotlinAnnotationsRoot);
|
Iterable<FqName> affectedClasses = getAffectedClasses(kotlinAnnotationsRoot);
|
||||||
for (FqName affectedClass : affectedClasses) {
|
AlternativeSignatureErrorFindingVisitor visitor = new AlternativeSignatureErrorFindingVisitor(bindingContext, errors);
|
||||||
ClassDescriptor topLevelClass = javaDescriptorResolver.resolveClass(affectedClass);
|
for (FqName javaClass : affectedClasses) {
|
||||||
assertNotNull("Class has annotation, but it is not found: " + affectedClass, topLevelClass);
|
ClassDescriptor topLevelClass = javaDescriptorResolver.resolveClass(javaClass);
|
||||||
|
NamespaceDescriptor topLevelNamespace = javaDescriptorResolver.resolveNamespace(javaClass);
|
||||||
|
assertNotNull("Class has annotation, but it is not found: " + javaClass, topLevelClass);
|
||||||
|
|
||||||
topLevelClass.acceptVoid(new DeclarationDescriptorVisitorEmptyBodies<Void, Void>() {
|
topLevelClass.acceptVoid(visitor);
|
||||||
@Override
|
|
||||||
public Void visitClassDescriptor(ClassDescriptor descriptor, Void data) {
|
|
||||||
for (DeclarationDescriptor member : descriptor.getDefaultType().getMemberScope().getAllDescriptors()) {
|
|
||||||
member.acceptVoid(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
return visitDeclaration(descriptor);
|
if (topLevelNamespace != null) {
|
||||||
}
|
topLevelNamespace.acceptVoid(visitor);
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public Void visitFunctionDescriptor(FunctionDescriptor descriptor, Void data) {
|
|
||||||
return visitDeclaration(descriptor);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Void visitPropertyDescriptor(PropertyDescriptor descriptor, Void data) {
|
|
||||||
return visitDeclaration(descriptor);
|
|
||||||
}
|
|
||||||
|
|
||||||
private Void visitDeclaration(@NotNull DeclarationDescriptor descriptor) {
|
|
||||||
String error = bindingContext.get(BindingContext.ALTERNATIVE_SIGNATURE_DATA_ERROR, descriptor);
|
|
||||||
if (error != null) {
|
|
||||||
errors.put(descriptor, error);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!errors.isEmpty()) {
|
if (!errors.isEmpty()) {
|
||||||
@@ -222,4 +202,50 @@ public class JdkAnnotationsSanityTest extends KotlinTestWithEnvironment {
|
|||||||
});
|
});
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class AlternativeSignatureErrorFindingVisitor extends DeclarationDescriptorVisitorEmptyBodies<Void, Void> {
|
||||||
|
private final BindingContext bindingContext;
|
||||||
|
private final Map<DeclarationDescriptor, String> errors;
|
||||||
|
|
||||||
|
public AlternativeSignatureErrorFindingVisitor(BindingContext bindingContext, Map<DeclarationDescriptor, String> errors) {
|
||||||
|
this.bindingContext = bindingContext;
|
||||||
|
this.errors = errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visitNamespaceDescriptor(NamespaceDescriptor descriptor, Void data) {
|
||||||
|
return visitDeclarationRecursively(descriptor, descriptor.getMemberScope());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visitClassDescriptor(ClassDescriptor descriptor, Void data) {
|
||||||
|
return visitDeclarationRecursively(descriptor, descriptor.getDefaultType().getMemberScope());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visitFunctionDescriptor(FunctionDescriptor descriptor, Void data) {
|
||||||
|
return visitDeclaration(descriptor);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void visitPropertyDescriptor(PropertyDescriptor descriptor, Void data) {
|
||||||
|
return visitDeclaration(descriptor);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Void visitDeclaration(@NotNull DeclarationDescriptor descriptor) {
|
||||||
|
String error = bindingContext.get(BindingContext.ALTERNATIVE_SIGNATURE_DATA_ERROR, descriptor);
|
||||||
|
if (error != null) {
|
||||||
|
errors.put(descriptor, error);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Void visitDeclarationRecursively(@NotNull DeclarationDescriptor descriptor, @NotNull JetScope memberScope) {
|
||||||
|
for (DeclarationDescriptor member : memberScope.getAllDescriptors()) {
|
||||||
|
member.acceptVoid(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return visitDeclaration(descriptor);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user