diff options
author | Mark Schaller <mschaller@google.com> | 2015-10-23 01:00:28 +0000 |
---|---|---|
committer | John Field <jfield@google.com> | 2015-10-23 14:56:10 +0000 |
commit | 6b6d8a9ff4afa06fa7874945e6c700d944e09ea1 (patch) | |
tree | 0eda01475d29180d5d3570809f14d72f82ceb03c /src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java | |
parent | 8cb6f7b8a046cbebf64137a5befdc41b8177305d (diff) |
Inline TargetMarker in TransitiveTraversalFunction
Simplifies the runtime graph when TransitiveTraversalFunction is used.
Also moves an error reporting method from the base function to the
TransitiveTargetFunction, which is the only one that uses it.
--
MOS_MIGRATED_REVID=106109745
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java index 8053543fab..a5e6320970 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java @@ -23,6 +23,7 @@ import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; +import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.packages.AspectDefinition; import com.google.devtools.build.lib.packages.Attribute; @@ -34,6 +35,7 @@ import com.google.devtools.build.lib.packages.Package; import com.google.devtools.build.lib.packages.Rule; import com.google.devtools.build.lib.packages.RuleClassProvider; import com.google.devtools.build.lib.packages.Target; +import com.google.devtools.build.lib.packages.TargetUtils; import com.google.devtools.build.lib.skyframe.TransitiveTargetFunction.TransitiveTargetValueBuilder; import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.SkyValue; @@ -180,6 +182,35 @@ public class TransitiveTargetFunction } } + @Override + TargetMarkerValue getTargetMarkerValue(SkyKey targetMarkerKey, Environment env) + throws NoSuchTargetException, NoSuchPackageException { + return (TargetMarkerValue) + env.getValueOrThrow( + targetMarkerKey, NoSuchTargetException.class, NoSuchPackageException.class); + } + + private void maybeReportErrorAboutMissingEdge( + Target target, Label depLabel, NoSuchThingException e, EventHandler eventHandler) { + if (e instanceof NoSuchTargetException) { + NoSuchTargetException nste = (NoSuchTargetException) e; + if (depLabel.equals(nste.getLabel())) { + eventHandler.handle( + Event.error( + TargetUtils.getLocationMaybe(target), + TargetUtils.formatMissingEdge(target, depLabel, e))); + } + } else if (e instanceof NoSuchPackageException) { + NoSuchPackageException nspe = (NoSuchPackageException) e; + if (nspe.getPackageId().equals(depLabel.getPackageIdentifier())) { + eventHandler.handle( + Event.error( + TargetUtils.getLocationMaybe(target), + TargetUtils.formatMissingEdge(target, depLabel, e))); + } + } + } + /** * Returns every configuration fragment known to the system. */ |