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();