Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 15 additions & 3 deletions src/FamixJavaModelUpdater-Tests/FJMUModelUpdaterTest.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ FJMUModelUpdaterTest >> testVisitFASTJavaParameter [
{ #category : 'tests' }
FJMUModelUpdaterTest >> testVisitFASTJavaVariableDeclarator [

| fasVariableDeclarator fastVarDeclStatement fastClassDeclaration fastJavaModel famixClass |
| fasVariableDeclarator fastVarDeclStatement fastClassDeclaration fastJavaModel famixClass annotationValue modifierPrivate |
fastJavaModel := FASTJavaModel new.
fastClassDeclaration := FASTJavaClassDeclaration new.
fastVarDeclStatement := FASTJavaVarDeclStatement new.
Expand All @@ -200,16 +200,28 @@ FJMUModelUpdaterTest >> testVisitFASTJavaVariableDeclarator [
famixClass := FamixJavaClass new.
fastClassDeclaration famixTypeDefinition: famixClass.
famixModel add: famixClass.

annotationValue := FASTJavaAnnotation new
name: 'Value';
elements: { (FASTJavaStringLiteral new primitiveValue: '${com.example}').}.
fastVarDeclStatement addModifier: annotationValue.
modifierPrivate := FASTJavaModifier new token: 'private'.
fastVarDeclStatement addModifier: modifierPrivate.

fasVariableDeclarator variable: (FASTJavaVariableExpression new
name: 'variableName';
yourself).

fastVarDeclStatement addDeclarator: fasVariableDeclarator.
fastJavaModel addAll: { fastClassDeclaration. fastVarDeclStatement. fasVariableDeclarator }.
fasVariableDeclarator accept: modelUpdater.
fastVarDeclStatement accept: modelUpdater.
self
assert: (famixModel allWithType: FamixJavaAttribute) size
equals: 1.
self
assert: (famixModel allWithType: FamixJavaAttribute) anyOne name
equals: 'variableName'
equals: 'variableName'.
self
assert: (famixModel allWithType: FamixJavaAttribute) first isPrivate
equals: true.
]
12 changes: 8 additions & 4 deletions src/FamixJavaModelUpdater/FJMUModelUpdater.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -244,15 +244,19 @@ FJMUModelUpdater >> visitFASTJavaVariableDeclarator: aFASTJavaVariableDeclarator
famixVariable name: aFASTJavaVariableDeclarator variable name.
(aFASTJavaVariableDeclarator atScope: FASTJavaVarDeclStatement)
anyOne modifiers do: [ :modifier |
modifier token = 'public' ifTrue: [ famixVariable isPublic: true ].
modifier token = 'final' ifTrue: [ famixVariable isFinal: true ].
modifier token = 'static' ifTrue: [ famixVariable isClassSide: true ] ].
(modifier isKindOf: FASTJavaModifier) ifTrue: [
modifier token = 'public' ifTrue: [ famixVariable isPublic: true ].
modifier token = 'final' ifTrue: [ famixVariable isFinal: true ].
modifier token = 'static' ifTrue: [ famixVariable isClassSide: true ].
modifier token = 'private' ifTrue: [ famixVariable isPrivate: true ].
].
].
(aFASTJavaVariableDeclarator varDeclOwner type isKindOf:
FASTJavaClassTypeExpression) ifTrue: [
(self retrieveClassFromModel:
aFASTJavaVariableDeclarator varDeclOwner type typeName name)
ifNotNil: [ :type | famixVariable declaredType: type ] ].
(scope isKindOf: FASTJavaMethodEntity)
ifTrue: [ scope famixMethod addLocalVariable: famixVariable ]
ifFalse: [ scope famixTypeDefinition addAttribute: famixVariable ]
ifFalse: [ scope famixTypeDefinition addAttribute: famixVariable ].
]