Skylark: make ConversionException an EvalException
This avoids using a RuntimeException (IllegalArgumentException)
to circumvent declaration issues, which when we were catching it too well
was hiding actual issues of RuntimeException.
--
MOS_MIGRATED_REVID=95767534
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/EvalException.java b/src/main/java/com/google/devtools/build/lib/syntax/EvalException.java
index ae9c04d..361ce9f 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/EvalException.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/EvalException.java
@@ -32,7 +32,7 @@
*/
public class EvalException extends Exception {
- private final Location location;
+ private Location location;
private final String message;
private final boolean dueToIncompleteAST;
@@ -118,6 +118,18 @@
}
/**
+ * Ensures that this EvalException has proper location information.
+ * Does nothing if the exception already had a location, or if no location is provided.
+ * @return this EvalException, in fluent style.
+ */
+ public EvalException ensureLocation(Location loc) {
+ if (location == null && loc != null) {
+ location = loc;
+ }
+ return this;
+ }
+
+ /**
* A class to support a special case of EvalException when the cause of the error is an
* Exception during a direct Java call. Allow the throwing code to provide context in a message.
*/