diff options
author | Jamie McCracken <jamie.mccrack gmail com> | 2010-05-24 14:13:24 -0400 |
---|---|---|
committer | Jamie McCracken <jamie.mccrack gmail com> | 2010-05-24 15:26:23 -0400 |
commit | 8a2b375009262b65f9fed4aeb15697420b3bd474 (patch) | |
tree | 4e229c8d375179fabd5ed4c5c62ddc2c74c0e1fa /vala/valagenieparser.vala | |
parent | ebb14f4ceb3f80fbc2910dbf746504aeedb6c448 (diff) | |
download | vala-8a2b375009262b65f9fed4aeb15697420b3bd474.tar.gz |
Genie: Fix base access in async methods
Diffstat (limited to 'vala/valagenieparser.vala')
-rw-r--r-- | vala/valagenieparser.vala | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/vala/valagenieparser.vala b/vala/valagenieparser.vala index 6c1e33fe2..3a25d6b38 100644 --- a/vala/valagenieparser.vala +++ b/vala/valagenieparser.vala @@ -1120,7 +1120,12 @@ public class Vala.Genie.Parser : CodeVisitor { Expression parse_yield_expression () throws ParseError { var begin = get_location (); expect (TokenType.YIELD); - var member = parse_member_name (); + Expression base_expr = null; + if (current () == TokenType.SUPER) { + base_expr = parse_base_access (); + expect (TokenType.DOT); + } + var member = parse_member_name (base_expr); var call = (MethodCall) parse_method_call (begin, member); call.is_yield_expression = true; return call; @@ -3696,13 +3701,13 @@ public class Vala.Genie.Parser : CodeVisitor { return null; } - MemberAccess parse_member_name () throws ParseError { + MemberAccess parse_member_name (Expression? base_expr = null) throws ParseError { var begin = get_location (); MemberAccess expr = null; do { string id = parse_identifier (); List<DataType> type_arg_list = parse_type_argument_list (false); - expr = new MemberAccess (expr, id, get_src (begin)); + expr = new MemberAccess (expr != null ? expr : base_expr, id, get_src (begin)); if (type_arg_list != null) { foreach (DataType type_arg in type_arg_list) { expr.add_type_argument (type_arg); |