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