Add support for more augmented-assignment operators.
based on my limited understanding of python syntax, the only things we don't support is //= and **=, but it looks like skylark doesn't support the corresponding infix operators.
RELNOTES[NEW]: add support for the '-=', '*=', '/=', and'%=' operators to skylark. Notably, we do not support '|=' because the semantics of skylark sets are sufficiently different from python sets.
--
MOS_MIGRATED_REVID=123889776
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
index d446e3f..a5ca8bd 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java
@@ -168,10 +168,15 @@
.put(TokenKind.STAR, Operator.MULT)
.build();
+ // TODO(bazel-team): add support for |=
private static final Map<TokenKind, Operator> augmentedAssignmentMethods =
new ImmutableMap.Builder<TokenKind, Operator>()
- .put(TokenKind.PLUS_EQUALS, Operator.PLUS) // += // TODO(bazel-team): other similar operators
- .build();
+ .put(TokenKind.PLUS_EQUALS, Operator.PLUS)
+ .put(TokenKind.MINUS_EQUALS, Operator.MINUS)
+ .put(TokenKind.STAR_EQUALS, Operator.MULT)
+ .put(TokenKind.SLASH_EQUALS, Operator.DIVIDE)
+ .put(TokenKind.PERCENT_EQUALS, Operator.PERCENT)
+ .build();
/** Highest precedence goes last.
* Based on: http://docs.python.org/2/reference/expressions.html#operator-precedence