diff --git a/core/src/main/java/org/lflang/federated/generator/FederateInstance.java b/core/src/main/java/org/lflang/federated/generator/FederateInstance.java index 4521546ae9..fdfa6c11bb 100644 --- a/core/src/main/java/org/lflang/federated/generator/FederateInstance.java +++ b/core/src/main/java/org/lflang/federated/generator/FederateInstance.java @@ -53,6 +53,7 @@ import org.lflang.lf.ImportedReactor; import org.lflang.lf.Input; import org.lflang.lf.Instantiation; +import org.lflang.lf.Mode; import org.lflang.lf.Output; import org.lflang.lf.Parameter; import org.lflang.lf.ParameterReference; @@ -320,6 +321,14 @@ private boolean references(Instantiation instantiation, ReactorDecl declaration) return true; } } + // Check if it is instantiated in a mode + for (Mode mode : reactorDef.getModes()) { + for (Instantiation child : mode.getInstantiations()) { + if (references(child, declaration)) { + return true; + } + } + } // Check if the reactor is a super class for (var parent : reactorDef.getSuperClasses()) { if (declaration instanceof Reactor r) { diff --git a/test/C/src/federated/ImportsInModes.lf b/test/C/src/federated/ImportsInModes.lf new file mode 100644 index 0000000000..6fd4aa0ec5 --- /dev/null +++ b/test/C/src/federated/ImportsInModes.lf @@ -0,0 +1,15 @@ +target C { + timeout: 1 msec +} + +import Count from "../lib/Count.lf" + +reactor R { + initial mode { + c = new Count() + } +} + +federated reactor { + fed = new R() +}