expr_paren(e) => { check_expr(sess, def_map, method_map,
tcx, e, is_const, v); }
expr_vstore(_, expr_vstore_slice) |
- expr_vstore(_, expr_vstore_fixed(_)) |
expr_vec(_, m_imm) |
expr_addr_of(m_imm, _) |
expr_field(*) |
ast::expr_vstore(e, vstore) => {
match vstore {
- ast::expr_vstore_fixed(_) |
ast::expr_vstore_slice => classify(e, tcx),
ast::expr_vstore_uniq |
ast::expr_vstore_box |
let (v, _, _) = const_vec(cx, e, *es);
v
}
- ast::expr_vstore(e, ast::expr_vstore_fixed(_)) => {
- const_expr(cx, e)
- }
ast::expr_vstore(sub, ast::expr_vstore_slice) => {
match sub.node {
ast::expr_lit(ref lit) => {
ast::expr_vstore(contents, ast::expr_vstore_mut_slice) => {
return tvec::trans_slice_vstore(bcx, expr, contents, dest);
}
- ast::expr_vstore(contents, ast::expr_vstore_fixed(_)) => {
- return tvec::trans_fixed_vstore(bcx, expr, contents, dest);
- }
ast::expr_vec(*) | ast::expr_repeat(*) => {
return tvec::trans_fixed_vstore(bcx, expr, expr, dest);
}
ast::expr_lit(@codemap::spanned {node: lit_str(_), _}) |
ast::expr_vstore(_, ast::expr_vstore_slice) |
ast::expr_vstore(_, ast::expr_vstore_mut_slice) |
- ast::expr_vstore(_, ast::expr_vstore_fixed(_)) |
ast::expr_vec(*) => {
RvalueDpsExpr
}
v: ast::expr_vstore)
-> ty::vstore {
match v {
- ast::expr_vstore_fixed(None) => ty::vstore_fixed(n),
- ast::expr_vstore_fixed(Some(u)) => {
- if n != u {
- let s = fmt!("fixed-size sequence mismatch: %u vs. %u",u, n);
- fcx.ccx.tcx.sess.span_err(e.span,s);
- }
- ty::vstore_fixed(u)
- }
ast::expr_vstore_uniq => ty::vstore_uniq,
ast::expr_vstore_box | ast::expr_vstore_mut_box => ty::vstore_box,
ast::expr_vstore_slice | ast::expr_vstore_mut_slice => {
#[auto_decode]
#[deriving(Eq)]
pub enum expr_vstore {
- expr_vstore_fixed(Option<uint>), // [1,2,3,4]
expr_vstore_uniq, // ~[1,2,3,4]
expr_vstore_box, // @[1,2,3,4]
expr_vstore_mut_box, // @mut [1,2,3,4]
mk_vstore_e(cx, sp, mk_base_vec_e(cx, sp, exprs),
ast::expr_vstore_slice)
}
-pub fn mk_fixed_vec_e(cx: @ext_ctxt, sp: span, +exprs: ~[@ast::expr])
- -> @ast::expr {
- mk_vstore_e(cx, sp, mk_base_vec_e(cx, sp, exprs),
- ast::expr_vstore_fixed(None))
-}
pub fn mk_base_str(cx: @ext_ctxt, sp: span, +s: ~str) -> @ast::expr {
let lit = ast::lit_str(@s);
return mk_lit(cx, sp, lit);
use ast::{expr_method_call, expr_paren, expr_path, expr_repeat};
use ast::{expr_ret, expr_swap, expr_struct, expr_tup, expr_unary};
use ast::{expr_vec, expr_vstore, expr_vstore_mut_box, expr_inline_asm};
-use ast::{expr_vstore_fixed, expr_vstore_slice, expr_vstore_box};
+use ast::{expr_vstore_slice, expr_vstore_box};
use ast::{expr_vstore_mut_slice, expr_while, extern_fn, field, fn_decl};
use ast::{expr_vstore_uniq, TyClosure, TyBareFn, Onceness, Once, Many};
use ast::{foreign_item, foreign_item_const, foreign_item_fn, foreign_mod};
pub fn print_expr_vstore(s: @ps, t: ast::expr_vstore) {
match t {
- ast::expr_vstore_fixed(Some(i)) => word(s.s, fmt!("%u", i)),
- ast::expr_vstore_fixed(None) => word(s.s, ~"_"),
ast::expr_vstore_uniq => word(s.s, ~"~"),
ast::expr_vstore_box => word(s.s, ~"@"),
ast::expr_vstore_mut_box => {
let ann_node = node_expr(s, expr);
(s.ann.pre)(ann_node);
match expr.node {
- ast::expr_vstore(e, v) => match v {
- ast::expr_vstore_fixed(_) => {
- print_expr(s, e);
- word(s.s, ~"/");
- print_expr_vstore(s, v);
- }
- _ => {
- print_expr_vstore(s, v);
- print_expr(s, e);
- }
+ ast::expr_vstore(e, v) => {
+ print_expr_vstore(s, v);
+ print_expr(s, e);
},
ast::expr_vec(ref exprs, mutbl) => {
ibox(s, indent_unit);