diff options
| author | Brian Anderson <banderson@mozilla.com> | 2011-10-18 19:39:09 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2011-10-20 18:23:48 -0700 |
| commit | f324704c0a010a2ba89bec67d89eb6eccfa4e412 (patch) | |
| tree | 1f281bf03c6229d9238394d4fa4451f8124683d1 /src | |
| parent | 391e12124b4ee96849b8b5959c2cab824400a384 (diff) | |
| download | rust-f324704c0a010a2ba89bec67d89eb6eccfa4e412.tar.gz rust-f324704c0a010a2ba89bec67d89eb6eccfa4e412.zip | |
Parse obj methods as proto_bare
I don't know if this is the right thing to do, but it works and it lets 'fn' always mean proto_bare
Diffstat (limited to 'src')
| -rw-r--r-- | src/comp/metadata/tydecode.rs | 2 | ||||
| -rw-r--r-- | src/comp/syntax/parse/parser.rs | 18 |
2 files changed, 9 insertions, 11 deletions
diff --git a/src/comp/metadata/tydecode.rs b/src/comp/metadata/tydecode.rs index 6b9d3e96bf5..2e6a83c153d 100644 --- a/src/comp/metadata/tydecode.rs +++ b/src/comp/metadata/tydecode.rs @@ -281,7 +281,7 @@ fn parse_ty(st: @pstate, sd: str_def) -> ty::t { let proto; alt next(st) as char { 'W' { proto = ast::proto_iter; } - 'F' { proto = ast::proto_fn; } + 'f' { proto = ast::proto_bare; } } let name = ""; while peek(st) as char != '[' { diff --git a/src/comp/syntax/parse/parser.rs b/src/comp/syntax/parse/parser.rs index 01770aa8a60..e661d24873b 100644 --- a/src/comp/syntax/parse/parser.rs +++ b/src/comp/syntax/parse/parser.rs @@ -294,16 +294,6 @@ fn parse_ty_fn(proto: ast::proto, p: parser) -> ast::ty_ { ret ast::ty_fn(proto, inputs.node, ret_ty, ret_style, constrs); } -fn parse_method_proto(p: parser) -> ast::proto { - if eat_word(p, "iter") { - ret ast::proto_iter; - } else if eat_word(p, "fn") { - ret ast::proto_fn; - } else if eat_word(p, "block") { - ret ast::proto_block; - } else { unexpected(p, p.peek()); } -} - fn parse_ty_obj(p: parser, &hi: uint) -> ast::ty_ { fn parse_method_sig(p: parser) -> ast::ty_method { let flo = p.get_lo_pos(); @@ -2179,6 +2169,14 @@ fn parse_fn_anon_proto(p: parser) -> ast::proto { } } +fn parse_method_proto(p: parser) -> ast::proto { + if eat_word(p, "iter") { + ret ast::proto_iter; + } else if eat_word(p, "fn") { + ret ast::proto_bare; + } else { unexpected(p, p.peek()); } +} + fn parse_item(p: parser, attrs: [ast::attribute]) -> option::t<@ast::item> { if eat_word(p, "const") { ret some(parse_item_const(p, attrs)); |
