DescriptorMatcher
This commit is contained in:
@@ -32,6 +32,7 @@ import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
|
|||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.autocasts.AutoCastServiceImpl;
|
import org.jetbrains.jet.lang.resolve.calls.autocasts.AutoCastServiceImpl;
|
||||||
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.DescriptorPredicate;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScopeUtils;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScopeUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ExpressionReceiver;
|
import org.jetbrains.jet.lang.resolve.scopes.receivers.ExpressionReceiver;
|
||||||
@@ -73,7 +74,8 @@ public final class TipsManager {
|
|||||||
|
|
||||||
for (ReceiverDescriptor descriptor : variantsForExplicitReceiver) {
|
for (ReceiverDescriptor descriptor : variantsForExplicitReceiver) {
|
||||||
descriptors.addAll(includeExternalCallableExtensions(
|
descriptors.addAll(includeExternalCallableExtensions(
|
||||||
excludePrivateDescriptors(descriptor.getType().getMemberScope().getAllDescriptors()),
|
// TODO: better predicate
|
||||||
|
excludePrivateDescriptors(descriptor.getType().getMemberScope().getAllDescriptors(DescriptorPredicate.all())),
|
||||||
resolutionScope, descriptor));
|
resolutionScope, descriptor));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,7 +83,8 @@ public final class TipsManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return includeExternalCallableExtensions(
|
return includeExternalCallableExtensions(
|
||||||
excludePrivateDescriptors(expressionType.getMemberScope().getAllDescriptors()),
|
// TODO: better predicate
|
||||||
|
excludePrivateDescriptors(expressionType.getMemberScope().getAllDescriptors(DescriptorPredicate.all())),
|
||||||
resolutionScope, new ExpressionReceiver(receiverExpression, expressionType));
|
resolutionScope, new ExpressionReceiver(receiverExpression, expressionType));
|
||||||
}
|
}
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
@@ -95,7 +98,8 @@ public final class TipsManager {
|
|||||||
JetScope resolutionScope = context.get(BindingContext.RESOLUTION_SCOPE, expression);
|
JetScope resolutionScope = context.get(BindingContext.RESOLUTION_SCOPE, expression);
|
||||||
if (resolutionScope != null) {
|
if (resolutionScope != null) {
|
||||||
if (expression.getParent() instanceof JetImportDirective || expression.getParent() instanceof JetNamespaceHeader) {
|
if (expression.getParent() instanceof JetImportDirective || expression.getParent() instanceof JetNamespaceHeader) {
|
||||||
return excludeNonPackageDescriptors(resolutionScope.getAllDescriptors());
|
// TODO: better predicate
|
||||||
|
return excludeNonPackageDescriptors(resolutionScope.getAllDescriptors(DescriptorPredicate.all()));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Collection<DeclarationDescriptor> descriptorsSet = Sets.newHashSet();
|
Collection<DeclarationDescriptor> descriptorsSet = Sets.newHashSet();
|
||||||
@@ -105,10 +109,12 @@ public final class TipsManager {
|
|||||||
|
|
||||||
for (ReceiverDescriptor receiverDescriptor : result) {
|
for (ReceiverDescriptor receiverDescriptor : result) {
|
||||||
JetType receiverType = receiverDescriptor.getType();
|
JetType receiverType = receiverDescriptor.getType();
|
||||||
descriptorsSet.addAll(receiverType.getMemberScope().getAllDescriptors());
|
// TODO: better predicate
|
||||||
|
descriptorsSet.addAll(receiverType.getMemberScope().getAllDescriptors(DescriptorPredicate.all()));
|
||||||
}
|
}
|
||||||
|
|
||||||
descriptorsSet.addAll(resolutionScope.getAllDescriptors());
|
// TODO: better predicate
|
||||||
|
descriptorsSet.addAll(resolutionScope.getAllDescriptors(DescriptorPredicate.all()));
|
||||||
return excludeNotCallableExtensions(excludePrivateDescriptors(descriptorsSet), resolutionScope);
|
return excludeNotCallableExtensions(excludePrivateDescriptors(descriptorsSet), resolutionScope);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -119,7 +125,8 @@ public final class TipsManager {
|
|||||||
public static Collection<DeclarationDescriptor> getReferenceVariants(JetNamespaceHeader expression, BindingContext context) {
|
public static Collection<DeclarationDescriptor> getReferenceVariants(JetNamespaceHeader expression, BindingContext context) {
|
||||||
JetScope resolutionScope = context.get(BindingContext.RESOLUTION_SCOPE, expression);
|
JetScope resolutionScope = context.get(BindingContext.RESOLUTION_SCOPE, expression);
|
||||||
if (resolutionScope != null) {
|
if (resolutionScope != null) {
|
||||||
return excludeNonPackageDescriptors(resolutionScope.getAllDescriptors());
|
// TODO: better predicate
|
||||||
|
return excludeNonPackageDescriptors(resolutionScope.getAllDescriptors(DescriptorPredicate.all()));
|
||||||
}
|
}
|
||||||
|
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant;
|
|||||||
import org.jetbrains.jet.lang.resolve.java.JvmAbi;
|
import org.jetbrains.jet.lang.resolve.java.JvmAbi;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JvmClassName;
|
import org.jetbrains.jet.lang.resolve.java.JvmClassName;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JvmStdlibNames;
|
import org.jetbrains.jet.lang.resolve.java.JvmStdlibNames;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicate;
|
||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
import org.jetbrains.jet.lexer.JetTokens;
|
import org.jetbrains.jet.lexer.JetTokens;
|
||||||
import org.objectweb.asm.AnnotationVisitor;
|
import org.objectweb.asm.AnnotationVisitor;
|
||||||
@@ -134,7 +135,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
|||||||
v.visitOuterClass(typeMapper.mapType(container.getDefaultType(), MapTypeMode.IMPL).getInternalName(), null, null);
|
v.visitOuterClass(typeMapper.mapType(container.getDefaultType(), MapTypeMode.IMPL).getInternalName(), null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (DeclarationDescriptor declarationDescriptor : descriptor.getUnsubstitutedInnerClassesScope().getAllDescriptors()) {
|
for (DeclarationDescriptor declarationDescriptor : descriptor.getUnsubstitutedInnerClassesScope().getAllDescriptors(DescriptorPredicate.all())) {
|
||||||
assert declarationDescriptor instanceof ClassDescriptor;
|
assert declarationDescriptor instanceof ClassDescriptor;
|
||||||
ClassDescriptor innerClass = (ClassDescriptor) declarationDescriptor;
|
ClassDescriptor innerClass = (ClassDescriptor) declarationDescriptor;
|
||||||
// TODO: proper access
|
// TODO: proper access
|
||||||
@@ -1024,19 +1025,17 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
|||||||
final PropertyCodegen propertyCodegen = new PropertyCodegen(delegateContext, v, functionCodegen, state);
|
final PropertyCodegen propertyCodegen = new PropertyCodegen(delegateContext, v, functionCodegen, state);
|
||||||
|
|
||||||
ClassDescriptor classDescriptor = bindingContext.get(BindingContext.CLASS, toClass);
|
ClassDescriptor classDescriptor = bindingContext.get(BindingContext.CLASS, toClass);
|
||||||
for (DeclarationDescriptor declaration : descriptor.getDefaultType().getMemberScope().getAllDescriptors()) {
|
for (DeclarationDescriptor declaration : descriptor.getDefaultType().getMemberScope().getAllDescriptors(DescriptorPredicate.callableMembers())) {
|
||||||
if (declaration instanceof CallableMemberDescriptor) {
|
CallableMemberDescriptor callableMemberDescriptor = (CallableMemberDescriptor) declaration;
|
||||||
CallableMemberDescriptor callableMemberDescriptor = (CallableMemberDescriptor) declaration;
|
if (callableMemberDescriptor.getKind() == CallableMemberDescriptor.Kind.DELEGATION) {
|
||||||
if (callableMemberDescriptor.getKind() == CallableMemberDescriptor.Kind.DELEGATION) {
|
Set<? extends CallableMemberDescriptor> overriddenDescriptors = callableMemberDescriptor.getOverriddenDescriptors();
|
||||||
Set<? extends CallableMemberDescriptor> overriddenDescriptors = callableMemberDescriptor.getOverriddenDescriptors();
|
for (CallableMemberDescriptor overriddenDescriptor : overriddenDescriptors) {
|
||||||
for (CallableMemberDescriptor overriddenDescriptor : overriddenDescriptors) {
|
if (overriddenDescriptor.getContainingDeclaration() == classDescriptor) {
|
||||||
if (overriddenDescriptor.getContainingDeclaration() == classDescriptor) {
|
if (declaration instanceof PropertyDescriptor) {
|
||||||
if (declaration instanceof PropertyDescriptor) {
|
propertyCodegen.genDelegate((PropertyDescriptor) declaration, (PropertyDescriptor) overriddenDescriptor, field);
|
||||||
propertyCodegen.genDelegate((PropertyDescriptor) declaration, (PropertyDescriptor) overriddenDescriptor, field);
|
}
|
||||||
}
|
else if (declaration instanceof SimpleFunctionDescriptor) {
|
||||||
else if (declaration instanceof SimpleFunctionDescriptor) {
|
functionCodegen.genDelegate((SimpleFunctionDescriptor) declaration, overriddenDescriptor, field);
|
||||||
functionCodegen.genDelegate((SimpleFunctionDescriptor) declaration, overriddenDescriptor, field);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1070,11 +1069,7 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
|
|||||||
List<Pair<CallableMemberDescriptor, CallableMemberDescriptor>> r = Lists.newArrayList();
|
List<Pair<CallableMemberDescriptor, CallableMemberDescriptor>> r = Lists.newArrayList();
|
||||||
|
|
||||||
root:
|
root:
|
||||||
for (DeclarationDescriptor decl : classDescriptor.getDefaultType().getMemberScope().getAllDescriptors()) {
|
for (DeclarationDescriptor decl : classDescriptor.getDefaultType().getMemberScope().getAllDescriptors(DescriptorPredicate.callableMembers())) {
|
||||||
if (!(decl instanceof CallableMemberDescriptor)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
CallableMemberDescriptor callableMemberDescriptor = (CallableMemberDescriptor) decl;
|
CallableMemberDescriptor callableMemberDescriptor = (CallableMemberDescriptor) decl;
|
||||||
if (callableMemberDescriptor.getKind() != CallableMemberDescriptor.Kind.FAKE_OVERRIDE) {
|
if (callableMemberDescriptor.getKind() != CallableMemberDescriptor.Kind.FAKE_OVERRIDE) {
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import org.jetbrains.jet.lang.descriptors.*;
|
|||||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JvmPrimitiveType;
|
import org.jetbrains.jet.lang.resolve.java.JvmPrimitiveType;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicate;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.types.lang.JetStandardClasses;
|
import org.jetbrains.jet.lang.types.lang.JetStandardClasses;
|
||||||
import org.jetbrains.jet.lang.types.lang.JetStandardLibrary;
|
import org.jetbrains.jet.lang.types.lang.JetStandardLibrary;
|
||||||
@@ -187,7 +188,7 @@ public class IntrinsicMethods {
|
|||||||
|
|
||||||
private void declareIntrinsicStringMethods() {
|
private void declareIntrinsicStringMethods() {
|
||||||
final ClassDescriptor stringClass = myStdLib.getString();
|
final ClassDescriptor stringClass = myStdLib.getString();
|
||||||
final Collection<DeclarationDescriptor> stringMembers = stringClass.getMemberScope(Collections.<TypeProjection>emptyList()).getAllDescriptors();
|
final Collection<DeclarationDescriptor> stringMembers = stringClass.getMemberScope(Collections.<TypeProjection>emptyList()).getAllDescriptors(DescriptorPredicate.all());
|
||||||
final PsiClass stringPsiClass = JavaPsiFacade.getInstance(myProject).findClass(
|
final PsiClass stringPsiClass = JavaPsiFacade.getInstance(myProject).findClass(
|
||||||
"java.lang.String",
|
"java.lang.String",
|
||||||
new DelegatingGlobalSearchScope(ProjectScope.getLibrariesScope(myProject)) {
|
new DelegatingGlobalSearchScope(ProjectScope.getLibrariesScope(myProject)) {
|
||||||
|
|||||||
+4
-2
@@ -24,6 +24,8 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicate;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicateUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScopeImpl;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScopeImpl;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -69,7 +71,7 @@ public abstract class JavaClassOrPackageScope extends JetScopeImpl {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Collection<DeclarationDescriptor> getAllDescriptors() {
|
public Collection<DeclarationDescriptor> getAllDescriptors(@NotNull DescriptorPredicate predicate) {
|
||||||
if (allDescriptors == null) {
|
if (allDescriptors == null) {
|
||||||
allDescriptors = Sets.newHashSet();
|
allDescriptors = Sets.newHashSet();
|
||||||
|
|
||||||
@@ -127,6 +129,6 @@ public abstract class JavaClassOrPackageScope extends JetScopeImpl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return allDescriptors;
|
return DescriptorPredicateUtils.filter(allDescriptors, predicate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.resolve.name.LabelName;
|
import org.jetbrains.jet.lang.resolve.name.LabelName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicate;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
||||||
|
|
||||||
@@ -104,7 +105,7 @@ public abstract class AbstractScopeAdapter implements JetScope {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Collection<DeclarationDescriptor> getAllDescriptors() {
|
public Collection<DeclarationDescriptor> getAllDescriptors(@NotNull DescriptorPredicate predicate) {
|
||||||
return getWorkerScope().getAllDescriptors();
|
return getWorkerScope().getAllDescriptors(predicate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ package org.jetbrains.jet.lang.resolve;
|
|||||||
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.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicate;
|
||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
@@ -67,7 +68,7 @@ public class DelegationResolver {
|
|||||||
JetDelegatorByExpressionSpecifier specifier = (JetDelegatorByExpressionSpecifier) delegationSpecifier;
|
JetDelegatorByExpressionSpecifier specifier = (JetDelegatorByExpressionSpecifier) delegationSpecifier;
|
||||||
JetType type = trace.get(BindingContext.TYPE, specifier.getTypeReference());
|
JetType type = trace.get(BindingContext.TYPE, specifier.getTypeReference());
|
||||||
if (type != null) {
|
if (type != null) {
|
||||||
for (DeclarationDescriptor declarationDescriptor : type.getMemberScope().getAllDescriptors()) {
|
for (DeclarationDescriptor declarationDescriptor : type.getMemberScope().getAllDescriptors(DescriptorPredicate.callableMembers())) {
|
||||||
if (declarationDescriptor instanceof PropertyDescriptor) {
|
if (declarationDescriptor instanceof PropertyDescriptor) {
|
||||||
PropertyDescriptor propertyDescriptor = (PropertyDescriptor) declarationDescriptor;
|
PropertyDescriptor propertyDescriptor = (PropertyDescriptor) declarationDescriptor;
|
||||||
if (propertyDescriptor.getModality().isOverridable()) {
|
if (propertyDescriptor.getModality().isOverridable()) {
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import org.jetbrains.jet.lang.descriptors.*;
|
|||||||
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.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicate;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
|
import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
|
||||||
@@ -238,7 +239,7 @@ public class OverrideResolver {
|
|||||||
|
|
||||||
private static List<CallableMemberDescriptor> getCallableMembersFromType(JetScope scope) {
|
private static List<CallableMemberDescriptor> getCallableMembersFromType(JetScope scope) {
|
||||||
List<CallableMemberDescriptor> r = Lists.newArrayList();
|
List<CallableMemberDescriptor> r = Lists.newArrayList();
|
||||||
for (DeclarationDescriptor decl : scope.getAllDescriptors()) {
|
for (DeclarationDescriptor decl : scope.getAllDescriptors(DescriptorPredicate.all())) {
|
||||||
if (decl instanceof PropertyDescriptor || decl instanceof SimpleFunctionDescriptor) {
|
if (decl instanceof PropertyDescriptor || decl instanceof SimpleFunctionDescriptor) {
|
||||||
r.add((CallableMemberDescriptor) decl);
|
r.add((CallableMemberDescriptor) decl);
|
||||||
}
|
}
|
||||||
@@ -332,7 +333,7 @@ public class OverrideResolver {
|
|||||||
public static Multimap<CallableMemberDescriptor, CallableMemberDescriptor> collectSuperMethods(MutableClassDescriptor classDescriptor) {
|
public static Multimap<CallableMemberDescriptor, CallableMemberDescriptor> collectSuperMethods(MutableClassDescriptor classDescriptor) {
|
||||||
Set<CallableMemberDescriptor> inheritedFunctions = Sets.newLinkedHashSet();
|
Set<CallableMemberDescriptor> inheritedFunctions = Sets.newLinkedHashSet();
|
||||||
for (JetType supertype : classDescriptor.getSupertypes()) {
|
for (JetType supertype : classDescriptor.getSupertypes()) {
|
||||||
for (DeclarationDescriptor descriptor : supertype.getMemberScope().getAllDescriptors()) {
|
for (DeclarationDescriptor descriptor : supertype.getMemberScope().getAllDescriptors(DescriptorPredicate.all())) {
|
||||||
if (descriptor instanceof CallableMemberDescriptor) {
|
if (descriptor instanceof CallableMemberDescriptor) {
|
||||||
CallableMemberDescriptor memberDescriptor = (CallableMemberDescriptor) descriptor;
|
CallableMemberDescriptor memberDescriptor = (CallableMemberDescriptor) descriptor;
|
||||||
inheritedFunctions.add(memberDescriptor);
|
inheritedFunctions.add(memberDescriptor);
|
||||||
|
|||||||
+8
-2
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.lazy;
|
package org.jetbrains.jet.lang.resolve.lazy;
|
||||||
|
|
||||||
|
import com.google.common.collect.Collections2;
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
@@ -25,6 +26,8 @@ import org.jetbrains.jet.lang.descriptors.*;
|
|||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
import org.jetbrains.jet.lang.resolve.name.LabelName;
|
import org.jetbrains.jet.lang.resolve.name.LabelName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicate;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicateUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
||||||
|
|
||||||
@@ -192,7 +195,9 @@ public abstract class AbstractLazyMemberScope<D extends DeclarationDescriptor, D
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Collection<DeclarationDescriptor> getAllDescriptors() {
|
public Collection<DeclarationDescriptor> getAllDescriptors(@NotNull DescriptorPredicate predicate) {
|
||||||
|
// TODO: cache only what matches predicate
|
||||||
|
|
||||||
for (JetDeclaration declaration : declarationProvider.getAllDeclarations()) {
|
for (JetDeclaration declaration : declarationProvider.getAllDeclarations()) {
|
||||||
if (declaration instanceof JetClassOrObject) {
|
if (declaration instanceof JetClassOrObject) {
|
||||||
JetClassOrObject classOrObject = (JetClassOrObject) declaration;
|
JetClassOrObject classOrObject = (JetClassOrObject) declaration;
|
||||||
@@ -222,7 +227,8 @@ public abstract class AbstractLazyMemberScope<D extends DeclarationDescriptor, D
|
|||||||
}
|
}
|
||||||
addExtraDescriptors();
|
addExtraDescriptors();
|
||||||
allDescriptorsComputed = true;
|
allDescriptorsComputed = true;
|
||||||
return allDescriptors;
|
|
||||||
|
return DescriptorPredicateUtils.filter(allDescriptors, predicate);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract void addExtraDescriptors();
|
protected abstract void addExtraDescriptors();
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import org.jetbrains.jet.lang.resolve.BindingTrace;
|
|||||||
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
|
import org.jetbrains.jet.lang.resolve.DescriptorResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.OverrideResolver;
|
import org.jetbrains.jet.lang.resolve.OverrideResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicate;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
||||||
import org.jetbrains.jet.lang.types.DeferredType;
|
import org.jetbrains.jet.lang.types.DeferredType;
|
||||||
@@ -86,7 +87,7 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope<LazyClassDescr
|
|||||||
public void conflict(@NotNull CallableMemberDescriptor fromSuper, @NotNull CallableMemberDescriptor fromCurrent) {
|
public void conflict(@NotNull CallableMemberDescriptor fromSuper, @NotNull CallableMemberDescriptor fromCurrent) {
|
||||||
BindingTrace trace = resolveSession.getTrace();
|
BindingTrace trace = resolveSession.getTrace();
|
||||||
JetDeclaration declaration = (JetDeclaration) BindingContextUtils.descriptorToDeclaration(trace.getBindingContext(),
|
JetDeclaration declaration = (JetDeclaration) BindingContextUtils.descriptorToDeclaration(trace.getBindingContext(),
|
||||||
fromCurrent);
|
fromCurrent);
|
||||||
assert declaration != null : "fromCurrent can not be a fake override";
|
assert declaration != null : "fromCurrent can not be a fake override";
|
||||||
trace.report(Errors.CONFLICTING_OVERLOADS.on(declaration, fromCurrent, fromCurrent.getContainingDeclaration().getName().getName()));
|
trace.report(Errors.CONFLICTING_OVERLOADS.on(declaration, fromCurrent, fromCurrent.getContainingDeclaration().getName().getName()));
|
||||||
}
|
}
|
||||||
@@ -134,7 +135,7 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope<LazyClassDescr
|
|||||||
@Override
|
@Override
|
||||||
protected void addExtraDescriptors() {
|
protected void addExtraDescriptors() {
|
||||||
for (JetType supertype : thisDescriptor.getTypeConstructor().getSupertypes()) {
|
for (JetType supertype : thisDescriptor.getTypeConstructor().getSupertypes()) {
|
||||||
for (DeclarationDescriptor descriptor : supertype.getMemberScope().getAllDescriptors()) {
|
for (DeclarationDescriptor descriptor : supertype.getMemberScope().getAllDescriptors(DescriptorPredicate.callableMembers())) {
|
||||||
if (descriptor instanceof FunctionDescriptor) {
|
if (descriptor instanceof FunctionDescriptor) {
|
||||||
getFunctions(descriptor.getName());
|
getFunctions(descriptor.getName());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -157,11 +157,11 @@ public class ChainedScope implements JetScope {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Collection<DeclarationDescriptor> getAllDescriptors() {
|
public Collection<DeclarationDescriptor> getAllDescriptors(@NotNull DescriptorPredicate predicate) {
|
||||||
if (allDescriptors == null) {
|
if (allDescriptors == null) {
|
||||||
allDescriptors = Sets.newHashSet();
|
allDescriptors = Sets.newHashSet();
|
||||||
for (JetScope scope : scopeChain) {
|
for (JetScope scope : scopeChain) {
|
||||||
allDescriptors.addAll(scope.getAllDescriptors());
|
allDescriptors.addAll(scope.getAllDescriptors(DescriptorPredicate.all()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return allDescriptors;
|
return allDescriptors;
|
||||||
|
|||||||
@@ -0,0 +1,216 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2012 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.resolve.scopes;
|
||||||
|
|
||||||
|
import com.google.common.base.Predicate;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.CallableDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Stepan Koltsov
|
||||||
|
*/
|
||||||
|
public abstract class DescriptorPredicate {
|
||||||
|
|
||||||
|
public boolean includeAll() {
|
||||||
|
return this instanceof All;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract boolean includeName(@NotNull Name name);
|
||||||
|
|
||||||
|
public enum DescriptorKind {
|
||||||
|
CLASS,
|
||||||
|
CALLABLE_MEMBER,
|
||||||
|
CALLABLE_NON_MEMBER,
|
||||||
|
NAMESPACE,
|
||||||
|
OTHER,
|
||||||
|
;
|
||||||
|
|
||||||
|
public boolean isCallable() {
|
||||||
|
return this == CALLABLE_MEMBER || this == CALLABLE_NON_MEMBER;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract boolean includeKind(@NotNull DescriptorKind kind);
|
||||||
|
|
||||||
|
private static DescriptorKind descriptorKind(@NotNull DeclarationDescriptor descriptor) {
|
||||||
|
if (descriptor instanceof CallableMemberDescriptor) {
|
||||||
|
return DescriptorKind.CALLABLE_MEMBER;
|
||||||
|
}
|
||||||
|
else if (descriptor instanceof CallableDescriptor) {
|
||||||
|
return DescriptorKind.CALLABLE_NON_MEMBER;
|
||||||
|
}
|
||||||
|
else if (descriptor instanceof ClassDescriptor) {
|
||||||
|
return DescriptorKind.CLASS;
|
||||||
|
}
|
||||||
|
else if (descriptor instanceof NamespaceDescriptor) {
|
||||||
|
return DescriptorKind.NAMESPACE;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return DescriptorKind.OTHER;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Should be called only if includeKind(CALLABLE_MEMBER) returned true.
|
||||||
|
*/
|
||||||
|
public abstract boolean includeExtension(boolean extension);
|
||||||
|
|
||||||
|
|
||||||
|
public boolean include(@NotNull DeclarationDescriptor descriptor) {
|
||||||
|
if (!includeKind(descriptorKind(descriptor))) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (descriptor instanceof CallableMemberDescriptor) {
|
||||||
|
CallableMemberDescriptor callable = (CallableMemberDescriptor) descriptor;
|
||||||
|
boolean extension = callable.getReceiverParameter().exists();
|
||||||
|
if (!includeExtension(extension)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!includeName(descriptor.getName())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static class All extends DescriptorPredicate {
|
||||||
|
private static final All instance = new All();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean include(@NotNull DeclarationDescriptor descriptor) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean includeKind(@NotNull DescriptorKind kind) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean includeName(@NotNull Name name) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean includeExtension(boolean extension) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DescriptorPredicate all() {
|
||||||
|
return All.instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static class HasName extends DescriptorPredicate {
|
||||||
|
@NotNull
|
||||||
|
private final Name required;
|
||||||
|
|
||||||
|
private HasName(@NotNull Name required) {
|
||||||
|
this.required = required;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean includeKind(@NotNull DescriptorKind kind) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean includeExtension(boolean extension) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean include(@NotNull DeclarationDescriptor descriptor) {
|
||||||
|
return includeName(descriptor.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean includeName(@NotNull Name name) {
|
||||||
|
return required.equals(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DescriptorPredicate hasName(@NotNull Name name) {
|
||||||
|
return new HasName(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static class CallableMembers extends DescriptorPredicate {
|
||||||
|
public static final CallableMembers instance = new CallableMembers();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean includeName(@NotNull Name name) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean includeExtension(boolean extension) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean include(@NotNull DeclarationDescriptor descriptor) {
|
||||||
|
return descriptor instanceof CallableMemberDescriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean includeKind(@NotNull DescriptorKind kind) {
|
||||||
|
return kind == DescriptorKind.CALLABLE_MEMBER;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DescriptorPredicate callableMembers() {
|
||||||
|
return CallableMembers.instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static class Extension extends CallableMembers {
|
||||||
|
private static final Extension instance = new Extension();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean includeExtension(boolean extension) {
|
||||||
|
return extension;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DescriptorPredicate extension() {
|
||||||
|
return Extension.instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public Predicate<DeclarationDescriptor> asGuavaPredicate() {
|
||||||
|
return new Predicate<DeclarationDescriptor>() {
|
||||||
|
@Override
|
||||||
|
public boolean apply(@NotNull DeclarationDescriptor descriptor) {
|
||||||
|
return include(descriptor);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+41
@@ -0,0 +1,41 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2012 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.resolve.scopes;
|
||||||
|
|
||||||
|
import com.google.common.collect.Collections2;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Stepan Koltsov
|
||||||
|
*/
|
||||||
|
public class DescriptorPredicateUtils {
|
||||||
|
|
||||||
|
public static Collection<DeclarationDescriptor> filter(
|
||||||
|
@NotNull Collection<DeclarationDescriptor> descriptors,
|
||||||
|
@NotNull DescriptorPredicate predicate) {
|
||||||
|
if (predicate.includeAll()) {
|
||||||
|
return descriptors;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return Collections2.filter(descriptors, predicate.asGuavaPredicate());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
+3
-2
@@ -72,8 +72,9 @@ public class InnerClassesScopeWrapper extends JetScopeImpl {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Collection<DeclarationDescriptor> getAllDescriptors() {
|
public Collection<DeclarationDescriptor> getAllDescriptors(@NotNull DescriptorPredicate predicate) {
|
||||||
Collection<DeclarationDescriptor> allDescriptors = actualScope.getAllDescriptors();
|
// TODO: use better predicate
|
||||||
|
Collection<DeclarationDescriptor> allDescriptors = actualScope.getAllDescriptors(predicate);
|
||||||
return Collections2.filter(allDescriptors, new Predicate<DeclarationDescriptor>() {
|
return Collections2.filter(allDescriptors, new Predicate<DeclarationDescriptor>() {
|
||||||
@Override
|
@Override
|
||||||
public boolean apply(@Nullable DeclarationDescriptor descriptor) {
|
public boolean apply(@Nullable DeclarationDescriptor descriptor) {
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ public interface JetScope {
|
|||||||
* @return All visible descriptors from current scope.
|
* @return All visible descriptors from current scope.
|
||||||
*/
|
*/
|
||||||
@NotNull
|
@NotNull
|
||||||
Collection<DeclarationDescriptor> getAllDescriptors();
|
Collection<DeclarationDescriptor> getAllDescriptors(@NotNull DescriptorPredicate predicate);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return EFFECTIVE implicit receiver at this point (may be corresponding to an outer scope)
|
* @return EFFECTIVE implicit receiver at this point (may be corresponding to an outer scope)
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ public abstract class JetScopeImpl implements JetScope {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Collection<DeclarationDescriptor> getAllDescriptors() {
|
public Collection<DeclarationDescriptor> getAllDescriptors(@NotNull DescriptorPredicate predicate) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -53,18 +53,8 @@ public final class JetScopeUtils {
|
|||||||
* @param scope Scope for query extensions.
|
* @param scope Scope for query extensions.
|
||||||
* @return extension descriptors.
|
* @return extension descriptors.
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
public static Collection<CallableDescriptor> getAllExtensions(@NotNull JetScope scope) {
|
public static Collection<CallableDescriptor> getAllExtensions(@NotNull JetScope scope) {
|
||||||
final Set<CallableDescriptor> result = Sets.newHashSet();
|
return (Collection<CallableDescriptor>) (Object) scope.getAllDescriptors(DescriptorPredicate.extension());
|
||||||
|
|
||||||
for (DeclarationDescriptor descriptor : scope.getAllDescriptors()) {
|
|
||||||
if (descriptor instanceof CallableDescriptor) {
|
|
||||||
CallableDescriptor callDescriptor = (CallableDescriptor) descriptor;
|
|
||||||
if (callDescriptor.getReceiverParameter().exists()) {
|
|
||||||
result.add(callDescriptor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -149,10 +149,10 @@ public class SubstitutingScope implements JetScope {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Collection<DeclarationDescriptor> getAllDescriptors() {
|
public Collection<DeclarationDescriptor> getAllDescriptors(@NotNull DescriptorPredicate predicate) {
|
||||||
if (allDescriptors == null) {
|
if (allDescriptors == null) {
|
||||||
allDescriptors = Sets.newHashSet();
|
allDescriptors = Sets.newHashSet();
|
||||||
for (DeclarationDescriptor descriptor : workerScope.getAllDescriptors()) {
|
for (DeclarationDescriptor descriptor : workerScope.getAllDescriptors(DescriptorPredicate.all())) {
|
||||||
DeclarationDescriptor substitute = substitute(descriptor);
|
DeclarationDescriptor substitute = substitute(descriptor);
|
||||||
// assert substitute != null : descriptor;
|
// assert substitute != null : descriptor;
|
||||||
if (substitute != null) {
|
if (substitute != null) {
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ public class WritableScopeImpl extends WritableScopeWithImports {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Collection<DeclarationDescriptor> getAllDescriptors() {
|
public Collection<DeclarationDescriptor> getAllDescriptors(@NotNull DescriptorPredicate predicate) {
|
||||||
checkMayRead();
|
checkMayRead();
|
||||||
|
|
||||||
if (!allDescriptorsDone) {
|
if (!allDescriptorsDone) {
|
||||||
@@ -135,12 +135,12 @@ public class WritableScopeImpl extends WritableScopeWithImports {
|
|||||||
// make sure no descriptors added to allDescriptors collection
|
// make sure no descriptors added to allDescriptors collection
|
||||||
changeLockLevel(LockLevel.READING);
|
changeLockLevel(LockLevel.READING);
|
||||||
|
|
||||||
allDescriptors.addAll(getWorkerScope().getAllDescriptors());
|
allDescriptors.addAll(getWorkerScope().getAllDescriptors(DescriptorPredicate.all()));
|
||||||
for (JetScope imported : getImports()) {
|
for (JetScope imported : getImports()) {
|
||||||
allDescriptors.addAll(imported.getAllDescriptors());
|
allDescriptors.addAll(imported.getAllDescriptors(DescriptorPredicate.all()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return allDescriptors;
|
return DescriptorPredicateUtils.filter(allDescriptors, predicate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -283,19 +283,19 @@ public class WriteThroughScope extends WritableScopeWithImports {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Collection<DeclarationDescriptor> getAllDescriptors() {
|
public Collection<DeclarationDescriptor> getAllDescriptors(@NotNull DescriptorPredicate predicate) {
|
||||||
checkMayRead();
|
checkMayRead();
|
||||||
|
|
||||||
if (allDescriptors == null) {
|
if (allDescriptors == null) {
|
||||||
allDescriptors = Lists.newArrayList();
|
allDescriptors = Lists.newArrayList();
|
||||||
allDescriptors.addAll(writableWorker.getAllDescriptors());
|
allDescriptors.addAll(writableWorker.getAllDescriptors(DescriptorPredicate.all()));
|
||||||
allDescriptors.addAll(getWorkerScope().getAllDescriptors());
|
allDescriptors.addAll(getWorkerScope().getAllDescriptors(DescriptorPredicate.all()));
|
||||||
|
|
||||||
for (JetScope imported : getImports()) {
|
for (JetScope imported : getImports()) {
|
||||||
allDescriptors.addAll(imported.getAllDescriptors());
|
allDescriptors.addAll(imported.getAllDescriptors(DescriptorPredicate.all()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return allDescriptors;
|
return DescriptorPredicateUtils.filter(allDescriptors, predicate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ import org.jetbrains.jet.lang.descriptors.*;
|
|||||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.name.LabelName;
|
import org.jetbrains.jet.lang.resolve.name.LabelName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicate;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
||||||
import org.jetbrains.jet.lang.types.error.ErrorSimpleFunctionDescriptorImpl;
|
import org.jetbrains.jet.lang.types.error.ErrorSimpleFunctionDescriptorImpl;
|
||||||
@@ -112,7 +113,7 @@ public class ErrorUtils {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Collection<DeclarationDescriptor> getAllDescriptors() {
|
public Collection<DeclarationDescriptor> getAllDescriptors(@NotNull DescriptorPredicate predicate) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -499,6 +499,6 @@ public class JetStandardClasses {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static Collection<DeclarationDescriptor> getAllStandardClasses() {
|
public static Collection<DeclarationDescriptor> getAllStandardClasses() {
|
||||||
return STANDARD_CLASSES.getAllDescriptors();
|
return STANDARD_CLASSES.getAllDescriptors(DescriptorPredicate.all());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import org.jetbrains.jet.lang.descriptors.*;
|
|||||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicate;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ExtensionReceiver;
|
import org.jetbrains.jet.lang.resolve.scopes.receivers.ExtensionReceiver;
|
||||||
import org.jetbrains.jet.lang.types.ErrorUtils;
|
import org.jetbrains.jet.lang.types.ErrorUtils;
|
||||||
@@ -98,13 +99,13 @@ public class NamespaceComparator {
|
|||||||
|
|
||||||
sb.append("namespace " + nsa.getName() + "\n\n");
|
sb.append("namespace " + nsa.getName() + "\n\n");
|
||||||
|
|
||||||
Assert.assertTrue(!nsa.getMemberScope().getAllDescriptors().isEmpty());
|
Assert.assertTrue(!nsa.getMemberScope().getAllDescriptors(DescriptorPredicate.all()).isEmpty());
|
||||||
|
|
||||||
Set<Name> classifierNames = new HashSet<Name>();
|
Set<Name> classifierNames = new HashSet<Name>();
|
||||||
Set<Name> propertyNames = new HashSet<Name>();
|
Set<Name> propertyNames = new HashSet<Name>();
|
||||||
Set<Name> functionNames = new HashSet<Name>();
|
Set<Name> functionNames = new HashSet<Name>();
|
||||||
|
|
||||||
for (DeclarationDescriptor ad : nsa.getMemberScope().getAllDescriptors()) {
|
for (DeclarationDescriptor ad : nsa.getMemberScope().getAllDescriptors(DescriptorPredicate.all())) {
|
||||||
if (ad instanceof ClassifierDescriptor) {
|
if (ad instanceof ClassifierDescriptor) {
|
||||||
classifierNames.add(ad.getName());
|
classifierNames.add(ad.getName());
|
||||||
}
|
}
|
||||||
@@ -563,7 +564,7 @@ public class NamespaceComparator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
JetScope memberScope = klass.getMemberScope(typeArguments);
|
JetScope memberScope = klass.getMemberScope(typeArguments);
|
||||||
for (DeclarationDescriptor member : memberScope.getAllDescriptors()) {
|
for (DeclarationDescriptor member : memberScope.getAllDescriptors(DescriptorPredicate.all())) {
|
||||||
if (!includeObject) {
|
if (!includeObject) {
|
||||||
if (member.getName().getName().matches("equals|hashCode|finalize|wait|notify(All)?|toString|clone|getClass")) {
|
if (member.getName().getName().matches("equals|hashCode|finalize|wait|notify(All)?|toString|clone|getClass")) {
|
||||||
continue;
|
continue;
|
||||||
|
|||||||
+2
-1
@@ -36,6 +36,7 @@ import org.jetbrains.jet.lang.resolve.name.FqName;
|
|||||||
import org.jetbrains.jet.lang.resolve.java.CompilerDependencies;
|
import org.jetbrains.jet.lang.resolve.java.CompilerDependencies;
|
||||||
import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode;
|
import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode;
|
||||||
import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule;
|
import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicate;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
@@ -196,7 +197,7 @@ public class ResolveDescriptorsFromExternalLibraries {
|
|||||||
if (clazz == null) {
|
if (clazz == null) {
|
||||||
throw new IllegalStateException("class not found by name " + className + " in " + libDescription);
|
throw new IllegalStateException("class not found by name " + className + " in " + libDescription);
|
||||||
}
|
}
|
||||||
clazz.getDefaultType().getMemberScope().getAllDescriptors();
|
clazz.getDefaultType().getMemberScope().getAllDescriptors(DescriptorPredicate.all());
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
System.err.println("failed to resolve " + className);
|
System.err.println("failed to resolve " + className);
|
||||||
|
|||||||
+2
-1
@@ -29,6 +29,7 @@ import org.jetbrains.jet.lang.psi.JetFile;
|
|||||||
import org.jetbrains.jet.lang.psi.JetPsiFactory;
|
import org.jetbrains.jet.lang.psi.JetPsiFactory;
|
||||||
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
|
import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicate;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
@@ -101,6 +102,6 @@ public abstract class AbstractLazyResolveNamespaceComparingTest extends Abstract
|
|||||||
}
|
}
|
||||||
|
|
||||||
private NamespaceDescriptor theOnlySubPackage(NamespaceDescriptor namespace) {
|
private NamespaceDescriptor theOnlySubPackage(NamespaceDescriptor namespace) {
|
||||||
return (NamespaceDescriptor) namespace.getMemberScope().getAllDescriptors().iterator().next();
|
return (NamespaceDescriptor) namespace.getMemberScope().getAllDescriptors(DescriptorPredicate.all()).iterator().next();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode;
|
|||||||
import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule;
|
import org.jetbrains.jet.lang.resolve.java.DescriptorSearchRule;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JvmAbi;
|
import org.jetbrains.jet.lang.resolve.java.JvmAbi;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicate;
|
||||||
import org.jetbrains.jet.resolve.DescriptorRenderer;
|
import org.jetbrains.jet.resolve.DescriptorRenderer;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -89,7 +90,8 @@ class DecompiledDataFactory {
|
|||||||
NamespaceDescriptor nd = myJavaDescriptorResolver.resolveNamespace(new FqName(packageName), DescriptorSearchRule.INCLUDE_KOTLIN);
|
NamespaceDescriptor nd = myJavaDescriptorResolver.resolveNamespace(new FqName(packageName), DescriptorSearchRule.INCLUDE_KOTLIN);
|
||||||
|
|
||||||
if (nd != null) {
|
if (nd != null) {
|
||||||
for (DeclarationDescriptor member : sortDeclarations(nd.getMemberScope().getAllDescriptors())) {
|
// TODO: better predicate
|
||||||
|
for (DeclarationDescriptor member : sortDeclarations(nd.getMemberScope().getAllDescriptors(DescriptorPredicate.all()))) {
|
||||||
if (member instanceof ClassDescriptor || member instanceof NamespaceDescriptor) {
|
if (member instanceof ClassDescriptor || member instanceof NamespaceDescriptor) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -155,7 +157,7 @@ class DecompiledDataFactory {
|
|||||||
myBuilder.append(subindent).append("class ");
|
myBuilder.append(subindent).append("class ");
|
||||||
appendDescriptor(classDescriptor.getClassObjectDescriptor(), subindent);
|
appendDescriptor(classDescriptor.getClassObjectDescriptor(), subindent);
|
||||||
}
|
}
|
||||||
for (DeclarationDescriptor member : sortDeclarations(classDescriptor.getDefaultType().getMemberScope().getAllDescriptors())) {
|
for (DeclarationDescriptor member : sortDeclarations(classDescriptor.getDefaultType().getMemberScope().getAllDescriptors(DescriptorPredicate.all()))) {
|
||||||
if (member.getContainingDeclaration() != descriptor) {
|
if (member.getContainingDeclaration() != descriptor) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ import org.jetbrains.jet.lang.descriptors.VariableDescriptor;
|
|||||||
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;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicate;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
|
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
|
||||||
import org.jetbrains.jet.plugin.project.WholeProjectAnalyzerFacade;
|
import org.jetbrains.jet.plugin.project.WholeProjectAnalyzerFacade;
|
||||||
@@ -72,7 +73,8 @@ public abstract class BaseJetVariableMacro extends Macro {
|
|||||||
ExpressionTypingServices callResolverContext = new InjectorForMacros(project).getExpressionTypingServices();
|
ExpressionTypingServices callResolverContext = new InjectorForMacros(project).getExpressionTypingServices();
|
||||||
|
|
||||||
List<VariableDescriptor> filteredDescriptors = new ArrayList<VariableDescriptor>();
|
List<VariableDescriptor> filteredDescriptors = new ArrayList<VariableDescriptor>();
|
||||||
for (DeclarationDescriptor declarationDescriptor : scope.getAllDescriptors()) {
|
// TODO: better predicate
|
||||||
|
for (DeclarationDescriptor declarationDescriptor : scope.getAllDescriptors(DescriptorPredicate.all())) {
|
||||||
if (declarationDescriptor instanceof VariableDescriptor) {
|
if (declarationDescriptor instanceof VariableDescriptor) {
|
||||||
VariableDescriptor variableDescriptor = (VariableDescriptor) declarationDescriptor;
|
VariableDescriptor variableDescriptor = (VariableDescriptor) declarationDescriptor;
|
||||||
if (isSuitable(variableDescriptor, scope, project, callResolverContext)) {
|
if (isSuitable(variableDescriptor, scope, project, callResolverContext)) {
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ import org.jetbrains.jet.lang.psi.JetExpression;
|
|||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
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;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicate;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.plugin.JetBundle;
|
import org.jetbrains.jet.plugin.JetBundle;
|
||||||
import org.jetbrains.jet.plugin.project.WholeProjectAnalyzerFacade;
|
import org.jetbrains.jet.plugin.project.WholeProjectAnalyzerFacade;
|
||||||
@@ -101,7 +102,8 @@ public class JetAnonymousSuperMacro extends Macro {
|
|||||||
|
|
||||||
List<PsiNamedElement> result = new ArrayList<PsiNamedElement>();
|
List<PsiNamedElement> result = new ArrayList<PsiNamedElement>();
|
||||||
|
|
||||||
for (DeclarationDescriptor descriptor : scope.getAllDescriptors()) {
|
// TODO: better predicate
|
||||||
|
for (DeclarationDescriptor descriptor : scope.getAllDescriptors(DescriptorPredicate.all())) {
|
||||||
if (!(descriptor instanceof ClassDescriptor)) continue;
|
if (!(descriptor instanceof ClassDescriptor)) continue;
|
||||||
ClassDescriptor classDescriptor = (ClassDescriptor) descriptor;
|
ClassDescriptor classDescriptor = (ClassDescriptor) descriptor;
|
||||||
if (!classDescriptor.getModality().isOverridable()) continue;
|
if (!classDescriptor.getModality().isOverridable()) continue;
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ import org.jetbrains.jet.lang.psi.JetReferenceExpression;
|
|||||||
import org.jetbrains.jet.lang.resolve.*;
|
import org.jetbrains.jet.lang.resolve.*;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicate;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.RedeclarationHandler;
|
import org.jetbrains.jet.lang.resolve.scopes.RedeclarationHandler;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
|
||||||
@@ -139,7 +140,7 @@ public class StandardLibraryReferenceResolver extends AbstractProjectComponent {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
String renderedOriginal = DescriptorRenderer.TEXT.render(originalDescriptor);
|
String renderedOriginal = DescriptorRenderer.TEXT.render(originalDescriptor);
|
||||||
for (DeclarationDescriptor member : memberScope.getAllDescriptors()) {
|
for (DeclarationDescriptor member : memberScope.getAllDescriptors(DescriptorPredicate.all())) {
|
||||||
if (renderedOriginal.equals(DescriptorRenderer.TEXT.render(member).replace(TUPLE0_FQ_NAME.getFqName(),
|
if (renderedOriginal.equals(DescriptorRenderer.TEXT.render(member).replace(TUPLE0_FQ_NAME.getFqName(),
|
||||||
JetStandardClasses.UNIT_ALIAS.getName()))) {
|
JetStandardClasses.UNIT_ALIAS.getName()))) {
|
||||||
return member;
|
return member;
|
||||||
|
|||||||
+3
-2
@@ -23,6 +23,7 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
|||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptorVisitorEmptyBodies;
|
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptorVisitorEmptyBodies;
|
||||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicate;
|
||||||
import org.jetbrains.jet.lang.types.lang.JetStandardClasses;
|
import org.jetbrains.jet.lang.types.lang.JetStandardClasses;
|
||||||
import org.jetbrains.jet.plugin.PluginTestCaseBase;
|
import org.jetbrains.jet.plugin.PluginTestCaseBase;
|
||||||
|
|
||||||
@@ -88,13 +89,13 @@ public class StandardLibraryReferenceResolverTest extends ResolveTestCase {
|
|||||||
@Override
|
@Override
|
||||||
public Void visitClassDescriptor(ClassDescriptor descriptor, Void data) {
|
public Void visitClassDescriptor(ClassDescriptor descriptor, Void data) {
|
||||||
descriptors.add(descriptor);
|
descriptors.add(descriptor);
|
||||||
return visitDescriptors(descriptor.getDefaultType().getMemberScope().getAllDescriptors());
|
return visitDescriptors(descriptor.getDefaultType().getMemberScope().getAllDescriptors(DescriptorPredicate.all()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Void visitNamespaceDescriptor(NamespaceDescriptor descriptor, Void data) {
|
public Void visitNamespaceDescriptor(NamespaceDescriptor descriptor, Void data) {
|
||||||
descriptors.add(descriptor);
|
descriptors.add(descriptor);
|
||||||
return visitDescriptors(descriptor.getMemberScope().getAllDescriptors());
|
return visitDescriptors(descriptor.getMemberScope().getAllDescriptors(DescriptorPredicate.all()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ 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.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicate;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
import org.jetbrains.jet.lang.types.lang.JetStandardClasses;
|
import org.jetbrains.jet.lang.types.lang.JetStandardClasses;
|
||||||
@@ -193,7 +194,7 @@ public final class Intrinsics {
|
|||||||
|
|
||||||
private void declareOperatorIntrinsics() {
|
private void declareOperatorIntrinsics() {
|
||||||
IntrinsicDeclarationVisitor visitor = new IntrinsicDeclarationVisitor();
|
IntrinsicDeclarationVisitor visitor = new IntrinsicDeclarationVisitor();
|
||||||
for (DeclarationDescriptor descriptor : library.getLibraryScope().getAllDescriptors()) {
|
for (DeclarationDescriptor descriptor : library.getLibraryScope().getAllDescriptors(DescriptorPredicate.all())) {
|
||||||
//noinspection NullableProblems
|
//noinspection NullableProblems
|
||||||
descriptor.accept(visitor, null);
|
descriptor.accept(visitor, null);
|
||||||
}
|
}
|
||||||
@@ -231,7 +232,7 @@ public final class Intrinsics {
|
|||||||
@Override
|
@Override
|
||||||
public Void visitClassDescriptor(@NotNull ClassDescriptor descriptor, @Nullable Void nothing) {
|
public Void visitClassDescriptor(@NotNull ClassDescriptor descriptor, @Nullable Void nothing) {
|
||||||
for (DeclarationDescriptor memberDescriptor :
|
for (DeclarationDescriptor memberDescriptor :
|
||||||
descriptor.getDefaultType().getMemberScope().getAllDescriptors()) {
|
descriptor.getDefaultType().getMemberScope().getAllDescriptors(DescriptorPredicate.all())) {
|
||||||
//noinspection NullableProblems
|
//noinspection NullableProblems
|
||||||
memberDescriptor.accept(this, null);
|
memberDescriptor.accept(this, null);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ 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.resolve.name.Name;
|
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||||
|
import org.jetbrains.jet.lang.resolve.scopes.DescriptorPredicate;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
|
||||||
import org.jetbrains.jet.lang.types.JetType;
|
import org.jetbrains.jet.lang.types.JetType;
|
||||||
@@ -229,7 +230,7 @@ public final class JsDescriptorUtils {
|
|||||||
@NotNull
|
@NotNull
|
||||||
public static List<DeclarationDescriptor> getContainedDescriptorsWhichAreNotPredefined(@NotNull NamespaceDescriptor namespace) {
|
public static List<DeclarationDescriptor> getContainedDescriptorsWhichAreNotPredefined(@NotNull NamespaceDescriptor namespace) {
|
||||||
List<DeclarationDescriptor> result = Lists.newArrayList();
|
List<DeclarationDescriptor> result = Lists.newArrayList();
|
||||||
for (DeclarationDescriptor descriptor : namespace.getMemberScope().getAllDescriptors()) {
|
for (DeclarationDescriptor descriptor : namespace.getMemberScope().getAllDescriptors(DescriptorPredicate.all())) {
|
||||||
if (!AnnotationsUtils.isPredefinedObject(descriptor)) {
|
if (!AnnotationsUtils.isPredefinedObject(descriptor)) {
|
||||||
result.add(descriptor);
|
result.add(descriptor);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user