diff options
author | 2017-07-17 23:15:21 +0200 | |
---|---|---|
committer | 2017-07-18 09:49:16 +0200 | |
commit | 7f6d3a13b63b702a6c56010610c3f0018490dfec (patch) | |
tree | 4d8ec17e33dafbc97bbcefc03e2d9d002dfbd844 /src/main/java/com/google | |
parent | b1829f138f444f5efcd65960c2a7a95879914325 (diff) |
Improve attribute and index error messages for targets
Instead of "object of type 'Target'" a representation of the
target can be used for improved readability.
PiperOrigin-RevId: 162267961
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java | 8 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java | 5 |
2 files changed, 9 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java index 8464ded1a9..fb6fcf1a43 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/AbstractConfiguredTarget.java @@ -30,6 +30,7 @@ import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; import com.google.devtools.build.lib.syntax.ClassObject; import com.google.devtools.build.lib.syntax.EvalException; import com.google.devtools.build.lib.syntax.EvalUtils; +import com.google.devtools.build.lib.syntax.Printer; import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; import javax.annotation.Nullable; @@ -128,8 +129,11 @@ public abstract class AbstractConfiguredTarget if (declaredProvider != null) { return declaredProvider; } - throw new EvalException(loc, String.format( - "Object of type Target doesn't contain declared provider %s", + throw new EvalException(loc, Printer.format( + "%r%s doesn't contain declared provider '%s'", + this, + getTarget().getAssociatedRule() == null ? "" + : " (rule '" + getTarget().getAssociatedRule().getRuleClass() + "')", constructor.getPrintableName())); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java index d7af3d42de..8f6b61cbc3 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java @@ -23,6 +23,7 @@ import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.SkylarkClassObject; import com.google.devtools.build.lib.rules.SkylarkApiProvider; import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; +import com.google.devtools.build.lib.syntax.Printer; import com.google.devtools.build.lib.util.Preconditions; import java.util.function.Consumer; import javax.annotation.Nullable; @@ -113,8 +114,8 @@ public final class RuleConfiguredTarget extends AbstractConfiguredTarget { @Override public String errorMessage(String name) { - return String.format("target (rule class of '%s') doesn't have provider '%s'.", - getTarget().getRuleClass(), name); + return Printer.format("%r (rule '%s') doesn't have provider '%s'", + this, getTarget().getRuleClass(), name); } @Override |