Remove glob list from native rules

Since the glob() function now returns a standard list, some code can be
simplified.

RELNOTES: None.
PiperOrigin-RevId: 196867957
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AttributeFormatter.java b/src/main/java/com/google/devtools/build/lib/packages/AttributeFormatter.java
index e48dbb4..cda20bd 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/AttributeFormatter.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/AttributeFormatter.java
@@ -304,8 +304,6 @@
 
     void addFilesetListValue(Build.FilesetEntry.Builder builder);
 
-    void addGlobCriteria(Build.GlobCriteria.Builder builder);
-
     void addLabelDictUnaryValue(LabelDictUnaryEntry.Builder builder);
 
     void addLabelKeyedStringDictValue(LabelKeyedStringDictEntry.Builder builder);
@@ -358,11 +356,6 @@
     }
 
     @Override
-    public void addGlobCriteria(Build.GlobCriteria.Builder builder) {
-      attributeBuilder.addGlobCriteria(builder);
-    }
-
-    @Override
     public void addLabelDictUnaryValue(LabelDictUnaryEntry.Builder builder) {
       attributeBuilder.addLabelDictUnaryValue(builder);
     }
@@ -484,11 +477,6 @@
     }
 
     @Override
-    public void addGlobCriteria(Build.GlobCriteria.Builder builder) {
-      selectorEntryBuilder.addGlobCriteria(builder);
-    }
-
-    @Override
     public void addLabelDictUnaryValue(LabelDictUnaryEntry.Builder builder) {
       selectorEntryBuilder.addLabelDictUnaryValue(builder);
     }
@@ -544,4 +532,3 @@
     }
   }
 }
-
diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
index c65b4aa..ad682b6 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/PackageFactory.java
@@ -48,7 +48,6 @@
 import com.google.devtools.build.lib.syntax.EvalUtils;
 import com.google.devtools.build.lib.syntax.FuncallExpression;
 import com.google.devtools.build.lib.syntax.FunctionSignature;
-import com.google.devtools.build.lib.syntax.GlobList;
 import com.google.devtools.build.lib.syntax.Mutability;
 import com.google.devtools.build.lib.syntax.ParserInputSource;
 import com.google.devtools.build.lib.syntax.Runtime;
@@ -578,11 +577,7 @@
       throw new EvalException(ast.getLocation(), e.getMessage());
     }
 
-    GlobList<String> globList = GlobList.captureResults(includes, excludes, matches);
-
-    // TODO(laurentlb): Get rid of globList type.
-    // Converting to ImmutableList will remove glob information from the list.
-    return MutableList.copyOf(env, ImmutableList.copyOf(globList));
+    return MutableList.copyOf(env, matches);
   }
 
   /**
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Rule.java b/src/main/java/com/google/devtools/build/lib/packages/Rule.java
index 027d292..c7cca63 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Rule.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Rule.java
@@ -35,7 +35,6 @@
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.packages.License.DistributionType;
 import com.google.devtools.build.lib.syntax.EvalException;
-import com.google.devtools.build.lib.syntax.GlobList;
 import com.google.devtools.build.lib.syntax.Type;
 import com.google.devtools.build.lib.util.BinaryPredicate;
 import java.util.Collection;
@@ -695,18 +694,6 @@
     }
   }
 
-  /**
-   * Returns the globs that were expanded to create an attribute value, or
-   * null if unknown or not applicable.
-   */
-  public static GlobList<?> getGlobInfo(Object attributeValue) {
-    if (attributeValue instanceof GlobList<?>) {
-      return (GlobList<?>) attributeValue;
-    } else {
-      return null;
-    }
-  }
-
   private void checkForNullLabel(Label labelToCheck, Object context) {
     if (labelToCheck == null) {
       throw new IllegalStateException(String.format(
diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
index bd1f4b4..0389764 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
@@ -50,7 +50,6 @@
 import com.google.devtools.build.lib.syntax.BaseFunction;
 import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.FuncallExpression;
-import com.google.devtools.build.lib.syntax.GlobList;
 import com.google.devtools.build.lib.syntax.Runtime;
 import com.google.devtools.build.lib.syntax.SkylarkList;
 import com.google.devtools.build.lib.syntax.Type;
@@ -1976,11 +1975,11 @@
 
   /**
    * Converts the build-language-typed {@code buildLangValue} to a native value via {@link
-   * BuildType#selectableConvert}. Canonicalizes the value's order if it is a {@link List} type
-   * (but not a {@link GlobList}) and {@code attr.isOrderIndependent()} returns {@code true}.
+   * BuildType#selectableConvert}. Canonicalizes the value's order if it is a {@link List} type and
+   * {@code attr.isOrderIndependent()} returns {@code true}.
    *
-   * <p>Throws {@link ConversionException} if the conversion fails, or if {@code buildLangValue}
-   * is a selector expression but {@code attr.isConfigurable()} is {@code false}.
+   * <p>Throws {@link ConversionException} if the conversion fails, or if {@code buildLangValue} is
+   * a selector expression but {@code attr.isConfigurable()} is {@code false}.
    */
   private static Object convertFromBuildLangType(Rule rule, Attribute attr, Object buildLangValue)
       throws ConversionException {
@@ -1995,7 +1994,7 @@
           String.format("attribute \"%s\" is not configurable", attr.getName()));
     }
 
-    if ((converted instanceof List<?>) && !(converted instanceof GlobList<?>)) {
+    if (converted instanceof List<?>) {
       if (attr.isOrderIndependent()) {
         @SuppressWarnings("unchecked")
         List<? extends Comparable<?>> list = (List<? extends Comparable<?>>) converted;
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Type.java b/src/main/java/com/google/devtools/build/lib/syntax/Type.java
index d8509e3..62336d1 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Type.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Type.java
@@ -23,7 +23,6 @@
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
 import com.google.devtools.build.lib.syntax.Printer.BasePrinter;
-import com.google.devtools.build.lib.syntax.SkylarkList.MutableList;
 import com.google.devtools.build.lib.util.LoggingUtil;
 import com.google.devtools.build.lib.util.StringCanonicalizer;
 import java.util.ArrayList;
@@ -599,19 +598,6 @@
         }
         ++index;
       }
-      // We preserve GlobList-s so they can make it to attributes;
-      // some external code relies on attributes preserving this information.
-      // TODO(bazel-team): somehow make Skylark extensible enough that
-      // GlobList support can be wholly moved out of Skylark into an extension.
-      if (x instanceof GlobList<?>) {
-        return new GlobList<>(((GlobList<?>) x).getCriteria(), result);
-      }
-      if (x instanceof MutableList) {
-        GlobList<?> globList = ((MutableList) x).getGlobList();
-        if (globList != null) {
-          return new GlobList<>(globList.getCriteria(), result);
-        }
-      }
       return result;
     }
 
diff --git a/src/main/protobuf/build.proto b/src/main/protobuf/build.proto
index ff328fe..bf92015 100644
--- a/src/main/protobuf/build.proto
+++ b/src/main/protobuf/build.proto
@@ -173,11 +173,11 @@
     repeated FilesetEntry fileset_list_value = 9;
     repeated LabelListDictEntry label_list_dict_value = 10;
     repeated StringListDictEntry string_list_dict_value = 11;
-    repeated GlobCriteria glob_criteria = 12;
     repeated int32 int_list_value = 13;
     repeated LabelDictUnaryEntry label_dict_unary_value = 15;
     repeated LabelKeyedStringDictEntry label_keyed_string_dict_value = 17;
 
+    repeated DEPRECATED_GlobCriteria DEPRECATED_glob_criteria = 12;
     repeated bytes DEPRECATED_string_dict_unary_value = 14;
   }
 
@@ -260,11 +260,6 @@
   // If this is a string list dict, each entry will be stored here.
   repeated StringListDictEntry string_list_dict_value = 11;
 
-  // The glob criteria. This is non-empty if:
-  // 1. This attribute is a list of strings or labels, and,
-  // 2. It contained a glob() expression
-  repeated GlobCriteria glob_criteria = 16;
-
   // The value of the attribute has a list of int32 values
   repeated int32 int_list_value = 17;
 
@@ -279,6 +274,7 @@
   // stored here.
   optional SelectorList selector_list = 21;
 
+  repeated DEPRECATED_GlobCriteria DEPRECATED_glob_criteria = 16;
   repeated bytes DEPRECATED_string_dict_unary_value = 18;
 }
 
@@ -543,7 +539,7 @@
   repeated MakeVarBinding binding = 2;
 }
 
-message GlobCriteria {
+message DEPRECATED_GlobCriteria {
   // List of includes (or items if this criteria did not come from a glob)
   repeated string include = 1;
 
@@ -566,4 +562,3 @@
   optional Location DEPRECATED_location = 2;
   optional string message = 3;
 }
-