diff options
author | 2017-01-27 19:38:36 +0000 | |
---|---|---|
committer | 2017-01-30 09:01:30 +0000 | |
commit | 3463dae050ce9e065878f891fe88ea926f26030a (patch) | |
tree | d56ce610b9620ba4ac428fe9436dd4f62da76cb3 /src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java | |
parent | 4a877386b0d647885dbba48714d1be36a36362f4 (diff) |
Fix error handling in WorkspaceFile/WorkspaceAST
--
PiperOrigin-RevId: 145818492
MOS_MIGRATED_REVID=145818492
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java index faacb3c92d..2372793333 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceFileFunction.java @@ -17,12 +17,12 @@ package com.google.devtools.build.lib.skyframe; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.cmdline.PackageIdentifier; +import com.google.devtools.build.lib.packages.NoSuchPackageException; import com.google.devtools.build.lib.packages.Package; import com.google.devtools.build.lib.packages.Package.NameConflictException; import com.google.devtools.build.lib.packages.PackageFactory; import com.google.devtools.build.lib.packages.RuleClassProvider; import com.google.devtools.build.lib.packages.WorkspaceFactory; -import com.google.devtools.build.lib.skyframe.PackageFunction.PackageFunctionException; import com.google.devtools.build.lib.skyframe.WorkspaceFileValue.WorkspaceFileKey; import com.google.devtools.build.lib.syntax.BuildFileAST; import com.google.devtools.build.lib.syntax.Environment.Extension; @@ -34,6 +34,7 @@ import com.google.devtools.build.skyframe.SkyFunctionException; import com.google.devtools.build.skyframe.SkyFunctionException.Transience; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; +import java.io.IOException; /** * A SkyFunction to parse WORKSPACE files. @@ -55,13 +56,13 @@ public class WorkspaceFileFunction implements SkyFunction { } @Override - public SkyValue compute(SkyKey skyKey, Environment env) throws WorkspaceFileFunctionException, - InterruptedException { + public SkyValue compute(SkyKey skyKey, Environment env) + throws WorkspaceFileFunctionException, InterruptedException { WorkspaceFileKey key = (WorkspaceFileKey) skyKey.argument(); RootedPath workspaceRoot = key.getPath(); - WorkspaceASTValue workspaceASTValue = - (WorkspaceASTValue) env.getValue(WorkspaceASTValue.key(workspaceRoot)); + WorkspaceASTValue workspaceASTValue = (WorkspaceASTValue) env.getValue( + WorkspaceASTValue.key(workspaceRoot)); if (workspaceASTValue == null) { return null; } @@ -91,9 +92,8 @@ public class WorkspaceFileFunction implements SkyFunction { directories.getEmbeddedBinariesRoot(), directories.getWorkspace()); if (key.getIndex() > 0) { - WorkspaceFileValue prevValue = - (WorkspaceFileValue) - env.getValue(WorkspaceFileValue.key(key.getPath(), key.getIndex() - 1)); + WorkspaceFileValue prevValue = (WorkspaceFileValue) env.getValue( + WorkspaceFileValue.key(key.getPath(), key.getIndex() - 1)); if (prevValue == null) { return null; } @@ -103,16 +103,13 @@ public class WorkspaceFileFunction implements SkyFunction { parser.setParent(prevValue.getPackage(), prevValue.getImportMap(), prevValue.getBindings()); } BuildFileAST ast = workspaceASTValue.getASTs().get(key.getIndex()); - PackageFunction.SkylarkImportResult importResult = - PackageFunction.fetchImportsFromBuildFile( - repoWorkspace, rootPackage, ast, env, null); + PackageFunction.SkylarkImportResult importResult = PackageFunction.fetchImportsFromBuildFile( + repoWorkspace, rootPackage, ast, env, null); if (importResult == null) { return null; } parser.execute(ast, importResult.importMap); - } catch (PackageFunctionException e) { - // TODO(jcater): Unwrap the PackageFunctionException and handle the underlying error. - // PFE shouldn't be exposed to callers. + } catch (NoSuchPackageException e) { throw new WorkspaceFileFunctionException(e, Transience.PERSISTENT); } catch (NameConflictException e) { throw new WorkspaceFileFunctionException(e, Transience.PERSISTENT); @@ -133,11 +130,15 @@ public class WorkspaceFileFunction implements SkyFunction { } private static final class WorkspaceFileFunctionException extends SkyFunctionException { - public WorkspaceFileFunctionException(PackageFunctionException e, Transience transience) { + WorkspaceFileFunctionException(NoSuchPackageException e, Transience transience) { super(e, transience); } - public WorkspaceFileFunctionException(NameConflictException e, Transience transience) { + WorkspaceFileFunctionException(NameConflictException e, Transience transience) { + super(e, transience); + } + + WorkspaceFileFunctionException(IOException e, Transience transience) { super(e, transience); } } |