Give receiver for chained scope in constructor
This commit is contained in:
@@ -148,7 +148,8 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
|
||||
scope.addLabeledDeclaration(this);
|
||||
scope.changeLockLevel(WritableScope.LockLevel.READING);
|
||||
|
||||
scopeForMemberDeclarationResolution = new ChainedScope(this, scope, getScopeForMemberLookup(), getScopeForClassHeaderResolution());
|
||||
scopeForMemberDeclarationResolution = new ChainedScope(this, getScopeForMemberLookup().getImplicitReceiver(),
|
||||
scope, getScopeForMemberLookup(), getScopeForClassHeaderResolution());
|
||||
}
|
||||
return scopeForMemberDeclarationResolution;
|
||||
}
|
||||
|
||||
@@ -33,11 +33,17 @@ import java.util.Set;
|
||||
*/
|
||||
public class ChainedScope implements JetScope {
|
||||
private final DeclarationDescriptor containingDeclaration;
|
||||
private final ReceiverDescriptor implicitReceiver;
|
||||
private final JetScope[] scopeChain;
|
||||
private Collection<DeclarationDescriptor> allDescriptors;
|
||||
|
||||
public ChainedScope(DeclarationDescriptor containingDeclaration, JetScope... scopes) {
|
||||
this(containingDeclaration, ReceiverDescriptor.NO_RECEIVER, scopes);
|
||||
}
|
||||
|
||||
public ChainedScope(DeclarationDescriptor containingDeclaration, ReceiverDescriptor implicitReceiver, JetScope... scopes) {
|
||||
this.containingDeclaration = containingDeclaration;
|
||||
this.implicitReceiver = implicitReceiver;
|
||||
scopeChain = scopes.clone();
|
||||
}
|
||||
|
||||
@@ -118,13 +124,7 @@ public class ChainedScope implements JetScope {
|
||||
@NotNull
|
||||
@Override
|
||||
public ReceiverDescriptor getImplicitReceiver() {
|
||||
for (JetScope scope : scopeChain) {
|
||||
if (scope.getImplicitReceiver() != ReceiverDescriptor.NO_RECEIVER) {
|
||||
return scope.getImplicitReceiver();
|
||||
}
|
||||
}
|
||||
|
||||
return ReceiverDescriptor.NO_RECEIVER;
|
||||
return implicitReceiver;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user