diff --git a/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedClassDescriptor.java b/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedClassDescriptor.java index 6d9ac135912..04f54488c03 100644 --- a/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedClassDescriptor.java +++ b/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedClassDescriptor.java @@ -23,7 +23,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.descriptors.serialization.*; import org.jetbrains.jet.lang.descriptors.*; -import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.descriptors.annotations.Annotations; import org.jetbrains.jet.lang.descriptors.impl.AbstractClassDescriptor; import org.jetbrains.jet.lang.descriptors.impl.ConstructorDescriptorImpl; @@ -262,7 +261,7 @@ public class DeserializedClassDescriptor extends AbstractClassDescriptor impleme } @NotNull - private MutableClassDescriptor createEnumClassObject() { + private ClassDescriptorWithResolutionScopes createEnumClassObject() { MutableClassDescriptor classObject = new MutableClassDescriptor(this, getScopeForMemberLookup(), ClassKind.CLASS_OBJECT, false, getClassObjectName(getName())); classObject.setSupertypes(Collections.singleton(KotlinBuiltIns.getInstance().getAnyType())); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodiesResolveContext.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodiesResolveContext.java index a1d89732adb..06c592578a3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodiesResolveContext.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodiesResolveContext.java @@ -22,10 +22,10 @@ import org.jetbrains.annotations.Mutable; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.ReadOnly; import org.jetbrains.jet.context.GlobalContext; +import org.jetbrains.jet.lang.descriptors.ClassDescriptorWithResolutionScopes; import org.jetbrains.jet.lang.descriptors.PropertyDescriptor; import org.jetbrains.jet.lang.descriptors.ScriptDescriptor; import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor; -import org.jetbrains.jet.lang.descriptors.impl.MutableClassDescriptor; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo; import org.jetbrains.jet.lang.resolve.scopes.JetScope; @@ -48,7 +48,7 @@ public interface BodiesResolveContext extends GlobalContext { Collection getFiles(); @Mutable - Map getClasses(); + Map getClasses(); @Mutable Map getProperties(); @Mutable diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java index 7bfbc4d8d61..0e142fb2307 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BodyResolver.java @@ -24,7 +24,6 @@ import com.intellij.util.containers.Queue; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.*; -import org.jetbrains.jet.lang.descriptors.impl.MutableClassDescriptor; import org.jetbrains.jet.lang.evaluate.EvaluatePackage; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.calls.CallResolver; @@ -161,9 +160,9 @@ public class BodyResolver { private void resolveDelegationSpecifierLists() { // TODO : Make sure the same thing is not initialized twice - for (Map.Entry entry : context.getClasses().entrySet()) { + for (Map.Entry entry : context.getClasses().entrySet()) { JetClassOrObject classOrObject = entry.getKey(); - MutableClassDescriptor descriptor = entry.getValue(); + ClassDescriptorWithResolutionScopes descriptor = entry.getValue(); resolveDelegationSpecifierList(classOrObject, descriptor, descriptor.getUnsubstitutedPrimaryConstructor(), descriptor.getScopeForClassHeaderResolution(), @@ -341,15 +340,15 @@ public class BodyResolver { } private void resolveClassAnnotations() { - for (Map.Entry entry : context.getClasses().entrySet()) { + for (Map.Entry entry : context.getClasses().entrySet()) { resolveAnnotationArguments(entry.getValue().getScopeForClassHeaderResolution(), entry.getKey()); } } private void resolveAnonymousInitializers() { - for (Map.Entry entry : context.getClasses().entrySet()) { + for (Map.Entry entry : context.getClasses().entrySet()) { JetClassOrObject classOrObject = entry.getKey(); - MutableClassDescriptor descriptor = entry.getValue(); + ClassDescriptorWithResolutionScopes descriptor = entry.getValue(); resolveAnonymousInitializers(classOrObject, descriptor.getUnsubstitutedPrimaryConstructor(), descriptor.getScopeForInitializerResolution()); } @@ -388,10 +387,10 @@ public class BodyResolver { } private void resolvePrimaryConstructorParameters() { - for (Map.Entry entry : context.getClasses().entrySet()) { + for (Map.Entry entry : context.getClasses().entrySet()) { if (!(entry.getKey() instanceof JetClass)) continue; JetClass klass = (JetClass) entry.getKey(); - MutableClassDescriptor classDescriptor = entry.getValue(); + ClassDescriptorWithResolutionScopes classDescriptor = entry.getValue(); ConstructorDescriptor unsubstitutedPrimaryConstructor = classDescriptor.getUnsubstitutedPrimaryConstructor(); annotationResolver.resolveAnnotationsArguments(classDescriptor.getScopeForClassHeaderResolution(), klass.getPrimaryConstructorModifierList(), trace); @@ -424,10 +423,10 @@ public class BodyResolver { // Member properties Set processed = Sets.newHashSet(); - for (Map.Entry entry : context.getClasses().entrySet()) { + for (Map.Entry entry : context.getClasses().entrySet()) { if (!(entry.getKey() instanceof JetClass)) continue; JetClass jetClass = (JetClass) entry.getKey(); - MutableClassDescriptor classDescriptor = entry.getValue(); + ClassDescriptorWithResolutionScopes classDescriptor = entry.getValue(); for (JetProperty property : jetClass.getProperties()) { PropertyDescriptor propertyDescriptor = this.context.getProperties().get(property); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/CachedBodiesResolveContext.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/CachedBodiesResolveContext.java index ced51769934..015d26d3d42 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/CachedBodiesResolveContext.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/CachedBodiesResolveContext.java @@ -20,10 +20,10 @@ import com.google.common.base.Function; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.lang.descriptors.ClassDescriptorWithResolutionScopes; import org.jetbrains.jet.lang.descriptors.PropertyDescriptor; import org.jetbrains.jet.lang.descriptors.ScriptDescriptor; import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor; -import org.jetbrains.jet.lang.descriptors.impl.MutableClassDescriptor; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo; import org.jetbrains.jet.lang.resolve.scopes.JetScope; @@ -41,7 +41,7 @@ import java.util.Map; */ public class CachedBodiesResolveContext implements BodiesResolveContext { private final Collection files; - private final Map classes; + private final Map classes; private final Map properties; private final Map functions; private final Function declaringScopes; @@ -80,7 +80,7 @@ public class CachedBodiesResolveContext implements BodiesResolveContext { } @Override - public Map getClasses() { + public Map getClasses() { return classes; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java index 8e83e6f37c8..39854926506 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java @@ -128,9 +128,9 @@ public class DeclarationResolver { } private void resolveAnnotationConstructors() { - for (Map.Entry entry : context.getClasses().entrySet()) { + for (Map.Entry entry : context.getClasses().entrySet()) { JetClassOrObject classOrObject = entry.getKey(); - MutableClassDescriptor classDescriptor = entry.getValue(); + MutableClassDescriptor classDescriptor = (MutableClassDescriptor) entry.getValue(); if (classOrObject instanceof JetClass && DescriptorUtils.isAnnotationClass(classDescriptor)) { processPrimaryConstructor(classDescriptor, (JetClass) classOrObject); @@ -139,9 +139,9 @@ public class DeclarationResolver { } private void resolveConstructorHeaders() { - for (Map.Entry entry : context.getClasses().entrySet()) { + for (Map.Entry entry : context.getClasses().entrySet()) { JetClassOrObject classOrObject = entry.getKey(); - MutableClassDescriptor classDescriptor = entry.getValue(); + MutableClassDescriptor classDescriptor = (MutableClassDescriptor) entry.getValue(); if (classOrObject instanceof JetClass && !DescriptorUtils.isAnnotationClass(classDescriptor)) { processPrimaryConstructor(classDescriptor, (JetClass) classOrObject); @@ -150,10 +150,10 @@ public class DeclarationResolver { } private void resolveAnnotationStubsOnClassesAndConstructors() { - for (Map.Entry entry : context.getClasses().entrySet()) { + for (Map.Entry entry : context.getClasses().entrySet()) { JetModifierList modifierList = entry.getKey().getModifierList(); if (modifierList != null) { - MutableClassDescriptor descriptor = entry.getValue(); + MutableClassDescriptor descriptor = (MutableClassDescriptor) entry.getValue(); descriptor.addAnnotations(annotationResolver.resolveAnnotationsWithoutArguments( descriptor.getScopeForClassHeaderResolution(), modifierList, trace)); } @@ -168,9 +168,9 @@ public class DeclarationResolver { resolveFunctionAndPropertyHeaders(file.getDeclarations(), fileScope, fileScope, fileScope, packageBuilder); } - for (Map.Entry entry : context.getClasses().entrySet()) { + for (Map.Entry entry : context.getClasses().entrySet()) { JetClassOrObject classOrObject = entry.getKey(); - MutableClassDescriptor classDescriptor = entry.getValue(); + MutableClassDescriptor classDescriptor = (MutableClassDescriptor) entry.getValue(); JetClassBody jetClassBody = classOrObject.getBody(); if (classDescriptor.getKind() == ClassKind.ANNOTATION_CLASS && jetClassBody != null) { @@ -236,9 +236,9 @@ public class DeclarationResolver { } private void createFunctionsForDataClasses() { - for (Map.Entry entry : context.getClasses().entrySet()) { + for (Map.Entry entry : context.getClasses().entrySet()) { JetClassOrObject klass = entry.getKey(); - MutableClassDescriptor classDescriptor = entry.getValue(); + MutableClassDescriptor classDescriptor = (MutableClassDescriptor) entry.getValue(); if (klass instanceof JetClass && klass.hasPrimaryConstructor() && KotlinBuiltIns.getInstance().isData(classDescriptor)) { ConstructorDescriptor constructor = DescriptorUtils.getConstructorOfDataClass(classDescriptor); @@ -375,15 +375,16 @@ public class DeclarationResolver { } private void checkRedeclarationsInInnerClassNames() { - for (MutableClassDescriptor classDescriptor : context.getClasses().values()) { + for (ClassDescriptorWithResolutionScopes classDescriptor : context.getClasses().values()) { + MutableClassDescriptor mutableClassDescriptor = (MutableClassDescriptor) classDescriptor; if (classDescriptor.getKind() == ClassKind.CLASS_OBJECT) { // Class objects should be considered during analysing redeclarations in classes continue; } - Collection allDescriptors = classDescriptor.getScopeForMemberLookup().getOwnDeclaredDescriptors(); + Collection allDescriptors = mutableClassDescriptor.getScopeForMemberLookup().getOwnDeclaredDescriptors(); - MutableClassDescriptorLite classObj = classDescriptor.getClassObjectDescriptor(); + MutableClassDescriptorLite classObj = mutableClassDescriptor.getClassObjectDescriptor(); if (classObj != null) { Collection classObjDescriptors = classObj.getScopeForMemberLookup().getOwnDeclaredDescriptors(); if (!classObjDescriptors.isEmpty()) { @@ -399,7 +400,7 @@ public class DeclarationResolver { } } - reportRedeclarations(descriptorMap); + reportRedeclarations(descriptorMap); } } 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 341c318aa58..5cf08d0f34d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationsChecker.java @@ -20,7 +20,6 @@ import com.google.common.collect.Sets; import com.intellij.lang.ASTNode; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.descriptors.*; -import org.jetbrains.jet.lang.descriptors.impl.MutableClassDescriptor; import org.jetbrains.jet.lang.diagnostics.Errors; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.types.DeferredType; @@ -48,10 +47,10 @@ public class DeclarationsChecker { } public void process(@NotNull BodiesResolveContext bodiesResolveContext) { - Map classes = bodiesResolveContext.getClasses(); - for (Map.Entry entry : classes.entrySet()) { + Map classes = bodiesResolveContext.getClasses(); + for (Map.Entry entry : classes.entrySet()) { JetClassOrObject classOrObject = entry.getKey(); - MutableClassDescriptor classDescriptor = entry.getValue(); + ClassDescriptorWithResolutionScopes classDescriptor = entry.getValue(); if (!bodiesResolveContext.completeAnalysisNeeded(classOrObject)) continue; if (classOrObject instanceof JetClass) { @@ -99,7 +98,7 @@ public class DeclarationsChecker { reportErrorIfHasIllegalModifier(declaration); } - private void checkClass(JetClass aClass, MutableClassDescriptor classDescriptor) { + private void checkClass(JetClass aClass, ClassDescriptorWithResolutionScopes classDescriptor) { checkOpenMembers(classDescriptor); if (aClass.isTrait()) { checkTraitModifiers(aClass); @@ -128,7 +127,7 @@ public class DeclarationsChecker { } - private void checkOpenMembers(MutableClassDescriptor classDescriptor) { + private void checkOpenMembers(ClassDescriptorWithResolutionScopes classDescriptor) { for (CallableMemberDescriptor memberDescriptor : classDescriptor.getDeclaredCallableMembers()) { if (memberDescriptor.getKind() != CallableMemberDescriptor.Kind.DECLARATION) continue; JetNamedDeclaration member = (JetNamedDeclaration) BindingContextUtils.descriptorToDeclaration(trace.getBindingContext(), memberDescriptor); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverloadResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverloadResolver.java index 06d6cfb08a6..66eedf04a3b 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverloadResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverloadResolver.java @@ -21,7 +21,6 @@ import com.intellij.openapi.util.Pair; import com.intellij.util.containers.MultiMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.descriptors.*; -import org.jetbrains.jet.lang.descriptors.impl.MutableClassDescriptor; import org.jetbrains.jet.lang.diagnostics.Errors; import org.jetbrains.jet.lang.psi.JetClassOrObject; import org.jetbrains.jet.lang.psi.JetDeclaration; @@ -62,7 +61,7 @@ public class OverloadResolver { MultiMap inPackages = MultiMap.create(); fillGroupedConstructors(inClasses, inPackages); - for (Map.Entry entry : context.getClasses().entrySet()) { + for (Map.Entry entry : context.getClasses().entrySet()) { checkOverloadsInAClass(entry.getValue(), entry.getKey(), inClasses.get(entry.getValue())); } checkOverloadsInPackages(inPackages); @@ -72,7 +71,7 @@ public class OverloadResolver { @NotNull MultiMap inClasses, @NotNull MultiMap inPackages ) { - for (MutableClassDescriptor klass : context.getClasses().values()) { + for (ClassDescriptorWithResolutionScopes klass : context.getClasses().values()) { if (klass.getKind().isSingleton()) { // Constructors of singletons aren't callable from the code, so they shouldn't participate in overload name checking continue; @@ -131,13 +130,13 @@ public class OverloadResolver { } private void checkOverloadsInAClass( - MutableClassDescriptor classDescriptor, JetClassOrObject klass, + ClassDescriptorWithResolutionScopes classDescriptor, JetClassOrObject klass, Collection nestedClassConstructors ) { MultiMap functionsByName = MultiMap.create(); if (classDescriptor.getKind() == ClassKind.ENUM_CLASS) { - MutableClassDescriptor classObjectDescriptor = (MutableClassDescriptor) classDescriptor.getClassObjectDescriptor(); + ClassDescriptorWithResolutionScopes classObjectDescriptor = (ClassDescriptorWithResolutionScopes) classDescriptor.getClassObjectDescriptor(); assert classObjectDescriptor != null; for (CallableMemberDescriptor memberDescriptor : classObjectDescriptor.getDeclaredCallableMembers()) { functionsByName.putValue(memberDescriptor.getName(), memberDescriptor); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java index ddf968db1d1..1a3d30a234d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/OverrideResolver.java @@ -21,7 +21,6 @@ import com.google.common.collect.Maps; import com.google.common.collect.Multimap; import com.google.common.collect.Sets; import com.intellij.lang.ASTNode; -import com.intellij.openapi.util.Condition; import com.intellij.psi.PsiElement; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.containers.LinkedMultiMap; @@ -86,7 +85,7 @@ public class OverrideResolver { * Generate fake overrides and add overridden descriptors to existing descriptors. */ private void generateOverridesAndDelegation() { - Set ourClasses = new HashSet(context.getClasses().values()); + Set ourClasses = new HashSet(context.getClasses().values()); Set processed = new HashSet(); for (MutableClassDescriptorLite klass : ContainerUtil.reverse(context.getClassesTopologicalOrder())) { @@ -104,7 +103,7 @@ public class OverrideResolver { private void generateOverridesAndDelegationInAClass( @NotNull MutableClassDescriptor classDescriptor, @NotNull Set processed, - @NotNull Set classesBeingAnalyzed + @NotNull Set classesBeingAnalyzed // to filter out classes such as stdlib and others that come from dependencies ) { if (!processed.add(classDescriptor)) { @@ -220,8 +219,8 @@ public class OverrideResolver { } private void checkOverrides() { - for (Map.Entry entry : context.getClasses().entrySet()) { - checkOverridesInAClass(entry.getValue(), entry.getKey()); + for (Map.Entry entry : context.getClasses().entrySet()) { + checkOverridesInAClass((MutableClassDescriptor) entry.getValue(), entry.getKey()); } } @@ -685,9 +684,11 @@ public class OverrideResolver { } private void checkParameterOverridesForAllClasses() { - for (MutableClassDescriptor classDescriptor : context.getClasses().values()) { - for (CallableMemberDescriptor member : classDescriptor.getAllCallableMembers()) { - checkOverridesForParameters(member); + for (ClassDescriptorWithResolutionScopes classDescriptor : context.getClasses().values()) { + for (DeclarationDescriptor member : classDescriptor.getDefaultType().getMemberScope().getAllDescriptors()) { + if (member instanceof CallableMemberDescriptor) { + checkOverridesForParameters((CallableMemberDescriptor) member); + } } } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalysisContext.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalysisContext.java index 6b57296bd5e..0803ce6a119 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalysisContext.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalysisContext.java @@ -23,7 +23,6 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.descriptors.*; -import org.jetbrains.jet.lang.descriptors.impl.MutableClassDescriptor; import org.jetbrains.jet.lang.descriptors.impl.MutableClassDescriptorLite; import org.jetbrains.jet.lang.descriptors.impl.MutablePackageFragmentDescriptor; import org.jetbrains.jet.lang.psi.*; @@ -43,7 +42,7 @@ public class TopDownAnalysisContext implements BodiesResolveContext { private DataFlowInfo outerDataFlowInfo = DataFlowInfo.EMPTY; - private final Map classes = Maps.newLinkedHashMap(); + private final Map classes = Maps.newLinkedHashMap(); protected final Map packageFragments = Maps.newHashMap(); private List classesTopologicalOrder = null; @@ -108,7 +107,7 @@ public class TopDownAnalysisContext implements BodiesResolveContext { } @Override - public Map getClasses() { + public Map getClasses() { return classes; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java index 00e45b4ef41..7a903c6b7f9 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TopDownAnalyzer.java @@ -141,8 +141,8 @@ public class TopDownAnalyzer { } private void lockScopes() { - for (MutableClassDescriptor mutableClassDescriptor : context.getClasses().values()) { - mutableClassDescriptor.lockScopes(); + for (ClassDescriptorWithResolutionScopes mutableClassDescriptor : context.getClasses().values()) { + ((MutableClassDescriptor) mutableClassDescriptor).lockScopes(); } Set scriptFqNames = Sets.newHashSet(); for (JetFile file : context.getFileScopes().keySet()) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java index 1ce11cd5458..b273c1aa49b 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java @@ -173,9 +173,9 @@ public class TypeHierarchyResolver { } private void createTypeConstructors() { - for (Map.Entry entry : context.getClasses().entrySet()) { + for (Map.Entry entry : context.getClasses().entrySet()) { JetClassOrObject classOrObject = entry.getKey(); - MutableClassDescriptor descriptor = entry.getValue(); + MutableClassDescriptor descriptor = (MutableClassDescriptor) entry.getValue(); if (classOrObject instanceof JetClass) { descriptorResolver.resolveMutableClassDescriptor((JetClass) classOrObject, descriptor, trace); } @@ -210,18 +210,18 @@ public class TypeHierarchyResolver { } private void resolveTypesInClassHeaders() { - for (Map.Entry entry : context.getClasses().entrySet()) { + for (Map.Entry entry : context.getClasses().entrySet()) { JetClassOrObject classOrObject = entry.getKey(); if (classOrObject instanceof JetClass) { - MutableClassDescriptor descriptor = entry.getValue(); + ClassDescriptorWithResolutionScopes descriptor = entry.getValue(); //noinspection unchecked descriptorResolver.resolveGenericBounds((JetClass) classOrObject, descriptor.getScopeForClassHeaderResolution(), (List) descriptor.getTypeConstructor().getParameters(), trace); } } - for (Map.Entry entry : context.getClasses().entrySet()) { - descriptorResolver.resolveSupertypesForMutableClassDescriptor(entry.getKey(), entry.getValue(), trace); + for (Map.Entry entry : context.getClasses().entrySet()) { + descriptorResolver.resolveSupertypesForMutableClassDescriptor(entry.getKey(), (MutableClassDescriptor) entry.getValue(), trace); } } diff --git a/compiler/tests/org/jetbrains/jet/types/JetDefaultModalityModifiersTest.java b/compiler/tests/org/jetbrains/jet/types/JetDefaultModalityModifiersTest.java index c5fe1306e9d..55ffe72555e 100644 --- a/compiler/tests/org/jetbrains/jet/types/JetDefaultModalityModifiersTest.java +++ b/compiler/tests/org/jetbrains/jet/types/JetDefaultModalityModifiersTest.java @@ -92,7 +92,7 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture { return scope; } - private MutableClassDescriptor createClassDescriptor(ClassKind kind, JetClass aClass) { + private ClassDescriptorWithResolutionScopes createClassDescriptor(ClassKind kind, JetClass aClass) { MutableClassDescriptor classDescriptor = new MutableClassDescriptor(root, scope, kind, false, Name.identifier(aClass.getName())); descriptorResolver.resolveMutableClassDescriptor(aClass, classDescriptor, JetTestUtils.DUMMY_TRACE); return classDescriptor; @@ -100,7 +100,7 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture { private void testClassModality(String classDeclaration, ClassKind kind, Modality expectedModality) { JetClass aClass = JetPsiFactory.createClass(getProject(), classDeclaration); - MutableClassDescriptor classDescriptor = createClassDescriptor(kind, aClass); + ClassDescriptorWithResolutionScopes classDescriptor = createClassDescriptor(kind, aClass); assertEquals(expectedModality, classDescriptor.getModality()); } @@ -108,7 +108,7 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture { private void testFunctionModality(String classWithFunction, ClassKind kind, Modality expectedFunctionModality) { JetClass aClass = JetPsiFactory.createClass(getProject(), classWithFunction); - MutableClassDescriptor classDescriptor = createClassDescriptor(kind, aClass); + ClassDescriptorWithResolutionScopes classDescriptor = createClassDescriptor(kind, aClass); List declarations = aClass.getDeclarations(); JetNamedFunction function = (JetNamedFunction) declarations.get(0); @@ -121,7 +121,7 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture { private void testPropertyModality(String classWithProperty, ClassKind kind, Modality expectedPropertyModality) { JetClass aClass = JetPsiFactory.createClass(getProject(), classWithProperty); - MutableClassDescriptor classDescriptor = createClassDescriptor(kind, aClass); + ClassDescriptorWithResolutionScopes classDescriptor = createClassDescriptor(kind, aClass); List declarations = aClass.getDeclarations(); JetProperty property = (JetProperty) declarations.get(0); @@ -134,7 +134,7 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture { private void testPropertyAccessorModality(String classWithPropertyWithAccessor, ClassKind kind, Modality expectedPropertyAccessorModality, boolean isGetter) { JetClass aClass = JetPsiFactory.createClass(getProject(), classWithPropertyWithAccessor); - MutableClassDescriptor classDescriptor = createClassDescriptor(kind, aClass); + ClassDescriptorWithResolutionScopes classDescriptor = createClassDescriptor(kind, aClass); List declarations = aClass.getDeclarations(); JetProperty property = (JetProperty) declarations.get(0); diff --git a/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java b/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java index f46a41af772..6400de3cb57 100644 --- a/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java +++ b/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java @@ -29,7 +29,6 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.di.InjectorForBodyResolve; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.annotations.Annotated; -import org.jetbrains.jet.lang.descriptors.impl.MutableClassDescriptor; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.*; import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo; @@ -457,7 +456,7 @@ public class ResolveElementCache { } @Override - public Map getClasses() { + public Map getClasses() { return Collections.emptyMap(); } diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/CreateFunctionFromUsageFix.java b/idea/src/org/jetbrains/jet/plugin/quickfix/CreateFunctionFromUsageFix.java index 3547d9a1e01..6eabd1ad771 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/CreateFunctionFromUsageFix.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/CreateFunctionFromUsageFix.java @@ -51,8 +51,10 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.analyzer.AnalyzeExhaust; import org.jetbrains.jet.lang.descriptors.*; -import org.jetbrains.jet.lang.descriptors.impl.MutableClassDescriptor; -import org.jetbrains.jet.lang.diagnostics.*; +import org.jetbrains.jet.lang.diagnostics.Diagnostic; +import org.jetbrains.jet.lang.diagnostics.DiagnosticWithParameters1; +import org.jetbrains.jet.lang.diagnostics.DiagnosticWithParameters2; +import org.jetbrains.jet.lang.diagnostics.Errors; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContextUtils; @@ -669,8 +671,7 @@ public class CreateFunctionFromUsageFix extends CreateFromUsageFixBase { if (isExtension) { scope = currentFileModule.getPackage(JetPsiUtil.getFQName(currentFile)).getMemberScope(); } else { - assert ownerClassDescriptor instanceof MutableClassDescriptor; - scope = ((MutableClassDescriptor) ownerClassDescriptor).getScopeForMemberDeclarationResolution(); + scope = ((ClassDescriptorWithResolutionScopes) ownerClassDescriptor).getScopeForMemberDeclarationResolution(); } // figure out type substitutions for type parameters