| // 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. | |
| /*member: main:ignore*/ | |
| void main() { | |
| for (var a in [false, true]) { | |
| sink = cannotRecognize(a ? 10 : C()); | |
| sink = unspecialized(a ? -1 : 1); | |
| sink = otherPositive2(a); | |
| sink = shiftBySix(a); | |
| sink = shiftByMasked(a, 9); | |
| sink = shiftByMasked(a, -9); | |
| } | |
| sink = cannotConstantFold(); | |
| sink = constantFoldPositive(); | |
| sink = constantFoldNegative(); | |
| test6(); | |
| } | |
| Object? sink; | |
| @pragma('dart2js:noInline') | |
| /*spec|canary.member: cannotRecognize:function(thing) { | |
| return A._asInt(J.$shru$n(thing, 1)); | |
| }*/ | |
| /*prod.member: cannotRecognize:function(thing) { | |
| return J.$shru$n(thing, 1); | |
| }*/ | |
| int cannotRecognize(dynamic thing) { | |
| return thing >>> 1; | |
| } | |
| @pragma('dart2js:noInline') | |
| /*member: cannotConstantFold:function() { | |
| return B.JSInt_methods.$shru(1, -1); | |
| }*/ | |
| int cannotConstantFold() { | |
| var a = 1; | |
| return a >>> -1; | |
| } | |
| @pragma('dart2js:noInline') | |
| /*member: constantFoldPositive:function() { | |
| return 25; | |
| }*/ | |
| int constantFoldPositive() { | |
| var a = 100; | |
| return a >>> 2; | |
| } | |
| @pragma('dart2js:noInline') | |
| /*member: constantFoldNegative:function() { | |
| return 3; | |
| }*/ | |
| int constantFoldNegative() { | |
| var a = -1; | |
| return a >>> 30; | |
| } | |
| @pragma('dart2js:noInline') | |
| /*member: unspecialized:function(a) { | |
| return B.JSInt_methods.$shru(1, a); | |
| }*/ | |
| int unspecialized(int a) { | |
| return 1 >>> a; | |
| } | |
| @pragma('dart2js:noInline') | |
| /*member: otherPositive2:function(param) { | |
| return B.JSInt_methods._shruOtherPositive$1(1, param ? 1 : 2); | |
| }*/ | |
| int otherPositive2(bool param) { | |
| var a = param ? 1 : 2; | |
| return 1 >>> a; | |
| } | |
| @pragma('dart2js:noInline') | |
| /*member: shiftBySix:function(param) { | |
| return (param ? 4294967295 : -1) >>> 6; | |
| }*/ | |
| int shiftBySix(bool param) { | |
| var a = param ? 0xFFFFFFFF : -1; | |
| return a >>> 6; | |
| } | |
| @pragma('dart2js:noInline') | |
| /*member: shiftByMasked:function(param1, shift) { | |
| var a = param1 ? 4294967295 : 0; | |
| return a >>> (shift & 31); | |
| }*/ | |
| int shiftByMasked(bool param1, int shift) { | |
| var a = param1 ? 0xFFFFFFFF : 0; | |
| return a >>> (shift & 31); | |
| } | |
| @pragma('dart2js:noInline') | |
| /*member: otherPositive6:function(a, b) { | |
| return B.JSInt_methods._shruOtherPositive$1(a, b); | |
| }*/ | |
| int otherPositive6(int a, int b) { | |
| return a >>> b; | |
| } | |
| void test6() { | |
| sink = otherPositive6(1, 3); | |
| sink = otherPositive6(0, 4); | |
| sink = otherPositive6(-1, 2); | |
| } | |
| class C { | |
| /*member: C.>>>:ignore*/ | |
| C operator >>>(int i) => this; | |
| } |