public JvmWildcardTypeReference wildCard() { JvmWildcardTypeReference result = factory.createJvmWildcardTypeReference(); return result; }
public JvmWildcardTypeReference wildCard() { JvmWildcardTypeReference result = factory.createJvmWildcardTypeReference(); return result; }
public JvmWildcardTypeReference wildCardExtends(JvmTypeReference clone) { JvmWildcardTypeReference result = factory.createJvmWildcardTypeReference(); JvmUpperBound upperBound = factory.createJvmUpperBound(); upperBound.setTypeReference(clone); result.getConstraints().add(upperBound); return result; }
public JvmWildcardTypeReference wildCardExtends(JvmTypeReference clone) { JvmWildcardTypeReference result = factory.createJvmWildcardTypeReference(); JvmUpperBound upperBound = factory.createJvmUpperBound(); upperBound.setTypeReference(clone); result.getConstraints().add(upperBound); return result; }
public JvmTypeReference getCommonParameterSuperType(final List<JvmTypeReference> types, List<JvmTypeReference> initiallyRequested) { Function<JvmTypeReference, String> getCanonicalName = new Function<JvmTypeReference, String>() { public String apply(JvmTypeReference from) { return from.getIdentifier(); } }; Set<String> allNames = Sets.newHashSet(Iterables.transform(types, getCanonicalName)); if (allNames.size() == 1) return types.get(0); if (types.size() == initiallyRequested.size()) { Set<String> initiallyRequestedNames = Sets.newHashSet(Iterables.transform(initiallyRequested, getCanonicalName)); if (initiallyRequestedNames.equals(allNames)) { // recursion - return object wildcard JvmTypeReference objectTypeReference = typeReferences.getTypeForName(Object.class, types.get(0).getType()); return typeReferences.wildCardExtends(objectTypeReference); } } JvmTypeReference superType = getCommonSuperType(types); if (superType instanceof JvmWildcardTypeReference) return superType; JvmWildcardTypeReference wildcardTypeReference = factory.createJvmWildcardTypeReference(); if (superType != null) { JvmUpperBound upperBound = factory.createJvmUpperBound(); upperBound.setTypeReference(EcoreUtil2.clone(superType)); wildcardTypeReference.getConstraints().add(upperBound); } return wildcardTypeReference; }
public JvmWildcardTypeReference wildCardSuper(JvmTypeReference clone) { JvmWildcardTypeReference result = factory.createJvmWildcardTypeReference(); JvmLowerBound lowerBound = factory.createJvmLowerBound(); lowerBound.setTypeReference(clone); JvmUpperBound upperBound = factory.createJvmUpperBound(); upperBound.setTypeReference(getTypeForName(Object.class, clone.getType())); result.getConstraints().add(lowerBound); result.getConstraints().add(upperBound); return result; }
@Override public JvmTypeReference doVisitWildcardTypeReference(JvmWildcardTypeReference reference, Boolean replaceWildcards) { JvmWildcardTypeReference result = typesFactory.createJvmWildcardTypeReference(); for(JvmTypeConstraint constraint: reference.getConstraints()) { JvmTypeReference bound = visit(constraint.getTypeReference(), replaceWildcards); if (bound instanceof JvmWildcardTypeReference) { result.getConstraints().addAll(Lists.transform(((JvmWildcardTypeReference) bound).getConstraints(), new Function<JvmTypeConstraint, JvmTypeConstraint>() { public JvmTypeConstraint apply(JvmTypeConstraint input) { return EcoreUtil2.cloneIfContained(input); } })); } else { JvmTypeConstraint copiedConstraint = (JvmTypeConstraint) EcoreUtil.create(constraint.eClass()); copiedConstraint.setTypeReference(primitives.asWrapperTypeIfPrimitive(bound)); result.getConstraints().add(copiedConstraint); } } return result; }
@Override public JvmTypeReference toJavaCompliantTypeReference(IVisibilityHelper helper) { TypesFactory typesFactory = getTypesFactory(); JvmWildcardTypeReference result = typesFactory.createJvmWildcardTypeReference(); if (upperBounds != null && !upperBounds.isEmpty()) { List<LightweightTypeReference> nonInterfaceTypes = getNonInterfaceTypes(upperBounds); JvmTypeReference upperBound = toJavaCompliantTypeReference(nonInterfaceTypes != null ? nonInterfaceTypes: upperBounds, helper); JvmUpperBound constraint = typesFactory.createJvmUpperBound(); constraint.setTypeReference(upperBound); result.getConstraints().add(constraint); } if (lowerBound != null) { JvmLowerBound constraint = typesFactory.createJvmLowerBound(); constraint.setTypeReference(lowerBound.toJavaCompliantTypeReference()); result.getConstraints().add(constraint); } return result; }
@Override public JvmTypeReference toTypeReference() { TypesFactory typesFactory = getTypesFactory(); JvmWildcardTypeReference result = typesFactory.createJvmWildcardTypeReference(); if (upperBounds != null && !upperBounds.isEmpty()) { for(LightweightTypeReference typeArgument: upperBounds) { JvmUpperBound constraint = typesFactory.createJvmUpperBound(); constraint.setTypeReference(typeArgument.getWrapperTypeIfPrimitive().toTypeReference()); result.getConstraints().add(constraint); } } if (lowerBound != null) { JvmLowerBound constraint = typesFactory.createJvmLowerBound(); constraint.setTypeReference(lowerBound.getWrapperTypeIfPrimitive().toTypeReference()); result.getConstraints().add(constraint); } return result; }
private JvmOperation genMethodForGuiceModuleWithWildcard(final EObject element, final String methodName, final JvmTypeReference typeRefToBind, final boolean shouldOverride, final IAcceptor<JvmExecutable> acceptor) { JvmOperation _xblockexpression = null; { final JvmWildcardTypeReference wildCard = this._typesFactory.createJvmWildcardTypeReference(); final JvmUpperBound upperBound = this._typesFactory.createJvmUpperBound(); upperBound.setTypeReference(this._jvmTypesBuilder.cloneWithProxies(typeRefToBind)); EList<JvmTypeConstraint> _constraints = wildCard.getConstraints(); this._jvmTypesBuilder.<JvmUpperBound>operator_add(_constraints, upperBound); _xblockexpression = this.genMethodForGuiceModule(element, methodName, this._typeReferenceBuilder.typeRef(Class.class, wildCard), shouldOverride, acceptor); } return _xblockexpression; }
protected JvmTypeReference createTypeArgument(Type actualTypeArgument) { if (actualTypeArgument instanceof WildcardType) { WildcardType wildcardType = (WildcardType) actualTypeArgument; JvmWildcardTypeReference result = TypesFactory.eINSTANCE.createJvmWildcardTypeReference(); InternalEList<JvmTypeConstraint> constraints = (InternalEList<JvmTypeConstraint>)result.getConstraints(); Type[] upperBounds = wildcardType.getUpperBounds(); if (upperBounds.length != 0) { for (Type boundType : upperBounds) { JvmUpperBound upperBound = TypesFactory.eINSTANCE.createJvmUpperBound(); JvmTypeReference upperBoundType = createTypeReference(boundType); ((JvmTypeConstraintImplCustom) upperBound).internalSetTypeReference(upperBoundType); constraints.addUnique(upperBound); } } Type[] lowerBounds = wildcardType.getLowerBounds(); if (lowerBounds.length != 0) { for (Type boundType : lowerBounds) { JvmLowerBound lowerBound = TypesFactory.eINSTANCE.createJvmLowerBound(); JvmTypeReference lowerBoundType = createTypeReference(boundType); ((JvmTypeConstraintImplCustom) lowerBound).internalSetTypeReference(lowerBoundType); constraints.addUnique(lowerBound); } } return result; } else { JvmTypeReference result = createTypeReference(actualTypeArgument); return result; } }
protected JvmTypeReference createTypeArgument(Type actualTypeArgument) { if (actualTypeArgument instanceof WildcardType) { WildcardType wildcardType = (WildcardType) actualTypeArgument; JvmWildcardTypeReference result = TypesFactory.eINSTANCE.createJvmWildcardTypeReference(); InternalEList<JvmTypeConstraint> constraints = (InternalEList<JvmTypeConstraint>)result.getConstraints(); Type[] upperBounds = wildcardType.getUpperBounds(); if (upperBounds.length != 0) { for (Type boundType : upperBounds) { JvmUpperBound upperBound = TypesFactory.eINSTANCE.createJvmUpperBound(); JvmTypeReference upperBoundType = createTypeReference(boundType); ((JvmTypeConstraintImplCustom) upperBound).internalSetTypeReference(upperBoundType); constraints.addUnique(upperBound); } } Type[] lowerBounds = wildcardType.getLowerBounds(); if (lowerBounds.length != 0) { for (Type boundType : lowerBounds) { JvmLowerBound lowerBound = TypesFactory.eINSTANCE.createJvmLowerBound(); JvmTypeReference lowerBoundType = createTypeReference(boundType); ((JvmTypeConstraintImplCustom) lowerBound).internalSetTypeReference(lowerBoundType); constraints.addUnique(lowerBound); } } return result; } else { JvmTypeReference result = createTypeReference(actualTypeArgument); return result; } }
JvmWildcardTypeReference result = typesFactory.createJvmWildcardTypeReference(); List<JvmTypeConstraint> newConstraints = Lists.newArrayListWithCapacity(reference.getConstraints().size()); boolean lowerFound = false;
for(JvmTypeReference paramType: Lists.newArrayList(getParamTypes())) { if (!(paramType instanceof JvmWildcardTypeReference)) { JvmWildcardTypeReference paramWildcard = typesFactory.createJvmWildcardTypeReference(); JvmLowerBound lowerBound = typesFactory.createJvmLowerBound(); JvmTypeReference wrapped = wrapIfNecessary(paramType); JvmWildcardTypeReference returnType = typesFactory.createJvmWildcardTypeReference(); JvmUpperBound returnTypeBound = typesFactory.createJvmUpperBound(); JvmTypeReference wrapped = wrapIfNecessary(getReturnType());
public JvmTypeReference createTypeArgument(BinaryTypeArgumentSignature actualTypeArgument, Map<String, JvmTypeParameter> typeParameters) { if (actualTypeArgument.isWildcard()) { JvmWildcardTypeReference result = TypesFactory.eINSTANCE.createJvmWildcardTypeReference(); InternalEList<JvmTypeConstraint> constraints = (InternalEList<JvmTypeConstraint>) result.getConstraints(); BinaryGenericTypeSignature upperBound = actualTypeArgument.getUpperBound(); if (upperBound != null) { JvmUpperBound jvmUpperBound = TypesFactory.eINSTANCE.createJvmUpperBound(); JvmTypeReference upperBoundType = createTypeReference(upperBound, typeParameters); ((JvmTypeConstraintImplCustom) jvmUpperBound).internalSetTypeReference(upperBoundType); constraints.addUnique(jvmUpperBound); } else { JvmUpperBound jvmUpperBound = TypesFactory.eINSTANCE.createJvmUpperBound(); // TODO this might be bogus due to constrained type information on the declarator ((JvmTypeConstraintImplCustom) jvmUpperBound).internalSetTypeReference(createObjectTypeReference()); constraints.addUnique(jvmUpperBound); } BinaryGenericTypeSignature lowerBound = actualTypeArgument.getLowerBound(); if (lowerBound != null) { JvmLowerBound jvmLowerBound = TypesFactory.eINSTANCE.createJvmLowerBound(); JvmTypeReference boundType = createTypeReference(lowerBound, typeParameters); ((JvmTypeConstraintImplCustom) jvmLowerBound).internalSetTypeReference(boundType); constraints.addUnique(jvmLowerBound); } return result; } else { return createTypeReference(actualTypeArgument, typeParameters); } }