Index: src/org/openstreetmap/josm/data/validation/tests/Highways.java
===================================================================
--- src/org/openstreetmap/josm/data/validation/tests/Highways.java	(revision 17883)
+++ src/org/openstreetmap/josm/data/validation/tests/Highways.java	(working copy)
@@ -38,6 +38,7 @@
     protected static final int SOURCE_MAXSPEED_CONTEXT_MISMATCH_VS_MAXSPEED = 2705;
     protected static final int SOURCE_MAXSPEED_CONTEXT_MISMATCH_VS_HIGHWAY = 2706;
     protected static final int SOURCE_WRONG_LINK = 2707;
+    protected static final int AREA_ON_MAJOR_HIGHWAY = 2708;
 
     protected static final String SOURCE_MAXSPEED = "source:maxspeed";
 
@@ -60,6 +61,9 @@
             "urban", "rural", "zone", "zone10", "zone:10", "zone20", "zone:20", "zone30", "zone:30", "zone40", "zone:40", "zone60", "zone:60",
             "nsl_single", "nsl_dual", "motorway", "trunk", "living_street", "bicycle_road"));
 
+    private static final Set<String> MAJOR_HIGHWAYS = new HashSet<>(Arrays.asList("motorway", "motorway_link", "trunk", "trunk_link", "primary",
+            "primary_link", "secondary", "secondary_link", "tertiary", "tertiary_link"));
+
     private static final Set<String> ISO_COUNTRIES = new HashSet<>(Arrays.asList(Locale.getISOCountries()));
 
     private boolean leftByPedestrians;
@@ -105,6 +109,7 @@
                 // Check maxspeed, including context against highway
                 testSourceMaxspeed(w, true);
             }
+            areaTagOnMajorRoadTest(w);
             testHighwayLink(w);
         }
     }
@@ -195,6 +200,22 @@
         return !sameClass.isEmpty();
     }
 
+    private boolean isMajorHighway(Way way)
+    {
+        return way.hasKey(HIGHWAY) && MAJOR_HIGHWAYS.stream().anyMatch(s -> s.equals(way.get(HIGHWAY)));
+    }
+
+    private void areaTagOnMajorRoadTest(final Way way)
+    {
+        if (way.hasKey("area") && way.get("area").equals("yes") && this.isMajorHighway(way))
+        {
+            errors.add(TestError.builder(this, Severity.ERROR, AREA_ON_MAJOR_HIGHWAY)
+                    .message(tr("Area=yes should not be used on major highway. Pleas adjust tags accordingly."))
+                    .primitives(way)
+                    .build());
+        }
+    }
+
     private void testHighwayLink(final Way way) {
         if (!isHighwayLinkOkay(way)) {
             errors.add(TestError.builder(this, Severity.WARNING, SOURCE_WRONG_LINK)
