diff options
author | 2015-09-04 15:01:19 +0000 | |
---|---|---|
committer | 2015-09-04 16:32:24 +0000 | |
commit | a2aa5871b7ceeb0e182946fd5d5208b479f2bfcb (patch) | |
tree | 51d2dc01a309c30c79e3be64f9cd0480caa359de /src/main/java/com/google/devtools/build/lib/syntax | |
parent | d13207c8da178025d56df37a497092b3de971b3a (diff) |
Skylark: Show list of fields in error message for struct objects.
--
MOS_MIGRATED_REVID=102341687
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/syntax')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/syntax/ClassObject.java | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/ClassObject.java b/src/main/java/com/google/devtools/build/lib/syntax/ClassObject.java index 2d477667d5..2d5cee7cb5 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/ClassObject.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/ClassObject.java @@ -61,6 +61,8 @@ public interface ClassObject { + "See the global <a href=\"globals.html#struct\">struct</a> function " + "for more details.") public class SkylarkClassObject implements ClassObject { + /** Error message to use when errorMessage argument is null. */ + private static final String DEFAULT_ERROR_MESSAGE = "'struct' object has no attribute '%s'"; private final ImmutableMap<String, Object> values; private final Location creationLoc; @@ -73,13 +75,13 @@ public interface ClassObject { public SkylarkClassObject(Map<String, Object> values, String errorMessage) { this.values = ImmutableMap.copyOf(values); this.creationLoc = null; - this.errorMessage = errorMessage; + this.errorMessage = Preconditions.checkNotNull(errorMessage); } public SkylarkClassObject(Map<String, Object> values, Location creationLoc) { this.values = ImmutableMap.copyOf(values); this.creationLoc = Preconditions.checkNotNull(creationLoc); - this.errorMessage = null; + this.errorMessage = DEFAULT_ERROR_MESSAGE; } @Override @@ -110,7 +112,10 @@ public interface ClassObject { @Override public String errorMessage(String name) { - return errorMessage != null ? String.format(errorMessage, name) : null; + String suffix = + "Available attributes: " + + Joiner.on(", ").join(Ordering.natural().sortedCopy(values.keySet())); + return String.format(errorMessage, name) + "\n" + suffix; } /** |