[vala] dova: Use simple . instead of -> for pointer member access



commit 651df0ed15a5859a0b0a7e583e4d2a568d37dac8
Author: Jürg Billeter <j bitron ch>
Date:   Fri Jul 9 18:15:20 2010 +0200

    dova: Use simple . instead of -> for pointer member access

 vala/valamemberaccess.vala |    2 +-
 vala/valaparser.vala       |    6 +++++-
 vala/valapointertype.vala  |   14 ++++++++++++++
 3 files changed, 20 insertions(+), 2 deletions(-)
---
diff --git a/vala/valamemberaccess.vala b/vala/valamemberaccess.vala
index 2ada89a..82570b0 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 b5b85cf..391bbb4 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 d3203f4..f1b318d 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;
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]