diff options
| author | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-01-22 21:09:43 -0800 |
|---|---|---|
| committer | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-01-23 15:48:08 -0800 |
| commit | 9dc59e15061827122dc0f08d3f66acd17ba329dc (patch) | |
| tree | d98b61d751f5db6d33c844d3706a9c6a4f399524 /src/test | |
| parent | e51599932478db1d841912a6e0a10cbc20335e1f (diff) | |
Export all enum variants by default; new syntax for selectively exporting variants
See issue 1426 for details. Now, the semantics of "export t;" where t is a tag are
to export all of t's variants as well. "export t{};" exports t but not its
variants, while "export t{a, b, c};" exports only variants a, b, c of t.
To do:
- documentation
- there's currently no checking that a, b, c are actually variants of t in the
above example
- there's also no checking that t is an enum type, in the second two examples above
- change the modules listed in issue 1426 that should have the old export
semantics to use the t{} syntax
I deleted the test export-no-tag-variants since we're doing the opposite now,
and other tests cover the same behavior.
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/compile-fail/export-no-tag-variants.rs | 12 | ||||
| -rw-r--r-- | src/test/compile-fail/tag-exports-2.rs | 16 | ||||
| -rw-r--r-- | src/test/compile-fail/tag-exports-3.rs | 17 | ||||
| -rw-r--r-- | src/test/compile-fail/tag-exports.rs | 16 | ||||
| -rw-r--r-- | src/test/run-pass/tag-exports.rs | 24 |
5 files changed, 36 insertions, 49 deletions
diff --git a/src/test/compile-fail/export-no-tag-variants.rs b/src/test/compile-fail/export-no-tag-variants.rs deleted file mode 100644 index 7de42bf0a0d..00000000000 --- a/src/test/compile-fail/export-no-tag-variants.rs +++ /dev/null @@ -1,12 +0,0 @@ -// error-pattern: unresolved name - -// Tag variants are not exported with their tags. This allows for a -// simple sort of ADT. - -mod foo { - export t; - - enum t { t1, } -} - -fn main() { let x = foo::t1; } diff --git a/src/test/compile-fail/tag-exports-2.rs b/src/test/compile-fail/tag-exports-2.rs index 04bac524d9b..94727838488 100644 --- a/src/test/compile-fail/tag-exports-2.rs +++ b/src/test/compile-fail/tag-exports-2.rs @@ -1,18 +1,18 @@ -// xfail-test +// error-pattern:unresolved name: lovejoy +import alder::*; + mod alder { export burnside; export everett::{flanders}; export irving::{johnson, kearney}; export marshall::{}; - tag burnside { couch, davis } - tag everett { flanders, glisan, hoyt } - tag irving { johnson, kearney, lovejoy } - tag marshall { northrup, overton } + enum burnside { couch, davis } + enum everett { flanders, glisan, hoyt } + enum irving { johnson, kearney, lovejoy } + enum marshall { northrup, overton } } -import alder::*; - fn main() { let raleigh: irving = lovejoy; -} \ No newline at end of file +} diff --git a/src/test/compile-fail/tag-exports-3.rs b/src/test/compile-fail/tag-exports-3.rs index 8b58c1b9ff0..e51a0aca115 100644 --- a/src/test/compile-fail/tag-exports-3.rs +++ b/src/test/compile-fail/tag-exports-3.rs @@ -1,19 +1,18 @@ -// xfail-test +// error-pattern:unresolved name: northrup +import alder::*; + mod alder { export burnside; export everett::{flanders}; export irving::{johnson, kearney}; export marshall::{}; - tag burnside { couch, davis } - tag everett { flanders, glisan, hoyt } - tag irving { johnson, kearney, lovejoy } - tag marshall { northrup, overton } + enum burnside { couch, davis } + enum everett { flanders, glisan, hoyt } + enum irving { johnson, kearney, lovejoy } + enum marshall { northrup, overton } } -import alder::*; - fn main() { let savier: marshall = northrup; - -} \ No newline at end of file +} diff --git a/src/test/compile-fail/tag-exports.rs b/src/test/compile-fail/tag-exports.rs index 79cb33f0fb2..18965c91842 100644 --- a/src/test/compile-fail/tag-exports.rs +++ b/src/test/compile-fail/tag-exports.rs @@ -1,18 +1,18 @@ -// xfail-test +// error-pattern:unresolved name: glisan +import alder::*; + mod alder { export burnside; export everett::{flanders}; export irving::{johnson, kearney}; export marshall::{}; - tag burnside { couch, davis } - tag everett { flanders, glisan, hoyt } - tag irving { johnson, kearney, lovejoy } - tag marshall { northrup, overton } + enum burnside { couch, davis } + enum everett { flanders, glisan, hoyt } + enum irving { johnson, kearney, lovejoy } + enum marshall { northrup, overton } } -import alder::*; - fn main() { let quimby: everett = glisan; -} \ No newline at end of file +} diff --git a/src/test/run-pass/tag-exports.rs b/src/test/run-pass/tag-exports.rs index 719e252b732..597bcc66f96 100644 --- a/src/test/run-pass/tag-exports.rs +++ b/src/test/run-pass/tag-exports.rs @@ -1,21 +1,21 @@ -// xfail-test +import alder::*; + mod alder { export burnside; export everett::{flanders}; export irving::{johnson, kearney}; export marshall::{}; - tag burnside { couch, davis } - tag everett { flanders, glisan, hoyt } - tag irving { johnson, kearney, lovejoy } - tag marshall { northrup, overton } -} + enum burnside { couch, davis } + enum everett { flanders, glisan, hoyt } + enum irving { johnson, kearney, lovejoy } + enum marshall { northrup, overton } -import alder::*; +} fn main() { - let pettygrove: burnside = couch; - let quimby: everett = flanders; - let raleigh: irving = johnson; - let savier: marshall; -} \ No newline at end of file + let _pettygrove: burnside = couch; + let _quimby: everett = flanders; + let _raleigh: irving = johnson; + let _savier: marshall; +} |
