From c90e5eb2e55f9aa2ee395c3db1784aaecfcefd0a Mon Sep 17 00:00:00 2001 From: MKZaito <127297267+MKZaito@users.noreply.github.com> Date: Mon, 23 Mar 2026 15:13:12 +0100 Subject: [PATCH 1/2] remove AST Access --- ...ComponentInputConnectionDirectionCoCo.java | 35 ++----------------- ...omponentOutputConnectionDirectionCoCo.java | 35 ++----------------- 2 files changed, 6 insertions(+), 64 deletions(-) diff --git a/language/src/main/java/de/monticore/lang/sysmlv2/cocos/ParentComponentInputConnectionDirectionCoCo.java b/language/src/main/java/de/monticore/lang/sysmlv2/cocos/ParentComponentInputConnectionDirectionCoCo.java index a05e694c..c5df6554 100644 --- a/language/src/main/java/de/monticore/lang/sysmlv2/cocos/ParentComponentInputConnectionDirectionCoCo.java +++ b/language/src/main/java/de/monticore/lang/sysmlv2/cocos/ParentComponentInputConnectionDirectionCoCo.java @@ -1,9 +1,6 @@ /* (c) https://github.com/MontiCore/monticore */ package de.monticore.lang.sysmlv2.cocos; -import de.monticore.lang.sysmlbasis._ast.ASTModifier; -import de.monticore.lang.sysmlbasis._ast.ASTSysMLTyping; -import de.monticore.lang.sysmlparts._ast.ASTAttributeUsage; import de.monticore.lang.sysmlparts._ast.ASTConnectionUsage; import de.monticore.lang.sysmlparts._cocos.SysMLPartsASTConnectionUsageCoCo; import de.monticore.lang.sysmlparts._symboltable.ISysMLPartsScope; @@ -180,41 +177,15 @@ protected PortUsageSymbol resolvePortOfSubPart(ISysMLPartsScope scope, return null; } - /** Extract modifiers from PortUsageSymbol */ - protected ASTModifier getModifiersFromPortUsageSymbol(PortUsageSymbol symbol) { - ASTAttributeUsage portAttributeUsageAST = (ASTAttributeUsage) - symbol.getAstNode() - .getPortDefs() - .get(0) - .getSysMLElementList() - .get(0); - return portAttributeUsageAST.getModifier(); - } - protected boolean portIsInput(PortUsageSymbol symbol) { - ASTModifier mods = getModifiersFromPortUsageSymbol(symbol); - boolean portIsInAndNotConjugated = mods.isIn() && !portIsConjugated(symbol); - boolean portIsOutAndConjugated = mods.isOut() && portIsConjugated(symbol); - return (portIsInAndNotConjugated || portIsOutAndConjugated); + return !symbol.getInputAttributes().isEmpty(); } protected boolean portIsOutput(PortUsageSymbol symbol) { - ASTModifier mods = getModifiersFromPortUsageSymbol(symbol); - boolean portIsOutAndNotConjugated = mods.isOut() && !portIsConjugated(symbol); - boolean portIsInAndConjugated = mods.isIn() && portIsConjugated(symbol); - return (portIsOutAndNotConjugated || portIsInAndConjugated); + return !symbol.getOutputAttributes().isEmpty(); } protected boolean portIsInOutput(PortUsageSymbol symbol) { - ASTModifier mods = getModifiersFromPortUsageSymbol(symbol); - return mods.isInout(); - } - - protected boolean portIsConjugated(PortUsageSymbol symbol) { - return - ((ASTSysMLTyping) symbol - .getAstNode() - .getSpecialization(0)) - .isConjugated(); + return portIsInput(symbol) && portIsOutput(symbol); } } diff --git a/language/src/main/java/de/monticore/lang/sysmlv2/cocos/SubcomponentOutputConnectionDirectionCoCo.java b/language/src/main/java/de/monticore/lang/sysmlv2/cocos/SubcomponentOutputConnectionDirectionCoCo.java index 9832bbaf..a1e65483 100644 --- a/language/src/main/java/de/monticore/lang/sysmlv2/cocos/SubcomponentOutputConnectionDirectionCoCo.java +++ b/language/src/main/java/de/monticore/lang/sysmlv2/cocos/SubcomponentOutputConnectionDirectionCoCo.java @@ -1,10 +1,7 @@ /* (c) https://github.com/MontiCore/monticore */ package de.monticore.lang.sysmlv2.cocos; -import de.monticore.lang.sysmlbasis._ast.ASTModifier; import de.monticore.lang.sysmlbasis._ast.ASTEndpoint; -import de.monticore.lang.sysmlbasis._ast.ASTSysMLTyping; -import de.monticore.lang.sysmlparts._ast.ASTAttributeUsage; import de.monticore.lang.sysmlparts._ast.ASTConnectionUsage; import de.monticore.lang.sysmlparts._cocos.SysMLPartsASTConnectionUsageCoCo; import de.monticore.lang.sysmlparts._symboltable.*; @@ -167,41 +164,15 @@ protected PortUsageSymbol resolvePortOfSubPart(ISysMLPartsScope scope, return null; } - /** Extract modifiers from PortUsageSymbol */ - protected ASTModifier getModifiersFromPortUsageSymbol(PortUsageSymbol symbol) { - ASTAttributeUsage portAttributeUsageAST = (ASTAttributeUsage) - symbol.getAstNode() - .getPortDefs() - .get(0) - .getSysMLElementList() - .get(0); - return portAttributeUsageAST.getModifier(); - } - protected boolean portIsInput(PortUsageSymbol symbol) { - ASTModifier mods = getModifiersFromPortUsageSymbol(symbol); - boolean portIsInAndNotConjugated = mods.isIn() && !portIsConjugated(symbol); - boolean portIsOutAndConjugated = mods.isOut() && portIsConjugated(symbol); - return (portIsInAndNotConjugated || portIsOutAndConjugated); + return !symbol.getInputAttributes().isEmpty(); } protected boolean portIsOutput(PortUsageSymbol symbol) { - ASTModifier mods = getModifiersFromPortUsageSymbol(symbol); - boolean portIsOutAndNotConjugated = mods.isOut() && !portIsConjugated(symbol); - boolean portIsInAndConjugated = mods.isIn() && portIsConjugated(symbol); - return (portIsOutAndNotConjugated || portIsInAndConjugated); + return !symbol.getOutputAttributes().isEmpty(); } protected boolean portIsInOutput(PortUsageSymbol symbol) { - ASTModifier mods = getModifiersFromPortUsageSymbol(symbol); - return mods.isInout(); - } - - protected boolean portIsConjugated(PortUsageSymbol symbol) { - return - ((ASTSysMLTyping) symbol - .getAstNode() - .getSpecialization(0)) - .isConjugated(); + return portIsInput(symbol) && portIsOutput(symbol); } } From fde5a9b931defa4307125f4898ca4d5001ad0c17 Mon Sep 17 00:00:00 2001 From: MKZaito <127297267+MKZaito@users.noreply.github.com> Date: Mon, 23 Mar 2026 15:13:26 +0100 Subject: [PATCH 2/2] finalize SymbolTable in Tests --- .../cocos/ParentComponentInputConnectionDirectionCoCoTest.java | 1 + .../cocos/SubcomponentOutputConnectionDirectionCoCoTest.java | 1 + 2 files changed, 2 insertions(+) diff --git a/language/src/test/java/cocos/ParentComponentInputConnectionDirectionCoCoTest.java b/language/src/test/java/cocos/ParentComponentInputConnectionDirectionCoCoTest.java index 11aedaa9..11295083 100644 --- a/language/src/test/java/cocos/ParentComponentInputConnectionDirectionCoCoTest.java +++ b/language/src/test/java/cocos/ParentComponentInputConnectionDirectionCoCoTest.java @@ -181,6 +181,7 @@ private ISysMLv2ArtifactScope createSt(ASTSysMLModel ast) { var tool = new SysMLv2Tool(); var scope = tool.createSymbolTable(ast); tool.completeSymbolTable(ast); + tool.finalizeSymbolTable(ast); return scope; } diff --git a/language/src/test/java/cocos/SubcomponentOutputConnectionDirectionCoCoTest.java b/language/src/test/java/cocos/SubcomponentOutputConnectionDirectionCoCoTest.java index 21d7d903..48b57c73 100644 --- a/language/src/test/java/cocos/SubcomponentOutputConnectionDirectionCoCoTest.java +++ b/language/src/test/java/cocos/SubcomponentOutputConnectionDirectionCoCoTest.java @@ -180,6 +180,7 @@ private ISysMLv2ArtifactScope createSt(ASTSysMLModel ast) { var tool = new SysMLv2Tool(); var scope = tool.createSymbolTable(ast); tool.completeSymbolTable(ast); + tool.finalizeSymbolTable(ast); return scope; }