aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar vladmos <vladmos@google.com>2017-05-04 19:26:48 +0200
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2017-05-04 23:05:57 +0200
commitee0a8bb7f4a9b8edc3fdb30b4e255cf461415382 (patch)
tree969ab65be7d55c35e4c54ddf9826a39d71628730 /src/main/java/com/google/devtools/build/lib
parent902fefc347f243c42aa9444c75c7204e5e6462ac (diff)
Implement a flag to forbid the `+` operator for dicts
Usage: --incompatible_dict_plus=true (the default value is false). PiperOrigin-RevId: 155094639
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-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;
}