diff options
author | Kristina Chodorow <kchodorow@google.com> | 2015-04-22 14:11:16 +0000 |
---|---|---|
committer | Laszlo Csomor <laszlocsomor@google.com> | 2015-04-23 09:09:56 +0000 |
commit | 5acec4c9115df63a0aee582c6796ebc0f2e71bd7 (patch) | |
tree | e62b7d697d8fcb2e8fac1253f852f6d2f1cc801b /src | |
parent | dc30c07cc597104fccef63b9fee1948a2324fc5e (diff) |
Only check visibility when the rule class has the attribute
Fixes #150.
--
MOS_MIGRATED_REVID=91785592
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/query2/LabelVisitor.java | 8 | ||||
-rwxr-xr-x | src/test/shell/bazel/local_repository_test.sh | 14 |
2 files changed, 21 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/query2/LabelVisitor.java b/src/main/java/com/google/devtools/build/lib/query2/LabelVisitor.java index e2cf9eac66..ffc1fef5b6 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/LabelVisitor.java +++ b/src/main/java/com/google/devtools/build/lib/query2/LabelVisitor.java @@ -35,7 +35,9 @@ import com.google.devtools.build.lib.packages.OutputFile; import com.google.devtools.build.lib.packages.Package; import com.google.devtools.build.lib.packages.PackageGroup; import com.google.devtools.build.lib.packages.Rule; +import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.Target; +import com.google.devtools.build.lib.packages.Type; import com.google.devtools.build.lib.pkgcache.PackageProvider; import com.google.devtools.build.lib.pkgcache.TargetEdgeObserver; import com.google.devtools.build.lib.syntax.Label; @@ -365,7 +367,11 @@ final class LabelVisitor { private void visitTargetVisibility(Target target, int depth, int count) { Attribute attribute = null; if (target instanceof Rule) { - attribute = ((Rule) target).getRuleClassObject().getAttributeByName("visibility"); + RuleClass ruleClass = ((Rule) target).getRuleClassObject(); + if (!ruleClass.hasAttr("visibility", Type.NODEP_LABEL_LIST)) { + return; + } + attribute = ruleClass.getAttributeByName("visibility"); } for (Label label : target.getVisibility().getDependencyLabels()) { diff --git a/src/test/shell/bazel/local_repository_test.sh b/src/test/shell/bazel/local_repository_test.sh index e891487f83..166e202570 100755 --- a/src/test/shell/bazel/local_repository_test.sh +++ b/src/test/shell/bazel/local_repository_test.sh @@ -421,4 +421,18 @@ EOF expect_log "My number is 3" } +function test_external_query() { + local external_dir=$TEST_TMPDIR/x + mkdir -p $external_dir + touch $external_dir/WORKSPACE + cat > WORKSPACE <<EOF +local_repository( + name = "my-repo", + path = "$external_dir", +) +EOF + bazel query 'deps(//external:*)' >& $TEST_log || fail "query failed" + expect_log "//external:my-repo" +} + run_suite "local repository tests" |