aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunction.java
diff options
context:
space:
mode:
authorGravatar Jon Brandvein <brandjon@google.com>2017-03-01 16:01:39 +0000
committerGravatar Yue Gan <yueg@google.com>2017-03-01 16:17:01 +0000
commit34ffc4cab1b6cdde54e5945427b79c24fff39aa5 (patch)
tree21d7369043d9e0e1e6b7820a47851d32f7751a7a /src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunction.java
parent9f15d156cf977c57ec0c88f4aed44b13053768fb (diff)
-- PiperOrigin-RevId: 148888469 MOS_MIGRATED_REVID=148888469
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunction.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunction.java45
1 files changed, 7 insertions, 38 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunction.java
index 08c6cf5395..fb68cb2fe6 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkImportLookupFunction.java
@@ -27,21 +27,18 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.events.Event;
-import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.events.StoredEventHandler;
import com.google.devtools.build.lib.packages.BuildFileNotFoundException;
import com.google.devtools.build.lib.packages.PackageFactory;
import com.google.devtools.build.lib.packages.RuleClassProvider;
-import com.google.devtools.build.lib.packages.SkylarkExportable;
+import com.google.devtools.build.lib.rules.SkylarkRuleClassFunctions;
import com.google.devtools.build.lib.skyframe.SkylarkImportLookupValue.SkylarkImportLookupKey;
-import com.google.devtools.build.lib.syntax.AssignmentStatement;
import com.google.devtools.build.lib.syntax.BuildFileAST;
import com.google.devtools.build.lib.syntax.Environment.Extension;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.LoadStatement;
import com.google.devtools.build.lib.syntax.Mutability;
import com.google.devtools.build.lib.syntax.SkylarkImport;
-import com.google.devtools.build.lib.syntax.Statement;
import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.lib.vfs.PathFragment;
import com.google.devtools.build.skyframe.SkyFunction;
@@ -370,7 +367,12 @@ public class SkylarkImportLookupFunction implements SkyFunction {
.createSkylarkRuleClassEnvironment(
extensionLabel, mutability, eventHandler, ast.getContentHashCode(), importMap)
.setupOverride("native", packageFactory.getNativeModule(inWorkspace));
- execAndExport(ast, extensionLabel, eventHandler, extensionEnv);
+ ast.exec(extensionEnv, eventHandler);
+ try {
+ SkylarkRuleClassFunctions.exportRuleFunctionsAndAspects(extensionEnv, extensionLabel);
+ } catch (EvalException e) {
+ eventHandler.handle(Event.error(e.getLocation(), e.getMessage()));
+ }
Event.replayEventsOn(env.getListener(), eventHandler.getEvents());
if (eventHandler.hasErrors()) {
@@ -380,39 +382,6 @@ public class SkylarkImportLookupFunction implements SkyFunction {
}
}
- public static void execAndExport(BuildFileAST ast, Label extensionLabel,
- EventHandler eventHandler,
- com.google.devtools.build.lib.syntax.Environment extensionEnv) throws InterruptedException {
- ImmutableList<Statement> statements = ast.getStatements();
- for (Statement statement : statements) {
- ast.execTopLevelStatement(statement, extensionEnv, eventHandler);
- possiblyExport(statement, extensionLabel, eventHandler, extensionEnv);
- }
- }
-
- private static void possiblyExport(Statement statement, Label extensionLabel,
- EventHandler eventHandler,
- com.google.devtools.build.lib.syntax.Environment extensionEnv) {
- if (!(statement instanceof AssignmentStatement)) {
- return;
- }
- AssignmentStatement assignmentStatement = (AssignmentStatement) statement;
- ImmutableSet<String> boundNames = assignmentStatement.getLValue().boundNames();
- for (String name : boundNames) {
- Object lookup = extensionEnv.lookup(name);
- if (lookup instanceof SkylarkExportable) {
- try {
- SkylarkExportable exportable = (SkylarkExportable) lookup;
- if (!exportable.isExported()) {
- exportable.export(extensionLabel, name);
- }
- } catch (EvalException e) {
- eventHandler.handle(Event.error(e.getLocation(), e.getMessage()));
- }
- }
- }
- }
-
@Override
public String extractTag(SkyKey skyKey) {
return null;