Introduce `--incompatible_disallow_slash_operator` to disable `/` operator.
RELNOTES:
The `/` operator is deprecated in favor of `//` (floor integer division).
Try the `--incompatible_disallow_slash_operator` flag to ensure your code
is forward-compatible.
PiperOrigin-RevId: 192430310
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/BinaryOperatorExpression.java b/src/main/java/com/google/devtools/build/lib/syntax/BinaryOperatorExpression.java
index b1f835c..283fd57 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/BinaryOperatorExpression.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/BinaryOperatorExpression.java
@@ -205,6 +205,15 @@
return mult(lhs, rhs, env, location);
case DIVIDE:
+ if (env.getSemantics().incompatibleDisallowSlashOperator()) {
+ throw new EvalException(
+ location,
+ "The `/` operator has been removed. Please use the `//` operator for integer "
+ + "division. You can temporarily enable the `/` operator by passing "
+ + "the flag --incompatible_disallow_slash_operator=false");
+ }
+ return divide(lhs, rhs, location);
+
case FLOOR_DIVIDE:
return divide(lhs, rhs, location);
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java
index e0ef87f..b6665c4 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemantics.java
@@ -53,6 +53,8 @@
public abstract boolean incompatibleDisallowOldStyleArgsAdd();
+ public abstract boolean incompatibleDisallowSlashOperator();
+
public abstract boolean incompatibleDisallowToplevelIfStatement();
public abstract boolean incompatibleNewActionsApi();
@@ -89,6 +91,7 @@
.incompatibleDisableObjcProviderResources(false)
.incompatibleDisallowDictPlus(false)
.incompatibleDisallowOldStyleArgsAdd(false)
+ .incompatibleDisallowSlashOperator(false)
.incompatibleDisallowToplevelIfStatement(true)
.incompatibleNewActionsApi(false)
.incompatiblePackageNameIsAFunction(false)
@@ -117,6 +120,8 @@
public abstract Builder incompatibleDisallowOldStyleArgsAdd(boolean value);
+ public abstract Builder incompatibleDisallowSlashOperator(boolean value);
+
public abstract Builder incompatibleDisallowToplevelIfStatement(boolean value);
public abstract Builder incompatibleNewActionsApi(boolean value);