blob: 3968dea74c5770ada1560482a55ac23e8e63f91a [file] [log] [blame]
// Copyright (c) 2018, 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.
// Tests that const/new-insertion does the right thing for default values.
// A default-value expression does not introduce a const context.
main() {
foo();
bar();
baz();
qux();
C.foo();
C.bar();
new C().baz();
new C().qux();
new C.pos();
new C.nam();
const C.pos();
const C.nam();
}
// Default arguments must be const to be accepted
foo([x //
= const [C()] // //# o1: ok
= const {42: C()} // //# o2: ok
= const C(C()) // //# o3: ok
= [42] // //# e1: compile-time error
= {42: 42} // //# e2: compile-time error
= C([]) // //# e3: compile-time error
]) {
}
bar({x //
= const [C()] // //# o4: ok
= const {42: C()} // //# o5: ok
= const C(C()) // //# o6: ok
= [42] // //# e4: compile-time error
= {42: 42} // //# e5: compile-time error
= C([]) // //# e6: compile-time error
}) {
}
var baz = ([x
= const [C()] // //# o7: ok
= const {42: C()} // //# o8: ok
= const C(C()) // //# o9: ok
= [42] // //# e7: compile-time error
= {42: 42} // //# e8: compile-time error
= C([]) // //# e9: compile-time error
]) => 42;
var qux = ({x
= const [C()] // //# o10: ok
= const {42: C()} // //# o11: ok
= const C(C()) // //# o12: ok
= [42] // //# e10: compile-time error
= {42: 42} // //# e11: compile-time error
= C([]) // //# e12: compile-time error
}) => 42;
class C {
final x;
const C([this.x]);
const C.pos([this.x //
= const [C()] // //# o13: ok
= const {42: C()} // //# o14: ok
= const C(C()) // //# o15: ok
= [42] // //# e13: compile-time error
= {42: 42} // //# e14: compile-time error
= C([]) // //# e15: compile-time error
]);
const C.nam({this.x //
= const [C()] // //# o16: ok
= const {42: C()} // //# o17: ok
= const C(C()) // //# o18: ok
= [42] // //# e16: compile-time error
= {42: 42} // //# e17: compile-time error
= C([]) // //# e18: compile-time error
});
static foo([x //
= const [C()] // //# o19: ok
= const {42: C()} // //# o20: ok
= const C(C()) // //# o21: ok
= [42] // //# e19: compile-time error
= {42: 42} // //# e20: compile-time error
= C([]) // //# e21: compile-time error
]) {
}
static bar({x //
= const [C()] // //# o22: ok
= const {42: C()} // //# o23: ok
= const C(C()) // //# o24: ok
= [42] // //# e22: compile-time error
= {42: 42} // //# e23: compile-time error
= C([]) // //# e24: compile-time error
}) {
}
baz([x //
= const [C()] // //# o25: ok
= const {42: C()} // //# o26: ok
= const C(C()) // //# o27: ok
= [42] // //# e25: compile-time error
= {42: 42} // //# e26: compile-time error
= C([]) // //# e27: compile-time error
]) {
}
qux({x //
= const [C()] // //# o28: ok
= const {42: C()} // //# o29: ok
= const C(C()) // //# o30: ok
= [42] // //# e28: compile-time error
= {42: 42} // //# e29: compile-time error
= C([]) // //# e30: compile-time error
}) {
}
}