aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/BinaryOperatorExpression.java7
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemanticsOptions.java8
2 files changed, 15 insertions, 0 deletions
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 ec81e07219..ef8b7f1c55 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
@@ -219,6 +219,13 @@ public final class BinaryOperatorExpression extends Expression {
}
if (lval instanceof SkylarkDict && rval instanceof SkylarkDict) {
+ if (env.getSemantics().incompatibleDictPlus) {
+ throw new EvalException(
+ location,
+ "The `+` operator for dicts is deprecated and no longer supported. Please use the "
+ + "`update` method instead. You can temporarily enable the `+` operator by passing "
+ + "the flag --incompatible_dict_plus=false");
+ }
return SkylarkDict.plus((SkylarkDict<?, ?>) lval, (SkylarkDict<?, ?>) rval, env);
}
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemanticsOptions.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemanticsOptions.java
index 5909ea7155..abd5611704 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemanticsOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkSemanticsOptions.java
@@ -68,4 +68,12 @@ public class SkylarkSemanticsOptions extends OptionsBase implements Serializable
+ "list. Otherwise it copies the original list without mutating it."
)
public boolean incompatibleListPlusEquals;
+
+ @Option(
+ name = "incompatible_dict_plus",
+ defaultValue = "false",
+ category = "incompatible changes",
+ help = "If set to true, the `+` becomes disabled for dicts."
+ )
+ public boolean incompatibleDictPlus;
}