diff --git a/src/main/java/com/google/devtools/build/lib/runtime/AllIncompatibleChangesExpansion.java b/src/main/java/com/google/devtools/build/lib/runtime/AllIncompatibleChangesExpansion.java
index 3a32412f690eb4..5140f572b16e18 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/AllIncompatibleChangesExpansion.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/AllIncompatibleChangesExpansion.java
@@ -66,11 +66,18 @@
* aware that an error in the specification of the {@code @Option} will exercise failure code paths
* in the early part of the Bazel server execution.
*
- *
After the breaking change has been enabled unconditionally, it is recommended (required?) that
- * its corresponding incompatible change option be left as a valid no-op option, rather than
- * removed. This helps avoid breaking invocations of Bazel upon upgrading to a new release. Just as
- * for other options, names of incompatible change options must never be reused for a different
- * option.
+ *
After the breaking change has been enabled by default, it is recommended (required?) that the
+ * flag stick around for a few releases, to provide users the flexibility to opt out. Even after
+ * enabling the behavior unconditionally, it can still be useful to keep the flag around as a valid
+ * no-op so that Bazel invocations are not immediately broken.
+ *
+ *
Generally speaking, we should never reuse names for multiple options. Therefore, when choosing
+ * a name for a new incompatible change, try to describe not just the affected feature, but what the
+ * change to that feature is. This avoids conflicts in case the feature changes multiple times. For
+ * example, {@code "--incompatible_depset_constructor"} is ambiguous because it only communicates
+ * that there is a change to how depsets are constructed, but {@code
+ * "--incompatible_disallow_set_constructor"} uniquely says that the {@code set} alias for the
+ * depset constructor is being disallowed.
*/
// Javadoc can't resolve inner classes.
@SuppressWarnings("javadoc")
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/BazelLibrary.java b/src/main/java/com/google/devtools/build/lib/syntax/BazelLibrary.java
index 70f4b95e1f6195..88275c3e805a86 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/BazelLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/BazelLibrary.java
@@ -126,13 +126,13 @@ public SkylarkNestedSet invoke(Object items, String order, Location loc)
new BuiltinFunction("set") {
public SkylarkNestedSet invoke(Object items, String order, Location loc, Environment env)
throws EvalException {
- if (env.getSemantics().incompatibleDepsetConstructor) {
+ if (env.getSemantics().incompatibleDisallowSetConstructor) {
throw new EvalException(
loc,
"The `set` constructor for depsets is deprecated and will be removed. Please use "
+ "the `depset` constructor instead. You can temporarily enable the "
+ "deprecated `set` constructor by passing the flag "
- + "--incompatible_depset_constructor=false");
+ + "--incompatible_disallow_set_constructor=false");
}
try {
return new SkylarkNestedSet(Order.parse(order), items, loc);
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 ef8b7f1c5534bf..ea8280ac8af64d 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
@@ -209,7 +209,7 @@ private static Object plus(
}
if ((lval instanceof MutableList) && (rval instanceof MutableList)) {
- if (isAugmented && env.getSemantics().incompatibleListPlusEquals) {
+ if (isAugmented && env.getSemantics().incompatibleListPlusEqualsInplace) {
@SuppressWarnings("unchecked")
MutableList