| // Copyright (c) 2020, 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'; |
| |
| class Foo { |
| int foo({ |
| required String a, |
| required String b, |
| required String c, |
| required String d, |
| }) { |
| return a.length + b.length + c.length + d.length; |
| } |
| } |
| |
| int baz({ |
| required String a, |
| required String b, |
| required String c, |
| required String d, |
| }) { |
| return a.length + b.length + c.length + d.length; |
| } |
| |
| main() { |
| Expect.equals(8, Foo().foo(a: "aa", b: "bb", c: "cc", d: "dd")); |
| |
| // Test that we throw a NoSuchMethodError, not a TypeError due to c.length. |
| dynamic f = Foo(); |
| Expect.throwsNoSuchMethodError(() => f.foo(a: "aa", b: "bb", d: "dd")); |
| |
| dynamic tearOff = baz; |
| Expect.throwsNoSuchMethodError(() => tearOff(a: "aa", c: "cc", d: "dd")); |
| |
| dynamic closure = |
| ({ |
| required String a, |
| required String b, |
| required String c, |
| required String d, |
| }) { |
| return a.length + b.length + c.length + d.length; |
| }; |
| Expect.throwsNoSuchMethodError(() => closure(a: "aa", c: "cc", d: "dd")); |
| } |