From 6346a67cbd96f0c1faf483851e1f120334862309 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Thu, 30 Jun 2011 11:22:10 -0700 Subject: [PATCH] Add more tests for conditional compilation. Issue #489 --- src/test/run-pass/conditional-compile.rs | 68 +++++++++++++++++++++++- 1 file changed, 67 insertions(+), 1 deletion(-) diff --git a/src/test/run-pass/conditional-compile.rs b/src/test/run-pass/conditional-compile.rs index 3f2a15fb005..bfc9e4d8e6c 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; +} +