Better error message when combine //visibility:(public|private) with other forms.

--
MOS_MIGRATED_REVID=123201777
diff --git a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
index 78ec863..edabbda 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/RuleClass.java
@@ -40,6 +40,7 @@
 import com.google.devtools.build.lib.syntax.Argument;
 import com.google.devtools.build.lib.syntax.BaseFunction;
 import com.google.devtools.build.lib.syntax.Environment;
+import com.google.devtools.build.lib.syntax.EvalException;
 import com.google.devtools.build.lib.syntax.FuncallExpression;
 import com.google.devtools.build.lib.syntax.GlobList;
 import com.google.devtools.build.lib.syntax.Runtime;
@@ -1673,7 +1674,11 @@
             rule.getLabel() + ": //visibility:legacy_public only allowed in package declaration",
             eventHandler);
       }
-      rule.setVisibility(PackageFactory.getVisibility(rule.getLabel(), attrList));
+      try {
+        rule.setVisibility(PackageFactory.getVisibility(rule.getLabel(), attrList));
+      } catch (EvalException e) {
+         rule.reportError(rule.getLabel() + " " + e.getMessage(), eventHandler);
+      }
     }
     rule.setAttributeValue(attr, nativeAttrVal, explicit);
     checkAllowedValues(rule, attr, eventHandler);