Closed
Description
Getting an ICE trying to use rparse with 0.5. Annoyingly it only happens when I actually use the rparse library: if I simply paste the relevant rparse code into my test case it compiles fine. Here is the test case. It assumes that you have rparse d5baebecf681870b4f06660968c15c7d823b3cfe available (rparse doesn't have any dependencies so it should be simple to build):
#[allow(non_implicitly_copyable_typarams)];
extern mod std;
extern mod rparse (name = "rparse", vers = "0.6");
use rparse::{StringParsers, seq2};
priv fn langtag()
{
let suffix = do seq2("oh".lit(), "noes".lit())
|_l, _name| {result::Ok(~"-")};
fmt!("%?", suffix);
}
//RUST_LOG=rustc=1,::rt::backtrace rustc -L . --test rparse_ice.rs
//rust: task failed at 'Key not found in table: 5331', /Users/jessejones/Source/Third_Party/rust/src/librustc/rustc.rc:1
//error: internal compiler error: unexpected failure
//note: the compiler hit an unexpected failure path. this is a bug
//note: try running with RUST_LOG=rustc=1,::rt::backtrace to get further details and report the results to github.com/mozilla/rust/issues
//rust: task failed at 'explicit failure', /Users/jessejones/Source/Third_Party/rust/src/librustc/rustc.rc:425
//rust: domain main @0x7f8134800010 root task failed
//rust: task failed at 'killed', /Users/jessejones/Source/Third_Party/rust/src/libcore/task/mod.rs:570
//make: *** [rparse_ice] Error 101
//exited with code 2
// Note that there is no ICE if the seq2+ret code is pasted into here (and given new names like seq2b and retb).
// Also the ICE happens with rparse optimizations on and off (on is the default).