Index: trunk/data/validator/combinations.mapcss
===================================================================
--- trunk/data/validator/combinations.mapcss	(revision 7931)
+++ trunk/data/validator/combinations.mapcss	(revision 7932)
@@ -156,7 +156,8 @@
 }
 
-node[amenity =~ /^(restaurant|cafe|fast_food)$/][!name] {
+node[amenity =~ /^(restaurant|cafe|fast_food)$/][!name][noname!=yes] {
   throwOther: tr("restaurant without name");
   assertMatch: "node amenity=restaurant";
+  assertNoMatch: "node amenity=restaurant noname=yes";
   assertNoMatch: "node amenity=restaurant name=Foobar";
 }
Index: trunk/data/validator/highway.mapcss
===================================================================
--- trunk/data/validator/highway.mapcss	(revision 7931)
+++ trunk/data/validator/highway.mapcss	(revision 7932)
@@ -44,7 +44,8 @@
 }
 
-way[highway=unclassified][!name] {
+way[highway=unclassified][!name][noname!=yes] {
   throwOther: tr("Unnamed unclassified highway");
   assertMatch: "way highway=unclassified";
+  assertNoMatch: "way highway=unclassified noname=yes";
   assertNoMatch: "way highway=unclassified name=Foo";
 }
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/UntaggedWay.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/UntaggedWay.java	(revision 7931)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/UntaggedWay.java	(revision 7932)
@@ -79,5 +79,6 @@
         if (!tags.isEmpty()) {
             String highway = tags.get("highway");
-            if (highway != null && NAMED_WAYS.contains(highway) && !tags.containsKey("name") && !tags.containsKey("ref")) {
+            if (highway != null && NAMED_WAYS.contains(highway) && !tags.containsKey("name") && !tags.containsKey("ref")
+                    && !"yes".equals(tags.get("noname"))) {
                 boolean isRoundabout = false;
                 boolean hasName = false;
