Fix value collision in builtins registry
If two values compared equal (e.g., MethodLibrary#bool and SkylarkAttr#bool), we were dropping one of them in favor of the other.
RELNOTES: None
PiperOrigin-RevId: 182057611
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Runtime.java b/src/main/java/com/google/devtools/build/lib/syntax/Runtime.java
index 839b311..3decbeb 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Runtime.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Runtime.java
@@ -15,6 +15,7 @@
package com.google.devtools.build.lib.syntax;
import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
@@ -203,9 +204,9 @@
functions.get(namespace).put(function.getName(), function);
}
- /** Returns a set of all registered builtins, in a deterministic order. */
- public ImmutableSet<Object> getBuiltins() {
- return ImmutableSet.copyOf(allBuiltins.values());
+ /** Returns a list of all registered builtins, in a deterministic order. */
+ public ImmutableList<Object> getBuiltins() {
+ return ImmutableList.copyOf(allBuiltins.values());
}
@Nullable