protected IScope createStaticFeatureOnTypeLiteralScope(XAbstractFeatureCall featureCall, JvmType type, XExpression receiver, LightweightTypeReference receiverType, IScope parent, IFeatureScopeSession session) { TypeBucket receiverBucket = new TypeBucket(-1, Collections.singletonList(type), resolvedFeaturesProvider); return createStaticFeatureOnTypeLiteralScope(featureCall, receiver, receiverType, receiverBucket, parent, session); }
@Override @Pure public boolean equals(final Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; if (!super.equals(obj)) return false; TypeWithRestrictedNamesBucket other = (TypeWithRestrictedNamesBucket) obj; if (this.typesToNames == null) { if (other.typesToNames != null) return false; } else if (!this.typesToNames.equals(other.typesToNames)) return false; return true; }
protected IEObjectDescription createDescription(QualifiedName name, JvmFeature feature, TypeBucket bucket) { if (implicit) { return new InstanceFeatureDescriptionWithImplicitReceiver(name, feature, receiver, receiverType, getReceiverTypeParameterMapping(), bucket.getFlags(), bucket.getId(), isVisible(feature), validStaticState); } else { return new InstanceFeatureDescription(name, feature, receiver, receiverType, getReceiverTypeParameterMapping(), bucket.getFlags(), bucket.getId(), isVisible(feature)); } }
protected void getAllLocalElements(TypeBucket bucket, List<IEObjectDescription> result) { if (bucket.isRestrictingNames()) { for (Map.Entry<? extends JvmType, ? extends Set<String>> entry : bucket.getTypesToNames().entrySet()) { JvmType type = entry.getKey(); if (type instanceof JvmDeclaredType) { getAllLocalElements(bucket, (JvmDeclaredType) type, entry.getValue(), result); } } } else { for (JvmType type : bucket.getTypes()) { if (type instanceof JvmDeclaredType) { getAllLocalElements(bucket, (JvmDeclaredType) type, result); } } } }
@Override public void accept(String simpleName, int order) { for(JvmType type: bucket.getTypes()) { if (type instanceof JvmDeclaredType) { List<JvmFeature> features = findAllFeaturesByName(type, simpleName, bucket.getResolvedFeaturesProvider()); if (order == 1) { allFeatures.addAll(features); } else { for(int i = 0, size = features.size(); i < size; i++) { JvmFeature feature = features.get(i); if (feature.eClass() == TypesPackage.Literals.JVM_OPERATION) { allFeatures.add(feature); } } } } } } });
@Override protected BucketedEObjectDescription createDescription(QualifiedName name, JvmFeature feature, TypeBucket bucket) { return new StaticFeatureDescription(name, feature, bucket.getId(), getSession().isVisible(feature)); }
public StaticFeatureOnTypeLiteralScope(IScope parent, IFeatureScopeSession session, XAbstractFeatureCall featureCall, XExpression receiver, LightweightTypeReference receiverType, TypeBucket bucket, OperatorMapping operatorMapping) { super(parent, session, featureCall, receiver, receiverType, bucket, operatorMapping); if (bucket.getTypes().size() != 1) { throw new IllegalArgumentException("Unexpected bucket structure"); } }
@Override @Pure public int hashCode() { return 31 * super.hashCode() + ((this.typesToNames== null) ? 0 : this.typesToNames.hashCode()); }
protected void processType(JvmType type, String simpleName, int order, TypeBucket bucket) { if (type instanceof JvmDeclaredType) { List<JvmFeature> features = findAllFeaturesByName(type, simpleName, bucket.getResolvedFeaturesProvider()); for(int i = 0, size = features.size(); i < size; i++) { JvmFeature feature = features.get(i); if (feature.isStatic() && (order == 1 || feature instanceof JvmOperation)) { IIdentifiableElementDescription description = createDescription(name, feature, bucket); if (description != null) addToList(description, result); } } } } });
@Override public void accept(String simpleName, int order) { for (TypeBucket bucket : buckets) { if (bucket.isRestrictingNames()) { for (Map.Entry<? extends JvmType, ? extends Set<String>> entry : bucket.getTypesToNames().entrySet()) { if (entry.getValue().contains(simpleName)) { processType(entry.getKey(), simpleName, order, bucket); } } } else { for (JvmType type : bucket.getTypes()) { processType(type, simpleName, order, bucket); } } } }
@Override public void accept(String simpleName, int order) { for(JvmType type: bucket.getTypes()) { if (type instanceof JvmDeclaredType) { List<JvmFeature> features = findAllFeaturesByName(type, simpleName, bucket.getResolvedFeaturesProvider()); if (order == 1) { allFeatures.addAll(features); } else { for(int i = 0, size = features.size(); i < size; i++) { JvmFeature feature = features.get(i); if (feature.eClass() == TypesPackage.Literals.JVM_OPERATION) { allFeatures.add(feature); } } } } } } });
protected BucketedEObjectDescription doCreateDescription(QualifiedName name, JvmFeature feature, TypeBucket bucket) { if (implicit) { return new StaticExtensionFeatureDescriptionWithImplicitFirstArgument(name, feature, receiver, receiverType, bucket.getId(), getSession().isVisible(feature)); } return new StaticExtensionFeatureDescription(name, feature, receiver, receiverType, bucket.getId(), getSession().isVisible(feature)); }
protected JvmType getTypeLiteral() { return getBucket().getTypes().get(0); } }
@Override @Pure public int hashCode() { return 31 * super.hashCode() + this.flags; }
@Override protected List<IEObjectDescription> getAllLocalElements() { Set<JvmFeature> allFeatures = Sets.newLinkedHashSet(); for(JvmType type: bucket.getTypes()) { if (type instanceof JvmDeclaredType) { IResolvedFeatures resolvedFeatures = bucket.getResolvedFeaturesProvider().getResolvedFeatures(type); allFeatures.addAll(resolvedFeatures.getAllFeatures()); } } if (allFeatures.isEmpty()) return Collections.emptyList(); List<IEObjectDescription> allDescriptions = Lists.newArrayListWithCapacity(allFeatures.size()); for(JvmFeature feature: allFeatures) { if (!feature.isStatic()) { addDescriptions(feature, allDescriptions); } } return allDescriptions; }
protected IEObjectDescription createDescription(QualifiedName name, JvmFeature feature, TypeBucket bucket) { if (receiver != null) { return new StaticFeatureDescriptionWithSyntacticReceiver(name, feature, receiver, receiverType, bucket.getId(), getSession().isVisible(feature)); } if (receiverType != null) { return new StaticFeatureDescriptionWithImplicitReceiver(name, feature, receiverType, bucket.getId(), getSession().isVisible(feature)); } return new StaticFeatureDescription(name, feature, bucket.getId(), getSession().isVisible(feature)); }
@Override protected List<TypeBucket> concatTypeBuckets(List<? extends JvmType> types, List<TypeBucket> parentResult, Provider resolvedFeaturesProvider) { if (types.isEmpty()) { return parentResult; } List<TypeBucket> result = Lists.newArrayListWithCapacity(3); result.add(new TypeBucket(getId(), types, resolvedFeaturesProvider)); result.addAll(parentResult); return result; }
@Override protected List<IEObjectDescription> getAllLocalElements() { Set<JvmFeature> allFeatures = Sets.newLinkedHashSet(); for(JvmType type: bucket.getTypes()) { if (type instanceof JvmDeclaredType) { Iterable<JvmFeature> features = ((JvmDeclaredType) type).getAllFeatures(); Iterables.addAll(allFeatures, features); } } if (allFeatures.isEmpty()) return Collections.emptyList(); List<IEObjectDescription> allDescriptions = Lists.newArrayListWithCapacity(allFeatures.size()); for(JvmFeature feature: allFeatures) { if (feature.isStatic() || (receiver == null && receiverType == null)) { addDescriptions(feature, allDescriptions); } } return allDescriptions; }
@Override @Pure public boolean equals(final Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; if (!super.equals(obj)) return false; SynonymTypeBucket other = (SynonymTypeBucket) obj; if (other.flags != this.flags) return false; return true; }
protected IEObjectDescription createInstanceDescription(QualifiedName name, JvmFeature feature, TypeBucket bucket) { return new InstanceFeatureDescriptionWithoutReceiver(name, feature, bucket.getId(), getSession().isVisible(feature)); }