diff --git a/compiler/tests/org/jetbrains/jet/test/util/DescriptorValidator.java b/compiler/tests/org/jetbrains/jet/test/util/DescriptorValidator.java index e61c20434e7..bec35a77670 100644 --- a/compiler/tests/org/jetbrains/jet/test/util/DescriptorValidator.java +++ b/compiler/tests/org/jetbrains/jet/test/util/DescriptorValidator.java @@ -21,6 +21,8 @@ import junit.framework.Assert; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.*; +import org.jetbrains.jet.lang.resolve.java.descriptor.JavaClassDescriptor; +import org.jetbrains.jet.lang.resolve.java.descriptor.JavaClassStaticsPackageFragmentDescriptor; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; @@ -179,6 +181,13 @@ public class DescriptorValidator { public Boolean visitPackageFragmentDescriptor( PackageFragmentDescriptor descriptor, DiagnosticCollector collector ) { + if (descriptor instanceof JavaClassStaticsPackageFragmentDescriptor) { + JavaClassDescriptor correspondingClass = ((JavaClassStaticsPackageFragmentDescriptor) descriptor).getCorrespondingClass(); + JavaClassStaticsPackageFragmentDescriptor correspondingPackageFragment = correspondingClass.getCorrespondingPackageFragment(); + if (correspondingPackageFragment != descriptor) { + report(collector, descriptor, "Corresponding class bound to another descriptor: " + correspondingPackageFragment); + } + } validateScope(descriptor.getMemberScope(), collector); return true; } @@ -254,6 +263,17 @@ public class DescriptorValidator { } } + if (descriptor instanceof JavaClassDescriptor) { + JavaClassStaticsPackageFragmentDescriptor + correspondingPackageFragment = ((JavaClassDescriptor) descriptor).getCorrespondingPackageFragment(); + if (correspondingPackageFragment != null) { + JavaClassDescriptor correspondingClass = correspondingPackageFragment.getCorrespondingClass(); + if (correspondingClass != descriptor) { + report(collector, descriptor, "Corresponding package bound to another descriptor: " + correspondingClass); + } + } + } + return true; }