From f324704c0a010a2ba89bec67d89eb6eccfa4e412 Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Tue, 18 Oct 2011 19:39:09 -0700 Subject: [PATCH] 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 --- src/comp/metadata/tydecode.rs | 2 +- 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));