| // Copyright (c) 2019, 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. |
| |
| // @dart = 2.7 |
| |
| // ignore: import_internal_library |
| import 'dart:_js_helper'; |
| |
| @Native('Class') |
| class Class { |
| factory Class() { |
| throw new UnsupportedError("Not supported"); |
| } |
| |
| @pragma('dart2js:noElision') |
| int field1; |
| |
| int field2; |
| |
| /*member: Class.method1: |
| calls=[method1(a,b,c)], |
| params=4, |
| stubs=[ |
| method1$1:method1(a), |
| method1$2:method1(a,b)] |
| */ |
| @pragma('dart2js:noInline') |
| method1(a, [b, c]) |
| // ignore: NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE |
| native; |
| |
| /*member: Class.method2: |
| calls=[method2(a,b,c)], |
| params=4, |
| stubs=[ |
| method2$1:method2(a), |
| method2$2$b:method2(a,b), |
| method2$2$c:method2(a,null,c)] |
| */ |
| @pragma('dart2js:noInline') |
| method2(a, {b, c}) |
| // ignore: NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE |
| native; |
| |
| // TODO(johnniwinther): Control the order of the named arguments. Currently |
| // we sort them lexicographically but that doesn't match the target |
| // expectations. |
| /*member: Class.method3: |
| calls=[method3(a,c,b)], |
| params=4, |
| stubs=[ |
| method3$1:method3(a), |
| method3$2$b:method3(a,null,b), |
| method3$2$c:method3(a,c)] |
| */ |
| @pragma('dart2js:noInline') |
| method3(a, {c, b}) |
| // ignore: NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE |
| native; |
| |
| // TODO(johnniwinther): Control the order of the named arguments. Currently |
| // we sort them lexicographically but that doesn't match the target |
| // expectations. |
| /*member: Class.method4: |
| calls=[method4(a,c,d,b)], |
| params=5, |
| stubs=[ |
| method4$1:method4(a), |
| method4$2$b:method4(a,null,null,b), |
| method4$2$c:method4(a,c), |
| method4$3$b$c:method4(a,c,null,b), |
| method4$3$b$d:method4(a,null,d,b), |
| method4$3$c$d:method4(a,c,d)] |
| */ |
| @pragma('dart2js:noInline') |
| method4(a, {c, d, b}) |
| // ignore: NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE |
| native; |
| } |
| |
| /*member: makeClass:params=0*/ |
| @Creates('Class') |
| makeClass() |
| // ignore: NATIVE_FUNCTION_BODY_IN_NON_SDK_CODE |
| native; |
| |
| /*member: main:calls=[test(1),*],params=0*/ |
| main() { |
| test(makeClass()); |
| } |
| |
| /*member: test: |
| assign=[field1,field2], |
| calls=[ |
| method1$1(2), |
| method1$2(3), |
| method1$3(4), |
| method2$1(2), |
| method2$2$b(3), |
| method2$2$c(3), |
| method2$3$b$c(4), |
| method3$1(2), |
| method3$2$b(3), |
| method3$2$c(3), |
| method3$3$b$c(4), |
| method4$1(2), |
| method4$2$b(3), |
| method4$2$c(3), |
| method4$3$b$c(4), |
| method4$3$b$d(4), |
| method4$3$c$d(4)], |
| params=1 |
| */ |
| @pragma('dart2js:noInline') |
| test(Class o) { |
| o.field1 = 42; |
| o.field2 = 42; |
| o.method1(0); |
| o.method1(0, 1); |
| o.method1(0, 1, 2); |
| o.method2(0); |
| o.method2(0, b: 1); |
| o.method2(0, b: 1, c: 2); |
| o.method2(0, c: 2); |
| o.method3(0); |
| o.method3(0, b: 1); |
| o.method3(0, b: 1, c: 2); |
| o.method3(0, c: 2); |
| o.method4(0); |
| o.method4(0, b: 1); |
| o.method4(0, b: 1, c: 2); |
| o.method4(0, c: 2); |
| o.method4(0, c: 2, d: 3); |
| o.method4(0, b: 1, d: 3); |
| } |