BEP: report visibility errors

On finding a visibility error, report it directly for that target, instead of
relying on the implict "abort" message for targets that have not been built.

Change-Id: I5e45722a1117afca3bc8eeebd05179425b995172
PiperOrigin-RevId: 157592518
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index 2077a887..02fb3e5 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -52,6 +52,7 @@
 import com.google.devtools.build.lib.collect.nestedset.NestedSet;
 import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
 import com.google.devtools.build.lib.events.Event;
+import com.google.devtools.build.lib.events.ExtendedEventHandler.Postable;
 import com.google.devtools.build.lib.events.Location;
 import com.google.devtools.build.lib.packages.AspectDescriptor;
 import com.google.devtools.build.lib.packages.Attribute;
@@ -1780,6 +1781,10 @@
       return mapBuilder.build();
     }
 
+    public void post(Postable event) {
+      reporter.post(event);
+    }
+
     public void reportError(Location location, String message) {
       reporter.reportError(location, message);
     }
@@ -2127,6 +2132,10 @@
       env.getEventHandler().handle(Event.error(location, message));
     }
 
+    public void post(Postable event) {
+      env.getEventHandler().post(event);
+    }
+
     @Override
     public void ruleError(String message) {
       reportError(rule.getLocation(), prefixRuleMessage(message));