BodiesResolveContext.getClasses()'s key is JetClassOrObject
This has no effect right now, but is a preparation for the objects refactoring, when BodiesResolveContext.getObjects() will be dropped
This commit is contained in:
@@ -31,7 +31,7 @@ import java.util.Map;
|
||||
|
||||
public interface BodiesResolveContext {
|
||||
Collection<JetFile> getFiles();
|
||||
Map<JetClass, MutableClassDescriptor> getClasses();
|
||||
Map<JetClassOrObject, MutableClassDescriptor> getClasses();
|
||||
Map<JetObjectDeclaration, MutableClassDescriptor> getObjects();
|
||||
Map<JetProperty, PropertyDescriptor> getProperties();
|
||||
Map<JetNamedFunction, SimpleFunctionDescriptor> getFunctions();
|
||||
|
||||
@@ -159,7 +159,7 @@ public class BodyResolver {
|
||||
|
||||
private void resolveDelegationSpecifierLists() {
|
||||
// TODO : Make sure the same thing is not initialized twice
|
||||
for (Map.Entry<JetClass, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
for (Map.Entry<JetClassOrObject, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
resolveDelegationSpecifierList(entry.getKey(), entry.getValue());
|
||||
}
|
||||
for (Map.Entry<JetObjectDeclaration, MutableClassDescriptor> entry : context.getObjects().entrySet()) {
|
||||
@@ -335,7 +335,7 @@ public class BodyResolver {
|
||||
}
|
||||
|
||||
private void resolveClassAnnotations() {
|
||||
for (Map.Entry<JetClass, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
for (Map.Entry<JetClassOrObject, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
resolveAnnotationArguments(entry.getValue().getScopeForSupertypeResolution(), entry.getKey());
|
||||
}
|
||||
for (Map.Entry<JetObjectDeclaration, MutableClassDescriptor> entry : context.getObjects().entrySet()) {
|
||||
@@ -344,7 +344,7 @@ public class BodyResolver {
|
||||
}
|
||||
|
||||
private void resolveAnonymousInitializers() {
|
||||
for (Map.Entry<JetClass, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
for (Map.Entry<JetClassOrObject, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
resolveAnonymousInitializers(entry.getKey(), entry.getValue());
|
||||
}
|
||||
for (Map.Entry<JetObjectDeclaration, MutableClassDescriptor> entry : context.getObjects().entrySet()) {
|
||||
@@ -377,8 +377,9 @@ public class BodyResolver {
|
||||
}
|
||||
|
||||
private void resolvePrimaryConstructorParameters() {
|
||||
for (Map.Entry<JetClass, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
JetClass klass = entry.getKey();
|
||||
for (Map.Entry<JetClassOrObject, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
if (!(entry.getKey() instanceof JetClass)) continue;
|
||||
JetClass klass = (JetClass) entry.getKey();
|
||||
MutableClassDescriptor classDescriptor = entry.getValue();
|
||||
ConstructorDescriptor unsubstitutedPrimaryConstructor = classDescriptor.getUnsubstitutedPrimaryConstructor();
|
||||
|
||||
@@ -412,8 +413,9 @@ public class BodyResolver {
|
||||
|
||||
// Member properties
|
||||
Set<JetProperty> processed = Sets.newHashSet();
|
||||
for (Map.Entry<JetClass, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
JetClass jetClass = entry.getKey();
|
||||
for (Map.Entry<JetClassOrObject, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
if (!(entry.getKey() instanceof JetClass)) continue;
|
||||
JetClass jetClass = (JetClass) entry.getKey();
|
||||
if (!context.completeAnalysisNeeded(jetClass)) continue;
|
||||
MutableClassDescriptor classDescriptor = entry.getValue();
|
||||
|
||||
|
||||
+5
-3
@@ -20,7 +20,9 @@ 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.*;
|
||||
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;
|
||||
@@ -37,7 +39,7 @@ import java.util.Map;
|
||||
*/
|
||||
public class CachedBodiesResolveContext implements BodiesResolveContext {
|
||||
private final Collection<JetFile> files;
|
||||
private final Map<JetClass, MutableClassDescriptor> classes;
|
||||
private final Map<JetClassOrObject, MutableClassDescriptor> classes;
|
||||
private final Map<JetObjectDeclaration, MutableClassDescriptor> objects;
|
||||
private final Map<JetProperty, PropertyDescriptor> properties;
|
||||
private final Map<JetNamedFunction, SimpleFunctionDescriptor> functions;
|
||||
@@ -68,7 +70,7 @@ public class CachedBodiesResolveContext implements BodiesResolveContext {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<JetClass, MutableClassDescriptor> getClasses() {
|
||||
public Map<JetClassOrObject, MutableClassDescriptor> getClasses() {
|
||||
return classes;
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,6 @@ import org.jetbrains.jet.lang.psi.*;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.jetbrains.jet.lang.types.TypeUtils.NO_EXPECTED_TYPE;
|
||||
@@ -49,7 +48,7 @@ public class ControlFlowAnalyzer {
|
||||
if (!bodiesResolveContext.completeAnalysisNeeded(file)) continue;
|
||||
checkDeclarationContainer(file);
|
||||
}
|
||||
for (JetClass aClass : bodiesResolveContext.getClasses().keySet()) {
|
||||
for (JetClassOrObject aClass : bodiesResolveContext.getClasses().keySet()) {
|
||||
if (!bodiesResolveContext.completeAnalysisNeeded(aClass)) continue;
|
||||
checkDeclarationContainer(aClass);
|
||||
}
|
||||
|
||||
@@ -127,35 +127,33 @@ public class DeclarationResolver {
|
||||
}
|
||||
|
||||
private void resolveAnnotationConstructors() {
|
||||
for (Map.Entry<JetClass, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
for (Map.Entry<JetClassOrObject, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
JetClassOrObject classOrObject = entry.getKey();
|
||||
MutableClassDescriptor classDescriptor = entry.getValue();
|
||||
|
||||
if (DescriptorUtils.isAnnotationClass(classDescriptor)) {
|
||||
processPrimaryConstructor(classDescriptor, entry.getKey());
|
||||
if (classOrObject instanceof JetClass && DescriptorUtils.isAnnotationClass(classDescriptor)) {
|
||||
processPrimaryConstructor(classDescriptor, (JetClass) classOrObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void resolveConstructorHeaders() {
|
||||
for (Map.Entry<JetClass, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
for (Map.Entry<JetClassOrObject, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
JetClassOrObject classOrObject = entry.getKey();
|
||||
MutableClassDescriptor classDescriptor = entry.getValue();
|
||||
|
||||
if (!DescriptorUtils.isAnnotationClass(classDescriptor)) {
|
||||
processPrimaryConstructor(classDescriptor, entry.getKey());
|
||||
if (classOrObject instanceof JetClass && !DescriptorUtils.isAnnotationClass(classDescriptor)) {
|
||||
processPrimaryConstructor(classDescriptor, (JetClass) classOrObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void resolveAnnotationStubsOnClassesAndConstructors() {
|
||||
for (Map.Entry<JetClass, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
JetClass jetClass = entry.getKey();
|
||||
MutableClassDescriptor descriptor = entry.getValue();
|
||||
resolveAnnotationsForClassOrObject(annotationResolver, jetClass, descriptor);
|
||||
for (Map.Entry<JetClassOrObject, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
resolveAnnotationsForClassOrObject(annotationResolver, entry.getKey(), entry.getValue());
|
||||
}
|
||||
for (Map.Entry<JetObjectDeclaration, MutableClassDescriptor> entry : context.getObjects().entrySet()) {
|
||||
JetObjectDeclaration objectDeclaration = entry.getKey();
|
||||
MutableClassDescriptor descriptor = entry.getValue();
|
||||
resolveAnnotationsForClassOrObject(annotationResolver, objectDeclaration, descriptor);
|
||||
resolveAnnotationsForClassOrObject(annotationResolver, entry.getKey(), entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -175,31 +173,27 @@ public class DeclarationResolver {
|
||||
|
||||
resolveFunctionAndPropertyHeaders(namespace.getDeclarations(), namespaceScope, namespaceScope, namespaceScope, namespaceDescriptor);
|
||||
}
|
||||
for (Map.Entry<JetClass, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
JetClass jetClass = entry.getKey();
|
||||
for (Map.Entry<JetClassOrObject, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
JetClassOrObject classOrObject = entry.getKey();
|
||||
MutableClassDescriptor classDescriptor = entry.getValue();
|
||||
|
||||
JetClassBody jetClassBody = jetClass.getBody();
|
||||
JetClassBody jetClassBody = classOrObject.getBody();
|
||||
if (classDescriptor.getKind() == ClassKind.ANNOTATION_CLASS && jetClassBody != null) {
|
||||
trace.report(ANNOTATION_CLASS_WITH_BODY.on(jetClassBody));
|
||||
}
|
||||
|
||||
resolveFunctionAndPropertyHeaders(
|
||||
jetClass.getDeclarations(), classDescriptor.getScopeForMemberResolution(),
|
||||
classOrObject.getDeclarations(), classDescriptor.getScopeForMemberResolution(),
|
||||
classDescriptor.getScopeForInitializers(), classDescriptor.getScopeForMemberResolution(),
|
||||
classDescriptor.getBuilder());
|
||||
// processPrimaryConstructor(classDescriptor, jetClass);
|
||||
// for (JetSecondaryConstructor jetConstructor : jetClass.getSecondaryConstructors()) {
|
||||
// processSecondaryConstructor(classDescriptor, jetConstructor);
|
||||
// }
|
||||
}
|
||||
for (Map.Entry<JetObjectDeclaration, MutableClassDescriptor> entry : context.getObjects().entrySet()) {
|
||||
JetObjectDeclaration object = entry.getKey();
|
||||
MutableClassDescriptor classDescriptor = entry.getValue();
|
||||
|
||||
resolveFunctionAndPropertyHeaders(object.getDeclarations(), classDescriptor.getScopeForMemberResolution(),
|
||||
classDescriptor.getScopeForInitializers(), classDescriptor.getScopeForMemberResolution(),
|
||||
classDescriptor.getBuilder());
|
||||
classDescriptor.getScopeForInitializers(), classDescriptor.getScopeForMemberResolution(),
|
||||
classDescriptor.getBuilder());
|
||||
}
|
||||
|
||||
scriptHeaderResolver.resolveScriptDeclarations();
|
||||
@@ -274,11 +268,11 @@ public class DeclarationResolver {
|
||||
}
|
||||
|
||||
private void createFunctionsForDataClasses() {
|
||||
for (Map.Entry<JetClass, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
JetClass jetClass = entry.getKey();
|
||||
for (Map.Entry<JetClassOrObject, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
JetClassOrObject klass = entry.getKey();
|
||||
MutableClassDescriptor classDescriptor = entry.getValue();
|
||||
|
||||
if (jetClass.hasPrimaryConstructor() && KotlinBuiltIns.getInstance().isData(classDescriptor)) {
|
||||
if (klass instanceof JetClass && klass.hasPrimaryConstructor() && KotlinBuiltIns.getInstance().isData(classDescriptor)) {
|
||||
ConstructorDescriptor constructor = DescriptorUtils.getConstructorOfDataClass(classDescriptor);
|
||||
createComponentFunctions(classDescriptor, constructor);
|
||||
createCopyFunction(classDescriptor, constructor);
|
||||
|
||||
@@ -48,14 +48,20 @@ public class DeclarationsChecker {
|
||||
}
|
||||
|
||||
public void process(@NotNull BodiesResolveContext bodiesResolveContext) {
|
||||
Map<JetClass, MutableClassDescriptor> classes = bodiesResolveContext.getClasses();
|
||||
for (Map.Entry<JetClass, MutableClassDescriptor> entry : classes.entrySet()) {
|
||||
JetClass aClass = entry.getKey();
|
||||
Map<JetClassOrObject, MutableClassDescriptor> classes = bodiesResolveContext.getClasses();
|
||||
for (Map.Entry<JetClassOrObject, MutableClassDescriptor> entry : classes.entrySet()) {
|
||||
JetClassOrObject classOrObject = entry.getKey();
|
||||
MutableClassDescriptor classDescriptor = entry.getValue();
|
||||
if (!bodiesResolveContext.completeAnalysisNeeded(aClass)) continue;
|
||||
if (!bodiesResolveContext.completeAnalysisNeeded(classOrObject)) continue;
|
||||
|
||||
checkClass(aClass, classDescriptor);
|
||||
modifiersChecker.checkModifiersForDeclaration(aClass, classDescriptor);
|
||||
if (classOrObject instanceof JetClass) {
|
||||
checkClass((JetClass) classOrObject, classDescriptor);
|
||||
}
|
||||
else if (classOrObject instanceof JetObjectDeclaration) {
|
||||
checkObject((JetObjectDeclaration) classOrObject);
|
||||
}
|
||||
|
||||
modifiersChecker.checkModifiersForDeclaration(classOrObject, classDescriptor);
|
||||
}
|
||||
|
||||
Map<JetObjectDeclaration, MutableClassDescriptor> objects = bodiesResolveContext.getObjects();
|
||||
|
||||
@@ -23,7 +23,6 @@ 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.JetClass;
|
||||
import org.jetbrains.jet.lang.psi.JetClassOrObject;
|
||||
import org.jetbrains.jet.lang.psi.JetDeclaration;
|
||||
import org.jetbrains.jet.lang.psi.JetObjectDeclaration;
|
||||
@@ -60,7 +59,7 @@ public class OverloadResolver {
|
||||
MultiMap<ClassDescriptor, ConstructorDescriptor> inClasses = pair.first;
|
||||
MultiMap<Key, ConstructorDescriptor> inNamespaces = pair.second;
|
||||
|
||||
for (Map.Entry<JetClass, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
for (Map.Entry<JetClassOrObject, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
checkOverloadsInAClass(entry.getValue(), entry.getKey(), inClasses.get(entry.getValue()));
|
||||
}
|
||||
for (Map.Entry<JetObjectDeclaration, MutableClassDescriptor> entry : context.getObjects().entrySet()) {
|
||||
@@ -94,8 +93,7 @@ public class OverloadResolver {
|
||||
MultiMap<ClassDescriptor, ConstructorDescriptor> inClasses = MultiMap.create();
|
||||
MultiMap<Key, ConstructorDescriptor> inNamespaces = MultiMap.create();
|
||||
|
||||
for (Map.Entry<JetClass, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
MutableClassDescriptor klass = entry.getValue();
|
||||
for (MutableClassDescriptor klass : context.getClasses().values()) {
|
||||
DeclarationDescriptor containingDeclaration = klass.getContainingDeclaration();
|
||||
if (containingDeclaration instanceof NamespaceDescriptor) {
|
||||
NamespaceDescriptor namespaceDescriptor = (NamespaceDescriptor) containingDeclaration;
|
||||
|
||||
@@ -213,7 +213,7 @@ public class OverrideResolver {
|
||||
}
|
||||
|
||||
private void checkOverrides() {
|
||||
for (Map.Entry<JetClass, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
for (Map.Entry<JetClassOrObject, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
checkOverridesInAClass(entry.getValue(), entry.getKey());
|
||||
}
|
||||
for (Map.Entry<JetObjectDeclaration, MutableClassDescriptor> entry : context.getObjects().entrySet()) {
|
||||
|
||||
@@ -41,7 +41,7 @@ public class TopDownAnalysisContext implements BodiesResolveContext {
|
||||
|
||||
private DataFlowInfo outerDataFlowInfo = DataFlowInfo.EMPTY;
|
||||
|
||||
private final Map<JetClass, MutableClassDescriptor> classes = Maps.newLinkedHashMap();
|
||||
private final Map<JetClassOrObject, MutableClassDescriptor> classes = Maps.newLinkedHashMap();
|
||||
private final Map<JetObjectDeclaration, MutableClassDescriptor> objects = Maps.newLinkedHashMap();
|
||||
protected final Map<JetFile, NamespaceDescriptorImpl> namespaceDescriptors = Maps.newHashMap();
|
||||
private List<MutableClassDescriptorLite> classesTopologicalOrder = null;
|
||||
@@ -107,7 +107,7 @@ public class TopDownAnalysisContext implements BodiesResolveContext {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<JetClass, MutableClassDescriptor> getClasses() {
|
||||
public Map<JetClassOrObject, MutableClassDescriptor> getClasses() {
|
||||
return classes;
|
||||
}
|
||||
|
||||
@@ -183,6 +183,7 @@ public class TopDownAnalysisContext implements BodiesResolveContext {
|
||||
this.classesTopologicalOrder = classesTopologicalOrder;
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public DataFlowInfo getOuterDataFlowInfo() {
|
||||
return outerDataFlowInfo;
|
||||
|
||||
@@ -149,7 +149,7 @@ public class TypeHierarchyResolver {
|
||||
checkTypesInClassHeaders(); // Check bounds in the types used in generic bounds and supertype lists
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@NotNull
|
||||
private Collection<JetDeclarationContainer> collectNamespacesAndClassifiers(
|
||||
@NotNull JetScope outerScope,
|
||||
@NotNull NamespaceLikeBuilder owner,
|
||||
@@ -176,29 +176,38 @@ public class TypeHierarchyResolver {
|
||||
}
|
||||
|
||||
private void createTypeConstructors() {
|
||||
for (Map.Entry<JetClass, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
JetClass jetClass = entry.getKey();
|
||||
for (Map.Entry<JetClassOrObject, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
JetClassOrObject classOrObject = entry.getKey();
|
||||
MutableClassDescriptor descriptor = entry.getValue();
|
||||
descriptorResolver.resolveMutableClassDescriptor(jetClass, descriptor, trace);
|
||||
descriptor.createTypeConstructor();
|
||||
if (classOrObject instanceof JetClass) {
|
||||
descriptorResolver.resolveMutableClassDescriptor((JetClass) classOrObject, descriptor, trace);
|
||||
descriptor.createTypeConstructor();
|
||||
}
|
||||
else if (classOrObject instanceof JetObjectDeclaration) {
|
||||
initializeObject((JetObjectDeclaration) classOrObject, descriptor);
|
||||
}
|
||||
}
|
||||
for (Map.Entry<JetObjectDeclaration, MutableClassDescriptor> entry : context.getObjects().entrySet()) {
|
||||
JetObjectDeclaration objectDeclaration = entry.getKey();
|
||||
MutableClassDescriptor descriptor = entry.getValue();
|
||||
descriptor.setModality(Modality.FINAL);
|
||||
descriptor.setVisibility(resolveVisibilityFromModifiers(objectDeclaration, getDefaultClassVisibility(descriptor)));
|
||||
descriptor.setTypeParameterDescriptors(new ArrayList<TypeParameterDescriptor>(0));
|
||||
descriptor.createTypeConstructor();
|
||||
initializeObject(entry.getKey(), entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
private static void initializeObject(@NotNull JetObjectDeclaration declaration, @NotNull MutableClassDescriptor descriptor) {
|
||||
descriptor.setModality(Modality.FINAL);
|
||||
descriptor.setVisibility(resolveVisibilityFromModifiers(declaration, getDefaultClassVisibility(descriptor)));
|
||||
descriptor.setTypeParameterDescriptors(Collections.<TypeParameterDescriptor>emptyList());
|
||||
descriptor.createTypeConstructor();
|
||||
}
|
||||
|
||||
private void resolveTypesInClassHeaders() {
|
||||
for (Map.Entry<JetClass, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
JetClass jetClass = entry.getKey();
|
||||
for (Map.Entry<JetClassOrObject, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||
JetClassOrObject classOrObject = entry.getKey();
|
||||
MutableClassDescriptor descriptor = entry.getValue();
|
||||
descriptorResolver.resolveGenericBounds(jetClass, descriptor.getScopeForSupertypeResolution(),
|
||||
(List) descriptor.getTypeConstructor().getParameters(), trace);
|
||||
descriptorResolver.resolveSupertypesForMutableClassDescriptor(jetClass, descriptor, trace);
|
||||
if (classOrObject instanceof JetClass) {
|
||||
descriptorResolver.resolveGenericBounds((JetClass) classOrObject, descriptor.getScopeForSupertypeResolution(),
|
||||
(List) descriptor.getTypeConstructor().getParameters(), trace);
|
||||
}
|
||||
descriptorResolver.resolveSupertypesForMutableClassDescriptor(classOrObject, descriptor, trace);
|
||||
}
|
||||
for (Map.Entry<JetObjectDeclaration, MutableClassDescriptor> entry : context.getObjects().entrySet()) {
|
||||
JetClassOrObject jetClass = entry.getKey();
|
||||
@@ -395,11 +404,14 @@ public class TypeHierarchyResolver {
|
||||
}
|
||||
|
||||
private void checkTypesInClassHeaders() {
|
||||
for (JetClass jetClass : context.getClasses().keySet()) {
|
||||
for (JetDelegationSpecifier delegationSpecifier : jetClass.getDelegationSpecifiers()) {
|
||||
for (JetClassOrObject classOrObject : context.getClasses().keySet()) {
|
||||
for (JetDelegationSpecifier delegationSpecifier : classOrObject.getDelegationSpecifiers()) {
|
||||
checkBoundsForTypeInClassHeader(delegationSpecifier.getTypeReference());
|
||||
}
|
||||
|
||||
if (!(classOrObject instanceof JetClass)) continue;
|
||||
JetClass jetClass = (JetClass) classOrObject;
|
||||
|
||||
for (JetTypeParameter jetTypeParameter : jetClass.getTypeParameters()) {
|
||||
checkBoundsForTypeInClassHeader(jetTypeParameter.getExtendsBound());
|
||||
}
|
||||
|
||||
@@ -428,7 +428,7 @@ public class ResolveElementCache {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<JetClass, MutableClassDescriptor> getClasses() {
|
||||
public Map<JetClassOrObject, MutableClassDescriptor> getClasses() {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user