Files
sdk/pkg/compiler/test/inference/data/closure.dart
T
Johnni Winther fc158b1616 [dart2js] Evaluate implicit constants in scope visitor
Change-Id: I2351571a665c8ffff8e9d57649fbf42b483e747b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/142983
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Mayank Patke <fishythefish@google.com>
2020-09-29 20:13:08 +00:00

147 lines
3.3 KiB
Dart

// Copyright (c) 2017, 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
/*member: main:[null]*/
main() {
returnInClosure();
accessInClosure();
invokeInClosure();
operatorInClosure();
assignInClosure();
assignInTwoClosures();
accessAssignInClosure();
accessBeforeAssignInClosure();
accessAfterAssignInClosure();
compoundInClosure();
postfixInClosure();
}
/*member: returnInClosure:[exact=JSUInt31]*/
returnInClosure() {
/*[null|subclass=Object]*/ local(/*[subclass=Closure]*/ f) => f();
int lines = 0;
local(/*[exact=JSUInt31]*/ () {
return lines;
});
return lines;
}
/*member: accessInClosure:[exact=JSUInt31]*/
accessInClosure() {
/*[null|subclass=Object]*/ local(/*[subclass=Closure]*/ f) => f();
int lines = 0;
local(/*[exact=JSBool]*/ () {
return lines. /*[exact=JSUInt31]*/ isEven;
});
return lines;
}
/*member: invokeInClosure:[exact=JSUInt31]*/
invokeInClosure() {
/*[null|subclass=Object]*/ local(/*[subclass=Closure]*/ f) => f();
int lines = 0;
local(/*[subclass=JSNumber]*/ () {
return lines. /*invoke: [exact=JSUInt31]*/ ceilToDouble();
});
return lines;
}
/*member: operatorInClosure:[exact=JSUInt31]*/
operatorInClosure() {
/*[null|subclass=Object]*/ local(/*[subclass=Closure]*/ f) => f();
int lines = 0;
local(/*[subclass=JSInt]*/ () {
return lines /*invoke: [exact=JSUInt31]*/ - 42;
});
return lines;
}
/*member: assignInClosure:[subclass=JSInt]*/
assignInClosure() {
/*[null|subclass=Object]*/ local(/*[subclass=Closure]*/ f) => f();
int lines = 0;
local(/*[null]*/ () {
lines = -42;
});
return lines;
}
/*member: assignInTwoClosures:[subclass=JSInt]*/
assignInTwoClosures() {
/*[null|subclass=Object]*/ local(/*[subclass=Closure]*/ f) => f();
int lines = 0;
local(/*[null]*/ () {
lines = -42;
});
local(/*[null]*/ () {
lines = -87;
});
return lines;
}
/*member: accessAssignInClosure:[subclass=JSInt]*/
accessAssignInClosure() {
/*[null|subclass=Object]*/ local(/*[subclass=Closure]*/ f) => f();
int lines = 0;
local(/*[null]*/ () {
lines = lines /*invoke: [subclass=JSInt]*/ - 42;
});
return lines;
}
/*member: accessBeforeAssignInClosure:[exact=JSUInt31]*/
accessBeforeAssignInClosure() {
/*[null|subclass=Object]*/ local(/*[subclass=Closure]*/ f) => f();
int lines = 0;
local(/*[null]*/ () {
lines /*invoke: [exact=JSUInt31]*/ - 42;
lines = 42;
});
return lines;
}
/*member: accessAfterAssignInClosure:[exact=JSUInt31]*/
accessAfterAssignInClosure() {
/*[null|subclass=Object]*/ local(/*[subclass=Closure]*/ f) => f();
int lines = 0;
local(/*[subclass=JSInt]*/ () {
lines = 42;
return lines /*invoke: [exact=JSUInt31]*/ - 42;
});
return lines;
}
/*member: compoundInClosure:[subclass=JSInt]*/
compoundInClosure() {
/*[null|subclass=Object]*/ local(/*[subclass=Closure]*/ f) => f();
int lines = 0;
local(/*[null]*/ () {
lines /*invoke: [subclass=JSInt]*/ -= 42;
});
return lines;
}
/*member: postfixInClosure:[subclass=JSPositiveInt]*/
postfixInClosure() {
/*[null|subclass=Object]*/ local(/*[subclass=Closure]*/ f) => f();
int lines = 0;
local(/*[null]*/ () {
lines /*invoke: [subclass=JSPositiveInt]*/ ++;
});
return lines;
}