From 9e26369575f04776c0416fd75a9434a22b4d5e9a Mon Sep 17 00:00:00 2001 From: nharmata Date: Fri, 16 Jun 2017 21:14:10 +0200 Subject: Ban the combination of buildfiles/loadfiles and --output=location. RELNOTES[INC]: The --output=location flag to 'bazel query' cannot be used with query expressions that involve the 'buildfiles' or 'loadfiles' operators. This also applies to 'genquery' rules. PiperOrigin-RevId: 159259061 --- .../com/google/devtools/build/lib/rules/genquery/GenQuery.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/rules/genquery') diff --git a/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java b/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java index d044aafed3..f5abf25019 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java +++ b/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java @@ -55,6 +55,7 @@ import com.google.devtools.build.lib.query2.engine.DigraphQueryEvalResult; import com.google.devtools.build.lib.query2.engine.QueryEnvironment.QueryFunction; import com.google.devtools.build.lib.query2.engine.QueryEnvironment.Setting; import com.google.devtools.build.lib.query2.engine.QueryException; +import com.google.devtools.build.lib.query2.engine.QueryExpression; import com.google.devtools.build.lib.query2.engine.QueryUtil; import com.google.devtools.build.lib.query2.engine.QueryUtil.AggregateAllOutputFormatterCallback; import com.google.devtools.build.lib.query2.engine.SkyframeRestartQueryException; @@ -300,7 +301,7 @@ public class GenQuery implements RuleConfiguredTargetFactory { ruleContext.getAnalysisEnvironment().getSkyframeEnv()); // This is a precomputed value so it should have been injected by the rules module by the // time we get there. - formatter = OutputFormatter.getFormatter( + formatter = OutputFormatter.getFormatter( Preconditions.checkNotNull(outputFormatters), queryOptions.outputFormat); // All the packages are already loaded at this point, so there is no need // to start up many threads. 4 are started up to make good use of multiple @@ -324,7 +325,9 @@ public class GenQuery implements RuleConfiguredTargetFactory { ImmutableList.of(), /*packagePath=*/ null, /*blockUniverseEvaluationErrors=*/ false); - queryResult = (DigraphQueryEvalResult) queryEnvironment.evaluateQuery(query, targets); + QueryExpression expr = QueryExpression.parse(query, queryEnvironment); + formatter.verifyCompatible(queryEnvironment, expr); + queryResult = queryEnvironment.evaluateQuery(expr, targets); } catch (SkyframeRestartQueryException e) { // Do not emit errors for skyframe restarts. They make output of the ConfiguredTargetFunction // inconsistent from run to run, and make detecting legitimate errors more difficult. -- cgit v1.2.3