starlark: remove Dict.of(K, V) constructors They are mostly used in tests, and aren't necessary even there. PiperOrigin-RevId: 340666283
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/BUILD b/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/BUILD index 8f141dd..d70250d 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/BUILD +++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/BUILD
@@ -48,6 +48,7 @@ "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/main/java/net/starlark/java/annot", "//src/main/java/net/starlark/java/eval", + "//src/main/java/net/starlark/java/syntax", "//third_party:guava", "//third_party:java-diff-utils", "//third_party:jsr305",
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryContext.java b/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryContext.java index 1f41676..a0e067c 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryContext.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/repository/starlark/StarlarkRepositoryContext.java
@@ -86,12 +86,12 @@ import javax.annotation.Nullable; import net.starlark.java.eval.Dict; import net.starlark.java.eval.EvalException; -import net.starlark.java.eval.Mutability; import net.starlark.java.eval.Sequence; import net.starlark.java.eval.Starlark; import net.starlark.java.eval.StarlarkInt; import net.starlark.java.eval.StarlarkSemantics; import net.starlark.java.eval.StarlarkThread; +import net.starlark.java.syntax.Location; /** Starlark API for the repository_rule's context. */ public class StarlarkRepositoryContext @@ -770,8 +770,7 @@ new IOException("thread interrupted"), Transience.TRANSIENT); } catch (IOException e) { if (allowFail) { - Dict<String, Object> dict = Dict.of((Mutability) null, "success", false); - return StructProvider.STRUCT.createWithBuiltinLocation(dict); + return StructProvider.STRUCT.create(ImmutableMap.of("success", false), Location.BUILTIN); } else { throw new RepositoryFunctionException(e, Transience.TRANSIENT); } @@ -898,8 +897,7 @@ } catch (IOException e) { env.getListener().post(w); if (allowFail) { - Dict<String, Object> dict = Dict.of((Mutability) null, "success", false); - return StructProvider.STRUCT.createWithBuiltinLocation(dict); + return StructProvider.STRUCT.create(ImmutableMap.of("success", false), Location.BUILTIN); } else { throw new RepositoryFunctionException(e, Transience.TRANSIENT); } @@ -1020,7 +1018,7 @@ Transience.PERSISTENT); } - Dict.Builder<String, Object> out = Dict.builder(); + ImmutableMap.Builder<String, Object> out = ImmutableMap.builder(); out.put("success", true); out.put("integrity", finalChecksum.toSubresourceIntegrity()); @@ -1028,7 +1026,7 @@ if (finalChecksum.getKeyType() == KeyType.SHA256) { out.put("sha256", finalChecksum.toString()); } - return StructProvider.STRUCT.createWithBuiltinLocation(out.buildImmutable()); + return StructProvider.STRUCT.create(out.build(), Location.BUILTIN); } private static ImmutableList<String> checkAllUrls(Iterable<?> urlList) throws EvalException {
diff --git a/src/main/java/com/google/devtools/build/lib/packages/StarlarkNativeModule.java b/src/main/java/com/google/devtools/build/lib/packages/StarlarkNativeModule.java index 20e385a..d7cfe10 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/StarlarkNativeModule.java +++ b/src/main/java/com/google/devtools/build/lib/packages/StarlarkNativeModule.java
@@ -17,7 +17,6 @@ import static com.google.devtools.build.lib.packages.PackageFactory.getContext; import com.google.common.base.Joiner; -import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.cmdline.Label; @@ -139,8 +138,7 @@ BazelStarlarkContext.from(thread).checkLoadingOrWorkspacePhase("native.existing_rule"); PackageContext context = getContext(thread); Target target = context.pkgBuilder.getTarget(name); - Dict<String, Object> rule = targetDict(target, thread.mutability()); - return rule != null ? rule : Starlark.NONE; + return target instanceof Rule ? getRuleDict((Rule) target, thread.mutability()) : Starlark.NONE; } /* @@ -154,16 +152,13 @@ PackageContext context = getContext(thread); Collection<Target> targets = context.pkgBuilder.getTargets(); Mutability mu = thread.mutability(); - Dict<String, Dict<String, Object>> rules = Dict.of(mu); + Dict.Builder<String, Dict<String, Object>> rules = Dict.builder(); for (Target t : targets) { if (t instanceof Rule) { - Dict<String, Object> rule = targetDict(t, mu); - Preconditions.checkNotNull(rule); - rules.putEntry(t.getName(), rule); + rules.put(t.getName(), getRuleDict((Rule) t, mu)); } } - - return rules; + return rules.build(mu); } @Override @@ -279,15 +274,9 @@ return packageId.getRepository().toString(); } - @Nullable - private static Dict<String, Object> targetDict(Target target, Mutability mu) - throws EvalException { - if (!(target instanceof Rule)) { - return null; - } - Dict<String, Object> values = Dict.of(mu); + private static Dict<String, Object> getRuleDict(Rule rule, Mutability mu) throws EvalException { + Dict.Builder<String, Object> values = Dict.builder(); - Rule rule = (Rule) target; for (Attribute attr : rule.getAttributes()) { if (!Character.isAlphabetic(attr.getName().charAt(0))) { continue; @@ -300,21 +289,21 @@ } try { - Object val = starlarkifyValue(mu, rule.getAttr(attr.getName()), target.getPackage()); + Object val = starlarkifyValue(mu, rule.getAttr(attr.getName()), rule.getPackage()); if (val == null) { continue; } - values.putEntry(attr.getName(), val); + values.put(attr.getName(), val); } catch (NotRepresentableException e) { throw new NotRepresentableException( String.format( - "target %s, attribute %s: %s", target.getName(), attr.getName(), e.getMessage())); + "target %s, attribute %s: %s", rule.getName(), attr.getName(), e.getMessage())); } } - values.putEntry("name", rule.getName()); - values.putEntry("kind", rule.getRuleClass()); - return values; + values.put("name", rule.getName()); + values.put("kind", rule.getRuleClass()); + return values.build(mu); } /**
diff --git a/src/main/java/com/google/devtools/build/lib/packages/StructProvider.java b/src/main/java/com/google/devtools/build/lib/packages/StructProvider.java index 2a1fd88..dcdd3a5 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/StructProvider.java +++ b/src/main/java/com/google/devtools/build/lib/packages/StructProvider.java
@@ -43,19 +43,14 @@ return create(kwargs, thread.getCallerLocation()); } - // Called from StarlarkRepositoryContext. TODO(adonovan): eliminate. - public StructImpl createWithBuiltinLocation(Dict<String, Object> kwargs) throws EvalException { - return create(kwargs, Location.BUILTIN); - } - - private StructImpl create(Dict<String, Object> kwargs, Location location) throws EvalException { - if (kwargs.containsKey("to_json")) { + public StructImpl create(Map<String, Object> fields, Location location) throws EvalException { + if (fields.containsKey("to_json")) { throw Starlark.errorf("cannot override built-in struct function 'to_json'"); } - if (kwargs.containsKey("to_proto")) { + if (fields.containsKey("to_proto")) { throw Starlark.errorf("cannot override built-in struct function 'to_proto'"); } - return StarlarkInfo.create(this, kwargs, location); + return StarlarkInfo.create(this, fields, location); } /** @@ -65,7 +60,7 @@ * providers, such as the {@code native} object, and the struct fields of {@code ctx} like {@code * ctx.attr}. */ - public StarlarkInfo create(Map<String, Object> values, String errorMessageFormatForUnknownField) { - return StarlarkInfo.createWithCustomMessage(this, values, errorMessageFormatForUnknownField); + public StarlarkInfo create(Map<String, Object> fields, String errorMessageFormatForUnknownField) { + return StarlarkInfo.createWithCustomMessage(this, fields, errorMessageFormatForUnknownField); } }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidStarlarkData.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidStarlarkData.java index bdda8ce..a5550a4 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidStarlarkData.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidStarlarkData.java
@@ -47,7 +47,6 @@ import javax.annotation.Nullable; import net.starlark.java.eval.Dict; import net.starlark.java.eval.EvalException; -import net.starlark.java.eval.Mutability; import net.starlark.java.eval.Sequence; import net.starlark.java.eval.Starlark; import net.starlark.java.eval.StarlarkList; @@ -190,12 +189,10 @@ mergeRes(ctx, manifest, resources, deps, neverlink, enableDataBinding); JavaInfo javaInfo = getJavaInfoForRClassJar(validated.getClassJar(), validated.getJavaSourceJar()); - return Dict.of( - (Mutability) null, - AndroidResourcesInfo.PROVIDER, - validated.toProvider(), - JavaInfo.PROVIDER, - javaInfo); + return Dict.<Provider, NativeInfo>builder() + .put(AndroidResourcesInfo.PROVIDER, validated.toProvider()) + .put(JavaInfo.PROVIDER, javaInfo) + .buildImmutable(); } @Override