diff options
author | 2017-04-11 10:34:25 +0000 | |
---|---|---|
committer | 2017-04-11 13:50:39 +0200 | |
commit | 1dadb878a59b180bf950c72ee3b4bdb8d7ea7d67 (patch) | |
tree | f5d982f173e2a37e104105e66b12a28a623e5081 /src/main | |
parent | 039b9eefc26a5816ec305f86d442affe0d8e45ba (diff) |
Better error messages for non-exported values.
RELNOTES: None.
PiperOrigin-RevId: 152793682
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/SkylarkAttr.java | 9 |
1 files changed, 7 insertions, 2 deletions
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 3f2b066575..2bbfc00681 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 @@ -160,7 +160,7 @@ public final class SkylarkAttr { private static Attribute.Builder<?> createAttribute( Type<?> type, SkylarkDict<String, Object> arguments, FuncallExpression ast, Environment env) - throws EvalException, ConversionException { + throws EvalException { // We use an empty name now so that we can set it later. // This trick makes sense only in the context of Skylark (builtin rules should not use it). Attribute.Builder<?> builder = Attribute.attr("", type); @@ -283,6 +283,11 @@ public final class SkylarkAttr { List<SkylarkAspect> aspects = ((SkylarkList<?>) obj).getContents(SkylarkAspect.class, "aspects"); for (SkylarkAspect aspect : aspects) { + if (!aspect.isExported()) { + throw new EvalException( + ast.getLocation(), + "Aspects should be top-level values in extension files that define them."); + } builder.aspect(aspect, ast.getLocation()); } } @@ -339,7 +344,7 @@ public final class SkylarkAttr { ClassObjectConstructor constructor = (ClassObjectConstructor) obj; if (!constructor.isExported()) { throw new EvalException(location, - "Providers should be assigned to top-level values in modules"); + "Providers should be top-level values in extension files that define them."); } result.add(SkylarkProviderIdentifier.forKey(constructor.getKey())); } |