|  | // 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); | 
|  | } |