]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
dova: Use simple . instead of -> for pointer member access
authorJürg Billeter <j@bitron.ch>
Fri, 9 Jul 2010 16:15:20 +0000 (18:15 +0200)
committerJürg Billeter <j@bitron.ch>
Fri, 9 Jul 2010 16:18:53 +0000 (18:18 +0200)
vala/valamemberaccess.vala
vala/valaparser.vala
vala/valapointertype.vala

index 2ada89a96d8e633f9d62c2f6363f94db8f8736ab..82570b002f150bd3fe7c9994728e48adaf0d8513 100644 (file)
@@ -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
index b5b85cf718cabd31b591e14008ae481f721bda1a..391bbb45388b7ea874b563ca53143e587797ed8c 100644 (file)
@@ -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);
index d3203f461788ebc3cce71fa6770686faf362206f..f1b318d9a535e89d7143c7530182a1b46c436d03 100644 (file)
@@ -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;