aboutsummaryrefslogtreecommitdiff
path: root/src/comp/front
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2011-02-23 14:37:39 -0800
committerGraydon Hoare <[email protected]>2011-02-23 14:37:39 -0800
commit381684043f1ad044c72347d759c1c545c6bccc3d (patch)
treedb6832b0e3be44071f294410e3a1570b42402ca4 /src/comp/front
parentParse auth clauses, drop them on the floor. Nothing exists to use them yet an... (diff)
downloadrust-381684043f1ad044c72347d759c1c545c6bccc3d.tar.xz
rust-381684043f1ad044c72347d759c1c545c6bccc3d.zip
Add a type for crate directives, to support intermixing with exprs in crate files.
Diffstat (limited to 'src/comp/front')
-rw-r--r--src/comp/front/ast.rs14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/comp/front/ast.rs b/src/comp/front/ast.rs
index 30b4d324..2c307478 100644
--- a/src/comp/front/ast.rs
+++ b/src/comp/front/ast.rs
@@ -5,6 +5,7 @@ import std._vec;
import util.common.span;
import util.common.spanned;
import util.common.ty_mach;
+import util.common.filename;
type ident = str;
@@ -43,6 +44,18 @@ tag def {
type crate = spanned[crate_];
type crate_ = rec(_mod module);
+tag crate_directive_ {
+ cdir_expr(@expr);
+ cdir_src_mod(ident, option.t[filename]);
+ cdir_dir_mod(ident, option.t[filename], vec[crate_directive]);
+ cdir_view_item(@view_item);
+ cdir_meta(@meta_item);
+ cdir_syntax(path);
+ cdir_auth(path, effect);
+}
+type crate_directive = spanned[crate_directive_];
+
+
type meta_item = spanned[meta_item_];
type meta_item_ = rec(ident name, str value);
@@ -161,6 +174,7 @@ tag expr_ {
expr_do_while(block, @expr, ann);
expr_alt(@expr, vec[arm], ann);
expr_block(block, ann);
+ expr_crate_directive_block(vec[crate_directive_]);
expr_assign(@expr /* TODO: @expr|is_lval */, @expr, ann);
expr_assign_op(binop, @expr /* TODO: @expr|is_lval */, @expr, ann);
expr_field(@expr, ident, ann);