/** * Note that we need evaluate this operator at most once */ @Override public byte evaluate(TypeVariable lhs) { if (lhs.type.equals(type)) { return NOT_CHANGED_AND_FIXED; } else { lhs.setType(type); return CHANGED_AND_FIXED; } }
/** * Note that we need evaluate this operator at most once */ @Override public byte evaluate(TypeVariable lhs) { if (lhs.type.equals(type)) { return NOT_CHANGED_AND_FIXED; } else { lhs.setType(type); return CHANGED_AND_FIXED; } }
/** * TODO: work on efficiency shortcuts for this. */ @Override public byte evaluate(TypeVariable lhs, TypeVariable[] rhsOperands) { TypeAbstraction lhsType = lhs.getType(); TypeVariable rhs = rhsOperands[0]; TypeAbstraction rhsType = rhs.getType(); if (lhsType.equals(rhsType)) { return NOT_CHANGED; } else { lhs.setType(rhsType); return CHANGED; } }
/** * TODO: work on efficiency shortcuts for this. */ @Override public byte evaluate(TypeVariable lhs, TypeVariable[] rhsOperands) { TypeAbstraction lhsType = lhs.getType(); TypeVariable rhs = rhsOperands[0]; TypeAbstraction rhsType = rhs.getType(); if (lhsType.equals(rhsType)) { return NOT_CHANGED; } else { lhs.setType(rhsType); return CHANGED; } }
@Override public byte evaluate(TypeVariable lhs, TypeVariable[] rhs) { TypeAbstraction lhsType = lhs.getType(); TypeAbstraction meet = TypeAbstraction.TOP; for (TypeVariable r : rhs) { if (r != null && r.getType() != null) { meet = meet.meet(r.getType()); } } if (lhsType.equals(meet)) { return NOT_CHANGED; } else { lhs.setType(meet); return CHANGED; } }
@Override public byte evaluate(TypeVariable lhs, TypeVariable[] rhs) { TypeAbstraction lhsType = lhs.getType(); TypeAbstraction meet = TypeAbstraction.TOP; for (TypeVariable r : rhs) { if (r != null && r.getType() != null) { meet = meet.meet(r.getType()); } } if (lhsType.equals(meet)) { return NOT_CHANGED; } else { lhs.setType(meet); return CHANGED; } }
v.setType(new ConeType(klass)); } else { v.setType(BOTTOM); v.setType(language.getPrimitive(t)); if (st.isConstant(i)) { TypeVariable v = getVariable(i); v.setType(getConstantType(i)); IClass klass = cha.lookupClass(t); if (klass == null) { v.setType(BOTTOM); } else { v.setType(new PointType(klass)); klass = cha.lookupClass(t); if (klass != null) { v.setType(v.getType().meet(new PointType(klass))); IClass tc = cha.lookupClass(tx); if (tc != null) { v.setType(v.getType().meet(new ConeType(tc)));
v.setType(new ConeType(klass)); } else { v.setType(BOTTOM); v.setType(language.getPrimitive(t)); if (st.isConstant(i)) { TypeVariable v = getVariable(i); v.setType(getConstantType(i)); IClass klass = cha.lookupClass(t); if (klass == null) { v.setType(BOTTOM); } else { v.setType(new PointType(klass)); klass = cha.lookupClass(t); if (klass != null) { v.setType(v.getType().meet(new PointType(klass))); IClass tc = cha.lookupClass(tx); if (tc != null) { v.setType(v.getType().meet(new ConeType(tc)));
return NOT_CHANGED; } else { lhs.setType(meet); return CHANGED;
return NOT_CHANGED; } else { lhs.setType(meet); return CHANGED;
return NOT_CHANGED; } else { L.setType(meet); return CHANGED;
return NOT_CHANGED; } else { L.setType(meet); return CHANGED;
lhs.setType(PrimitiveType.getPrimitive(elementType)); return CHANGED; IClass klass = cha.lookupClass(elementType); assert klass != null; lhs.setType(new ConeType(klass)); return CHANGED; IClass klass = cha.lookupClass(elementType); if (klass != null) { lhs.setType(new ConeType(klass)); } else { lhs.setType(TypeAbstraction.TOP);
lhs.setType(PrimitiveType.getPrimitive(elementType)); return CHANGED; IClass klass = cha.lookupClass(elementType); assert klass != null; lhs.setType(new ConeType(klass)); return CHANGED; IClass klass = cha.lookupClass(elementType); if (klass != null) { lhs.setType(new ConeType(klass)); } else { lhs.setType(TypeAbstraction.TOP);