diff options
author | 2016-01-25 15:30:45 +0000 | |
---|---|---|
committer | 2016-01-25 16:52:20 +0000 | |
commit | 0678e79b9d603452f3a336cb3f64a696979eafba (patch) | |
tree | 4ecdec9ca80f85f985155dc99ed726b648c34156 | |
parent | 44f145875cf7c2ab76d92139ac7b14a256eae532 (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.java | 40 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/ToplevelSkylarkAspectFunction.java | 20 |
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); - } } } |