From 71fc54a96bf33dde7895ade0bd280887553125b0 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Thu, 29 Feb 2024 02:24:06 +0100 Subject: refactor(language): assignment and cast expression Also reorganizes operator names for easier future extension. --- .../contentassist/ProblemCrossrefProposalProvider.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'subprojects/language-ide/src') diff --git a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/ProblemCrossrefProposalProvider.java b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/ProblemCrossrefProposalProvider.java index a09a475b..8b2542f3 100644 --- a/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/ProblemCrossrefProposalProvider.java +++ b/subprojects/language-ide/src/main/java/tools/refinery/language/ide/contentassist/ProblemCrossrefProposalProvider.java @@ -125,6 +125,13 @@ public class ProblemCrossrefProposalProvider extends IdeCrossrefProposalProvider return oppositeShouldBeVisible(candidateReferenceDeclaration, context); } + if (eReference.equals(ProblemPackage.Literals.VARIABLE_OR_NODE_EXPR__VARIABLE_OR_NODE)) { + var assignedVariable = getAssignedVariable(context.getCurrentModel()); + if (assignedVariable != null && Objects.equals(assignedVariable, candidate.getEObjectOrProxy())) { + return false; + } + } + var builtinSymbolsOption = desugarer.getBuiltinSymbols(context.getRootModel()); if (builtinSymbolsOption.isEmpty()) { return true; @@ -135,6 +142,14 @@ public class ProblemCrossrefProposalProvider extends IdeCrossrefProposalProvider candidateEObjectOrProxy); } + private VariableOrNode getAssignedVariable(EObject context) { + var assignmentExpr = EcoreUtil2.getContainerOfType(context, AssignmentExpr.class); + if (assignmentExpr.getLeft() instanceof VariableOrNodeExpr variableOrNodeExpr) { + return variableOrNodeExpr.getVariableOrNode(); + } + return null; + } + private boolean importedModuleShouldBeVisible(IEObjectDescription candidate, ContentAssistContext context) { var moduleKind = candidate.getUserData(ProblemResourceDescriptionStrategy.MODULE_KIND); if (!ModuleKind.MODULE.getName().equals(moduleKind)) { -- cgit v1.2.3-54-g00ecf