From: Jürg Billeter Date: Fri, 9 Jul 2010 16:15:20 +0000 (+0200) Subject: dova: Use simple . instead of -> for pointer member access X-Git-Tag: 0.9.3~25 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=651df0ed15a5859a0b0a7e583e4d2a568d37dac8;p=thirdparty%2Fvala.git dova: Use simple . instead of -> for pointer member access --- diff --git a/vala/valamemberaccess.vala b/vala/valamemberaccess.vala index 2ada89a96..82570b002 100644 --- a/vala/valamemberaccess.vala +++ b/vala/valamemberaccess.vala @@ -292,7 +292,7 @@ public class Vala.MemberAccess : Expression { return false; } - if (pointer_member_access) { + if (inner.value_type is PointerType) { var pointer_type = inner.value_type as PointerType; if (pointer_type != null && pointer_type.base_type is ValueType) { // transform foo->bar to (*foo).bar diff --git a/vala/valaparser.vala b/vala/valaparser.vala index b5b85cf71..391bbb453 100644 --- a/vala/valaparser.vala +++ b/vala/valaparser.vala @@ -628,7 +628,11 @@ public class Vala.Parser : CodeVisitor { expr = parse_member_access (begin, expr); break; case TokenType.OP_PTR: - expr = parse_pointer_member_access (begin, expr); + if (context.profile == Profile.DOVA) { + found = false; + } else { + expr = parse_pointer_member_access (begin, expr); + } break; case TokenType.OPEN_PARENS: expr = parse_method_call (begin, expr); diff --git a/vala/valapointertype.vala b/vala/valapointertype.vala index d3203f461..f1b318d9a 100644 --- a/vala/valapointertype.vala +++ b/vala/valapointertype.vala @@ -94,6 +94,20 @@ public class Vala.PointerType : DataType { return false; } + public override Symbol? get_member (string member_name) { + if (CodeContext.get ().profile != Profile.DOVA) { + return null; + } + + Symbol base_symbol = base_type.data_type; + + if (base_symbol == null) { + return null; + } + + return SemanticAnalyzer.symbol_lookup_inherited (base_symbol, member_name); + } + public override Symbol? get_pointer_member (string member_name) { Symbol base_symbol = base_type.data_type;