Skip to content

Cycle detected: Fix for Circular dependency report by ArchUnit#128

Open
ichxorya wants to merge 6 commits intouseocl:masterfrom
SEhumantics:decycle
Open

Cycle detected: Fix for Circular dependency report by ArchUnit#128
ichxorya wants to merge 6 commits intouseocl:masterfrom
SEhumantics:decycle

Conversation

@ichxorya
Copy link
Copy Markdown
Collaborator

@ichxorya ichxorya commented Apr 2, 2026

…duce the number "cycle count" from 55 to 34 by refactoring
@ichxorya ichxorya marked this pull request as draft April 2, 2026 02:29
@ichxorya ichxorya linked an issue Apr 2, 2026 that may be closed by this pull request
@ichxorya
Copy link
Copy Markdown
Collaborator Author

ichxorya commented Apr 2, 2026

@h-man2 I would love to ask for your guidance and review on this. I'm willing to re-do my commits if this PR is too big and clunky to review; but it's actually hard to avoid since the existing state of architectural cycle problem is not really good at the start.

@ichxorya ichxorya marked this pull request as ready for review April 3, 2026 06:14
@ichxorya ichxorya requested a review from Copilot April 3, 2026 06:14
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses ArchUnit-reported circular dependencies (Issue #127) by refactoring package boundaries and introducing small abstraction interfaces so core runtime/model code no longer directly depends on parser/generator implementation details.

Changes:

  • Decouple core system/generator/extension code from parser implementations via InvariantCompiler, TypeCompiler, and IProcedureCompiler.
  • Move/rename several utility and SOIL-related classes/packages (e.g., SrcPos, sorting comparators, SOIL exceptions/types) to reduce cyclic package/module dependencies.
  • Update affected GUI/core tests, Maven configuration (test-jar), and add ArchUnit/cycle result artifacts.

Reviewed changes

Copilot reviewed 224 out of 225 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
use-gui/src/test/java/org/tzi/use/gui/views/diagrams/util/CreationTimeRecorderTest.java Update TestModelUtil import to new package
use-gui/src/test/java/org/tzi/use/architecture/MavenCyclicDependenciesGUITest.java Switch lifecycle annotation to JUnit Jupiter
use-gui/src/main/java/org/tzi/use/main/shell/Shell.java Wire invariant/type/procedure compilers; manage per-system generator
use-gui/src/main/java/org/tzi/use/main/gui/swing/MainSwing.java Set TypeCompiler and invariant compiler during startup
use-gui/src/main/java/org/tzi/use/main/gui/fx/JavaFXAppLauncher.java Set TypeCompiler and invariant compiler during startup
use-gui/src/main/java/org/tzi/use/gui/mainFX/ModelBrowserSorting.java Update sorting comparator package imports
use-gui/src/main/java/org/tzi/use/gui/mainFX/MainWindow.java Set invariant compiler during model compilation
use-gui/src/main/java/org/tzi/use/gui/main/ModelBrowserSorting.java Update sorting comparator imports (sys.sorting)
use-gui/src/main/java/org/tzi/use/gui/main/MainWindow.java Set invariant compiler during model compilation
use-gui/pom.xml Add use-core test-jar dependency for GUI tests
use-gui/maven_cyclic_dependencies_shell_results.csv Add stored cycle-count artifact
use-gui/maven_cyclic_dependencies_runtime_results.csv Add stored cycle-count artifact
use-gui/maven_cyclic_dependencies_gui_results.csv Add stored cycle-count artifact
use-gui/maven_cyclic_dependencies_entire_project_results.csv Add stored cycle-count artifact
use-core/src/test/java/org/tzi/use/utilcore/soil/VariableSetTest.java Update VariableSet package import
use-core/src/test/java/org/tzi/use/utilcore/soil/VariableEnvironmentTest.java Update SymbolTable usage/imports
use-core/src/test/java/org/tzi/use/utilcore/soil/SymbolTableTest.java Update SymbolTable import package
use-core/src/test/java/org/tzi/use/utilcore/soil/StateChangesTest.java Update TestModelUtil + StateDifference imports
use-core/src/test/java/org/tzi/use/uml/sys/soil/StatementEffectTest.java Update VariableEnvironment import
use-core/src/test/java/org/tzi/use/uml/sys/ObjectCreation.java Update TestModelUtil import
use-core/src/test/java/org/tzi/use/uml/sys/LinkTest.java Update TestModelUtil import
use-core/src/test/java/org/tzi/use/uml/ocl/type/TypeTest2.java Add new test file (currently non-JUnit)
use-core/src/test/java/org/tzi/use/uml/mm/statemachines/TestSignals.java Update TestModelUtil import
use-core/src/test/java/org/tzi/use/uml/mm/statemachines/TestProtocolStateMachine.java Update TestModelUtil import
use-core/src/test/java/org/tzi/use/uml/mm/ModelCreationTest.java Add TestModelUtil import (new package)
use-core/src/test/java/org/tzi/use/uml/mm/MImportedModelTest.java Add TestModelUtil import (new package)
use-core/src/test/java/org/tzi/use/uml/mm/MAssociationClassTest.java Add TestModelUtil import (new package)
use-core/src/test/java/org/tzi/use/TestSystem.java Update VariableEnvironment import
use-core/src/main/resources/grammars/use/USE.gpart Import SrcPos from new util package
use-core/src/main/resources/grammars/testsuite/TestSuite.gpart Import SrcPos from new util package
use-core/src/main/resources/grammars/soil/Soil.gpart Import SrcPos from new util package
use-core/src/main/resources/grammars/shell/ShellCommand.gpart Import SrcPos from new util package
use-core/src/main/resources/grammars/ocl/OCL.gpart Import SrcPos from new util package
use-core/src/main/resources/grammars/generator/Generator.gpart Import SrcPos from new util package
use-core/src/main/java/org/tzi/use/util/SrcPos.java Move SrcPos to org.tzi.use.util package
use-core/src/main/java/org/tzi/use/uml/sys/StatementEvaluationResult.java Update SOIL type/exception imports
use-core/src/main/java/org/tzi/use/uml/sys/sorting/UseModelElementFileOrderComparator.java Move comparator package to uml.sys.sorting
use-core/src/main/java/org/tzi/use/uml/sys/sorting/UseFileOrderComparator.java Move comparator package to uml.sys.sorting
use-core/src/main/java/org/tzi/use/uml/sys/sorting/package.html Add package doc for sorting package
use-core/src/main/java/org/tzi/use/uml/sys/sorting/AlphabeticalOperationComparator.java Move comparator package to uml.sys.sorting
use-core/src/main/java/org/tzi/use/uml/sys/sorting/AlphabeticalNamedElementComparator.java Move comparator package to uml.sys.sorting
use-core/src/main/java/org/tzi/use/uml/sys/sorting/AlphabeticalInvariantComparator.java Move comparator package to uml.sys.sorting
use-core/src/main/java/org/tzi/use/uml/sys/sorting/AlphabeticalConditionComparator.java Move comparator package to uml.sys.sorting
use-core/src/main/java/org/tzi/use/uml/sys/sorting/AlphabeticalConditionByNameComparator.java Move comparator package to uml.sys.sorting
use-core/src/main/java/org/tzi/use/uml/sys/soil/VariableSet.java Move VariableSet into uml.sys.soil
use-core/src/main/java/org/tzi/use/uml/sys/soil/SoilEvaluationContext.java Update VariableEnvironment import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MWhileStatement.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MVariableDestructionStatement.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MVariableAssignmentStatement.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MStatement.java Use util.SrcPos and move exception import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MSequenceStatement.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MRValueOperationCall.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MRValueNewObject.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MRValueNewLinkObject.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MRValueExpression.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MRValue.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MOperationCallInverseStatement.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MObjectRestorationStatement.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MObjectOperationCallStatement.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MObjectDestructionStatement.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MNewObjectStatement.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MNewLinkObjectStatement.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MLinkInsertionStatement.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MLinkDeletionStatement.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MLibraryOperationCallStatement.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MIterationStatement.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MExitOperationStatement.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MEnterOperationStatement.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MEmptyStatement.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MConditionalExecutionStatement.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MBlockStatement.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/MAttributeAssignmentStatement.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/EvalUtil.java Update EvaluationFailedException import
use-core/src/main/java/org/tzi/use/uml/sys/soil/EvaluationFailedException.java Move exception into uml.sys.soil package
use-core/src/main/java/org/tzi/use/uml/sys/MSystemState.java Update StateDifference import
use-core/src/main/java/org/tzi/use/uml/sys/MSystem.java Remove direct ASSL dep; add InvariantCompiler hook
use-core/src/main/java/org/tzi/use/uml/sys/MOperationCall.java Use util.SrcPos
use-core/src/main/java/org/tzi/use/uml/sys/InvariantCompiler.java Add new functional interface for invariant compilation
use-core/src/main/java/org/tzi/use/uml/sys/events/StatementExecutedEvent.java Update StateDifference import
use-core/src/main/java/org/tzi/use/uml/sys/DerivedValueController.java Update StateDifference import
use-core/src/main/java/org/tzi/use/uml/sys/DerivedLinkController.java Update StateDifference import
use-core/src/main/java/org/tzi/use/uml/sys/DerivedAttributeController.java Remove coverage visitor side-effect code; update imports
use-core/src/main/java/org/tzi/use/uml/ocl/extension/TypeCompiler.java Add new functional interface for type compilation
use-core/src/main/java/org/tzi/use/uml/ocl/extension/RubyHelper.java Move Ruby helper into extension package
use-core/src/main/java/org/tzi/use/uml/ocl/extension/ExtensionOperation.java Adjust imports after RubyHelper move
use-core/src/main/java/org/tzi/use/uml/ocl/extension/ExtensionManager.java Require injected TypeCompiler to decouple from OCLCompiler
use-core/src/main/java/org/tzi/use/uml/ocl/expr/VarDeclList.java Remove parser-package imports (now in expr pkg)
use-core/src/main/java/org/tzi/use/uml/ocl/expr/VarDecl.java Use util.SrcPos
use-core/src/main/java/org/tzi/use/uml/ocl/expr/Symtable.java Move Symtable into uml.ocl.expr
use-core/src/main/java/org/tzi/use/uml/ocl/expr/SemanticException.java Move exception into uml.ocl.expr
use-core/src/main/java/org/tzi/use/uml/ocl/expr/ExpSelectByType.java Remove outdated import
use-core/src/main/java/org/tzi/use/uml/ocl/expr/ExpSelectByKind.java Remove outdated import
use-core/src/main/java/org/tzi/use/uml/ocl/expr/Expression.java Use util.SrcPos
use-core/src/main/java/org/tzi/use/uml/ocl/expr/ExprContext.java Move ExprContext into uml.ocl.expr
use-core/src/main/java/org/tzi/use/uml/mm/statemachines/MStateMachine.java Use util.SrcPos
use-core/src/main/java/org/tzi/use/uml/mm/statemachines/MProtocolStateMachine.java Use util.SrcPos
use-core/src/main/java/org/tzi/use/uml/mm/MMPrintVisitor.java Update sorting comparator imports
use-core/src/main/java/org/tzi/use/uml/mm/commonbehavior/communications/MTrigger.java Switch to expr-package Symtable/SemanticException/ExprContext
use-core/src/main/java/org/tzi/use/uml/mm/commonbehavior/communications/MEvent.java Switch to expr-package Symtable/SemanticException/ExprContext
use-core/src/main/java/org/tzi/use/uml/mm/commonbehavior/communications/MCallEvent.java Switch to expr-package Symtable/SemanticException/ExprContext
use-core/src/main/java/org/tzi/use/parser/use/statemachines/ASTTransitionDefinition.java Switch to expr-package SemanticException/Symtable
use-core/src/main/java/org/tzi/use/parser/use/statemachines/ASTStateMachine.java Switch to expr-package SemanticException; use util.SrcPos
use-core/src/main/java/org/tzi/use/parser/use/statemachines/ASTStateDefinition.java Switch to expr-package SemanticException/Symtable
use-core/src/main/java/org/tzi/use/parser/use/statemachines/ASTSignal.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/use/statemachines/ASTProtocolStateMachine.java Switch to expr-package SemanticException; use util.SrcPos
use-core/src/main/java/org/tzi/use/parser/use/ASTPrePostClause.java Switch to expr-package SemanticException/Symtable
use-core/src/main/java/org/tzi/use/parser/use/ASTPrePost.java Switch to expr-package SemanticException/Symtable
use-core/src/main/java/org/tzi/use/parser/use/ASTOperation.java Switch to expr-package SemanticException/Symtable; move CompilationFailedException import
use-core/src/main/java/org/tzi/use/parser/use/ASTModel.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/use/ASTInvariantClause.java Switch to expr-package SemanticException/Symtable
use-core/src/main/java/org/tzi/use/parser/use/ASTImportStatement.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/use/ASTDataType.java Switch to expr-package SemanticException/Symtable
use-core/src/main/java/org/tzi/use/parser/use/ASTConstraintDefinition.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/use/ASTClass.java Switch to expr-package SemanticException/Symtable
use-core/src/main/java/org/tzi/use/parser/use/ASTAttribute.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/use/ASTAssociationEnd.java Switch to expr-package SemanticException/Symtable
use-core/src/main/java/org/tzi/use/parser/use/ASTAssociationClass.java Switch to expr-package SemanticException/Symtable
use-core/src/main/java/org/tzi/use/parser/use/ASTAssociation.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/testsuite/TestSuiteCompiler.java Switch to expr-package SemanticException; update MTestSuite package
use-core/src/main/java/org/tzi/use/parser/testsuite/sys/MVariationStart.java Move testsuite sys classes to parser.testsuite.sys; use util.SrcPos
use-core/src/main/java/org/tzi/use/parser/testsuite/sys/MVariationEnd.java Move testsuite sys classes to parser.testsuite.sys; use util.SrcPos
use-core/src/main/java/org/tzi/use/parser/testsuite/sys/MVariation.java Move testsuite sys classes to parser.testsuite.sys; use util.SrcPos
use-core/src/main/java/org/tzi/use/parser/testsuite/sys/MTestSuite.java Move testsuite sys classes to parser.testsuite.sys; update CompilationFailedException usage
use-core/src/main/java/org/tzi/use/parser/testsuite/sys/MAssertSingleInvariant.java Move testsuite sys asserts to parser.testsuite.sys; use util.SrcPos
use-core/src/main/java/org/tzi/use/parser/testsuite/sys/MAssertPre.java Move testsuite sys asserts; update VariableEnvironment import
use-core/src/main/java/org/tzi/use/parser/testsuite/sys/MAssertPost.java Move testsuite sys asserts; use util.SrcPos
use-core/src/main/java/org/tzi/use/parser/testsuite/sys/MAssertOclExpression.java Move testsuite sys asserts; use util.SrcPos
use-core/src/main/java/org/tzi/use/parser/testsuite/sys/MAssertGlobalInvariants.java Move testsuite sys asserts; use util.SrcPos
use-core/src/main/java/org/tzi/use/parser/testsuite/sys/MAssertClassInvariants.java Move testsuite sys asserts; use util.SrcPos
use-core/src/main/java/org/tzi/use/parser/testsuite/sys/MAssert.java Move testsuite sys base assert; use util.SrcPos
use-core/src/main/java/org/tzi/use/parser/testsuite/ASTVariationStart.java Update imports to new testsuite sys package
use-core/src/main/java/org/tzi/use/parser/testsuite/ASTVariationEnd.java Update imports to new testsuite sys package
use-core/src/main/java/org/tzi/use/parser/testsuite/ASTVariation.java Use util.SrcPos; update testsuite sys import
use-core/src/main/java/org/tzi/use/parser/testsuite/ASTTestSuite.java Switch to expr-package SemanticException; update MTestSuite package
use-core/src/main/java/org/tzi/use/parser/testsuite/ASTTestCase.java Switch to expr-package SemanticException; update SymbolTable creation; update assert package
use-core/src/main/java/org/tzi/use/parser/testsuite/ASTAssertSingleInvariant.java Switch to expr-package SemanticException; update assert package
use-core/src/main/java/org/tzi/use/parser/testsuite/ASTAssertPre.java Switch to expr-package SemanticException; update assert package
use-core/src/main/java/org/tzi/use/parser/testsuite/ASTAssertPost.java Switch to expr-package SemanticException; update assert package
use-core/src/main/java/org/tzi/use/parser/testsuite/ASTAssertOclExpression.java Switch to expr-package SemanticException; update assert package
use-core/src/main/java/org/tzi/use/parser/testsuite/ASTAssertGlobalInvariants.java Switch to expr-package SemanticException; update assert package
use-core/src/main/java/org/tzi/use/parser/testsuite/ASTAssertClassInvariants.java Switch to expr-package SemanticException; update assert package
use-core/src/main/java/org/tzi/use/parser/testsuite/ASTAssert.java Switch to expr-package SemanticException; use util.SrcPos; update assert package
use-core/src/main/java/org/tzi/use/parser/soil/SoilCompiler.java Update SymbolTable creation + exception package
use-core/src/main/java/org/tzi/use/parser/soil/exceptions/CompilationFailedException.java Move CompilationFailedException into parser.soil.exceptions; use util.SrcPos
use-core/src/main/java/org/tzi/use/parser/soil/environment/SymbolTable.java Move SymbolTable into parser.soil.environment; decouple from AST types
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTWhileStatement.java Update CompilationFailedException import
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTVariableAssignmentStatement.java Update CompilationFailedException import
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTStatement.java Update SymbolTable/VariableSet imports; adjust dirty-cause handling
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTSequenceStatement.java Update VariableSet + CompilationFailedException imports
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTRValueNewObject.java Update CompilationFailedException import
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTRValueNewLinkObject.java Update CompilationFailedException import
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTRValueExpressionOrOpCall.java Update CompilationFailedException import
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTRValue.java Update CompilationFailedException import
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTOperationCallStatement.java Update CompilationFailedException import
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTObjectDestructionStatement.java Update CompilationFailedException import
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTNewObjectStatement.java Update CompilationFailedException import
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTNewLinkObjectStatement.java Update CompilationFailedException import
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTLinkInsertionStatement.java Update CompilationFailedException import
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTLinkDeletionStatement.java Update CompilationFailedException import
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTIterationStatement.java Update CompilationFailedException import
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTExitOperationStatement.java Update CompilationFailedException import
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTEnterOperationStatement.java Update CompilationFailedException import
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTEmptyStatement.java Use util.SrcPos; update CompilationFailedException import
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTConditionalExecutionStatement.java Update CompilationFailedException import
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTBlockStatement.java Switch to expr-package SemanticException; update CompilationFailedException import
use-core/src/main/java/org/tzi/use/parser/soil/ast/ASTAttributeAssignmentStatement.java Update CompilationFailedException import
use-core/src/main/java/org/tzi/use/parser/shell/ShellCommandCompiler.java Update SymbolTable creation + exception package
use-core/src/main/java/org/tzi/use/parser/ocl/OCLCompiler.java Switch to expr-package SemanticException/Symtable
use-core/src/main/java/org/tzi/use/parser/ocl/ASTVariableInitialization.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTVariableDeclaration.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTUndefinedLiteral.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTUnaryExpression.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTTypeArgExpression.java Switch to expr-package ExprContext/SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTType.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTTupleType.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTTupleLiteral.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTSimpleType.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTQueryExpression.java Switch to expr-package ExprContext/SemanticException/Symtable
use-core/src/main/java/org/tzi/use/parser/ocl/ASTOperationExpression.java Switch to expr-package ExprContext/SemanticException; use util.SrcPos
use-core/src/main/java/org/tzi/use/parser/ocl/ASTObjectReferenceExpression.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTObjectByUseIdExpression.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTModelQualifiedType.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTLetExpression.java Switch to expr-package SemanticException/Symtable
use-core/src/main/java/org/tzi/use/parser/ocl/ASTIterateExpression.java Switch to expr-package ExprContext/SemanticException/Symtable
use-core/src/main/java/org/tzi/use/parser/ocl/ASTInStateExpression.java Switch to expr-package ExprContext/SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTIfExpression.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTExpression.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTEnumTypeDefinition.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTEnumLiteral.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTEmptyCollectionLiteral.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTElemVarsDeclaration.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTCollectionType.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTCollectionLiteral.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTCollectionItem.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTBinaryExpression.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/ocl/ASTAllInstancesExpression.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/generator/ASTGVariableAssignment.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/generator/ASTGProcedureCall.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/generator/ASTGProcedure.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/generator/ASTGOpExit.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/generator/ASTGOpEnter.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/generator/ASTGocl.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/generator/ASTGLoop.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/generator/ASTGInstruction.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/generator/ASTGIfThenElse.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/generator/ASTGBarrierInvariant.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/generator/ASTGBarrierExpression.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/generator/ASTGBarrier.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/generator/ASTGAttributeAssignment.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/generator/ASTGAtomicInstruction.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/generator/ASTGAsslCall.java Switch to expr-package SemanticException
use-core/src/main/java/org/tzi/use/parser/generator/ASSLCompiler.java Switch to expr-package SemanticException; add PROCEDURE_COMPILER adapter
use-core/src/main/java/org/tzi/use/parser/Context.java Import expr-package context/exception/symtable types
use-core/src/main/java/org/tzi/use/gen/tool/IProcedureCompiler.java Add interface to decouple generator from parser
use-core/src/main/java/org/tzi/use/gen/tool/GGenerator.java Use injected IProcedureCompiler instead of ASSLCompiler direct call
use-core/src/main/java/org/tzi/use/core/test/TestModelUtil.java Move test model helper into use.core.test package
use-core/src/main/java/org/tzi/use/api/UseModelApi.java Update SrcPos + exception imports after moves
use-core/src/main/java/module-info.java Export updated/moved packages; adjust exports list
use-core/pom.xml Build test-jar via maven-jar-plugin
pom.xml Configure surefire pluginManagement (useModulePath=false)
docs/archunit-results/layers-current-failure-report.txt Add stored ArchUnit layers report artifact
docs/archunit-results/cycles-current-failure-report.txt Add stored ArchUnit cycles report artifact
.vscode/settings.json Add workspace Java settings
Comments suppressed due to low confidence (2)

use-core/src/main/java/org/tzi/use/util/SrcPos.java:22

  • SrcPos unnecessarily imports itself (import org.tzi.use.util.SrcPos;). This is redundant and can trigger unused-import checks; please remove the self-import and keep a blank line after the package declaration.
    use-core/src/main/java/org/tzi/use/parser/soil/environment/SymbolTable.java:46
  • The Javadoc still references ASTStatement in {@link #restoreState(ASTStatement) ...} / @see SymbolTable#restoreState(ASTStatement), but restoreState now takes Object and this class no longer depends on ASTStatement. Please update these links/signatures in the Javadoc to match the new API.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines 390 to 392
if (symbolTable.isDirty(name)) {
ASTStatement cause = symbolTable.getCause(name);
ASTStatement cause = (ASTStatement) symbolTable.getCause(name);
throw new CompilationFailedException(
Copy link

Copilot AI Apr 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

symbolTable.getCause(name) now returns Object, but this code force-casts it to ASTStatement. If any future caller records a non-ASTStatement cause, this will throw ClassCastException while compiling statements. Consider avoiding the cast (use Object/String in the message) or tightening the SymbolTable API to return a safe type.

Copilot uses AI. Check for mistakes.
Comment on lines +1 to +8
package org.tzi.use.uml.ocl.type;

public class TypeTest2 {
public void testP() {
Type t = TypeFactory.mkBoolean();
System.out.println(t.shortName());
}
}
Copy link

Copilot AI Apr 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This class looks like an accidental/debug test: it has no JUnit annotation and prints to stdout, so it won’t run under the test suite but will compile as test code. Please remove it or convert it into a proper JUnit test with assertions (and no console output).

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Collaborator Author

@ichxorya ichxorya Apr 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot apply changes based on this feedback Remove it for me

Edit: Seems that i have to do it myself

Comment on lines 34 to 40
private static final String RUNTIME_PACKAGE_RESULTS = "maven_cyclic_dependencies_runtime_results.csv";
private static final String SHELL_PACKAGE_RESULTS = "maven_cyclic_dependencies_shell_results.csv";

@Before
@BeforeEach
public void setup() {
// Delete the results file if it exists
File file = new File(GUI_PACKAGE_RESULTS);
Copy link

Copilot AI Apr 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The result files are written into the module working directory (see the *_RESULTS constants) and the setup only deletes one of them. Since these CSVs are also committed, running this test will modify tracked files and can accumulate results across runs. Consider writing under target/ (or a temp directory) and cleaning/overwriting all result files in @BeforeEach.

Copilot uses AI. Check for mistakes.
@h-man2
Copy link
Copy Markdown
Contributor

h-man2 commented Apr 6, 2026

The changes of the PR are looking good. Could you provide some UML diagrams that describe the issue (the cycle) before the change and the new structure after the change? I think this would improve the description of the PR.

@ichxorya
Copy link
Copy Markdown
Collaborator Author

ichxorya commented Apr 7, 2026

The changes of the PR are looking good. Could you provide some UML diagrams that describe the issue (the cycle) before the change and the new structure after the change? I think this would improve the description of the PR.

I will make a document for this. Thank you for reminding!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Cycle detected: Circular dependency report by ArchUnit

3 participants