// This tests that exports can have visible dependencies on things
// that are not exported, allowing for a sort of poor-man's ADT

mod foo {
    #[legacy_exports];
    export f;
    export g;

    // not exported
    enum t { t1, t2, }

    impl t : cmp::Eq {
        pure fn eq(other: &t) -> bool {
            (self as uint) == ((*other) as uint)
        }
        pure fn ne(other: &t) -> bool { !self.eq(other) }
    }

    fn f() -> t { return t1; }

    fn g(v: t) { assert (v == t1); }
}

fn main() { foo::g(foo::f()); }
