diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/syntax/LoadStatement.java | 9 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/syntax/Parser.java | 10 |
2 files changed, 13 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/LoadStatement.java b/src/main/java/com/google/devtools/build/lib/syntax/LoadStatement.java index d373c46021..2bc348a110 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/LoadStatement.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/LoadStatement.java @@ -17,6 +17,7 @@ import com.google.common.base.Joiner; import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import com.google.devtools.build.lib.events.Location; import com.google.devtools.build.lib.syntax.compiler.DebugInfo; import com.google.devtools.build.lib.syntax.compiler.LoopLabels; import com.google.devtools.build.lib.syntax.compiler.VariableScope; @@ -33,6 +34,7 @@ public final class LoadStatement extends Statement { private final ImmutableMap<Identifier, String> symbols; private final ImmutableList<Identifier> cachedSymbols; // to save time private final SkylarkImport imp; + private final Location importLocation; /** * Constructs an import statement. @@ -41,12 +43,17 @@ public final class LoadStatement extends Statement { * the bzl file that should be loaded. If aliasing is used, the value differs from its key's * {@code symbol.getName()}. Otherwise, both values are identical. */ - LoadStatement(SkylarkImport imp, Map<Identifier, String> symbols) { + LoadStatement(SkylarkImport imp, Location importLocation, Map<Identifier, String> symbols) { this.imp = imp; + this.importLocation = importLocation; this.symbols = ImmutableMap.copyOf(symbols); this.cachedSymbols = ImmutableList.copyOf(symbols.keySet()); } + public Location getImportLocation() { + return importLocation; + } + public ImmutableList<Identifier> getSymbols() { return cachedSymbols; } diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java index 023a85bee9..aa37796de6 100644 --- a/src/main/java/com/google/devtools/build/lib/syntax/Parser.java +++ b/src/main/java/com/google/devtools/build/lib/syntax/Parser.java @@ -1052,7 +1052,7 @@ public class Parser { return; } - StringLiteral path = parseStringLiteral(); + StringLiteral importString = parseStringLiteral(); expect(TokenKind.COMMA); Map<Identifier, String> symbols = new HashMap<>(); @@ -1070,13 +1070,13 @@ public class Parser { SkylarkImport imp; try { - imp = SkylarkImports.create(path.getValue()); - LoadStatement stmt = new LoadStatement(imp, symbols); + imp = SkylarkImports.create(importString.getValue()); + LoadStatement stmt = new LoadStatement(imp, importString.getLocation(), symbols); list.add(setLocation(stmt, start, token.left)); } catch (SkylarkImportSyntaxException e) { - String msg = "Load statement parameter '" + path + "' is invalid. " + String msg = "Load statement parameter '" + importString + "' is invalid. " + e.getMessage(); - reportError(path.getLocation(), msg); + reportError(importString.getLocation(), msg); } } |