Interface ClassDescriptorWithResolutionScopes extracted for both lazy and mutable classes
This commit is contained in:
@@ -166,8 +166,8 @@ public class BodyResolver {
|
|||||||
MutableClassDescriptor descriptor = entry.getValue();
|
MutableClassDescriptor descriptor = entry.getValue();
|
||||||
resolveDelegationSpecifierList(classOrObject, descriptor,
|
resolveDelegationSpecifierList(classOrObject, descriptor,
|
||||||
descriptor.getUnsubstitutedPrimaryConstructor(),
|
descriptor.getUnsubstitutedPrimaryConstructor(),
|
||||||
descriptor.getScopeForSupertypeResolution(),
|
descriptor.getScopeForClassHeaderResolution(),
|
||||||
descriptor.getScopeForMemberResolution());
|
descriptor.getScopeForMemberDeclarationResolution());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -342,7 +342,7 @@ public class BodyResolver {
|
|||||||
|
|
||||||
private void resolveClassAnnotations() {
|
private void resolveClassAnnotations() {
|
||||||
for (Map.Entry<JetClassOrObject, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
for (Map.Entry<JetClassOrObject, MutableClassDescriptor> entry : context.getClasses().entrySet()) {
|
||||||
resolveAnnotationArguments(entry.getValue().getScopeForSupertypeResolution(), entry.getKey());
|
resolveAnnotationArguments(entry.getValue().getScopeForClassHeaderResolution(), entry.getKey());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -351,7 +351,7 @@ public class BodyResolver {
|
|||||||
JetClassOrObject classOrObject = entry.getKey();
|
JetClassOrObject classOrObject = entry.getKey();
|
||||||
MutableClassDescriptor descriptor = entry.getValue();
|
MutableClassDescriptor descriptor = entry.getValue();
|
||||||
resolveAnonymousInitializers(classOrObject, descriptor.getUnsubstitutedPrimaryConstructor(),
|
resolveAnonymousInitializers(classOrObject, descriptor.getUnsubstitutedPrimaryConstructor(),
|
||||||
descriptor.getScopeForInitializers());
|
descriptor.getScopeForInitializerResolution());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -394,10 +394,10 @@ public class BodyResolver {
|
|||||||
MutableClassDescriptor classDescriptor = entry.getValue();
|
MutableClassDescriptor classDescriptor = entry.getValue();
|
||||||
ConstructorDescriptor unsubstitutedPrimaryConstructor = classDescriptor.getUnsubstitutedPrimaryConstructor();
|
ConstructorDescriptor unsubstitutedPrimaryConstructor = classDescriptor.getUnsubstitutedPrimaryConstructor();
|
||||||
|
|
||||||
annotationResolver.resolveAnnotationsArguments(classDescriptor.getScopeForSupertypeResolution(), klass.getPrimaryConstructorModifierList(), trace);
|
annotationResolver.resolveAnnotationsArguments(classDescriptor.getScopeForClassHeaderResolution(), klass.getPrimaryConstructorModifierList(), trace);
|
||||||
|
|
||||||
if (unsubstitutedPrimaryConstructor != null) {
|
if (unsubstitutedPrimaryConstructor != null) {
|
||||||
WritableScope parameterScope = getPrimaryConstructorParametersScope(classDescriptor.getScopeForSupertypeResolution(), unsubstitutedPrimaryConstructor);
|
WritableScope parameterScope = getPrimaryConstructorParametersScope(classDescriptor.getScopeForClassHeaderResolution(), unsubstitutedPrimaryConstructor);
|
||||||
expressionTypingServices.resolveValueParameters(klass.getPrimaryConstructorParameters(), unsubstitutedPrimaryConstructor.getValueParameters(),
|
expressionTypingServices.resolveValueParameters(klass.getPrimaryConstructorParameters(), unsubstitutedPrimaryConstructor.getValueParameters(),
|
||||||
parameterScope, context.getOuterDataFlowInfo(), trace, context.completeAnalysisNeeded(klass));
|
parameterScope, context.getOuterDataFlowInfo(), trace, context.completeAnalysisNeeded(klass));
|
||||||
}
|
}
|
||||||
@@ -447,7 +447,7 @@ public class BodyResolver {
|
|||||||
JetExpression delegateExpression = property.getDelegateExpression();
|
JetExpression delegateExpression = property.getDelegateExpression();
|
||||||
if (delegateExpression != null) {
|
if (delegateExpression != null) {
|
||||||
assert initializer == null : "Initializer should be null for delegated property : " + property.getText();
|
assert initializer == null : "Initializer should be null for delegated property : " + property.getText();
|
||||||
resolvePropertyDelegate(property, propertyDescriptor, delegateExpression, classDescriptor.getScopeForMemberResolution(), propertyScope);
|
resolvePropertyDelegate(property, propertyDescriptor, delegateExpression, classDescriptor.getScopeForMemberDeclarationResolution(), propertyScope);
|
||||||
}
|
}
|
||||||
|
|
||||||
resolveAnnotationArguments(propertyScope, property);
|
resolveAnnotationArguments(propertyScope, property);
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ public class DeclarationResolver {
|
|||||||
if (modifierList != null) {
|
if (modifierList != null) {
|
||||||
MutableClassDescriptor descriptor = entry.getValue();
|
MutableClassDescriptor descriptor = entry.getValue();
|
||||||
descriptor.addAnnotations(annotationResolver.resolveAnnotationsWithoutArguments(
|
descriptor.addAnnotations(annotationResolver.resolveAnnotationsWithoutArguments(
|
||||||
descriptor.getScopeForSupertypeResolution(), modifierList, trace));
|
descriptor.getScopeForClassHeaderResolution(), modifierList, trace));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -178,8 +178,8 @@ public class DeclarationResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
resolveFunctionAndPropertyHeaders(
|
resolveFunctionAndPropertyHeaders(
|
||||||
classOrObject.getDeclarations(), classDescriptor.getScopeForMemberResolution(),
|
classOrObject.getDeclarations(), classDescriptor.getScopeForMemberDeclarationResolution(),
|
||||||
classDescriptor.getScopeForInitializers(), classDescriptor.getScopeForMemberResolution(),
|
classDescriptor.getScopeForInitializerResolution(), classDescriptor.getScopeForMemberDeclarationResolution(),
|
||||||
classDescriptor.getBuilder());
|
classDescriptor.getBuilder());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -283,7 +283,7 @@ public class DeclarationResolver {
|
|||||||
boolean isAnnotationClass = DescriptorUtils.isAnnotationClass(classDescriptor);
|
boolean isAnnotationClass = DescriptorUtils.isAnnotationClass(classDescriptor);
|
||||||
|
|
||||||
// TODO : not all the parameters are real properties
|
// TODO : not all the parameters are real properties
|
||||||
JetScope memberScope = classDescriptor.getScopeForSupertypeResolution();
|
JetScope memberScope = classDescriptor.getScopeForClassHeaderResolution();
|
||||||
ConstructorDescriptor constructorDescriptor = descriptorResolver.resolvePrimaryConstructorDescriptor(memberScope, classDescriptor, klass, trace);
|
ConstructorDescriptor constructorDescriptor = descriptorResolver.resolvePrimaryConstructorDescriptor(memberScope, classDescriptor, klass, trace);
|
||||||
if (constructorDescriptor != null) {
|
if (constructorDescriptor != null) {
|
||||||
List<ValueParameterDescriptor> valueParameterDescriptors = constructorDescriptor.getValueParameters();
|
List<ValueParameterDescriptor> valueParameterDescriptors = constructorDescriptor.getValueParameters();
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ public class DescriptorResolver {
|
|||||||
@NotNull MutableClassDescriptor descriptor,
|
@NotNull MutableClassDescriptor descriptor,
|
||||||
BindingTrace trace
|
BindingTrace trace
|
||||||
) {
|
) {
|
||||||
for (JetType supertype : resolveSupertypes(descriptor.getScopeForSupertypeResolution(), descriptor, jetClass, trace)) {
|
for (JetType supertype : resolveSupertypes(descriptor.getScopeForClassHeaderResolution(), descriptor, jetClass, trace)) {
|
||||||
descriptor.addSupertype(supertype);
|
descriptor.addSupertype(supertype);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -215,7 +215,7 @@ public class TypeHierarchyResolver {
|
|||||||
if (classOrObject instanceof JetClass) {
|
if (classOrObject instanceof JetClass) {
|
||||||
MutableClassDescriptor descriptor = entry.getValue();
|
MutableClassDescriptor descriptor = entry.getValue();
|
||||||
//noinspection unchecked
|
//noinspection unchecked
|
||||||
descriptorResolver.resolveGenericBounds((JetClass) classOrObject, descriptor.getScopeForSupertypeResolution(),
|
descriptorResolver.resolveGenericBounds((JetClass) classOrObject, descriptor.getScopeForClassHeaderResolution(),
|
||||||
(List) descriptor.getTypeConstructor().getParameters(), trace);
|
(List) descriptor.getTypeConstructor().getParameters(), trace);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -610,7 +610,7 @@ public class TypeHierarchyResolver {
|
|||||||
|
|
||||||
createClassObjectForEnumClass(mutableClassDescriptor);
|
createClassObjectForEnumClass(mutableClassDescriptor);
|
||||||
|
|
||||||
JetScope classScope = mutableClassDescriptor.getScopeForMemberResolution();
|
JetScope classScope = mutableClassDescriptor.getScopeForMemberDeclarationResolution();
|
||||||
|
|
||||||
prepareForDeferredCall(classScope, mutableClassDescriptor, klass);
|
prepareForDeferredCall(classScope, mutableClassDescriptor, klass);
|
||||||
|
|
||||||
@@ -625,7 +625,7 @@ public class TypeHierarchyResolver {
|
|||||||
) {
|
) {
|
||||||
MutableClassDescriptor descriptor = new MutableClassDescriptor(owner.getOwnerForChildren(), outerScope, kind, false, name);
|
MutableClassDescriptor descriptor = new MutableClassDescriptor(owner.getOwnerForChildren(), outerScope, kind, false, name);
|
||||||
|
|
||||||
prepareForDeferredCall(descriptor.getScopeForMemberResolution(), descriptor, declaration);
|
prepareForDeferredCall(descriptor.getScopeForMemberDeclarationResolution(), descriptor, declaration);
|
||||||
|
|
||||||
createPrimaryConstructorForObject(declaration, descriptor);
|
createPrimaryConstructorForObject(declaration, descriptor);
|
||||||
trace.record(BindingContext.CLASS, declaration, descriptor);
|
trace.record(BindingContext.CLASS, declaration, descriptor);
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ public class ScopeProvider {
|
|||||||
JetClassOrObject classOrObject = (JetClassOrObject) parentDeclaration;
|
JetClassOrObject classOrObject = (JetClassOrObject) parentDeclaration;
|
||||||
LazyClassDescriptor classDescriptor = (LazyClassDescriptor) resolveSession.getClassDescriptor(classOrObject);
|
LazyClassDescriptor classDescriptor = (LazyClassDescriptor) resolveSession.getClassDescriptor(classOrObject);
|
||||||
if (jetDeclaration instanceof JetClassInitializer || jetDeclaration instanceof JetProperty) {
|
if (jetDeclaration instanceof JetClassInitializer || jetDeclaration instanceof JetProperty) {
|
||||||
return classDescriptor.getScopeForPropertyInitializerResolution();
|
return classDescriptor.getScopeForInitializerResolution();
|
||||||
}
|
}
|
||||||
return classDescriptor.getScopeForMemberDeclarationResolution();
|
return classDescriptor.getScopeForMemberDeclarationResolution();
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-3
@@ -31,6 +31,7 @@ import org.jetbrains.jet.lang.descriptors.impl.ClassDescriptorBase;
|
|||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
|
import org.jetbrains.jet.lang.resolve.AnnotationResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.ClassDescriptorWithResolutionScopes;
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.ForceResolveUtil;
|
import org.jetbrains.jet.lang.resolve.lazy.ForceResolveUtil;
|
||||||
import org.jetbrains.jet.lang.resolve.lazy.LazyEntity;
|
import org.jetbrains.jet.lang.resolve.lazy.LazyEntity;
|
||||||
@@ -56,7 +57,7 @@ import static org.jetbrains.jet.lang.resolve.DescriptorUtils.isSyntheticClassObj
|
|||||||
import static org.jetbrains.jet.lang.resolve.ModifiersChecker.*;
|
import static org.jetbrains.jet.lang.resolve.ModifiersChecker.*;
|
||||||
import static org.jetbrains.jet.lang.resolve.name.SpecialNames.getClassObjectName;
|
import static org.jetbrains.jet.lang.resolve.name.SpecialNames.getClassObjectName;
|
||||||
|
|
||||||
public class LazyClassDescriptor extends ClassDescriptorBase implements LazyEntity, ClassDescriptor {
|
public class LazyClassDescriptor extends ClassDescriptorBase implements LazyEntity, ClassDescriptorWithResolutionScopes {
|
||||||
private static final Predicate<JetType> VALID_SUPERTYPE = new Predicate<JetType>() {
|
private static final Predicate<JetType> VALID_SUPERTYPE = new Predicate<JetType>() {
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(JetType type) {
|
public boolean apply(JetType type) {
|
||||||
@@ -157,6 +158,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyEnti
|
|||||||
return unsubstitutedMemberScope;
|
return unsubstitutedMemberScope;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
@NotNull
|
@NotNull
|
||||||
public JetScope getScopeForClassHeaderResolution() {
|
public JetScope getScopeForClassHeaderResolution() {
|
||||||
return scopeForClassHeaderResolution.invoke();
|
return scopeForClassHeaderResolution.invoke();
|
||||||
@@ -177,6 +179,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyEnti
|
|||||||
getScopeProvider().getResolutionScopeForDeclaration(scopeAnchor));
|
getScopeProvider().getResolutionScopeForDeclaration(scopeAnchor));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
@NotNull
|
@NotNull
|
||||||
public JetScope getScopeForMemberDeclarationResolution() {
|
public JetScope getScopeForMemberDeclarationResolution() {
|
||||||
return scopeForMemberDeclarationResolution.invoke();
|
return scopeForMemberDeclarationResolution.invoke();
|
||||||
@@ -200,8 +203,9 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyEnti
|
|||||||
classObjectAdapterScope);
|
classObjectAdapterScope);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
@NotNull
|
@NotNull
|
||||||
public JetScope getScopeForPropertyInitializerResolution() {
|
public JetScope getScopeForInitializerResolution() {
|
||||||
return scopeForPropertyInitializerResolution.invoke();
|
return scopeForPropertyInitializerResolution.invoke();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -332,7 +336,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyEnti
|
|||||||
getScopeForClassHeaderResolution();
|
getScopeForClassHeaderResolution();
|
||||||
getScopeForMemberDeclarationResolution();
|
getScopeForMemberDeclarationResolution();
|
||||||
ForceResolveUtil.forceResolveAllContents(getScopeForMemberLookup());
|
ForceResolveUtil.forceResolveAllContents(getScopeForMemberLookup());
|
||||||
getScopeForPropertyInitializerResolution();
|
getScopeForInitializerResolution();
|
||||||
getUnsubstitutedInnerClassesScope();
|
getUnsubstitutedInnerClassesScope();
|
||||||
ForceResolveUtil.forceResolveAllContents(getTypeConstructor());
|
ForceResolveUtil.forceResolveAllContents(getTypeConstructor());
|
||||||
getUnsubstitutedPrimaryConstructor();
|
getUnsubstitutedPrimaryConstructor();
|
||||||
|
|||||||
+1
-1
@@ -94,7 +94,7 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope<LazyClassDescr
|
|||||||
@Override
|
@Override
|
||||||
protected JetScope getScopeForMemberDeclarationResolution(JetDeclaration declaration) {
|
protected JetScope getScopeForMemberDeclarationResolution(JetDeclaration declaration) {
|
||||||
if (declaration instanceof JetProperty) {
|
if (declaration instanceof JetProperty) {
|
||||||
return thisDescriptor.getScopeForPropertyInitializerResolution();
|
return thisDescriptor.getScopeForInitializerResolution();
|
||||||
}
|
}
|
||||||
return thisDescriptor.getScopeForMemberDeclarationResolution();
|
return thisDescriptor.getScopeForMemberDeclarationResolution();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,42 +3,42 @@
|
|||||||
<class-object-for-Class>.classObjFunc:SimpleFunctionDescriptor
|
<class-object-for-Class>.classObjFunc:SimpleFunctionDescriptor
|
||||||
<class-object-for-Class>.classObjProp:PropertyDescriptor
|
<class-object-for-Class>.classObjProp:PropertyDescriptor
|
||||||
<class-object-for-Class>.this:ReceiverParameterDescriptor
|
<class-object-for-Class>.this:ReceiverParameterDescriptor
|
||||||
<class-object-for-Class>:ClassDescriptor
|
<class-object-for-Class>:ClassDescriptorWithResolutionScopes
|
||||||
<class-object-for-NestedClass>.<init>():ConstructorDescriptor
|
<class-object-for-NestedClass>.<init>():ConstructorDescriptor
|
||||||
<class-object-for-NestedClass>.nestedClassObjFunc:SimpleFunctionDescriptor
|
<class-object-for-NestedClass>.nestedClassObjFunc:SimpleFunctionDescriptor
|
||||||
<class-object-for-NestedClass>.this:ReceiverParameterDescriptor
|
<class-object-for-NestedClass>.this:ReceiverParameterDescriptor
|
||||||
<class-object-for-NestedClass>:ClassDescriptor
|
<class-object-for-NestedClass>:ClassDescriptorWithResolutionScopes
|
||||||
<class-object-for-NestedObject>.<init>():ConstructorDescriptor
|
<class-object-for-NestedObject>.<init>():ConstructorDescriptor
|
||||||
<class-object-for-NestedObject>.this:ReceiverParameterDescriptor
|
<class-object-for-NestedObject>.this:ReceiverParameterDescriptor
|
||||||
<class-object-for-NestedObject>:ClassDescriptor
|
<class-object-for-NestedObject>:ClassDescriptorWithResolutionScopes
|
||||||
<class-object-for-Object>.<init>():ConstructorDescriptor
|
<class-object-for-Object>.<init>():ConstructorDescriptor
|
||||||
<class-object-for-Object>.this:ReceiverParameterDescriptor
|
<class-object-for-Object>.this:ReceiverParameterDescriptor
|
||||||
<class-object-for-Object>:ClassDescriptor
|
<class-object-for-Object>:ClassDescriptorWithResolutionScopes
|
||||||
<set-?>:ValueParameterDescriptor
|
<set-?>:ValueParameterDescriptor
|
||||||
Class.<get-classProp>:PropertyGetterDescriptor
|
Class.<get-classProp>:PropertyGetterDescriptor
|
||||||
Class.<init>():ConstructorDescriptor
|
Class.<init>():ConstructorDescriptor
|
||||||
Class.classFunc:SimpleFunctionDescriptor
|
Class.classFunc:SimpleFunctionDescriptor
|
||||||
Class.classProp:PropertyDescriptor
|
Class.classProp:PropertyDescriptor
|
||||||
Class.this:ReceiverParameterDescriptor
|
Class.this:ReceiverParameterDescriptor
|
||||||
Class:ClassDescriptor
|
Class:ClassDescriptorWithResolutionScopes
|
||||||
NestedClass.<init>():ConstructorDescriptor
|
NestedClass.<init>():ConstructorDescriptor
|
||||||
NestedClass.this:ReceiverParameterDescriptor
|
NestedClass.this:ReceiverParameterDescriptor
|
||||||
NestedClass:ClassDescriptor
|
NestedClass:ClassDescriptorWithResolutionScopes
|
||||||
NestedObject.<init>():ConstructorDescriptor
|
NestedObject.<init>():ConstructorDescriptor
|
||||||
NestedObject.nestedFunc:SimpleFunctionDescriptor
|
NestedObject.nestedFunc:SimpleFunctionDescriptor
|
||||||
NestedObject.this:ReceiverParameterDescriptor
|
NestedObject.this:ReceiverParameterDescriptor
|
||||||
NestedObject:ClassDescriptor
|
NestedObject:ClassDescriptorWithResolutionScopes
|
||||||
NestedTrait.nestedTraitFun:SimpleFunctionDescriptor
|
NestedTrait.nestedTraitFun:SimpleFunctionDescriptor
|
||||||
NestedTrait.this:ReceiverParameterDescriptor
|
NestedTrait.this:ReceiverParameterDescriptor
|
||||||
NestedTrait:ClassDescriptor
|
NestedTrait:ClassDescriptorWithResolutionScopes
|
||||||
Object.<get-objProp>:PropertyGetterDescriptor
|
Object.<get-objProp>:PropertyGetterDescriptor
|
||||||
Object.<init>():ConstructorDescriptor
|
Object.<init>():ConstructorDescriptor
|
||||||
Object.objFunc:SimpleFunctionDescriptor
|
Object.objFunc:SimpleFunctionDescriptor
|
||||||
Object.objProp:PropertyDescriptor
|
Object.objProp:PropertyDescriptor
|
||||||
Object.this:ReceiverParameterDescriptor
|
Object.this:ReceiverParameterDescriptor
|
||||||
Object:ClassDescriptor
|
Object:ClassDescriptorWithResolutionScopes
|
||||||
Outer.this:ReceiverParameterDescriptor
|
Outer.this:ReceiverParameterDescriptor
|
||||||
Outer:ClassDescriptor
|
Outer:ClassDescriptorWithResolutionScopes
|
||||||
T1:TypeParameterDescriptor
|
T1:TypeParameterDescriptor
|
||||||
T2:TypeParameterDescriptor
|
T2:TypeParameterDescriptor
|
||||||
T3:TypeParameterDescriptor
|
T3:TypeParameterDescriptor
|
||||||
@@ -48,7 +48,7 @@ Trait.<get-traitProp>:PropertyGetterDescriptor
|
|||||||
Trait.this:ReceiverParameterDescriptor
|
Trait.this:ReceiverParameterDescriptor
|
||||||
Trait.traitFunc:SimpleFunctionDescriptor
|
Trait.traitFunc:SimpleFunctionDescriptor
|
||||||
Trait.traitProp:PropertyDescriptor
|
Trait.traitProp:PropertyDescriptor
|
||||||
Trait:ClassDescriptor
|
Trait:ClassDescriptorWithResolutionScopes
|
||||||
a:ValueParameterDescriptor
|
a:ValueParameterDescriptor
|
||||||
fake <class-object-for-NestedObject>.nestedFunc:SimpleFunctionDescriptor
|
fake <class-object-for-NestedObject>.nestedFunc:SimpleFunctionDescriptor
|
||||||
fake <class-object-for-Object>.<get-objProp>:PropertyGetterDescriptor
|
fake <class-object-for-Object>.<get-objProp>:PropertyGetterDescriptor
|
||||||
@@ -67,4 +67,4 @@ innerTest.propVar:PropertyDescriptor
|
|||||||
innerTest:PackageViewDescriptor
|
innerTest:PackageViewDescriptor
|
||||||
prop.this:ReceiverParameterDescriptor
|
prop.this:ReceiverParameterDescriptor
|
||||||
prop.this:ReceiverParameterDescriptor
|
prop.this:ReceiverParameterDescriptor
|
||||||
test:PackageViewDescriptor
|
test:PackageViewDescriptor
|
||||||
+31
@@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2014 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.jet.lang.descriptors;
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
|
|
||||||
|
public interface ClassDescriptorWithResolutionScopes extends ClassDescriptor {
|
||||||
|
@NotNull
|
||||||
|
JetScope getScopeForClassHeaderResolution();
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
JetScope getScopeForMemberDeclarationResolution();
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
JetScope getScopeForInitializerResolution();
|
||||||
|
}
|
||||||
+7
-4
@@ -27,7 +27,7 @@ import java.util.Collection;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class MutableClassDescriptor extends MutableClassDescriptorLite {
|
public class MutableClassDescriptor extends MutableClassDescriptorLite implements ClassDescriptorWithResolutionScopes {
|
||||||
private final Set<ConstructorDescriptor> constructors = Sets.newLinkedHashSet();
|
private final Set<ConstructorDescriptor> constructors = Sets.newLinkedHashSet();
|
||||||
private ConstructorDescriptor primaryConstructor;
|
private ConstructorDescriptor primaryConstructor;
|
||||||
|
|
||||||
@@ -137,13 +137,15 @@ public class MutableClassDescriptor extends MutableClassDescriptorLite {
|
|||||||
scopeForMemberResolution.setImplicitReceiver(getThisAsReceiverParameter());
|
scopeForMemberResolution.setImplicitReceiver(getThisAsReceiverParameter());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
@NotNull
|
@NotNull
|
||||||
public JetScope getScopeForSupertypeResolution() {
|
public JetScope getScopeForClassHeaderResolution() {
|
||||||
return scopeForSupertypeResolution;
|
return scopeForSupertypeResolution;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
@NotNull
|
@NotNull
|
||||||
public JetScope getScopeForMemberResolution() {
|
public JetScope getScopeForMemberDeclarationResolution() {
|
||||||
return scopeForMemberResolution;
|
return scopeForMemberResolution;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,8 +156,9 @@ public class MutableClassDescriptor extends MutableClassDescriptorLite {
|
|||||||
return scopeForInitializers;
|
return scopeForInitializers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
@NotNull
|
@NotNull
|
||||||
public JetScope getScopeForInitializers() {
|
public JetScope getScopeForInitializerResolution() {
|
||||||
return getWritableScopeForInitializers();
|
return getWritableScopeForInitializers();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -312,7 +312,7 @@ public class ResolveElementCache {
|
|||||||
JetClassOrObject classOrObject = PsiTreeUtil.getParentOfType(classInitializer, JetClassOrObject.class);
|
JetClassOrObject classOrObject = PsiTreeUtil.getParentOfType(classInitializer, JetClassOrObject.class);
|
||||||
LazyClassDescriptor classOrObjectDescriptor = (LazyClassDescriptor) resolveSession.resolveToDescriptor(classOrObject);
|
LazyClassDescriptor classOrObjectDescriptor = (LazyClassDescriptor) resolveSession.resolveToDescriptor(classOrObject);
|
||||||
bodyResolver.resolveAnonymousInitializers(classOrObject, classOrObjectDescriptor.getUnsubstitutedPrimaryConstructor(),
|
bodyResolver.resolveAnonymousInitializers(classOrObject, classOrObjectDescriptor.getUnsubstitutedPrimaryConstructor(),
|
||||||
classOrObjectDescriptor.getScopeForPropertyInitializerResolution());
|
classOrObjectDescriptor.getScopeForInitializerResolution());
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -670,7 +670,7 @@ public class CreateFunctionFromUsageFix extends CreateFromUsageFixBase {
|
|||||||
scope = currentFileModule.getPackage(JetPsiUtil.getFQName(currentFile)).getMemberScope();
|
scope = currentFileModule.getPackage(JetPsiUtil.getFQName(currentFile)).getMemberScope();
|
||||||
} else {
|
} else {
|
||||||
assert ownerClassDescriptor instanceof MutableClassDescriptor;
|
assert ownerClassDescriptor instanceof MutableClassDescriptor;
|
||||||
scope = ((MutableClassDescriptor) ownerClassDescriptor).getScopeForMemberResolution();
|
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