diff --git a/core/src/main/java/org/lflang/LinguaFranca.xtext b/core/src/main/java/org/lflang/LinguaFranca.xtext index 593b06317e..e1ae911246 100644 --- a/core/src/main/java/org/lflang/LinguaFranca.xtext +++ b/core/src/main/java/org/lflang/LinguaFranca.xtext @@ -111,7 +111,6 @@ TypeExpr: TargetDecl: 'target' name=ID (config=KeyValuePairs)? ';'?; - /////////// Statements /** @@ -283,6 +282,9 @@ TypedVariable: Variable: TypedVariable | Timer | Mode | Watchdog; +Member: + Variable | Reaction | Method; + VarRef: (variable=[Variable] | container=[Instantiation] '.' variable=[Variable] | interleaved?='interleaved' '(' (variable=[Variable] | container=[Instantiation] '.' variable=[Variable]) ')') ('as' (alias=ID))? diff --git a/core/src/main/java/org/lflang/validation/LFNamesAreUniqueValidationHelper.java b/core/src/main/java/org/lflang/validation/LFNamesAreUniqueValidationHelper.java index 9c6267cb0a..cefbff40b0 100644 --- a/core/src/main/java/org/lflang/validation/LFNamesAreUniqueValidationHelper.java +++ b/core/src/main/java/org/lflang/validation/LFNamesAreUniqueValidationHelper.java @@ -2,7 +2,7 @@ import org.eclipse.emf.ecore.EClass; import org.eclipse.xtext.validation.NamesAreUniqueValidationHelper; -import org.lflang.lf.LfPackage; +import org.lflang.lf.LfPackage.Literals; public class LFNamesAreUniqueValidationHelper extends NamesAreUniqueValidationHelper { @@ -12,13 +12,17 @@ public class LFNamesAreUniqueValidationHelper extends NamesAreUniqueValidationHe */ @Override public EClass getAssociatedClusterType(EClass eClass) { - if (LfPackage.Literals.INPUT == eClass - || LfPackage.Literals.OUTPUT == eClass - || LfPackage.Literals.TIMER == eClass - || LfPackage.Literals.ACTION == eClass - || LfPackage.Literals.PARAMETER == eClass - || LfPackage.Literals.INSTANTIATION == eClass) { - return LfPackage.Literals.VARIABLE; + if (Literals.ACTION == eClass + || Literals.INPUT == eClass + || Literals.INSTANTIATION == eClass + || Literals.METHOD == eClass + || Literals.OUTPUT == eClass + || Literals.PARAMETER == eClass + || Literals.REACTION == eClass + || Literals.STATE_VAR == eClass + || Literals.TIMER == eClass + || Literals.WATCHDOG == eClass) { + return Literals.MEMBER; } return super.getAssociatedClusterType(eClass); } diff --git a/core/src/main/java/org/lflang/validation/LFValidator.java b/core/src/main/java/org/lflang/validation/LFValidator.java index def6bcc8de..0a90891f3f 100644 --- a/core/src/main/java/org/lflang/validation/LFValidator.java +++ b/core/src/main/java/org/lflang/validation/LFValidator.java @@ -139,7 +139,7 @@ public class LFValidator extends BaseLFValidator { @Check(CheckType.FAST) public void checkAction(Action action) { - checkName(action.getName(), Literals.VARIABLE__NAME); + checkName(action.getName(), Literals.MEMBER__NAME); if (action.getOrigin() == ActionOrigin.NONE) { error( "Action must have modifier {@code logical} or {@code physical}.", @@ -472,9 +472,9 @@ public void checkImportedReactor(ImportedReactor reactor) { public void checkInput(Input input) { Reactor parent = (Reactor) input.eContainer(); if (parent.isMain() || parent.isFederated()) { - error("Main reactor cannot have inputs.", Literals.VARIABLE__NAME); + error("Main reactor cannot have inputs.", Literals.MEMBER__NAME); } - checkName(input.getName(), Literals.VARIABLE__NAME); + checkName(input.getName(), Literals.MEMBER__NAME); if (target.requiresTypes) { if (input.getType() == null) { error("Input must have a type.", Literals.TYPED_VARIABLE__TYPE); @@ -555,9 +555,9 @@ public void updateModelInfo(Model model) { public void checkOutput(Output output) { Reactor parent = (Reactor) output.eContainer(); if (parent.isMain() || parent.isFederated()) { - error("Main reactor cannot have outputs.", Literals.VARIABLE__NAME); + error("Main reactor cannot have outputs.", Literals.MEMBER__NAME); } - checkName(output.getName(), Literals.VARIABLE__NAME); + checkName(output.getName(), Literals.MEMBER__NAME); if (this.target.requiresTypes) { if (output.getType() == null) { error("Output must have a type.", Literals.TYPED_VARIABLE__TYPE); @@ -1082,7 +1082,7 @@ public void checkTargetProperties(KeyValuePairs targetProperties) { @Check(CheckType.FAST) public void checkTimer(Timer timer) { - checkName(timer.getName(), Literals.VARIABLE__NAME); + checkName(timer.getName(), Literals.MEMBER__NAME); checkExpressionIsTime(timer.getOffset(), Literals.TIMER__OFFSET); checkExpressionIsTime(timer.getPeriod(), Literals.TIMER__PERIOD); } @@ -1260,7 +1260,7 @@ public void checkModeTimerNamespace(Reactor reactor) { + " modes)", timer.getName()), timer, - Literals.VARIABLE__NAME); + Literals.MEMBER__NAME); } names.add(timer.getName()); } @@ -1282,7 +1282,7 @@ public void checkModeActionNamespace(Reactor reactor) { + " modes)", action.getName()), action, - Literals.VARIABLE__NAME); + Literals.MEMBER__NAME); } names.add(action.getName()); }