aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar Kristina Chodorow <kchodorow@google.com>2015-04-22 14:11:16 +0000
committerGravatar Laszlo Csomor <laszlocsomor@google.com>2015-04-23 09:09:56 +0000
commit5acec4c9115df63a0aee582c6796ebc0f2e71bd7 (patch)
treee62b7d697d8fcb2e8fac1253f852f6d2f1cc801b /src/main/java/com/google/devtools/build/lib
parentdc30c07cc597104fccef63b9fee1948a2324fc5e (diff)
Only check visibility when the rule class has the attribute
Fixes #150. -- MOS_MIGRATED_REVID=91785592
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/query2/LabelVisitor.java8
1 files changed, 7 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()) {