Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 1839)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/GenericRelationEditor.java	(revision 1840)
@@ -69,4 +69,5 @@
 import org.openstreetmap.josm.data.osm.visitor.MergeVisitor;
 import org.openstreetmap.josm.gui.ConditionalOptionPaneUtil;
+import org.openstreetmap.josm.gui.OptionPaneUtil;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.PrimitiveNameFormatter;
@@ -666,4 +667,14 @@
         }
 
+        protected void warnOfCircularReferences(OsmPrimitive primitive) {
+            String msg = tr("<html>You are trying to add a relation to itself.<br>"
+                    + "<br>"
+                    + "This creates circular references and is therefore discouraged.<br>"
+                    + "Skipping relation ''{0}''.</html>",
+                    this.nameFormatter.getName(primitive)
+            );
+            OptionPaneUtil.showMessageDialog(Main.parent, msg, tr("Warning"), JOptionPane.WARNING_MESSAGE);
+        }
+
         protected List<OsmPrimitive> filterConfirmedPrimitives(List<OsmPrimitive> primitives) throws AddAbortException {
             if (primitives == null || primitives.isEmpty())
@@ -673,4 +684,8 @@
             while(it.hasNext()) {
                 OsmPrimitive primitive = it.next();
+                if (primitive instanceof Relation && getRelation().equals(primitive)) {
+                    warnOfCircularReferences(primitive);
+                    continue;
+                }
                 if (isPotentialDuplicate(primitive) && confirmAddingPrimtive(primitive)) {
                     ret.add(primitive);
