use of org.eclipse.jdt.internal.corext.refactoring.typeconstraints2.ConstraintVariable2 in project che by eclipse.
the class InferTypeArgumentsTCModel method makeFixedSupertypeElementVariables.
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) {
// do not consider
continue;
} 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);
}
use of org.eclipse.jdt.internal.corext.refactoring.typeconstraints2.ConstraintVariable2 in project che by eclipse.
the class InferTypeArgumentsTCModel method internalCreateElementEqualsConstraints.
private void internalCreateElementEqualsConstraints(ConstraintVariable2 cv, ConstraintVariable2 initializerCv, boolean isAssignment) {
if (cv == null || initializerCv == null)
return;
Map<String, CollectionElementVariable2> leftElements = getElementVariables(cv);
Map<String, CollectionElementVariable2> rightElements = getElementVariables(initializerCv);
for (Iterator<Entry<String, CollectionElementVariable2>> leftIter = leftElements.entrySet().iterator(); leftIter.hasNext(); ) {
Entry<String, CollectionElementVariable2> leftEntry = leftIter.next();
String leftTypeVariableKey = leftEntry.getKey();
CollectionElementVariable2 rightElementVariable = rightElements.get(leftTypeVariableKey);
if (rightElementVariable != null) {
CollectionElementVariable2 leftElementVariable = leftEntry.getValue();
createEqualsConstraint(leftElementVariable, rightElementVariable);
// recursive
internalCreateElementEqualsConstraints(leftElementVariable, rightElementVariable, false);
}
}
ArrayElementVariable2 leftArrayElement = getArrayElementVariable(cv);
ArrayElementVariable2 rightArrayElement = getArrayElementVariable(initializerCv);
if (leftArrayElement != null && rightArrayElement != null) {
if (isAssignment)
createSubtypeConstraint(rightArrayElement, leftArrayElement);
else
createEqualsConstraint(leftArrayElement, rightArrayElement);
// recursive
internalCreateElementEqualsConstraints(leftArrayElement, rightArrayElement, false);
}
}
use of org.eclipse.jdt.internal.corext.refactoring.typeconstraints2.ConstraintVariable2 in project che by eclipse.
the class InferTypeArgumentsTCModel method createSubtypeConstraint.
public void createSubtypeConstraint(ConstraintVariable2 cv1, ConstraintVariable2 cv2) {
if (!keep(cv1, cv2))
return;
ConstraintVariable2 storedCv1 = storedCv(cv1);
ConstraintVariable2 storedCv2 = storedCv(cv2);
ITypeConstraint2 typeConstraint = new SubTypeConstraint2(storedCv1, storedCv2);
Object storedTc = fTypeConstraints.get(typeConstraint);
if (storedTc == null) {
fTypeConstraints.put(typeConstraint, typeConstraint);
} else {
typeConstraint = (ITypeConstraint2) storedTc;
}
registerCvWithTc(storedCv1, typeConstraint);
registerCvWithTc(storedCv2, typeConstraint);
}
use of org.eclipse.jdt.internal.corext.refactoring.typeconstraints2.ConstraintVariable2 in project che by eclipse.
the class InferTypeArgumentsTCModel method makeParameterTypeVariable.
public ParameterTypeVariable2 makeParameterTypeVariable(IMethodBinding methodBinding, int parameterIndex) {
if (methodBinding == null)
return null;
TType type = getBoxedType(methodBinding.getParameterTypes()[parameterIndex], /*no boxing*/
null);
if (type == null)
return null;
ParameterTypeVariable2 cv = new ParameterTypeVariable2(type, parameterIndex, methodBinding);
ParameterTypeVariable2 storedCv = (ParameterTypeVariable2) storedCv(cv);
if (storedCv == cv) {
if (methodBinding.getDeclaringClass().isLocal() || Modifier.isPrivate(methodBinding.getModifiers()))
fCuScopedConstraintVariables.add(cv);
makeElementVariables(storedCv, type);
makeArrayElementVariable(storedCv);
if (fStoreToString)
//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
storedCv.setData(ConstraintVariable2.TO_STRING, "[Parameter(" + parameterIndex + "," + Bindings.asString(methodBinding) + ")]");
}
return storedCv;
}
Aggregations