public void makeFixedElementVariables(ConstraintVariable2 expressionCv, TType type) { if (isAGenericType(type)) { GenericType genericType= (GenericType) type.getTypeDeclaration(); TType[] typeParameters= genericType.getTypeParameters(); TType[] typeArguments= null; if (type.isParameterizedType()) typeArguments= ((ParameterizedType) type).getTypeArguments(); for (int i= 0; i < typeParameters.length; i++) { TypeVariable typeVariable= (TypeVariable) typeParameters[i]; CollectionElementVariable2 elementCv= makeElementVariable(expressionCv, typeVariable, i); TType referenceTypeArgument; if (typeArguments == null) { // raw type continue; // do not consider } else { referenceTypeArgument= typeArguments[i]; } createEqualsConstraint(elementCv, makeImmutableTypeVariable(referenceTypeArgument)); // if (typeVariable.getBounds().length != 0) { // //TODO: create subtype constraints for bounds // } } } makeFixedElementVariablesFromSupertypes(expressionCv, type.getTypeDeclaration()); }
public void makeFixedElementVariables(ConstraintVariable2 expressionCv, TType type) { if (isAGenericType(type)) { GenericType genericType= (GenericType) type.getTypeDeclaration(); TType[] typeParameters= genericType.getTypeParameters(); TType[] typeArguments= null; if (type.isParameterizedType()) typeArguments= ((ParameterizedType) type).getTypeArguments(); for (int i= 0; i < typeParameters.length; i++) { TypeVariable typeVariable= (TypeVariable) typeParameters[i]; CollectionElementVariable2 elementCv= makeElementVariable(expressionCv, typeVariable, i); TType referenceTypeArgument; if (typeArguments == null) { // raw type continue; // do not consider } else { referenceTypeArgument= typeArguments[i]; } createEqualsConstraint(elementCv, makeImmutableTypeVariable(referenceTypeArgument)); // if (typeVariable.getBounds().length != 0) { // //TODO: create subtype constraints for bounds // } } } makeFixedElementVariablesFromSupertypes(expressionCv, type.getTypeDeclaration()); }
public void makeFixedElementVariables(ConstraintVariable2 expressionCv, TType type) { if (isAGenericType(type)) { GenericType genericType= (GenericType) type.getTypeDeclaration(); TType[] typeParameters= genericType.getTypeParameters(); TType[] typeArguments= null; if (type.isParameterizedType()) typeArguments= ((ParameterizedType) type).getTypeArguments(); for (int i= 0; i < typeParameters.length; i++) { TypeVariable typeVariable= (TypeVariable) typeParameters[i]; CollectionElementVariable2 elementCv= makeElementVariable(expressionCv, typeVariable, i); TType referenceTypeArgument; if (typeArguments == null) { // raw type continue; // do not consider } else { referenceTypeArgument= typeArguments[i]; } createEqualsConstraint(elementCv, makeImmutableTypeVariable(referenceTypeArgument)); // if (typeVariable.getBounds().length != 0) { // //TODO: create subtype constraints for bounds // } } } makeFixedElementVariablesFromSupertypes(expressionCv, type.getTypeDeclaration()); }
private void makeSupertypeElementVariables(ConstraintVariable2 expressionCv, TType supertype) { if (supertype.isParameterizedType() || supertype.isRawType()) { TType[] typeArguments= null; if (supertype.isParameterizedType()) { typeArguments= ((ParameterizedType) supertype).getTypeArguments(); } TypeVariable[] typeParameters= ((GenericType) supertype.getTypeDeclaration()).getTypeParameters(); for (int i= 0; i < typeParameters.length; i++) { TypeVariable typeParameter= typeParameters[i]; TType referenceTypeArgument; if (typeArguments == null) { // raw type referenceTypeArgument= typeParameter.getErasure(); } else { referenceTypeArgument= typeArguments[i]; } if (referenceTypeArgument.isTypeVariable()) { CollectionElementVariable2 referenceTypeArgumentCv= getElementVariable(expressionCv, (TypeVariable) referenceTypeArgument); setElementVariable(expressionCv, referenceTypeArgumentCv, typeParameter); } else { makeElementVariable(expressionCv, typeParameter, CollectionElementVariable2.NOT_DECLARED_TYPE_VARIABLE_INDEX); } } } makeElementVariablesFromSupertypes(expressionCv, supertype); }
private void makeFixedSupertypeElementVariables(ConstraintVariable2 expressionCv, TType supertype) { if (supertype.isParameterizedType() || supertype.isRawType()) { TType[] typeArguments= null; if (supertype.isParameterizedType()) typeArguments= ((ParameterizedType) supertype).getTypeArguments(); TypeVariable[] typeParameters= ((GenericType) supertype.getTypeDeclaration()).getTypeParameters(); for (int i= 0; i < typeParameters.length; i++) { TypeVariable typeParameter= typeParameters[i]; TType referenceTypeArgument; if (typeArguments == null) { // raw type continue; // do not consider } else { referenceTypeArgument= typeArguments[i]; } if (referenceTypeArgument.isTypeVariable()) { CollectionElementVariable2 referenceTypeArgumentCv= getElementVariable(expressionCv, (TypeVariable) referenceTypeArgument); setElementVariable(expressionCv, referenceTypeArgumentCv, typeParameter); } else { CollectionElementVariable2 elementCv= makeElementVariable(expressionCv, typeParameter, CollectionElementVariable2.NOT_DECLARED_TYPE_VARIABLE_INDEX); createEqualsConstraint(elementCv, makeImmutableTypeVariable(referenceTypeArgument)); } } } makeFixedElementVariablesFromSupertypes(expressionCv, supertype); }
private void makeFixedSupertypeElementVariables(ConstraintVariable2 expressionCv, TType supertype) { if (supertype.isParameterizedType() || supertype.isRawType()) { TType[] typeArguments= null; if (supertype.isParameterizedType()) typeArguments= ((ParameterizedType) supertype).getTypeArguments(); TypeVariable[] typeParameters= ((GenericType) supertype.getTypeDeclaration()).getTypeParameters(); for (int i= 0; i < typeParameters.length; i++) { TypeVariable typeParameter= typeParameters[i]; TType referenceTypeArgument; if (typeArguments == null) { // raw type continue; // do not consider } else { referenceTypeArgument= typeArguments[i]; } if (referenceTypeArgument.isTypeVariable()) { CollectionElementVariable2 referenceTypeArgumentCv= getElementVariable(expressionCv, (TypeVariable) referenceTypeArgument); setElementVariable(expressionCv, referenceTypeArgumentCv, typeParameter); } else { CollectionElementVariable2 elementCv= makeElementVariable(expressionCv, typeParameter, CollectionElementVariable2.NOT_DECLARED_TYPE_VARIABLE_INDEX); createEqualsConstraint(elementCv, makeImmutableTypeVariable(referenceTypeArgument)); } } } makeFixedElementVariablesFromSupertypes(expressionCv, supertype); }
private void makeSupertypeElementVariables(ConstraintVariable2 expressionCv, TType supertype) { if (supertype.isParameterizedType() || supertype.isRawType()) { TType[] typeArguments= null; if (supertype.isParameterizedType()) { typeArguments= ((ParameterizedType) supertype).getTypeArguments(); } TypeVariable[] typeParameters= ((GenericType) supertype.getTypeDeclaration()).getTypeParameters(); for (int i= 0; i < typeParameters.length; i++) { TypeVariable typeParameter= typeParameters[i]; TType referenceTypeArgument; if (typeArguments == null) { // raw type referenceTypeArgument= typeParameter.getErasure(); } else { referenceTypeArgument= typeArguments[i]; } if (referenceTypeArgument.isTypeVariable()) { CollectionElementVariable2 referenceTypeArgumentCv= getElementVariable(expressionCv, (TypeVariable) referenceTypeArgument); if (referenceTypeArgumentCv != null) { setElementVariable(expressionCv, referenceTypeArgumentCv, typeParameter); continue; } } makeElementVariable(expressionCv, typeParameter, CollectionElementVariable2.NOT_DECLARED_TYPE_VARIABLE_INDEX); } } makeElementVariablesFromSupertypes(expressionCv, supertype); }
private void makeSupertypeElementVariables(ConstraintVariable2 expressionCv, TType supertype) { if (supertype.isParameterizedType() || supertype.isRawType()) { TType[] typeArguments= null; if (supertype.isParameterizedType()) { typeArguments= ((ParameterizedType) supertype).getTypeArguments(); } TypeVariable[] typeParameters= ((GenericType) supertype.getTypeDeclaration()).getTypeParameters(); for (int i= 0; i < typeParameters.length; i++) { TypeVariable typeParameter= typeParameters[i]; TType referenceTypeArgument; if (typeArguments == null) { // raw type referenceTypeArgument= typeParameter.getErasure(); } else { referenceTypeArgument= typeArguments[i]; } if (referenceTypeArgument.isTypeVariable()) { CollectionElementVariable2 referenceTypeArgumentCv= getElementVariable(expressionCv, (TypeVariable) referenceTypeArgument); if (referenceTypeArgumentCv != null) { setElementVariable(expressionCv, referenceTypeArgumentCv, typeParameter); continue; } } makeElementVariable(expressionCv, typeParameter, CollectionElementVariable2.NOT_DECLARED_TYPE_VARIABLE_INDEX); } } makeElementVariablesFromSupertypes(expressionCv, supertype); }
private void makeFixedSupertypeElementVariables(ConstraintVariable2 expressionCv, TType supertype) { if (supertype.isParameterizedType() || supertype.isRawType()) { TType[] typeArguments= null; if (supertype.isParameterizedType()) typeArguments= ((ParameterizedType) supertype).getTypeArguments(); TypeVariable[] typeParameters= ((GenericType) supertype.getTypeDeclaration()).getTypeParameters(); for (int i= 0; i < typeParameters.length; i++) { TypeVariable typeParameter= typeParameters[i]; TType referenceTypeArgument; if (typeArguments == null) { // raw type continue; // do not consider } else { referenceTypeArgument= typeArguments[i]; } if (referenceTypeArgument.isTypeVariable()) { CollectionElementVariable2 referenceTypeArgumentCv= getElementVariable(expressionCv, (TypeVariable) referenceTypeArgument); setElementVariable(expressionCv, referenceTypeArgumentCv, typeParameter); } else { CollectionElementVariable2 elementCv= makeElementVariable(expressionCv, typeParameter, CollectionElementVariable2.NOT_DECLARED_TYPE_VARIABLE_INDEX); createEqualsConstraint(elementCv, makeImmutableTypeVariable(referenceTypeArgument)); } } } makeFixedElementVariablesFromSupertypes(expressionCv, supertype); }
TType[] typeArguments= ((ParameterizedType) declaredParameterType).getTypeArguments(); TypeVariable[] typeParameters= ((GenericType) declaredParameterType.getTypeDeclaration()).getTypeParameters(); for (int ta= 0; ta < typeArguments.length; ta++) {
TType[] typeArguments= ((ParameterizedType) declaredParameterType).getTypeArguments(); TypeVariable[] typeParameters= ((GenericType) declaredParameterType.getTypeDeclaration()).getTypeParameters(); for (int ta= 0; ta < typeArguments.length; ta++) {
TType[] typeArguments= ((ParameterizedType) declaredParameterType).getTypeArguments(); TypeVariable[] typeParameters= ((GenericType) declaredParameterType.getTypeDeclaration()).getTypeParameters(); for (int ta= 0; ta < typeArguments.length; ta++) {
TType[] referenceTypeArguments= null; if (reference.isParameterizedType()) { referenceTypeArguments= ((ParameterizedType) reference).getTypeArguments();
TType[] referenceTypeArguments= null; if (reference.isParameterizedType()) { referenceTypeArguments= ((ParameterizedType) reference).getTypeArguments();
TType[] referenceTypeArguments= null; if (reference.isParameterizedType()) { referenceTypeArguments= ((ParameterizedType) reference).getTypeArguments();