跳到主内容

sdk_version_gt_gt_gt_operator

运算符 “>>>” 直到 2.14.0 版本才被支持,但此代码要求能够在早期版本上运行。

描述

#

当代码中使用运算符 >>> 且 SDK 约束的下限小于 2.14.0 时,分析器会产生此诊断。该运算符在早期版本中不受支持,因此此代码将无法在早期版本的 SDK 上运行。

示例

#

这是一个 pubspec 示例,它定义了一个 SDK 约束,其下限小于 2.14.0

yaml
environment:
 sdk: '>=2.0.0 <2.15.0'

在使用该 pubspec 的软件包中,如下所示的代码会产生此诊断

dart
int x = 3 >>> 4;

常见修复方法

#

如果你不需要支持旧版本的 SDK,则可以提高 SDK 约束以允许使用该运算符

yaml
environment:
  sdk: '>=2.14.0 <2.15.0'

如果你需要支持旧版本的 SDK,则重写代码以不使用 >>> 运算符

dart
int x = logicalShiftRight(3, 4);

int logicalShiftRight(int leftOperand, int rightOperand) {
  int divisor = 1 << rightOperand;
  if (divisor == 0) {
    return 0;
  }
  return leftOperand ~/ divisor;
}