blob: 7547272a7d804c475a30e8212a449633ba203f84 [file] [log] [blame] [edit]
// Copyright (c) 2025, 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.
import "package:expect/expect.dart";
main() {
// Prevent constant propagation of closure into `Function.apply`.
for (final (name, closure) in <(String, Function)>[
('static1', static1),
('static2', static2),
]) {
test('$name: 1 missing-b', closure, [1]);
test('$name: 1 2', closure, [1, 2]);
}
}
String static1(a, [b = 'missing-b']) => 'static1: $a $b';
String static2(a, [b = 'missing-b']) => 'static2: $a $b';
void test(String expected, Function function, List positional) {
Expect.equals(expected, Function.apply(function, positional));
final oneMoreThanAllowed = [
for (int i = positional.length; i < 3; ++i) 'extra$i',
];
Expect.throwsNoSuchMethodError(
() => Function.apply(function, [...positional, ...oneMoreThanAllowed]),
);
}