Skylark: Expose non_empty flag for list/dict attributes.
--
MOS_MIGRATED_REVID=87956686
diff --git a/src/main/java/com/google/devtools/build/lib/rules/SkylarkAttr.java b/src/main/java/com/google/devtools/build/lib/rules/SkylarkAttr.java
index 97e0fd2..9ee1049 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/SkylarkAttr.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/SkylarkAttr.java
@@ -50,6 +50,9 @@
private static final String MANDATORY_DOC =
"set to True if users have to explicitely specify the value";
+ private static final String NON_EMPTY_DOC =
+ "set to True if the attribute must not be empty";
+
private static final String ALLOW_FILES_DOC =
"whether File targets are allowed. Can be True, False (default), or "
+ "a FileType filter.";
@@ -99,6 +102,10 @@
builder.setPropertyFlag("MANDATORY");
}
+ if (arguments.containsKey("non_empty") && (Boolean) arguments.get("non_empty")) {
+ builder.setPropertyFlag("NON_EMPTY");
+ }
+
if (arguments.containsKey("executable") && (Boolean) arguments.get("executable")) {
builder.setPropertyFlag("EXECUTABLE");
}
@@ -223,6 +230,7 @@
doc = DEFAULT_DOC + " If not specified, default is []."),
@Param(name = "flags", type = SkylarkList.class, generic1 = String.class, doc = FLAGS_DOC),
@Param(name = "mandatory", type = Boolean.class, doc = MANDATORY_DOC),
+ @Param(name = "non_empty", type = Boolean.class, doc = NON_EMPTY_DOC),
@Param(name = "cfg", type = ConfigurationTransition.class,
doc = CONFIGURATION_DOC)})
private static SkylarkFunction stringList = new SkylarkFunction("string_list") {
@@ -248,6 +256,7 @@
@Param(name = "mandatory", type = Boolean.class, doc = MANDATORY_DOC),
@Param(name = "allow_rules", type = SkylarkList.class, generic1 = String.class,
doc = ALLOW_RULES_DOC),
+ @Param(name = "non_empty", type = Boolean.class, doc = NON_EMPTY_DOC),
@Param(name = "providers", type = SkylarkList.class, generic1 = String.class,
doc = "mandatory providers every dependency has to have"),
@Param(name = "cfg", type = ConfigurationTransition.class, doc = CONFIGURATION_DOC)})
@@ -304,6 +313,7 @@
@Param(name = "default", type = SkylarkList.class, generic1 = Label.class, doc = DEFAULT_DOC),
@Param(name = "flags", type = SkylarkList.class, generic1 = String.class, doc = FLAGS_DOC),
@Param(name = "mandatory", type = Boolean.class, doc = MANDATORY_DOC),
+ @Param(name = "non_empty", type = Boolean.class, doc = NON_EMPTY_DOC),
@Param(name = "cfg", type = ConfigurationTransition.class, doc = CONFIGURATION_DOC)})
private static SkylarkFunction outputList = new SkylarkFunction("output_list") {
@Override
@@ -322,6 +332,7 @@
@Param(name = "default", type = Map.class, doc = DEFAULT_DOC),
@Param(name = "flags", type = SkylarkList.class, generic1 = String.class, doc = FLAGS_DOC),
@Param(name = "mandatory", type = Boolean.class, doc = MANDATORY_DOC),
+ @Param(name = "non_empty", type = Boolean.class, doc = NON_EMPTY_DOC),
@Param(name = "cfg", type = ConfigurationTransition.class, doc = CONFIGURATION_DOC)})
private static SkylarkFunction stringDict = new SkylarkFunction("string_dict") {
@Override