basic-types/bug756376.vala \
basic-types/bug761307.vala \
basic-types/bug771626.test \
+ pointers/bug590641.vala \
namespaces.vala \
methods/lambda.vala \
methods/closures.vala \
--- /dev/null
+const string[] FOO = { "foo", "bar" };
+
+void foo (char** s) {
+ assert (((string[]) s)[0] == "foo");
+}
+
+void main () {
+ uint i = 42;
+
+ int *p0 = (int*) &i;
+ uint u0 = (uint) *p0;
+ assert (u0 == i);
+
+ int *p1 = (int*) (&i);
+ uint u1 = (uint) (*p1);
+ assert (u1 == i);
+
+ char **p2 = (char**) FOO;
+ foo ((char**) FOO);
+ foo (p2);
+
+ string s0 = (string) p2[0];
+ assert (s0 == "foo");
+ string s1 = (string) *(p2 + 1);
+ assert (s1 == "bar");
+}
case TokenType.PARAMS:
var inner = parse_unary_expression ();
return new CastExpression (inner, type, get_src (begin), false);
+ case TokenType.STAR:
+ next ();
+ var op = parse_unary_expression ();
+ var inner = new PointerIndirection (op, get_src (begin));
+ return new CastExpression (inner, type, get_src (begin), false);
+ case TokenType.BITWISE_AND:
+ next ();
+ var op = parse_unary_expression ();
+ var inner = new AddressofExpression (op, get_src (begin));
+ return new CastExpression (inner, type, get_src (begin), false);
default:
break;
}