diff --git a/src/main/java/de/neemann/digital/draw/model/ModelEntry.java b/src/main/java/de/neemann/digital/draw/model/ModelEntry.java
index 8a7ea0961..7669e61c4 100644
--- a/src/main/java/de/neemann/digital/draw/model/ModelEntry.java
+++ b/src/main/java/de/neemann/digital/draw/model/ModelEntry.java
@@ -100,6 +100,7 @@ public class ModelEntry {
ioState = new IOState(values, element.getOutputs(), element);
} catch (PinException | NodeException e) {
e.setOrigin(origin);
+ e.setVisualElement(containingVisualElement);
throw e;
}
}
diff --git a/src/test/java/de/neemann/digital/integration/TestErrorOrigin.java b/src/test/java/de/neemann/digital/integration/TestErrorOrigin.java
index a065e2045..76d7c2ad7 100644
--- a/src/test/java/de/neemann/digital/integration/TestErrorOrigin.java
+++ b/src/test/java/de/neemann/digital/integration/TestErrorOrigin.java
@@ -60,4 +60,15 @@ public class TestErrorOrigin extends TestCase {
}
}
+ public void testErrorMessage5() throws PinException, NodeException, ElementNotFoundException, IOException {
+ try {
+ new ToBreakRunner("/dig/errorOrigin/main5.dig");
+ fail();
+ } catch (NodeException e) {
+ assertNotNull(e.getVisualElement());
+ assertEquals("midBit.dig", e.getVisualElement().getElementName());
+ checkOrigin(e, "src/test/resources/dig/errorOrigin/innerBit.dig");
+ }
+ }
+
}
diff --git a/src/test/resources/dig/errorOrigin/innerBit.dig b/src/test/resources/dig/errorOrigin/innerBit.dig
new file mode 100644
index 000000000..e9e07383c
--- /dev/null
+++ b/src/test/resources/dig/errorOrigin/innerBit.dig
@@ -0,0 +1,79 @@
+
+
+ 1
+
+
+
+ And
+
+
+ Inputs
+ 3
+
+
+
+
+
+ In
+
+
+ Label
+ A
+
+
+
+
+
+ In
+
+
+ Label
+ B
+
+
+
+
+
+ Out
+
+
+ Label
+ Y
+
+
+
+
+
+ Const
+
+
+ Value
+ 2
+
+
+ Bits
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/test/resources/dig/errorOrigin/main5.dig b/src/test/resources/dig/errorOrigin/main5.dig
new file mode 100644
index 000000000..d5dc6b781
--- /dev/null
+++ b/src/test/resources/dig/errorOrigin/main5.dig
@@ -0,0 +1,41 @@
+
+
+ 1
+
+
+
+ In
+
+
+
+
+ Out
+
+
+
+
+ In
+
+
+
+
+ midBit.dig
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/test/resources/dig/errorOrigin/midBit.dig b/src/test/resources/dig/errorOrigin/midBit.dig
new file mode 100644
index 000000000..2d04e2867
--- /dev/null
+++ b/src/test/resources/dig/errorOrigin/midBit.dig
@@ -0,0 +1,83 @@
+
+
+ 1
+
+
+
+ In
+
+
+ Label
+ A
+
+
+
+
+
+ In
+
+
+ Label
+ B
+
+
+
+
+
+ Out
+
+
+ Label
+ Y
+
+
+
+
+
+ Not
+
+
+
+
+ Not
+
+
+
+
+ Not
+
+
+
+
+ innerBit.dig
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file