[vala] dova: Use simple . instead of -> for pointer member access
- From: Jürg Billeter <juergbi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala] dova: Use simple . instead of -> for pointer member access
- Date: Fri, 9 Jul 2010 16:20:12 +0000 (UTC)
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]