diff --git a/src/test/run-pass/conditional-compile.rs b/src/test/run-pass/conditional-compile.rs index 3f2a15fb0055..bfc9e4d8e6c5 100644 --- a/src/test/run-pass/conditional-compile.rs +++ b/src/test/run-pass/conditional-compile.rs @@ -1,8 +1,74 @@ // xfail-stage0 +#[cfg(bogus)] +const bool b = false; + +const bool b = true; + +#[cfg(bogus)] +native "rust" mod rustrt { + // This symbol doesn't exist and would be a link error if this + // module was translated + fn bogus(); +} + +native "rust" mod rustrt { +} + +#[cfg(bogus)] +type t = int; + +type t = bool; + +#[cfg(bogus)] +tag tg { + foo; +} + +tag tg { + bar; +} + +#[cfg(bogus)] +obj o() { + fn f() { ret bogus; } +} + +obj o() { +} + +#[cfg(bogus)] +resource r(int i) {} + +resource r(int i) {} + +#[cfg(bogus)] +mod m { + // This needs to parse but would fail in typeck. Since it's not in + // the current config it should not be typechecked. + fn bogus() { ret 0; } +} + +mod m { + + // Submodules have slightly different code paths than the top-level + // module, so let's make sure this jazz works here as well + #[cfg(bogus)] + fn f() {} + + fn f() {} +} + // Since the bogus configuration isn't defined main will just be // parsed, but nothing further will be done with it #[cfg(bogus)] fn main() { fail } -fn main() {} \ No newline at end of file +fn main() { + // Exercise some of the configured items in ways that wouldn't be possible + // if they had the bogus definition + assert b; + let t x = true; + let tg y = bar; +} +