Fix type disagreements in lowering typeck.ty to llvm TypeRefs, enable complex.rs test.
This commit is contained in:
parent
1090c5e69c
commit
c262543d3b
2 changed files with 11 additions and 10 deletions
|
@ -522,6 +522,7 @@ TEST_XFAILS_SELF := $(filter-out \
|
|||
arith-2.rs \
|
||||
bool-not.rs \
|
||||
char.rs \
|
||||
complex.rs \
|
||||
dead-code-one-arm-if.rs \
|
||||
deep.rs \
|
||||
div-mod.rs \
|
||||
|
|
|
@ -196,16 +196,16 @@ fn T_array(TypeRef t, uint n) -> TypeRef {
|
|||
ret llvm.LLVMArrayType(t, n);
|
||||
}
|
||||
|
||||
fn T_vec(TypeRef t, uint n) -> TypeRef {
|
||||
ret T_struct(vec(T_int(), // Refcount
|
||||
T_int(), // Alloc
|
||||
T_int(), // Fill
|
||||
T_array(t, n) // Body elements
|
||||
fn T_vec(TypeRef t) -> TypeRef {
|
||||
ret T_struct(vec(T_int(), // Refcount
|
||||
T_int(), // Alloc
|
||||
T_int(), // Fill
|
||||
T_array(t, 0u) // Body elements
|
||||
));
|
||||
}
|
||||
|
||||
fn T_str(uint n) -> TypeRef {
|
||||
ret T_vec(T_i8(), n);
|
||||
fn T_str() -> TypeRef {
|
||||
ret T_vec(T_i8());
|
||||
}
|
||||
|
||||
fn T_box(TypeRef t) -> TypeRef {
|
||||
|
@ -265,12 +265,12 @@ fn type_of_inner(@crate_ctxt cx, @typeck.ty t) -> TypeRef {
|
|||
}
|
||||
}
|
||||
case (typeck.ty_char) { ret T_char(); }
|
||||
case (typeck.ty_str) { ret T_str(0u); }
|
||||
case (typeck.ty_str) { ret T_ptr(T_str()); }
|
||||
case (typeck.ty_box(?t)) {
|
||||
ret T_ptr(T_box(type_of(cx, t)));
|
||||
}
|
||||
case (typeck.ty_vec(?t)) {
|
||||
ret T_ptr(T_vec(type_of(cx, t), 0u));
|
||||
ret T_ptr(T_vec(type_of(cx, t)));
|
||||
}
|
||||
case (typeck.ty_tup(?elts)) {
|
||||
let vec[TypeRef] tys = vec();
|
||||
|
@ -544,7 +544,7 @@ impure fn trans_lit(@block_ctxt cx, &ast.lit lit) -> result {
|
|||
vec(p2i(C_str(cx.fcx.ccx, s)),
|
||||
C_int(len)));
|
||||
sub.val = sub.bcx.build.IntToPtr(sub.val,
|
||||
T_ptr(T_str(len as uint)));
|
||||
T_ptr(T_str()));
|
||||
cx.cleanups += vec(clean(bind trans_drop_str(_, sub.val)));
|
||||
ret sub;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue