diff --git a/cdlang/src/main/java/de/monticore/cdassociation/_symboltable/CDAssociationSymbolTableCompleter.java b/cdlang/src/main/java/de/monticore/cdassociation/_symboltable/CDAssociationSymbolTableCompleter.java index 4b9112ea0..df5f1d757 100644 --- a/cdlang/src/main/java/de/monticore/cdassociation/_symboltable/CDAssociationSymbolTableCompleter.java +++ b/cdlang/src/main/java/de/monticore/cdassociation/_symboltable/CDAssociationSymbolTableCompleter.java @@ -55,7 +55,7 @@ public void initialize_CDRole(CDRoleSymbol symbol, ASTCDAssociation ast, boolean } symbol.setType(typeResult.get()); - setupModifiers(side.getModifier(), symbol); + setupModifiers(side.getModifier(), ast.getModifier(), symbol); symbol.setIsDefinitiveNavigable(isLeft ? ast.getCDAssocDir().isDefinitiveNavigableLeft() : ast .getCDAssocDir().isDefinitiveNavigableRight()); @@ -144,13 +144,14 @@ public void endVisit(ASTCDAssociation node) { } } - public void setupModifiers(ASTModifier modifier, CDRoleSymbol roleSymbol) { - roleSymbol.setIsPublic(modifier.isPublic()); - roleSymbol.setIsPrivate(modifier.isPrivate()); - roleSymbol.setIsProtected(modifier.isProtected()); - roleSymbol.setIsStatic(modifier.isStatic()); - roleSymbol.setIsFinal(modifier.isFinal()); - roleSymbol.setIsDerived(modifier.isDerived()); + public void setupModifiers(ASTModifier assocSideModifier, ASTModifier assocModifier, + CDRoleSymbol roleSymbol) { + roleSymbol.setIsPublic(assocSideModifier.isPublic() || assocModifier.isPublic()); + roleSymbol.setIsPrivate(assocSideModifier.isPrivate() || assocModifier.isPrivate()); + roleSymbol.setIsProtected(assocSideModifier.isProtected() || assocModifier.isProtected()); + roleSymbol.setIsStatic(assocSideModifier.isStatic() || assocModifier.isStatic()); + roleSymbol.setIsFinal(assocSideModifier.isFinal() || assocModifier.isFinal()); + roleSymbol.setIsDerived(assocSideModifier.isDerived() || assocModifier.isDerived()); } public static void addRoleToTheirType(CDRoleSymbol symbol, TypeSymbol otherType) {