Index: trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 15023)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/MapCSSTagChecker.java	(revision 15024)
@@ -128,9 +128,9 @@
         final MapCSSRuleIndex multipolygonRules = new MapCSSRuleIndex();
 
-        IndexData(MultiMap<String, TagCheck> checks) {
-            buildIndex(checks);
-        }
-
-        private void buildIndex(MultiMap<String, TagCheck> checks) {
+        private IndexData(MultiMap<String, TagCheck> checks, boolean includeOtherSeverity) {
+            buildIndex(checks, includeOtherSeverity);
+        }
+
+        private void buildIndex(MultiMap<String, TagCheck> checks, boolean includeOtherSeverity) {
             List<TagCheck> allChecks = new ArrayList<>();
             for (Set<TagCheck> cs : checks.values()) {
@@ -147,4 +147,10 @@
             // optimization: filter rules for different primitive types
             for (TagCheck c : allChecks) {
+                if (!includeOtherSeverity && Severity.OTHER == c.getSeverity()
+                        && c.setClassExpressions.isEmpty()) {
+                    // Ignore "information" level checks if not wanted, unless they also set a MapCSS class
+                    continue;
+                }
+
                 for (Selector s : c.rule.selectors) {
                     // find the rightmost selector, this must be a GeneralSelector
@@ -837,5 +843,5 @@
         final List<TestError> res = new ArrayList<>();
         if (indexData == null)
-            indexData = new IndexData(checks);
+            indexData = new IndexData(checks, includeOtherSeverity);
 
         MapCSSRuleIndex matchingRuleIndex = indexData.get(p);
@@ -852,9 +858,4 @@
                 TagCheck check = indexData.getCheck(r);
                 if (check != null) {
-                    boolean ignoreError = Severity.OTHER == check.getSeverity() && !includeOtherSeverity;
-                    // Do not run "information" level checks if not wanted, unless they also set a MapCSS class
-                    if (ignoreError && check.setClassExpressions.isEmpty()) {
-                        continue;
-                    }
                     if (r.declaration == lastDeclUsed)
                         continue; // don't apply one declaration more than once
@@ -862,5 +863,5 @@
 
                     r.declaration.execute(env);
-                    if (!ignoreError && !check.errors.isEmpty()) {
+                    if (!check.errors.isEmpty()) {
                         final TestError error = check.getErrorForPrimitive(p, r.selector, env, new MapCSSTagCheckerAndRule(check.rule));
                         if (error != null) {
@@ -1095,5 +1096,5 @@
         super.setShowElements(true);
         if (indexData == null) {
-            indexData = new IndexData(checks);
+            indexData = new IndexData(checks, ValidatorPrefHelper.PREF_OTHER.get());
         }
     }
