diff options
| author | Rafael Ávila de Espíndola <[email protected]> | 2011-02-01 13:40:04 -0500 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2011-02-01 16:57:33 -0800 |
| commit | 4b06dc574ba7d3ae50795cbe4f10d4be6e9c64a1 (patch) | |
| tree | 1a0d2181f0bd124dfb13277fe74ca674c9db757e /src/comp/front/parser.rs | |
| parent | Pick up case for expr_block from brson's other branch. (diff) | |
| download | rust-4b06dc574ba7d3ae50795cbe4f10d4be6e9c64a1.tar.xz rust-4b06dc574ba7d3ae50795cbe4f10d4be6e9c64a1.zip | |
Add very minimal support for native modules. For now they must be empty.
Diffstat (limited to 'src/comp/front/parser.rs')
| -rw-r--r-- | src/comp/front/parser.rs | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/comp/front/parser.rs b/src/comp/front/parser.rs index 0c90df5c..16adfedb 100644 --- a/src/comp/front/parser.rs +++ b/src/comp/front/parser.rs @@ -1577,6 +1577,20 @@ impure fn parse_item_mod(parser p) -> @ast.item { ret @spanned(lo, hi, item); } +impure fn parse_item_native_mod(parser p) -> @ast.item { + auto lo = p.get_span(); + expect(p, token.NATIVE); + auto native_name = parse_str_lit(p); + expect(p, token.MOD); + auto id = parse_ident(p); + expect(p, token.LBRACE); + auto m = rec(native_name = native_name); + auto hi = p.get_span(); + expect(p, token.RBRACE); + auto item = ast.item_native_mod(id, m, p.next_def_id()); + ret @spanned(lo, hi, item); +} + impure fn parse_item_type(parser p) -> @ast.item { auto lo = p.get_span(); expect(p, token.TYPE); @@ -1717,6 +1731,11 @@ impure fn parse_item(parser p) -> @ast.item { check (lyr == ast.layer_value); ret parse_item_mod(p); } + case (token.NATIVE) { + check (eff == ast.eff_pure); + check (lyr == ast.layer_value); + ret parse_item_native_mod(p); + } case (token.TYPE) { check (eff == ast.eff_pure); ret parse_item_type(p); |