Index: src/org/openstreetmap/josm/data/validation/tests/TurnrestrictionTest.java
===================================================================
--- src/org/openstreetmap/josm/data/validation/tests/TurnrestrictionTest.java	(revision 17080)
+++ src/org/openstreetmap/josm/data/validation/tests/TurnrestrictionTest.java	(working copy)
@@ -256,12 +256,20 @@
                         .build());
                 return;
             }
-            final Way viaPseudoWay = new Way();
-            viaPseudoWay.addNode(viaNode);
-            checkIfConnected(r, fromWay, viaPseudoWay,
-                    tr("The \"from\" way does not start or end at a \"via\" node."), FROM_VIA_NODE);
-            checkIfConnected(r, viaPseudoWay, toWay,
-                    tr("The \"to\" way does not start or end at a \"via\" node."), TO_VIA_NODE);
+            if (!fromWay.isFirstLastNode(viaNode)) {
+                errors.add(TestError.builder(this, Severity.WARNING, FROM_VIA_NODE)
+                        .message(tr("The \"from\" way does not start or end at a \"via\" node."))
+                        .primitives(r, fromWay, viaNode)
+                        .highlight(fromWay, viaNode)
+                        .build());
+            }
+            if (!toWay.isFirstLastNode(viaNode)) {
+                errors.add(TestError.builder(this, Severity.WARNING, TO_VIA_NODE)
+                        .message(tr("The \"to\" way does not start or end at a \"via\" node."))
+                        .primitives(r, toWay, viaNode)
+                        .highlight(toWay, viaNode)
+                        .build());
+            }
         } else {
             if (isFullOneway(toWay) && ((Way) via.get(via.size() - 1)).isFirstLastNode(toWay.lastNode(true))) {
                 errors.add(TestError.builder(this, Severity.WARNING, SUPERFLUOUS)
