From 3cf582b5291b9ab72cac6d54abb405017922475c Mon Sep 17 00:00:00 2001 From: Lindsey Kuper Date: Tue, 19 Jun 2012 17:06:05 -0700 Subject: [PATCH] Enable integer literal suffix inference. --- src/rustc/middle/typeck/check.rs | 5 +---- .../integer-literal-suffix-inference.rs | 1 - .../inferred-suffix-in-pattern-range.rs | 22 +++++++++++++++++++ .../integer-literal-suffix-inference.rs | 1 - 4 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 src/test/run-pass/inferred-suffix-in-pattern-range.rs diff --git a/src/rustc/middle/typeck/check.rs b/src/rustc/middle/typeck/check.rs index 9b9b92e1e01..14b7e847a2a 100644 --- a/src/rustc/middle/typeck/check.rs +++ b/src/rustc/middle/typeck/check.rs @@ -626,10 +626,7 @@ fn check_lit(fcx: @fn_ctxt, lit: @ast::lit) -> ty::t { ast::lit_int_unsuffixed(_) { // An unsuffixed integer literal could have any integral type, // so we create an integral type variable for it. - ty::mk_var_integral(tcx, fcx.infcx.next_ty_var_integral_id()); - - // FIXME: remove me when #1425 is finished. - ty::mk_mach_int(tcx, ty_i) + ty::mk_var_integral(tcx, fcx.infcx.next_ty_var_integral_id()) } ast::lit_float(_, t) { ty::mk_mach_float(tcx, t) } ast::lit_nil { ty::mk_nil(tcx) } diff --git a/src/test/compile-fail/integer-literal-suffix-inference.rs b/src/test/compile-fail/integer-literal-suffix-inference.rs index 2e868e160fa..96c7983c2ba 100644 --- a/src/test/compile-fail/integer-literal-suffix-inference.rs +++ b/src/test/compile-fail/integer-literal-suffix-inference.rs @@ -1,4 +1,3 @@ -// xfail-test fn main() { // the smallest positive values that need these types diff --git a/src/test/run-pass/inferred-suffix-in-pattern-range.rs b/src/test/run-pass/inferred-suffix-in-pattern-range.rs new file mode 100644 index 00000000000..d0647dd1ec9 --- /dev/null +++ b/src/test/run-pass/inferred-suffix-in-pattern-range.rs @@ -0,0 +1,22 @@ +fn main() { + let x = 2; + let x_message = alt x { + 0 to 1 { "not many" } + _ { "lots" } + }; + assert x_message == "lots"; + + let y = 2i; + let y_message = alt y { + 0 to 1 { "not many" } + _ { "lots" } + }; + assert y_message == "lots"; + + let z = 1u64; + let z_message = alt z { + 0 to 1 { "not many" } + _ { "lots" } + }; + assert z_message == "not many"; +} diff --git a/src/test/run-pass/integer-literal-suffix-inference.rs b/src/test/run-pass/integer-literal-suffix-inference.rs index cc3b4cb150f..8fd51180477 100644 --- a/src/test/run-pass/integer-literal-suffix-inference.rs +++ b/src/test/run-pass/integer-literal-suffix-inference.rs @@ -1,4 +1,3 @@ -// xfail-test fn main() { // The commented-out lines are ones that fail currently. I'm