aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google
diff options
context:
space:
mode:
authorGravatar vladmos <vladmos@google.com>2017-07-17 23:15:21 +0200
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2017-07-18 09:49:16 +0200
commit7f6d3a13b63b702a6c56010610c3f0018490dfec (patch)
tree4d8ec17e33dafbc97bbcefc03e2d9d002dfbd844 /src/main/java/com/google
parentb1829f138f444f5efcd65960c2a7a95879914325 (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.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTarget.java5
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