blob: 43c0f29ec9cfc16967e7dc6c8737afa96431579c [file] [log] [blame]
// Copyright (c) 2023, 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.
String log = "";
class C {
int m1(int v, [String s = "s1"]);
int m2(int v, {String s = "s2"});
dynamic noSuchMethod(Invocation inv) {
for (int i = 0; i < inv.positionalArguments.length; i++) {
log += "${inv.positionalArguments[i]};";
}
for (int i = 0; i < inv.namedArguments.length; i++) {
log += "s=${inv.namedArguments[Symbol("s")]};";
}
return 42;
}
}
mixin M {
int m1(int v, [String s = "s1"]);
int m2(int v, {String s = "s2"});
dynamic noSuchMethod(Invocation inv) {
for (int i = 0; i < inv.positionalArguments.length; i++) {
log += "${inv.positionalArguments[i]};";
}
for (int i = 0; i < inv.namedArguments.length; i++) {
log += "s=${inv.namedArguments[Symbol("s")]};";
}
return 42;
}
}
class MA = Object with M;
expect(expected, actual) {
if (expected != actual) throw 'Expected $expected, actual $actual';
}
main() {
C().m1(1);
expect('1;s1;', log);
log = "";
C().m2(2);
expect('2;s=s2;', log);
log = "";
MA().m1(1);
expect('1;s1;', log);
log = "";
MA().m2(2);
expect('2;s=s2;', log);
}