Remove the flag `incompatible_disallow_filetype`
https://github.com/bazelbuild/bazel/issues/5831
RELNOTES: None.
PiperOrigin-RevId: 253027470
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java
index cf9a16e..fa254bc 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java
@@ -81,9 +81,6 @@
builder.allowedFileTypes(FileTypeSet.ANY_FILE);
} else if (fileTypesObj == Boolean.FALSE) {
builder.allowedFileTypes(FileTypeSet.NO_FILE);
- } else if (fileTypesObj instanceof SkylarkFileType) {
- // TODO(laurentlb): deprecated, to be removed
- builder.allowedFileTypes(((SkylarkFileType) fileTypesObj).getFileTypeSet());
} else if (fileTypesObj instanceof SkylarkList) {
List<String> arg =
SkylarkList.castSkylarkListOrNoneToList(
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkFileType.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkFileType.java
deleted file mode 100644
index 85caec5..0000000
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkFileType.java
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2014 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package com.google.devtools.build.lib.analysis.skylark;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.collect.ImmutableList;
-import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
-import com.google.devtools.build.lib.skylarkbuildapi.FileTypeApi;
-import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.EvalUtils;
-import com.google.devtools.build.lib.util.FileType;
-import com.google.devtools.build.lib.util.FileTypeSet;
-import java.util.List;
-
-/** A wrapper class for FileType and FileTypeSet functionality in Skylark. */
-@AutoCodec
-public class SkylarkFileType implements FileTypeApi<Artifact> {
-
- private final FileType fileType;
-
- @AutoCodec.VisibleForSerialization
- SkylarkFileType(FileType fileType) {
- this.fileType = fileType;
- }
-
- public static SkylarkFileType of(List<String> extensions) {
- return new SkylarkFileType(FileType.of(extensions));
- }
-
- public FileTypeSet getFileTypeSet() {
- return FileTypeSet.of(fileType);
- }
-
- @Override
- public ImmutableList<Artifact> filter(Object filesUnchecked) throws EvalException {
- return ImmutableList.copyOf(
- FileType.filter(
- (Iterable<Artifact>) EvalUtils.toIterableStrict(filesUnchecked, null, null), fileType));
- }
-
- @VisibleForTesting
- public Object getExtensions() {
- return fileType.getExtensions();
- }
-
- @Override
- public int hashCode() {
- return fileType.hashCode();
- }
-
- @Override
- public boolean equals(Object other) {
- return other == this
- || (other instanceof SkylarkFileType
- && this.fileType.equals(((SkylarkFileType) other).fileType));
- }
-
- @Override
- public String toString() {
- return fileType.toString();
- }
-}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
index 1060e11..42982dd 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
@@ -799,17 +799,4 @@
throw new EvalException(loc, "Illegal absolute label syntax: " + labelString);
}
}
-
- @Override
- public SkylarkFileType fileType(SkylarkList types, Location loc, Environment env)
- throws EvalException {
- if (env.getSemantics().incompatibleDisallowFileType()) {
- throw new EvalException(
- loc,
- "FileType function is not available. You may use a list of strings instead. "
- + "You can temporarily reenable the function by passing the flag "
- + "--incompatible_disallow_filetype=false");
- }
- return SkylarkFileType.of(types.getContents(String.class, "types"));
- }
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/StarlarkSemanticsOptions.java b/src/main/java/com/google/devtools/build/lib/packages/StarlarkSemanticsOptions.java
index d5d4ac8..66b1bb3 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/StarlarkSemanticsOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/StarlarkSemanticsOptions.java
@@ -275,18 +275,6 @@
public boolean incompatibleDisallowEmptyGlob;
@Option(
- name = "incompatible_disallow_filetype",
- defaultValue = "true",
- documentationCategory = OptionDocumentationCategory.STARLARK_SEMANTICS,
- effectTags = {OptionEffectTag.BUILD_FILE_SEMANTICS},
- metadataTags = {
- OptionMetadataTag.INCOMPATIBLE_CHANGE,
- OptionMetadataTag.TRIGGERED_BY_ALL_INCOMPATIBLE_CHANGES
- },
- help = "If set to true, function `FileType` is not available.")
- public boolean incompatibleDisallowFileType;
-
- @Option(
name = "incompatible_disallow_legacy_java_provider",
defaultValue = "false",
documentationCategory = OptionDocumentationCategory.STARLARK_SEMANTICS,
@@ -659,7 +647,6 @@
.incompatibleDisableObjcProviderResources(incompatibleDisableObjcProviderResources)
.incompatibleDisallowDictPlus(incompatibleDisallowDictPlus)
.incompatibleDisallowEmptyGlob(incompatibleDisallowEmptyGlob)
- .incompatibleDisallowFileType(incompatibleDisallowFileType)
.incompatibleDisallowLegacyJavaInfo(incompatibleDisallowLegacyJavaInfo)
.incompatibleDisallowLegacyJavaProvider(incompatibleDisallowLegacyJavaProvider)
.incompatibleDisallowLoadLabelsToCrossPackageBoundaries(
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FileTypeApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FileTypeApi.java
deleted file mode 100644
index f959cbf..0000000
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/FileTypeApi.java
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2018 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.google.devtools.build.lib.skylarkbuildapi;
-
-import com.google.common.collect.ImmutableList;
-import com.google.devtools.build.lib.skylarkinterface.Param;
-import com.google.devtools.build.lib.skylarkinterface.ParamType;
-import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
-import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
-import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
-import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.SkylarkList;
-import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
-
-/**
- * Interface for an object representing the type of file.
- */
-@SkylarkModule(
- name = "FileType",
- category = SkylarkModuleCategory.NONE,
- doc =
- "Deprecated. File type for file filtering. Can be used to filter collections of labels "
- + "for certain file types."
-)
-public interface FileTypeApi<FileApiT extends FileApi> {
-
- @SkylarkCallable(
- name = "filter",
- doc =
- "Returns a list created from the elements of the parameter containing all the "
- + "<a href=\"File.html\"><code>File</code></a>s that match the FileType.",
- parameters = {
- @Param(
- name = "files",
- positional = true,
- named = false,
- allowedTypes = {
- @ParamType(type = SkylarkNestedSet.class),
- @ParamType(type = SkylarkList.class)
- },
- doc = "The files to match. This parameter "
- + "must be a <a href=\"depset.html\"><code>depset</code></a> or a "
- + "<a href=\"list.html\"><code>list</code></a>."
- )
- }
- )
- public ImmutableList<FileApiT> filter(Object filesUnchecked) throws EvalException;
-}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleFunctionsApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleFunctionsApi.java
index a00b633..8d85fc7 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleFunctionsApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleFunctionsApi.java
@@ -527,27 +527,4 @@
Environment env,
StarlarkContext context)
throws EvalException;
-
- @SkylarkCallable(
- name = "FileType",
- doc =
- "Deprecated. Creates a file filter from a list of strings. For example, to match "
- + "files ending with .cc or .cpp, use: "
- + "<pre class=language-python>FileType([\".cc\", \".cpp\"])</pre>",
- parameters = {
- @Param(
- name = "types",
- type = SkylarkList.class,
- legacyNamed = true,
- generic1 = String.class,
- defaultValue = "[]",
- doc = "a list of the accepted file extensions."
- )
- },
- useLocation = true,
- useEnvironment = true
- )
- @SkylarkConstructor(objectType = FileTypeApi.class)
- public FileTypeApi<FileApiT> fileType(SkylarkList<?> types, Location loc, Environment env)
- throws EvalException;
}
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java b/src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java
index bde6ad9..a272fb7 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/StarlarkSemantics.java
@@ -155,8 +155,6 @@
public abstract boolean incompatibleDisallowEmptyGlob();
- public abstract boolean incompatibleDisallowFileType();
-
public abstract boolean incompatibleDisallowLegacyJavaProvider();
public abstract boolean incompatibleDisallowLegacyJavaInfo();
@@ -255,7 +253,6 @@
.incompatibleDisableObjcProviderResources(true)
.incompatibleDisallowDictPlus(true)
.incompatibleDisallowEmptyGlob(false)
- .incompatibleDisallowFileType(true)
.incompatibleDisallowLegacyJavaProvider(false)
.incompatibleDisallowLegacyJavaInfo(false)
.incompatibleDisallowLoadLabelsToCrossPackageBoundaries(true)
@@ -321,8 +318,6 @@
public abstract Builder incompatibleDisallowDictPlus(boolean value);
- public abstract Builder incompatibleDisallowFileType(boolean value);
-
public abstract Builder incompatibleDisallowEmptyGlob(boolean value);
public abstract Builder incompatibleDisallowLegacyJavaProvider(boolean value);
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java
index 87f63cb..b59af09 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java
@@ -20,7 +20,6 @@
import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
-import com.google.devtools.build.lib.skylarkbuildapi.FileTypeApi;
import com.google.devtools.build.lib.skylarkbuildapi.ProviderApi;
import com.google.devtools.build.lib.skylarkbuildapi.SkylarkAspectApi;
import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleFunctionsApi;
@@ -182,12 +181,6 @@
}
@Override
- public FileTypeApi<FileApi> fileType(SkylarkList<?> types, Location loc, Environment env)
- throws EvalException {
- return null;
- }
-
- @Override
public SkylarkAspectApi aspect(BaseFunction implementation, SkylarkList<?> attributeAspects,
Object attrs, SkylarkList<?> requiredAspectProvidersArg, SkylarkList<?> providesArg,
SkylarkList<?> fragments, SkylarkList<?> hostFragments, SkylarkList<?> toolchains, String doc,
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 50ff341..9758c23 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
@@ -142,7 +142,6 @@
"--incompatible_disable_third_party_license_checking=" + rand.nextBoolean(),
"--incompatible_disallow_dict_plus=" + rand.nextBoolean(),
"--incompatible_disallow_empty_glob=" + rand.nextBoolean(),
- "--incompatible_disallow_filetype=" + rand.nextBoolean(),
"--incompatible_disallow_legacy_javainfo=" + rand.nextBoolean(),
"--incompatible_disallow_legacy_java_provider=" + rand.nextBoolean(),
"--incompatible_disallow_load_labels_to_cross_package_boundaries=" + rand.nextBoolean(),
@@ -197,7 +196,6 @@
.incompatibleDisableThirdPartyLicenseChecking(rand.nextBoolean())
.incompatibleDisallowDictPlus(rand.nextBoolean())
.incompatibleDisallowEmptyGlob(rand.nextBoolean())
- .incompatibleDisallowFileType(rand.nextBoolean())
.incompatibleDisallowLegacyJavaInfo(rand.nextBoolean())
.incompatibleDisallowLegacyJavaProvider(rand.nextBoolean())
.incompatibleDisallowLoadLabelsToCrossPackageBoundaries(rand.nextBoolean())
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
index d280b3a..91b5427 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java
@@ -847,15 +847,6 @@
}
@Test
- public void testFileTypeIsDisabled() throws Exception {
- StarlarkSemantics semantics =
- StarlarkSemantics.DEFAULT_SEMANTICS.toBuilder().incompatibleDisallowFileType(true).build();
- EvalException expected =
- assertThrows(EvalException.class, () -> evalRuleClassCode(semantics, "FileType(['.css'])"));
- assertThat(expected).hasMessageThat().contains("FileType function is not available.");
- }
-
- @Test
public void testRuleInheritsBaseRuleAttributes() throws Exception {
evalAndExport("def impl(ctx): return None", "r1 = rule(impl)");
RuleClass c = ((SkylarkRuleFunction) lookup("r1")).getRuleClass();