502 |
in |
in |
503 |
raise Fail "E_Tuple not yet implemented" (* FIXME *) |
raise Fail "E_Tuple not yet implemented" (* FIXME *) |
504 |
end |
end |
505 |
| PT.E_Sequence args => let |
| PT.E_Sequence args => (case checkExprList (env, cxt, args) |
506 |
val (args, ty::tys) = checkExprList (env, cxt, args) |
(* FIXME: need kind for concrete types here! *) |
507 |
in |
of ([], _) => (AST.E_Seq[], Ty.T_Sequence(Ty.T_Var(MetaVar.newTyVar()), Ty.DimConst 0)) |
508 |
|
| (args, ty::tys) => |
509 |
if TU.isFixedSizeType(TU.pruneHead ty) |
if TU.isFixedSizeType(TU.pruneHead ty) |
510 |
then let |
then let |
511 |
fun chkTy ty' = U.equalType(ty, ty') |
fun chkTy ty' = U.equalType(ty, ty') |
516 |
else err(cxt, [S "arguments of sequence expression must have same type"]) |
else err(cxt, [S "arguments of sequence expression must have same type"]) |
517 |
end |
end |
518 |
else err(cxt, [S "sequence expression of non-value argument type"]) |
else err(cxt, [S "sequence expression of non-value argument type"]) |
519 |
end |
(* end case *)) |
520 |
| PT.E_Cons args => let |
| PT.E_Cons args => let |
521 |
val (args, tys as ty::_) = checkExprList (env, cxt, args) |
val (args, tys as ty::_) = checkExprList (env, cxt, args) |
522 |
in |
in |