blob: 0585e73526e0937c9b5bcb7f3bd8cf3bf869befc [file] [log] [blame]
/*
* Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
* for details. All rights reserved. Use of this source code is governed by a
* BSD-style license that can be found in the LICENSE file.
*/
/**
* @assertion Next, q is executed with this bound to i, the type parameters (if any)
* of R bound to the actual type arguments V1, ..., Vm and the formal parameter
* bindings that resulted from the evaluation of the argument list. The result of
* the evaluation of e is i.
* @description Checks the order of a new expression with named constructor evaluation
* taking into account the evaluation of the super constructor.
* @author msyabro
* @reviewer rodionov
*/
import "../../../Utils/expect.dart";
var evalOrder;
f(p1) {
evalOrder.write(p1);
}
class A {
logAndAdd1(arg) {
evalOrder.write(arg);
return arg + 1;
}
logAndAdd3(arg) {
evalOrder.write(arg);
return arg + 3;
}
}
class S {
S(p1): x = f(p1) {
evalOrder.write(5);
}
var x;
}
class C extends S {
C.name(p1): super(new A().logAndAdd1(2)), y = f(p1) {
evalOrder.write(6);
}
var y;
}
main() {
evalOrder = new StringBuffer();
new C.name(new A().logAndAdd3(1));
Expect.equals("123456", evalOrder.toString());
}