aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Ulf Adams <ulfjack@google.com>2016-01-25 15:30:45 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-01-25 16:52:20 +0000
commit0678e79b9d603452f3a336cb3f64a696979eafba (patch)
tree4ecdec9ca80f85f985155dc99ed726b648c34156
parent44f145875cf7c2ab76d92139ac7b14a256eae532 (diff)
Share some error handling code between aspects and top-level aspects.
-- MOS_MIGRATED_REVID=112948493
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java40
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/ToplevelSkylarkAspectFunction.java20
2 files changed, 26 insertions, 34 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
index 8d14af31f1..2d0549b163 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java
@@ -76,21 +76,27 @@ public final class AspectFunction implements SkyFunction {
@Nullable
public static SkylarkAspect loadSkylarkAspect(
Environment env, Label extensionLabel, String skylarkValueName)
- throws ConversionException, SkylarkImportFailedException {
+ throws AspectCreationException {
SkyKey importFileKey = SkylarkImportLookupValue.key(extensionLabel, false);
- SkylarkImportLookupValue skylarkImportLookupValue =
- (SkylarkImportLookupValue) env.getValueOrThrow(
- importFileKey, SkylarkImportFailedException.class);
- if (skylarkImportLookupValue == null) {
- return null;
- }
-
- Object skylarkValue = skylarkImportLookupValue.getEnvironmentExtension().get(skylarkValueName);
- if (!(skylarkValue instanceof SkylarkAspect)) {
- throw new ConversionException(
- skylarkValueName + " from " + extensionLabel.toString() + " is not an aspect");
+ try {
+ SkylarkImportLookupValue skylarkImportLookupValue =
+ (SkylarkImportLookupValue) env.getValueOrThrow(
+ importFileKey, SkylarkImportFailedException.class);
+ if (skylarkImportLookupValue == null) {
+ return null;
+ }
+
+ Object skylarkValue = skylarkImportLookupValue.getEnvironmentExtension()
+ .get(skylarkValueName);
+ if (!(skylarkValue instanceof SkylarkAspect)) {
+ throw new ConversionException(
+ skylarkValueName + " from " + extensionLabel.toString() + " is not an aspect");
+ }
+ return (SkylarkAspect) skylarkValue;
+ } catch (SkylarkImportFailedException | ConversionException e) {
+ env.getListener().handle(Event.error(e.getMessage()));
+ throw new AspectCreationException(e.getMessage());
}
- return (SkylarkAspect) skylarkValue;
}
@Nullable
@@ -111,12 +117,8 @@ public final class AspectFunction implements SkyFunction {
skylarkAspect =
loadSkylarkAspect(
env, skylarkAspectClass.getExtensionLabel(), skylarkAspectClass.getExportedName());
- } catch (SkylarkImportFailedException e) {
- env.getListener().handle(Event.error(e.getMessage()));
- throw new AspectFunctionException(new AspectCreationException(e.getMessage()));
- } catch (ConversionException e) {
- env.getListener().handle(Event.error(e.getMessage()));
- throw new AspectFunctionException(new AspectCreationException(e.getMessage()));
+ } catch (AspectCreationException e) {
+ throw new AspectFunctionException(e);
}
if (skylarkAspect == null) {
return null;
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ToplevelSkylarkAspectFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ToplevelSkylarkAspectFunction.java
index a883d60b30..c365cab4c8 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/ToplevelSkylarkAspectFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/ToplevelSkylarkAspectFunction.java
@@ -23,7 +23,6 @@ import com.google.devtools.build.lib.rules.SkylarkRuleClassFunctions.SkylarkAspe
import com.google.devtools.build.lib.skyframe.AspectFunction.AspectCreationException;
import com.google.devtools.build.lib.skyframe.AspectValue.SkylarkAspectLoadingKey;
import com.google.devtools.build.lib.skyframe.SkylarkImportLookupFunction.SkylarkImportFailedException;
-import com.google.devtools.build.lib.syntax.Type.ConversionException;
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.skyframe.SkyFunction;
import com.google.devtools.build.skyframe.SkyFunctionException;
@@ -56,7 +55,8 @@ public class ToplevelSkylarkAspectFunction implements SkyFunction {
SkylarkImportLookupFunction.labelsForAbsoluteImports(ImmutableSet.of(extensionFile), env);
} catch (SkylarkImportFailedException e) {
env.getListener().handle(Event.error(e.getMessage()));
- throw new LoadSkylarkAspectFunctionException(e, skyKey);
+ throw new LoadSkylarkAspectFunctionException(
+ new AspectCreationException(e.getMessage()), skyKey);
}
if (labelLookupMap == null) {
return null;
@@ -66,14 +66,8 @@ public class ToplevelSkylarkAspectFunction implements SkyFunction {
try {
skylarkAspect = AspectFunction.loadSkylarkAspect(
env, labelLookupMap.get(extensionFile), skylarkValueName);
- } catch (SkylarkImportFailedException e) {
- env.getListener().handle(Event.error(e.getMessage()));
- throw new LoadSkylarkAspectFunctionException(
- new AspectCreationException(e.getMessage()), skyKey);
- } catch (ConversionException e) {
- env.getListener().handle(Event.error(e.getMessage()));
- throw new LoadSkylarkAspectFunctionException(
- new AspectCreationException(e.getMessage()), skyKey);
+ } catch (AspectCreationException e) {
+ throw new LoadSkylarkAspectFunctionException(e, skyKey);
}
if (skylarkAspect == null) {
return null;
@@ -98,12 +92,8 @@ public class ToplevelSkylarkAspectFunction implements SkyFunction {
* Exceptions thrown from ToplevelSkylarkAspectFunction.
*/
public class LoadSkylarkAspectFunctionException extends SkyFunctionException {
- public LoadSkylarkAspectFunctionException(Exception cause, SkyKey childKey) {
+ public LoadSkylarkAspectFunctionException(AspectCreationException cause, SkyKey childKey) {
super(cause, childKey);
}
-
- public LoadSkylarkAspectFunctionException(Exception cause) {
- super(cause, Transience.PERSISTENT);
- }
}
}