From 4f29cda5fed4dba5a4885ace4bc147cb45b7c4bf Mon Sep 17 00:00:00 2001 From: Marpioux Date: Tue, 28 Jan 2025 12:26:13 +0100 Subject: [PATCH 1/2] fix token access in visitFASTJavaVariableDeclarator class --- src/FamixJavaModelUpdater/FJMUModelUpdater.class.st | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/FamixJavaModelUpdater/FJMUModelUpdater.class.st b/src/FamixJavaModelUpdater/FJMUModelUpdater.class.st index 0ef8352..7694e00 100644 --- a/src/FamixJavaModelUpdater/FJMUModelUpdater.class.st +++ b/src/FamixJavaModelUpdater/FJMUModelUpdater.class.st @@ -243,10 +243,13 @@ FJMUModelUpdater >> visitFASTJavaVariableDeclarator: aFASTJavaVariableDeclarator from: 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 ] ]. + anyOne modifiers do: [ :modifier | + (modifier respondsTo: #token) ifTrue: [ + modifier token = 'public' ifTrue: [ famixVariable isPublic: true ]. + modifier token = 'final' ifTrue: [ famixVariable isFinal: true ]. + modifier token = 'static' ifTrue: [ famixVariable isClassSide: true ]. + ]. + ]. (aFASTJavaVariableDeclarator varDeclOwner type isKindOf: FASTJavaClassTypeExpression) ifTrue: [ (self retrieveClassFromModel: From 3d49ab9015696374ff0ed322b5b5a88011298efb Mon Sep 17 00:00:00 2001 From: Marpioux Date: Tue, 28 Jan 2025 17:06:48 +0100 Subject: [PATCH 2/2] change the way token are checked/add isPrivate token/test --- .../FJMUModelUpdaterTest.class.st | 18 +++++++++++++++--- .../FJMUModelUpdater.class.st | 9 +++++---- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/FamixJavaModelUpdater-Tests/FJMUModelUpdaterTest.class.st b/src/FamixJavaModelUpdater-Tests/FJMUModelUpdaterTest.class.st index 405b621..d910af3 100644 --- a/src/FamixJavaModelUpdater-Tests/FJMUModelUpdaterTest.class.st +++ b/src/FamixJavaModelUpdater-Tests/FJMUModelUpdaterTest.class.st @@ -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. @@ -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. ] diff --git a/src/FamixJavaModelUpdater/FJMUModelUpdater.class.st b/src/FamixJavaModelUpdater/FJMUModelUpdater.class.st index 7694e00..43fee0b 100644 --- a/src/FamixJavaModelUpdater/FJMUModelUpdater.class.st +++ b/src/FamixJavaModelUpdater/FJMUModelUpdater.class.st @@ -243,12 +243,13 @@ FJMUModelUpdater >> visitFASTJavaVariableDeclarator: aFASTJavaVariableDeclarator from: aFASTJavaVariableDeclarator ]. famixVariable name: aFASTJavaVariableDeclarator variable name. (aFASTJavaVariableDeclarator atScope: FASTJavaVarDeclStatement) - anyOne modifiers do: [ :modifier | - (modifier respondsTo: #token) ifTrue: [ + anyOne modifiers do: [ :modifier | + (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: [ @@ -257,5 +258,5 @@ FJMUModelUpdater >> visitFASTJavaVariableDeclarator: aFASTJavaVariableDeclarator ifNotNil: [ :type | famixVariable declaredType: type ] ]. (scope isKindOf: FASTJavaMethodEntity) ifTrue: [ scope famixMethod addLocalVariable: famixVariable ] - ifFalse: [ scope famixTypeDefinition addAttribute: famixVariable ] + ifFalse: [ scope famixTypeDefinition addAttribute: famixVariable ]. ]