diff options
8 files changed, 0 insertions, 83 deletions
diff --git a/site/docs/skylark/backward-compatibility.md b/site/docs/skylark/backward-compatibility.md index 8cffaeafd4..e5d8c75b62 100644 --- a/site/docs/skylark/backward-compatibility.md +++ b/site/docs/skylark/backward-compatibility.md @@ -30,7 +30,6 @@ To check if your code will be compatible with future releases you can: The following are the backward incompatible changes that are implemented and guarded behind flags in the current release: -* [Set constructor](#set-constructor) * [Dictionary concatenation](#dictionary-concatenation) * [Load must appear at top of file](#load-must-appear-at-top-of-file) * [Top level `if` statements](#top-level-if-statements) @@ -41,22 +40,6 @@ guarded behind flags in the current release: * [Glob tracking](#glob-tracking) -### Set constructor - -To maintain a clear distinction between the specialized [`depset`](depsets.md) -data structure and Python's native `set` datatype (which does not currently -exist in Skylark), the `set` constructor has been superseded by `depset`. It is -no longer allowed to run code that calls the old `set` constructor. - -However, for a limited time, it will not be an error to reference the `set` -constructor from code that is not executed (e.g. a function that is never -called). Enable this flag to confirm that your code does not still refer to the -old `set` constructor from unexecuted code. - -* Flag: `--incompatible_disallow_uncalled_set_constructor` -* Default: `true` - - ### Dictionary concatenation We are removing the `+` operator on dictionaries. This includes the `+=` form diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java index ab6e6ed79d..9056342bac 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java +++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsCodec.java @@ -51,7 +51,6 @@ public final class SkylarkSemanticsCodec implements ObjectCodec<SkylarkSemantics codedOut.writeBoolNoTag(semantics.incompatibleDisallowDictPlus()); codedOut.writeBoolNoTag(semantics.incompatibleDisallowThreeArgVardef()); codedOut.writeBoolNoTag(semantics.incompatibleDisallowToplevelIfStatement()); - codedOut.writeBoolNoTag(semantics.incompatibleDisallowUncalledSetConstructor()); codedOut.writeBoolNoTag(semantics.incompatibleNewActionsApi()); codedOut.writeBoolNoTag(semantics.incompatibleRemoveNativeGitRepository()); codedOut.writeBoolNoTag(semantics.incompatibleRemoveNativeHttpArchive()); @@ -73,7 +72,6 @@ public final class SkylarkSemanticsCodec implements ObjectCodec<SkylarkSemantics builder.incompatibleDisallowDictPlus(codedIn.readBool()); builder.incompatibleDisallowThreeArgVardef(codedIn.readBool()); builder.incompatibleDisallowToplevelIfStatement(codedIn.readBool()); - builder.incompatibleDisallowUncalledSetConstructor(codedIn.readBool()); builder.incompatibleNewActionsApi(codedIn.readBool()); builder.incompatibleRemoveNativeGitRepository(codedIn.readBool()); builder.incompatibleRemoveNativeHttpArchive(codedIn.readBool()); diff --git a/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java b/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java index b61f73094e..afb730c75c 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java +++ b/src/main/java/com/google/devtools/build/lib/packages/SkylarkSemanticsOptions.java @@ -157,17 +157,6 @@ public class SkylarkSemanticsOptions extends OptionsBase implements Serializable public boolean incompatibleDisallowToplevelIfStatement; @Option( - name = "incompatible_disallow_uncalled_set_constructor", - defaultValue = "true", - category = "incompatible changes", - documentationCategory = OptionDocumentationCategory.UNCATEGORIZED, - effectTags = {OptionEffectTag.UNKNOWN}, - metadataTags = {OptionMetadataTag.INCOMPATIBLE_CHANGE}, - help = "If set to true, it's not allowed to use `set()` even if that code is never executed." - ) - public boolean incompatibleDisallowUncalledSetConstructor; - - @Option( name = "incompatible_new_actions_api", defaultValue = "false", category = "incompatible changes", @@ -239,7 +228,6 @@ public class SkylarkSemanticsOptions extends OptionsBase implements Serializable .incompatibleDisallowDictPlus(incompatibleDisallowDictPlus) .incompatibleDisallowThreeArgVardef(incompatibleDisallowThreeArgVardef) .incompatibleDisallowToplevelIfStatement(incompatibleDisallowToplevelIfStatement) - .incompatibleDisallowUncalledSetConstructor(incompatibleDisallowUncalledSetConstructor) .incompatibleNewActionsApi(incompatibleNewActionsApi) .incompatibleRemoveNativeGitRepository(incompatibleRemoveNativeGitRepository) .incompatibleRemoveNativeHttpArchive(incompatibleRemoveNativeHttpArchive) diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Identifier.java b/src/main/java/com/google/devtools/build/lib/syntax/Identifier.java index 9f167e83b5..e201a0e865 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/Identifier.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/Identifier.java @@ -96,13 +96,6 @@ public final class Identifier extends Expression { if (name.equals("$error$")) { return new EvalException(getLocation(), "contains syntax error(s)", true); } - if (name.equals("set")) { - //TODO(vladmos): Remove as soon as the flag is removed - return new EvalException(getLocation(), - "The function 'set' has been removed in favor of 'depset', please use the latter. " - + "You can temporarily refer to the old 'set' constructor from unexecuted code " - + "by using --incompatible_disallow_uncalled_set_constructor=false"); - } String suggestion = SpellChecker.didYouMean(name, symbols); return new EvalException(getLocation(), "name '" + name + "' is not defined" + suggestion); } 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 fc9edda407..05208dcdd0 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 @@ -41,23 +41,15 @@ public abstract class SkylarkSemantics { // <== Add new options here in alphabetic order ==> public abstract boolean incompatibleBzlDisallowLoadAfterStatement(); public abstract boolean incompatibleDepsetIsNotIterable(); - public abstract boolean incompatibleDepsetUnion(); - public abstract boolean incompatibleDisableGlobTracking(); public abstract boolean incompatibleDisableObjcProviderResources(); - public abstract boolean incompatibleDisallowDictPlus(); public abstract boolean incompatibleDisallowThreeArgVardef(); public abstract boolean incompatibleDisallowToplevelIfStatement(); - public abstract boolean incompatibleDisallowUncalledSetConstructor(); - public abstract boolean incompatibleNewActionsApi(); - public abstract boolean incompatibleRemoveNativeGitRepository(); - public abstract boolean incompatibleRemoveNativeHttpArchive(); - public abstract boolean incompatibleStringIsNotIterable(); public abstract boolean internalSkylarkFlagTestCanary(); @@ -84,7 +76,6 @@ public abstract class SkylarkSemantics { .incompatibleDisallowDictPlus(false) .incompatibleDisallowThreeArgVardef(false) .incompatibleDisallowToplevelIfStatement(true) - .incompatibleDisallowUncalledSetConstructor(true) .incompatibleNewActionsApi(false) .incompatibleRemoveNativeGitRepository(false) .incompatibleRemoveNativeHttpArchive(false) @@ -105,7 +96,6 @@ public abstract class SkylarkSemantics { public abstract Builder incompatibleDisallowDictPlus(boolean value); public abstract Builder incompatibleDisallowThreeArgVardef(boolean value); public abstract Builder incompatibleDisallowToplevelIfStatement(boolean value); - public abstract Builder incompatibleDisallowUncalledSetConstructor(boolean value); public abstract Builder incompatibleNewActionsApi(boolean value); public abstract Builder incompatibleRemoveNativeGitRepository(boolean value); public abstract Builder incompatibleRemoveNativeHttpArchive(boolean value); diff --git a/src/main/java/com/google/devtools/build/lib/syntax/ValidationEnvironment.java b/src/main/java/com/google/devtools/build/lib/syntax/ValidationEnvironment.java index f7aba2c568..1c68edc1ae 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/ValidationEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/ValidationEnvironment.java @@ -68,12 +68,6 @@ public final class ValidationEnvironment extends SyntaxTreeVisitor { block.variables.addAll(builtinVariables); block.readOnlyVariables.addAll(builtinVariables); semantics = env.getSemantics(); - - // If the flag is set to false, it should be allowed to have `set` - // in non-executable parts of the code. - if (!env.getSemantics().incompatibleDisallowUncalledSetConstructor()) { - block.variables.add("set"); - } } @Override diff --git a/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java b/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java index 7cde32faca..a9a3d517f7 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java +++ b/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java @@ -127,7 +127,6 @@ public class SkylarkSemanticsConsistencyTest { "--incompatible_disallow_dict_plus=" + rand.nextBoolean(), "--incompatible_disallow_three_arg_vardef=" + rand.nextBoolean(), "--incompatible_disallow_toplevel_if_statement=" + rand.nextBoolean(), - "--incompatible_disallow_uncalled_set_constructor=" + rand.nextBoolean(), "--incompatible_new_actions_api=" + rand.nextBoolean(), "--incompatible_remove_native_git_repository=" + rand.nextBoolean(), "--incompatible_remove_native_http_archive=" + rand.nextBoolean(), @@ -150,7 +149,6 @@ public class SkylarkSemanticsConsistencyTest { .incompatibleDisallowDictPlus(rand.nextBoolean()) .incompatibleDisallowThreeArgVardef(rand.nextBoolean()) .incompatibleDisallowToplevelIfStatement(rand.nextBoolean()) - .incompatibleDisallowUncalledSetConstructor(rand.nextBoolean()) .incompatibleNewActionsApi(rand.nextBoolean()) .incompatibleRemoveNativeGitRepository(rand.nextBoolean()) .incompatibleRemoveNativeHttpArchive(rand.nextBoolean()) diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkNestedSetTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkNestedSetTest.java index 307f416fe0..0836d0ed38 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkNestedSetTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkNestedSetTest.java @@ -36,33 +36,6 @@ import org.junit.runners.JUnit4; public class SkylarkNestedSetTest extends EvaluationTestCase { @Test - public void testLegacyConstructorNotCalled() throws Exception { - env = - newEnvironmentWithSkylarkOptions("--incompatible_disallow_uncalled_set_constructor=false"); - eval("s = set([1, 2]) if False else depset([3, 4])"); - SkylarkNestedSet s = get("s"); - assertThat(s.getSet(Object.class)).containsExactly(3, 4); - - // Static check are only enabled in .bzl files - new SkylarkTest("--incompatible_disallow_uncalled_set_constructor=true") - .testIfErrorContains("The function 'set' has been removed in favor of 'depset'", - "s = set([1, 2]) if False else depset([3, 4])"); - new BuildTest("--incompatible_disallow_uncalled_set_constructor=true") - .testEval("s = set([1, 2]) if False else depset([3, 4]); s.to_list()", "[3, 4]"); - } - - @Test - public void testLegacyConstructorCalled() throws Exception { - new BothModesTest("--incompatible_disallow_uncalled_set_constructor=false") - .testIfErrorContains("The function 'set' has been removed in favor of 'depset'", - "s = set([1, 2])"); - - new BothModesTest("--incompatible_disallow_uncalled_set_constructor=true") - .testIfErrorContains("The function 'set' has been removed in favor of 'depset'", - "s = set([1, 2])"); - } - - @Test public void testConstructor() throws Exception { eval("s = depset(order='default')"); assertThat(lookup("s")).isInstanceOf(SkylarkNestedSet.class); |