class A { uint some; } fn doSome(A a) A { // NOTE: section below won't change `a.some` value if (a.some < 1) { a.some = 1; return a; } return a; } fn doSomeNew() A { if (1 == 1) { return new A; } } A a = new A; a.some = 0; if (a.some != 0) { printline("Test failed (first a.some != 0)"); exit(1); } else printline(a); a = doSome(a); if (a.some != 1) { printline("Test failed (2nd a.some != 1)"); exit(1); } else printline(a); A b = doSomeNew(); printline(b);