}
private SemanticType propagate(Expr.Ternary e,
HashMap<String, SemanticType> environment,
HashSet<String> generics, WyalFile.Context context) {
SemanticType firstType = propagate(e.firstOperand,environment,generics,context);
SemanticType secondType = propagate(e.secondOperand,environment,generics,context);
SemanticType thirdType = propagate(e.thirdOperand,environment,generics,context);
switch(e.op) {
case UPDATE:
checkIsSubtype(SemanticType.SetTupleAnyAny,firstType,e.firstOperand);
// FIXME: should this handle map updates?
checkIsSubtype(SemanticType.Int, secondType, e.secondOperand);