20faaa5d94
Change-Id: Ib18f554c1076f27a3f7c0df5a36410da41a1f467 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/148784 Reviewed-by: Paul Berry <paulberry@google.com> Reviewed-by: Sigmund Cherem <sigmund@google.com>
137 lines
3.0 KiB
Dart
137 lines
3.0 KiB
Dart
// 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);
|
|
}
|