control-flow/missing-return.test \
control-flow/nested-conditional.vala \
control-flow/pre-post-increment.vala \
+ control-flow/pre-post-increment-field.vala \
+ control-flow/pre-post-increment-local.vala \
+ control-flow/pre-post-increment-parameter.vala \
+ control-flow/pre-post-increment-property.vala \
control-flow/switch.vala \
control-flow/switch-enum.vala \
control-flow/sideeffects.vala \
--- /dev/null
+int field;
+
+void main () {
+ // incrementing
+ {
+ field = 1;
+ int res = field + field++;
+ assert (res == 2);
+ assert (field == 2);
+ }
+ {
+ field = 1;
+ int res = field++ + field;
+ assert (res == 3);
+ assert (field == 2);
+ }
+ {
+ field = 1;
+ int res = field + ++field;
+ assert (res == 3);
+ assert (field == 2);
+ }
+ {
+ field = 1;
+ int res = ++field + field;
+ assert (res == 4);
+ assert (field == 2);
+ }
+ {
+ field = 1;
+ assert (field++ == 1);
+ assert (field == 2);
+ }
+ {
+ field = 1;
+ assert (++field == 2);
+ assert (field == 2);
+ }
+
+ // decrementing
+ {
+ field = 1;
+ int d = field + field--;
+ assert (d == 2);
+ assert (field == 0);
+ }
+ {
+ field = 1;
+ int res = field-- + field;
+ assert (res == 1);
+ assert (field == 0);
+ }
+ {
+ field = 1;
+ int res = field + --field;
+ assert (res == 1);
+ assert (field == 0);
+ }
+ {
+ field = 1;
+ int res = --field + field;
+ assert (res == 0);
+ assert (field == 0);
+ }
+ {
+ field = 1;
+ assert (field-- == 1);
+ assert (field == 0);
+ }
+ {
+ field = 1;
+ assert (--field == 0);
+ assert (field == 0);
+ }
+}
--- /dev/null
+void main () {
+ // incrementing
+ {
+ int local = 1;
+ int res = local + local++;
+ assert (res == 2);
+ assert (local == 2);
+ }
+ {
+ int local = 1;
+ int res = local++ + local;
+ assert (res == 3);
+ assert (local == 2);
+ }
+ {
+ int local = 1;
+ int res = local + ++local;
+ assert (res == 3);
+ assert (local == 2);
+ }
+ {
+ int local = 1;
+ int res = ++local + local;
+ assert (res == 4);
+ assert (local == 2);
+ }
+ {
+ int local = 1;
+ assert (local++ == 1);
+ assert (local == 2);
+ }
+ {
+ int local = 1;
+ assert (++local == 2);
+ assert (local == 2);
+ }
+
+ // decrementing
+ {
+ int local = 1;
+ int res = local + local--;
+ assert (res == 2);
+ assert (local == 0);
+ }
+ {
+ int local = 1;
+ int res = local-- + local;
+ assert (res == 1);
+ assert (local == 0);
+ }
+ {
+ int local = 1;
+ int res = local + --local;
+ assert (res == 1);
+ assert (local == 0);
+ }
+ {
+ int local = 1;
+ int res = --local + local;
+ assert (res == 0);
+ assert (local == 0);
+ }
+ {
+ int local = 1;
+ assert (local-- == 1);
+ assert (local == 0);
+ }
+ {
+ int local = 1;
+ assert (--local == 0);
+ assert (local == 0);
+ }
+}
--- /dev/null
+void test_parameter (int parameter) {
+ // incrementing
+ {
+ parameter = 1;
+ int res = parameter + parameter++;
+ assert (res == 2);
+ assert (parameter == 2);
+ }
+ {
+ parameter = 1;
+ int res = parameter++ + parameter;
+ assert (res == 3);
+ assert (parameter == 2);
+ }
+ {
+ parameter = 1;
+ int res = parameter + ++parameter;
+ assert (res == 3);
+ assert (parameter == 2);
+ }
+ {
+ parameter = 1;
+ int res = ++parameter + parameter;
+ assert (res == 4);
+ assert (parameter == 2);
+ }
+ {
+ parameter = 1;
+ assert (parameter++ == 1);
+ assert (parameter == 2);
+ }
+ {
+ parameter = 1;
+ assert (++parameter == 2);
+ assert (parameter == 2);
+ }
+
+ // decrementing
+ {
+ parameter = 1;
+ int res = parameter + parameter--;
+ assert (res == 2);
+ assert (parameter == 0);
+ }
+ {
+ parameter = 1;
+ int res = parameter-- + parameter;
+ assert (res == 1);
+ assert (parameter == 0);
+ }
+ {
+ parameter = 1;
+ int res = parameter + --parameter;
+ assert (res == 1);
+ assert (parameter == 0);
+ }
+ {
+ parameter = 1;
+ int res = --parameter + parameter;
+ assert (res == 0);
+ assert (parameter == 0);
+ }
+ {
+ parameter = 1;
+ assert (parameter-- == 1);
+ assert (parameter == 0);
+ }
+ {
+ parameter = 1;
+ assert (--parameter == 0);
+ assert (parameter == 0);
+ }
+}
+
+void main () {
+ test_parameter (1);
+}
--- /dev/null
+class Foo {
+ public int property { get; set; }
+
+ public Foo () {
+ // incrementing
+ {
+ property = 1;
+ int res = property + property++;
+ assert (res == 2);
+ assert (property == 2);
+ }
+ {
+ property = 1;
+ int res = property++ + property;
+ assert (res == 3);
+ assert (property == 2);
+ }
+ {
+ property = 1;
+ int res = property + ++property;
+ assert (res == 3);
+ assert (property == 2);
+ }
+ {
+ property = 1;
+ int res = ++property + property;
+ assert (res == 4);
+ assert (property == 2);
+ }
+ {
+ property = 1;
+ assert (property++ == 1);
+ assert (property == 2);
+ }
+ {
+ property = 1;
+ assert (++property == 2);
+ assert (property == 2);
+ }
+
+ // decrementing
+ {
+ property = 1;
+ int res = property + property--;
+ assert (res == 2);
+ assert (property == 0);
+ }
+ {
+ property = 1;
+ int res = property-- + property;
+ assert (res == 1);
+ assert (property == 0);
+ }
+ {
+ property = 1;
+ int res = property + --property;
+ assert (res == 1);
+ assert (property == 0);
+ }
+ {
+ property = 1;
+ int res = --property + property;
+ assert (res == 0);
+ assert (property == 0);
+ }
+ {
+ property = 1;
+ assert (property-- == 1);
+ assert (property == 0);
+ }
+ {
+ property = 1;
+ assert (--property == 0);
+ assert (property == 0);
+ }
+ }
+}
+
+void main () {
+ var foo = new Foo ();
+ // incrementing
+ {
+ foo.property = 1;
+ int res = foo.property + foo.property++;
+ assert (res == 2);
+ assert (foo.property == 2);
+ }
+ {
+ foo.property = 1;
+ int res = foo.property++ + foo.property;
+ assert (res == 3);
+ assert (foo.property == 2);
+ }
+ {
+ foo.property = 1;
+ int res = foo.property + ++foo.property;
+ assert (res == 3);
+ assert (foo.property == 2);
+ }
+ {
+ foo.property = 1;
+ int res = ++foo.property + foo.property;
+ assert (res == 4);
+ assert (foo.property == 2);
+ }
+ {
+ foo.property = 1;
+ assert (foo.property++ == 1);
+ assert (foo.property == 2);
+ }
+ {
+ foo.property = 1;
+ assert (++foo.property == 2);
+ assert (foo.property == 2);
+ }
+
+ // decrementing
+ {
+ foo.property = 1;
+ int res = foo.property + foo.property--;
+ assert (res == 2);
+ assert (foo.property == 0);
+ }
+ {
+ foo.property = 1;
+ int res = foo.property-- + foo.property;
+ assert (res == 1);
+ assert (foo.property == 0);
+ }
+ {
+ foo.property = 1;
+ int res = foo.property + --foo.property;
+ assert (res == 1);
+ assert (foo.property == 0);
+ }
+ {
+ foo.property = 1;
+ int res = --foo.property + foo.property;
+ assert (res == 0);
+ assert (foo.property == 0);
+ }
+ {
+ foo.property = 1;
+ assert (foo.property-- == 1);
+ assert (foo.property == 0);
+ }
+ {
+ foo.property = 1;
+ assert (--foo.property == 0);
+ assert (foo.property == 0);
+ }
+}