From: Jürg Billeter Date: Sun, 3 Oct 2010 19:19:24 +0000 (-0700) Subject: Make address-of operator work on all variables X-Git-Tag: 0.11.1~188 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a36fe4be766c0b5f14cd1bf1f75b9e2ddc77e76c;p=thirdparty%2Fvala.git Make address-of operator work on all variables Fixes bug 631247. --- diff --git a/vala/valaaddressofexpression.vala b/vala/valaaddressofexpression.vala index cda53ed5e..6ac0b1e1b 100644 --- a/vala/valaaddressofexpression.vala +++ b/vala/valaaddressofexpression.vala @@ -83,10 +83,11 @@ public class Vala.AddressofExpression : Expression { error = true; return false; } - if (!(inner.value_type is ValueType - || inner.value_type is ObjectType - || inner.value_type is PointerType - || inner.value_type is GenericType)) { + if (inner is MemberAccess && inner.symbol_reference is Variable) { + // address of variable is always possible + } else if (inner is ElementAccess && ((ElementAccess) inner).container.value_type is ArrayType) { + // address of element of regular array is always possible + } else { error = true; Report.error (source_reference, "Address-of operator not supported for this expression"); return false;