Index: trunk/data/validator/deprecated.mapcss
===================================================================
--- trunk/data/validator/deprecated.mapcss	(revision 13377)
+++ trunk/data/validator/deprecated.mapcss	(revision 13378)
@@ -538,6 +538,6 @@
 }
 
-/* see #10346 */
-way[oneway=1] {
+/* see #10346, #15667 (waterway has its own rules in unnecessary.mapcss) */
+way[oneway=1][!waterway] {
   throwWarning: tr("{0} is deprecated", "{0.tag}");
   suggestAlternative: "oneway=yes";
@@ -546,6 +546,6 @@
 }
 
-/* see #11329 */
-way[oneway=-1] {
+/* see #11329, #15667 */
+way[oneway=-1][!waterway] {
   throwWarning: tr("{0} is not recommended. Use the Reverse Ways function from the Tools menu.", "{0.tag}");
 }
Index: trunk/data/validator/unnecessary.mapcss
===================================================================
--- trunk/data/validator/unnecessary.mapcss	(revision 13377)
+++ trunk/data/validator/unnecessary.mapcss	(revision 13378)
@@ -54,2 +54,13 @@
   fixRemove: "payment:cash";
 }
+
+/* see #10346, #15667 */
+way[waterway][oneway?] {
+  throwWarning: tr("{0} is unnecessary for {1}", "{1.key}", "{0.key}");
+  group: tr("unnecessary tag");
+  fixRemove: "{1.key}";
+}
+way[waterway][oneway=-1] {
+  throwWarning: tr("{0} is unnecessary for {1}. The flow direction is defined by the way direction.", "{1.key}", "{0.key}");
+  group: tr("unnecessary tag");
+}
