From ea6a4917ec0dc2dfd282be44a8d9705e189c438b Mon Sep 17 00:00:00 2001 From: "Edward A. Lee" Date: Sat, 27 Apr 2024 08:40:08 -0700 Subject: [PATCH 1/4] Added tests for instance-in-mode bug --- test/C/src/ImportInstanceInMode.lf | 9 +++++++++ test/C/src/lib/InstanceInMode.lf | 11 +++++++++++ 2 files changed, 20 insertions(+) create mode 100644 test/C/src/ImportInstanceInMode.lf create mode 100644 test/C/src/lib/InstanceInMode.lf diff --git a/test/C/src/ImportInstanceInMode.lf b/test/C/src/ImportInstanceInMode.lf new file mode 100644 index 0000000000..5e91370bef --- /dev/null +++ b/test/C/src/ImportInstanceInMode.lf @@ -0,0 +1,9 @@ +// Test that importing from a file with a reactor that is only instantiated in +// a mode does not trigger a NPE. +target C { + timeout: 0s +} +import B from "lib/InstanceInMode.lf" +main reactor { + b = new B() +} \ No newline at end of file diff --git a/test/C/src/lib/InstanceInMode.lf b/test/C/src/lib/InstanceInMode.lf new file mode 100644 index 0000000000..c8c7dd2379 --- /dev/null +++ b/test/C/src/lib/InstanceInMode.lf @@ -0,0 +1,11 @@ +// Define a reactor that is only instantiated inside a mode. +target C +reactor U { + reaction(startup) {==} +} +reactor B { + reaction(startup) {==} + initial mode A { + u = new U() + } +} From 6d057c7ccb4831b168f8442f88b5ef6c9135f3bc Mon Sep 17 00:00:00 2001 From: "Edward A. Lee" Date: Sat, 27 Apr 2024 08:40:28 -0700 Subject: [PATCH 2/4] Include instantiations in modes --- .../java/org/lflang/graph/InstantiationGraph.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/lflang/graph/InstantiationGraph.java b/core/src/main/java/org/lflang/graph/InstantiationGraph.java index dca5492fd0..04d52d826d 100644 --- a/core/src/main/java/org/lflang/graph/InstantiationGraph.java +++ b/core/src/main/java/org/lflang/graph/InstantiationGraph.java @@ -31,10 +31,7 @@ import java.util.Set; import org.eclipse.emf.ecore.resource.Resource; import org.lflang.ast.ASTUtils; -import org.lflang.lf.Instantiation; -import org.lflang.lf.Model; -import org.lflang.lf.Reactor; -import org.lflang.lf.ReactorDecl; +import org.lflang.lf.*; import org.lflang.util.IteratorUtil; /** @@ -154,6 +151,12 @@ private void buildGraph(final Instantiation instantiation, final Set Date: Sat, 27 Apr 2024 09:39:26 -0700 Subject: [PATCH 3/4] Spotless --- test/C/src/ImportInstanceInMode.lf | 6 ++++-- test/C/src/lib/InstanceInMode.lf | 9 ++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/test/C/src/ImportInstanceInMode.lf b/test/C/src/ImportInstanceInMode.lf index 5e91370bef..59355841a4 100644 --- a/test/C/src/ImportInstanceInMode.lf +++ b/test/C/src/ImportInstanceInMode.lf @@ -1,9 +1,11 @@ // Test that importing from a file with a reactor that is only instantiated in // a mode does not trigger a NPE. target C { - timeout: 0s + timeout: 0 s } + import B from "lib/InstanceInMode.lf" + main reactor { b = new B() -} \ No newline at end of file +} diff --git a/test/C/src/lib/InstanceInMode.lf b/test/C/src/lib/InstanceInMode.lf index c8c7dd2379..531bcaee86 100644 --- a/test/C/src/lib/InstanceInMode.lf +++ b/test/C/src/lib/InstanceInMode.lf @@ -1,11 +1,14 @@ // Define a reactor that is only instantiated inside a mode. target C + reactor U { - reaction(startup) {==} + reaction(startup) {= =} } + reactor B { - reaction(startup) {==} + reaction(startup) {= =} + initial mode A { - u = new U() + u = new U() } } From 04917acddc92ee56f7b8b99d0c352b5061b051c5 Mon Sep 17 00:00:00 2001 From: Marten Lohstroh Date: Sat, 27 Apr 2024 22:25:52 -0700 Subject: [PATCH 4/4] Update core/src/main/java/org/lflang/graph/InstantiationGraph.java --- core/src/main/java/org/lflang/graph/InstantiationGraph.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/lflang/graph/InstantiationGraph.java b/core/src/main/java/org/lflang/graph/InstantiationGraph.java index 04d52d826d..8966bf10ee 100644 --- a/core/src/main/java/org/lflang/graph/InstantiationGraph.java +++ b/core/src/main/java/org/lflang/graph/InstantiationGraph.java @@ -31,7 +31,11 @@ import java.util.Set; import org.eclipse.emf.ecore.resource.Resource; import org.lflang.ast.ASTUtils; -import org.lflang.lf.*; +import org.lflang.lf.Instantiation; +import org.lflang.lf.Mode; +import org.lflang.lf.Model; +import org.lflang.lf.Reactor; +import org.lflang.lf.ReactorDecl; import org.lflang.util.IteratorUtil; /**