aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java66
1 files changed, 36 insertions, 30 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java
index 94c507787d..84f6a5f359 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkRuleConfiguredTargetBuilder.java
@@ -186,41 +186,47 @@ public final class SkylarkRuleConfiguredTargetBuilder {
for (String outputGroup : outputGroups.keySet()) {
SkylarkValue objects = outputGroups.get(outputGroup);
- NestedSet<Artifact> artifacts;
+ NestedSet<Artifact> artifacts = convertToOutputGroupValue(loc, outputGroup, objects);
+ builder.addOutputGroup(outputGroup, artifacts);
+ }
+ }
- String typeErrorMessage =
- "Output group '%s' is of unexpected type. "
- + "Should be list or set of Files, but got '%s' instead.";
+ public static NestedSet<Artifact> convertToOutputGroupValue(Location loc, String outputGroup,
+ SkylarkValue objects) throws EvalException {
+ NestedSet<Artifact> artifacts;
- if (objects instanceof SkylarkList) {
- NestedSetBuilder<Artifact> nestedSetBuilder = NestedSetBuilder.stableOrder();
- for (Object o : (SkylarkList) objects) {
- if (o instanceof Artifact) {
- nestedSetBuilder.add((Artifact) o);
- } else {
- throw new EvalException(
- loc,
- String.format(
- typeErrorMessage,
- outputGroup,
- "list with an element of " + EvalUtils.getDataTypeNameFromClass(o.getClass())));
- }
+ String typeErrorMessage =
+ "Output group '%s' is of unexpected type. "
+ + "Should be list or set of Files, but got '%s' instead.";
+
+ if (objects instanceof SkylarkList) {
+ NestedSetBuilder<Artifact> nestedSetBuilder = NestedSetBuilder.stableOrder();
+ for (Object o : (SkylarkList) objects) {
+ if (o instanceof Artifact) {
+ nestedSetBuilder.add((Artifact) o);
+ } else {
+ throw new EvalException(
+ loc,
+ String.format(
+ typeErrorMessage,
+ outputGroup,
+ "list with an element of " + EvalUtils.getDataTypeNameFromClass(o.getClass())));
}
- artifacts = nestedSetBuilder.build();
- } else {
- artifacts =
- SkylarkType.cast(
- objects,
- SkylarkNestedSet.class,
- Artifact.class,
- loc,
- typeErrorMessage,
- outputGroup,
- EvalUtils.getDataTypeName(objects, true))
- .getSet(Artifact.class);
}
- builder.addOutputGroup(outputGroup, artifacts);
+ artifacts = nestedSetBuilder.build();
+ } else {
+ artifacts =
+ SkylarkType.cast(
+ objects,
+ SkylarkNestedSet.class,
+ Artifact.class,
+ loc,
+ typeErrorMessage,
+ outputGroup,
+ EvalUtils.getDataTypeName(objects, true))
+ .getSet(Artifact.class);
}
+ return artifacts;
}
private static ConfiguredTarget addStructFieldsAndBuild(