diff options
| author | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-04-12 20:24:07 -0700 |
|---|---|---|
| committer | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-04-12 20:24:07 -0700 |
| commit | ea0063788bd3de6eeccdf575c3f6cc95d7a5d2c8 (patch) | |
| tree | 51da4f21a10ea93aec67e1ed15a371af67e8d5ab /src | |
| parent | 79e572ebbb4ed7760e17a012b743eba85b902497 (diff) | |
| download | rust-ea0063788bd3de6eeccdf575c3f6cc95d7a5d2c8.tar.gz rust-ea0063788bd3de6eeccdf575c3f6cc95d7a5d2c8.zip | |
Add a run-fail test for result::get, get rid of a FIXME. Also some random other tests, mostly xfailed.
Diffstat (limited to 'src')
| -rw-r--r-- | src/libcore/result.rs | 1 | ||||
| -rw-r--r-- | src/test/compile-fail/issue-1451.rs | 23 | ||||
| -rw-r--r-- | src/test/compile-fail/issue-1871.rs | 11 | ||||
| -rw-r--r-- | src/test/run-fail/result-get-fail.rs | 4 | ||||
| -rw-r--r-- | src/test/run-pass/issue-1466.rs | 3 | ||||
| -rw-r--r-- | src/test/run-pass/issue-1516.rs | 3 | ||||
| -rw-r--r-- | src/test/run-pass/issue-1866.rs | 16 | ||||
| -rw-r--r-- | src/test/run-pass/issue-1926.rs | 53 |
8 files changed, 113 insertions, 1 deletions
diff --git a/src/libcore/result.rs b/src/libcore/result.rs index 04dde5960db..8bba725d21a 100644 --- a/src/libcore/result.rs +++ b/src/libcore/result.rs @@ -21,7 +21,6 @@ pure fn get<T: copy, U>(res: result<T, U>) -> T { alt res { ok(t) { t } err(the_err) { - // FIXME: have a run-fail test for this unchecked{ fail #fmt("get called on error result: %?", the_err); } } } diff --git a/src/test/compile-fail/issue-1451.rs b/src/test/compile-fail/issue-1451.rs new file mode 100644 index 00000000000..549e37acdad --- /dev/null +++ b/src/test/compile-fail/issue-1451.rs @@ -0,0 +1,23 @@ +// xfail-test +type T = { mut f: fn@() }; +type S = { f: fn@() }; + +fn fooS(t: S) { +} + +fn fooT(t: T) { +} + +fn bar() { +} + +fn main() { + let x: fn@() = bar; + fooS({f: x}); + fooS({f: bar}); + + let x: fn@() = bar; + fooT({mut f: x}); + fooT({mut f: bar}); +} + diff --git a/src/test/compile-fail/issue-1871.rs b/src/test/compile-fail/issue-1871.rs new file mode 100644 index 00000000000..6937dbdce07 --- /dev/null +++ b/src/test/compile-fail/issue-1871.rs @@ -0,0 +1,11 @@ +// xfail-test +fn main() { + let f = 42; + + let _g = if f < 5 { + f.honk(); + } + else { + 12 + }; +} diff --git a/src/test/run-fail/result-get-fail.rs b/src/test/run-fail/result-get-fail.rs new file mode 100644 index 00000000000..3b8e693e969 --- /dev/null +++ b/src/test/run-fail/result-get-fail.rs @@ -0,0 +1,4 @@ +// error-pattern:get called on error result: "kitty" +fn main() { + log(error, result::get(result::err("kitty"))); +} \ No newline at end of file diff --git a/src/test/run-pass/issue-1466.rs b/src/test/run-pass/issue-1466.rs new file mode 100644 index 00000000000..984b57bfed6 --- /dev/null +++ b/src/test/run-pass/issue-1466.rs @@ -0,0 +1,3 @@ +fn main() { + let _x = @{a: @10, b: ~true}; +} diff --git a/src/test/run-pass/issue-1516.rs b/src/test/run-pass/issue-1516.rs new file mode 100644 index 00000000000..35926fa9ee3 --- /dev/null +++ b/src/test/run-pass/issue-1516.rs @@ -0,0 +1,3 @@ +// xfail-test +fn main() { let early_error: fn@(str) -> ! = {|msg| fail }; } + diff --git a/src/test/run-pass/issue-1866.rs b/src/test/run-pass/issue-1866.rs new file mode 100644 index 00000000000..8035ad5f038 --- /dev/null +++ b/src/test/run-pass/issue-1866.rs @@ -0,0 +1,16 @@ +// xfail-test +mod a { + type rust_task = uint; + native mod rustrt { + fn rust_task_is_unwinding(rt: *rust_task) -> bool; + } +} + +mod b { + type rust_task = bool; + native mod rustrt { + fn rust_task_is_unwinding(rt: *rust_task) -> bool; + } +} + +fn main() { } diff --git a/src/test/run-pass/issue-1926.rs b/src/test/run-pass/issue-1926.rs new file mode 100644 index 00000000000..0cd4e0fdfc5 --- /dev/null +++ b/src/test/run-pass/issue-1926.rs @@ -0,0 +1,53 @@ +// xfail-test +// fails pretty printing for some reason +use rustc; +import rustc::driver::diagnostic; +import rustc::syntax; +import rustc::syntax::ast; +import rustc::syntax::codemap; +import rustc::syntax::print::pprust; +import rustc::syntax::parse::parser; + +fn new_parse_sess() -> parser::parse_sess { + let cm = codemap::new_codemap(); + let handler = diagnostic::mk_handler(option::none); + let sess = @{ + cm: cm, + mut next_id: 1, + span_diagnostic: diagnostic::mk_span_handler(handler, cm), + mut chpos: 0u, + mut byte_pos: 0u + }; + ret sess; +} + +iface fake_ext_ctxt { + fn session() -> fake_session; + fn cfg() -> ast::crate_cfg; + fn parse_sess() -> parser::parse_sess; +} + +type fake_options = {cfg: ast::crate_cfg}; + +type fake_session = {opts: @fake_options, + parse_sess: parser::parse_sess}; + +impl of fake_ext_ctxt for fake_session { + fn session() -> fake_session {self} + fn cfg() -> ast::crate_cfg { self.opts.cfg } + fn parse_sess() -> parser::parse_sess { self.parse_sess } +} + +fn mk_ctxt() -> fake_ext_ctxt { + let opts : fake_options = {cfg: []}; + {opts: @opts, parse_sess: new_parse_sess()} as fake_ext_ctxt +} + + +fn main() { + let ext_cx = mk_ctxt(); + let s = #ast(expr){__s}; + let e = #ast(expr){__e}; + let f = #ast(expr){$(s).foo {|__e| $(e)}}; + log(error, pprust::expr_to_str(f)); +} |
