diff --git a/src/Famix-Deprecated/FmxMBRelation.extension.st b/src/Famix-Deprecated/FmxMBRelation.extension.st index 764dfb4c7..5da07bc88 100644 --- a/src/Famix-Deprecated/FmxMBRelation.extension.st +++ b/src/Famix-Deprecated/FmxMBRelation.extension.st @@ -5,9 +5,3 @@ FmxMBRelation >> withNavigation [ self deprecated: 'Navigation are not used anymore by MooseIDE and got removed from the generator.' ] - -{ #category : '*Famix-Deprecated' } -FmxMBRelation >> withoutNavigation [ - - self deprecated: 'Navigation are not used anymore by MooseIDE and got removed from the generator.' -] diff --git a/src/Famix-Deprecated/FmxMBVisitor.extension.st b/src/Famix-Deprecated/FmxMBVisitor.extension.st new file mode 100644 index 000000000..4091f4869 --- /dev/null +++ b/src/Famix-Deprecated/FmxMBVisitor.extension.st @@ -0,0 +1,8 @@ +Extension { #name : 'FmxMBVisitor' } + +{ #category : '*Famix-Deprecated' } +FmxMBVisitor >> visitRelationSide: a [ + + self deprecated: 'Use visitRelation:' transformWith: '`@rcv visitRelationSide: `@arg' -> '`@rcv visitRelation: `@arg'. + ^ self visitRelation: a +] diff --git a/src/Moose-Query/TMooseGroupDependencyQueries.trait.st b/src/Famix-Deprecated/TMooseGroupDependencyQueries.trait.st similarity index 95% rename from src/Moose-Query/TMooseGroupDependencyQueries.trait.st rename to src/Famix-Deprecated/TMooseGroupDependencyQueries.trait.st index 9eafa1689..db7f59725 100644 --- a/src/Moose-Query/TMooseGroupDependencyQueries.trait.st +++ b/src/Famix-Deprecated/TMooseGroupDependencyQueries.trait.st @@ -5,9 +5,8 @@ For more informations: https://moosequery.ferlicot.fr/ " Trait { #name : 'TMooseGroupDependencyQueries', - #category : 'Moose-Query-Traits', - #package : 'Moose-Query', - #tag : 'Traits' + #category : 'Famix-Deprecated', + #package : 'Famix-Deprecated' } { #category : 'querying' } diff --git a/src/Famix-Java-Entities/FamixJavaAccess.class.st b/src/Famix-Java-Entities/FamixJavaAccess.class.st index 6a6fba473..c0ea3f436 100644 --- a/src/Famix-Java-Entities/FamixJavaAccess.class.st +++ b/src/Famix-Java-Entities/FamixJavaAccess.class.st @@ -44,12 +44,4 @@ FamixJavaAccess class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaAccess >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaAccess: self ] diff --git a/src/Famix-Java-Entities/FamixJavaAnnotationInstance.class.st b/src/Famix-Java-Entities/FamixJavaAnnotationInstance.class.st index f50a4831d..352d14dbd 100644 --- a/src/Famix-Java-Entities/FamixJavaAnnotationInstance.class.st +++ b/src/Famix-Java-Entities/FamixJavaAnnotationInstance.class.st @@ -32,14 +32,6 @@ FamixJavaAnnotationInstance class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaAnnotationInstance >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaAnnotationInstance: self ] { #category : 'printing' } diff --git a/src/Famix-Java-Entities/FamixJavaAnnotationInstanceAttribute.class.st b/src/Famix-Java-Entities/FamixJavaAnnotationInstanceAttribute.class.st index d58c1760d..8c9fb716d 100644 --- a/src/Famix-Java-Entities/FamixJavaAnnotationInstanceAttribute.class.st +++ b/src/Famix-Java-Entities/FamixJavaAnnotationInstanceAttribute.class.st @@ -37,14 +37,6 @@ FamixJavaAnnotationInstanceAttribute class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaAnnotationInstanceAttribute >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaAnnotationInstanceAttribute: self ] { #category : 'accessing' } diff --git a/src/Famix-Java-Entities/FamixJavaAnnotationType.class.st b/src/Famix-Java-Entities/FamixJavaAnnotationType.class.st index 23843034e..a920a62ac 100644 --- a/src/Famix-Java-Entities/FamixJavaAnnotationType.class.st +++ b/src/Famix-Java-Entities/FamixJavaAnnotationType.class.st @@ -56,14 +56,6 @@ FamixJavaAnnotationType class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaAnnotationType >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaAnnotationType: self ] { #category : 'accessing-query' } diff --git a/src/Famix-Java-Entities/FamixJavaAnnotationTypeAttribute.class.st b/src/Famix-Java-Entities/FamixJavaAnnotationTypeAttribute.class.st index a0f9f4b96..b3d9b7dc1 100644 --- a/src/Famix-Java-Entities/FamixJavaAnnotationTypeAttribute.class.st +++ b/src/Famix-Java-Entities/FamixJavaAnnotationTypeAttribute.class.st @@ -54,14 +54,6 @@ FamixJavaAnnotationTypeAttribute class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaAnnotationTypeAttribute >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaAnnotationTypeAttribute: self ] { #category : 'accessing' } diff --git a/src/Famix-Java-Entities/FamixJavaAttribute.class.st b/src/Famix-Java-Entities/FamixJavaAttribute.class.st index 8cc29ff81..9e5637b6c 100644 --- a/src/Famix-Java-Entities/FamixJavaAttribute.class.st +++ b/src/Famix-Java-Entities/FamixJavaAttribute.class.st @@ -58,12 +58,4 @@ FamixJavaAttribute class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaAttribute >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaAttribute: self ] diff --git a/src/Famix-Java-Entities/FamixJavaClass.class.st b/src/Famix-Java-Entities/FamixJavaClass.class.st index 258c4ca4b..affbfd859 100644 --- a/src/Famix-Java-Entities/FamixJavaClass.class.st +++ b/src/Famix-Java-Entities/FamixJavaClass.class.st @@ -67,14 +67,6 @@ FamixJavaClass class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaClass >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaClass: self ] { #category : 'enumerating' } diff --git a/src/Famix-Java-Entities/FamixJavaComment.class.st b/src/Famix-Java-Entities/FamixJavaComment.class.st index 7ccd7ed66..f4c4fbb4f 100644 --- a/src/Famix-Java-Entities/FamixJavaComment.class.st +++ b/src/Famix-Java-Entities/FamixJavaComment.class.st @@ -31,14 +31,6 @@ FamixJavaComment class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaComment >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaComment: self ] { #category : 'converting' } diff --git a/src/Famix-Java-Entities/FamixJavaConcretization.class.st b/src/Famix-Java-Entities/FamixJavaConcretization.class.st index 38be44b9e..a214db85f 100644 --- a/src/Famix-Java-Entities/FamixJavaConcretization.class.st +++ b/src/Famix-Java-Entities/FamixJavaConcretization.class.st @@ -39,12 +39,4 @@ FamixJavaConcretization class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaConcretization >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaConcretization: self ] diff --git a/src/Famix-Java-Entities/FamixJavaContainerEntity.class.st b/src/Famix-Java-Entities/FamixJavaContainerEntity.class.st index 22d59ba39..0a7f0fba6 100644 --- a/src/Famix-Java-Entities/FamixJavaContainerEntity.class.st +++ b/src/Famix-Java-Entities/FamixJavaContainerEntity.class.st @@ -28,7 +28,6 @@ FamixJavaContainerEntity class >> annotation [ - ^ self ] { #category : 'testing' } @@ -38,13 +37,6 @@ FamixJavaContainerEntity class >> isAbstract [ ^ self == FamixJavaContainerEntity ] -{ #category : 'visitor' } -FamixJavaContainerEntity >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaContainerEntity: self -] - { #category : 'adding' } FamixJavaContainerEntity >> addClass: aClass [ diff --git a/src/Famix-Java-Entities/FamixJavaEntity.class.st b/src/Famix-Java-Entities/FamixJavaEntity.class.st index 682c99700..530a698aa 100644 --- a/src/Famix-Java-Entities/FamixJavaEntity.class.st +++ b/src/Famix-Java-Entities/FamixJavaEntity.class.st @@ -13,7 +13,6 @@ FamixJavaEntity class >> annotation [ - ^ self ] { #category : 'testing' } @@ -30,13 +29,6 @@ FamixJavaEntity class >> metamodel [ ^ FamixJavaModel metamodel ] -{ #category : 'visitor' } -FamixJavaEntity >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaEntity: self -] - { #category : 'testing' } FamixJavaEntity >> canBeStub [ diff --git a/src/Famix-Java-Entities/FamixJavaEntityTyping.class.st b/src/Famix-Java-Entities/FamixJavaEntityTyping.class.st index 50257c0e0..6c79c27cc 100644 --- a/src/Famix-Java-Entities/FamixJavaEntityTyping.class.st +++ b/src/Famix-Java-Entities/FamixJavaEntityTyping.class.st @@ -38,12 +38,4 @@ FamixJavaEntityTyping class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaEntityTyping >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaEntityTyping: self ] diff --git a/src/Famix-Java-Entities/FamixJavaEnum.class.st b/src/Famix-Java-Entities/FamixJavaEnum.class.st index 9010f0202..7e33ed7d0 100644 --- a/src/Famix-Java-Entities/FamixJavaEnum.class.st +++ b/src/Famix-Java-Entities/FamixJavaEnum.class.st @@ -63,14 +63,6 @@ FamixJavaEnum class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaEnum >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaEnum: self ] { #category : 'private' } diff --git a/src/Famix-Java-Entities/FamixJavaEnumValue.class.st b/src/Famix-Java-Entities/FamixJavaEnumValue.class.st index 5cea7030c..aad226802 100644 --- a/src/Famix-Java-Entities/FamixJavaEnumValue.class.st +++ b/src/Famix-Java-Entities/FamixJavaEnumValue.class.st @@ -53,12 +53,4 @@ FamixJavaEnumValue class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaEnumValue >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaEnumValue: self ] diff --git a/src/Famix-Java-Entities/FamixJavaException.class.st b/src/Famix-Java-Entities/FamixJavaException.class.st index a2ccd8d3a..1b72b0d79 100644 --- a/src/Famix-Java-Entities/FamixJavaException.class.st +++ b/src/Famix-Java-Entities/FamixJavaException.class.st @@ -61,12 +61,4 @@ FamixJavaException class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaException >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaException: self ] diff --git a/src/Famix-Java-Entities/FamixJavaImplementation.class.st b/src/Famix-Java-Entities/FamixJavaImplementation.class.st index d9af101dd..856b23dae 100644 --- a/src/Famix-Java-Entities/FamixJavaImplementation.class.st +++ b/src/Famix-Java-Entities/FamixJavaImplementation.class.st @@ -38,12 +38,4 @@ FamixJavaImplementation class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaImplementation >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaImplementation: self ] diff --git a/src/Famix-Java-Entities/FamixJavaImplicitVariable.class.st b/src/Famix-Java-Entities/FamixJavaImplicitVariable.class.st index 0297da3dc..83d9deeb6 100644 --- a/src/Famix-Java-Entities/FamixJavaImplicitVariable.class.st +++ b/src/Famix-Java-Entities/FamixJavaImplicitVariable.class.st @@ -48,14 +48,6 @@ FamixJavaImplicitVariable class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaImplicitVariable >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaImplicitVariable: self ] { #category : 'testing' } diff --git a/src/Famix-Java-Entities/FamixJavaImport.class.st b/src/Famix-Java-Entities/FamixJavaImport.class.st index d244a3dee..5d500c2b3 100644 --- a/src/Famix-Java-Entities/FamixJavaImport.class.st +++ b/src/Famix-Java-Entities/FamixJavaImport.class.st @@ -38,12 +38,4 @@ FamixJavaImport class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaImport >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaImport: self ] diff --git a/src/Famix-Java-Entities/FamixJavaImportingContext.class.st b/src/Famix-Java-Entities/FamixJavaImportingContext.class.st index 1c44484c1..9b569c99b 100644 --- a/src/Famix-Java-Entities/FamixJavaImportingContext.class.st +++ b/src/Famix-Java-Entities/FamixJavaImportingContext.class.st @@ -1,6 +1,8 @@ " This class is used to choose the entities to be imported when loading a model from file. It is used by `MiImportingContextPresenter` in a `MiImportModelFromFileDialog` to import a FamixJavaModel. + + " Class { #name : 'FamixJavaImportingContext', diff --git a/src/Famix-Java-Entities/FamixJavaIndexedFileAnchor.class.st b/src/Famix-Java-Entities/FamixJavaIndexedFileAnchor.class.st index a615ead6e..9a3d4cc17 100644 --- a/src/Famix-Java-Entities/FamixJavaIndexedFileAnchor.class.st +++ b/src/Famix-Java-Entities/FamixJavaIndexedFileAnchor.class.st @@ -27,12 +27,4 @@ FamixJavaIndexedFileAnchor class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaIndexedFileAnchor >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaIndexedFileAnchor: self ] diff --git a/src/Famix-Java-Entities/FamixJavaInheritance.class.st b/src/Famix-Java-Entities/FamixJavaInheritance.class.st index e3504075b..0207c3273 100644 --- a/src/Famix-Java-Entities/FamixJavaInheritance.class.st +++ b/src/Famix-Java-Entities/FamixJavaInheritance.class.st @@ -38,14 +38,6 @@ FamixJavaInheritance class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaInheritance >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaInheritance: self ] { #category : 'Moose-Hismo' } diff --git a/src/Famix-Java-Entities/FamixJavaInitializer.class.st b/src/Famix-Java-Entities/FamixJavaInitializer.class.st index 54a433e4e..bbf730bd3 100644 --- a/src/Famix-Java-Entities/FamixJavaInitializer.class.st +++ b/src/Famix-Java-Entities/FamixJavaInitializer.class.st @@ -24,14 +24,6 @@ FamixJavaInitializer class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaInitializer >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaInitializer: self ] { #category : 'trait protocol conflict' } diff --git a/src/Famix-Java-Entities/FamixJavaInterface.class.st b/src/Famix-Java-Entities/FamixJavaInterface.class.st index 3bd6d8bbd..7e1e71bb1 100644 --- a/src/Famix-Java-Entities/FamixJavaInterface.class.st +++ b/src/Famix-Java-Entities/FamixJavaInterface.class.st @@ -60,14 +60,6 @@ FamixJavaInterface class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaInterface >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaInterface: self ] { #category : 'private' } diff --git a/src/Famix-Java-Entities/FamixJavaInvocation.class.st b/src/Famix-Java-Entities/FamixJavaInvocation.class.st index a590322b6..733adeac3 100644 --- a/src/Famix-Java-Entities/FamixJavaInvocation.class.st +++ b/src/Famix-Java-Entities/FamixJavaInvocation.class.st @@ -45,14 +45,6 @@ FamixJavaInvocation class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaInvocation >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaInvocation: self ] { #category : 'initialization' } diff --git a/src/Famix-Java-Entities/FamixJavaLocalVariable.class.st b/src/Famix-Java-Entities/FamixJavaLocalVariable.class.st index 80ec2edc3..24090d428 100644 --- a/src/Famix-Java-Entities/FamixJavaLocalVariable.class.st +++ b/src/Famix-Java-Entities/FamixJavaLocalVariable.class.st @@ -54,14 +54,6 @@ FamixJavaLocalVariable class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaLocalVariable >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaLocalVariable: self ] { #category : 'printing' } diff --git a/src/Famix-Java-Entities/FamixJavaMethod.class.st b/src/Famix-Java-Entities/FamixJavaMethod.class.st index f7e352ff5..b7dd2af39 100644 --- a/src/Famix-Java-Entities/FamixJavaMethod.class.st +++ b/src/Famix-Java-Entities/FamixJavaMethod.class.st @@ -70,14 +70,6 @@ FamixJavaMethod class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaMethod >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaMethod: self ] { #category : 'Famix-Extensions' } diff --git a/src/Famix-Java-Entities/FamixJavaModel.class.st b/src/Famix-Java-Entities/FamixJavaModel.class.st index fb9079258..e35ce50bc 100644 --- a/src/Famix-Java-Entities/FamixJavaModel.class.st +++ b/src/Famix-Java-Entities/FamixJavaModel.class.st @@ -16,7 +16,8 @@ FamixJavaModel class >> allSubmetamodelsPackagesNames [ { #category : 'meta' } FamixJavaModel class >> annotation [ - + + ] diff --git a/src/Famix-Java-Entities/FamixJavaNamedEntity.class.st b/src/Famix-Java-Entities/FamixJavaNamedEntity.class.st index 3108ab746..3e337a063 100644 --- a/src/Famix-Java-Entities/FamixJavaNamedEntity.class.st +++ b/src/Famix-Java-Entities/FamixJavaNamedEntity.class.st @@ -33,7 +33,6 @@ FamixJavaNamedEntity class >> annotation [ - ^ self ] { #category : 'testing' } @@ -43,13 +42,6 @@ FamixJavaNamedEntity class >> isAbstract [ ^ self == FamixJavaNamedEntity ] -{ #category : 'visitor' } -FamixJavaNamedEntity >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaNamedEntity: self -] - { #category : 'testing' } FamixJavaNamedEntity >> isNamedEntity [ diff --git a/src/Famix-Java-Entities/FamixJavaPackage.class.st b/src/Famix-Java-Entities/FamixJavaPackage.class.st index f32ffa112..90251b010 100644 --- a/src/Famix-Java-Entities/FamixJavaPackage.class.st +++ b/src/Famix-Java-Entities/FamixJavaPackage.class.st @@ -49,7 +49,6 @@ FamixJavaPackage class >> annotation [ - ^ self ] { #category : 'Famix-Implementation' } @@ -72,13 +71,6 @@ FamixJavaPackage >> abstractness [ ^ (nsClasses select: [ :c | c isAbstract ]) size / nsClasses size ] -{ #category : 'visitor' } -FamixJavaPackage >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaPackage: self -] - { #category : 'adding' } FamixJavaPackage >> addChildNamedEntity: aNamedEntity [ childEntities add: aNamedEntity diff --git a/src/Famix-Java-Entities/FamixJavaParameter.class.st b/src/Famix-Java-Entities/FamixJavaParameter.class.st index 716a6f9ec..d8520deed 100644 --- a/src/Famix-Java-Entities/FamixJavaParameter.class.st +++ b/src/Famix-Java-Entities/FamixJavaParameter.class.st @@ -54,14 +54,6 @@ FamixJavaParameter class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaParameter >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaParameter: self ] { #category : 'printing' } diff --git a/src/Famix-Java-Entities/FamixJavaParametricClass.class.st b/src/Famix-Java-Entities/FamixJavaParametricClass.class.st index 0330b74b8..47888665b 100644 --- a/src/Famix-Java-Entities/FamixJavaParametricClass.class.st +++ b/src/Famix-Java-Entities/FamixJavaParametricClass.class.st @@ -26,12 +26,4 @@ FamixJavaParametricClass class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaParametricClass >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaParametricClass: self ] diff --git a/src/Famix-Java-Entities/FamixJavaParametricEntityTyping.class.st b/src/Famix-Java-Entities/FamixJavaParametricEntityTyping.class.st index cd5d54373..650d104de 100644 --- a/src/Famix-Java-Entities/FamixJavaParametricEntityTyping.class.st +++ b/src/Famix-Java-Entities/FamixJavaParametricEntityTyping.class.st @@ -26,12 +26,4 @@ FamixJavaParametricEntityTyping class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaParametricEntityTyping >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaParametricEntityTyping: self ] diff --git a/src/Famix-Java-Entities/FamixJavaParametricImplementation.class.st b/src/Famix-Java-Entities/FamixJavaParametricImplementation.class.st index 74faa4f0f..dbbb63e91 100644 --- a/src/Famix-Java-Entities/FamixJavaParametricImplementation.class.st +++ b/src/Famix-Java-Entities/FamixJavaParametricImplementation.class.st @@ -26,12 +26,4 @@ FamixJavaParametricImplementation class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaParametricImplementation >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaParametricImplementation: self ] diff --git a/src/Famix-Java-Entities/FamixJavaParametricInheritance.class.st b/src/Famix-Java-Entities/FamixJavaParametricInheritance.class.st index 9286e92ad..bccfdf462 100644 --- a/src/Famix-Java-Entities/FamixJavaParametricInheritance.class.st +++ b/src/Famix-Java-Entities/FamixJavaParametricInheritance.class.st @@ -26,12 +26,4 @@ FamixJavaParametricInheritance class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaParametricInheritance >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaParametricInheritance: self ] diff --git a/src/Famix-Java-Entities/FamixJavaParametricInterface.class.st b/src/Famix-Java-Entities/FamixJavaParametricInterface.class.st index a8150aa3f..8f6f4db96 100644 --- a/src/Famix-Java-Entities/FamixJavaParametricInterface.class.st +++ b/src/Famix-Java-Entities/FamixJavaParametricInterface.class.st @@ -26,12 +26,4 @@ FamixJavaParametricInterface class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaParametricInterface >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaParametricInterface: self ] diff --git a/src/Famix-Java-Entities/FamixJavaParametricInvocation.class.st b/src/Famix-Java-Entities/FamixJavaParametricInvocation.class.st index 0277d6c5c..1844d457a 100644 --- a/src/Famix-Java-Entities/FamixJavaParametricInvocation.class.st +++ b/src/Famix-Java-Entities/FamixJavaParametricInvocation.class.st @@ -26,12 +26,4 @@ FamixJavaParametricInvocation class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaParametricInvocation >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaParametricInvocation: self ] diff --git a/src/Famix-Java-Entities/FamixJavaParametricMethod.class.st b/src/Famix-Java-Entities/FamixJavaParametricMethod.class.st index 2257efe47..2a2f4e28e 100644 --- a/src/Famix-Java-Entities/FamixJavaParametricMethod.class.st +++ b/src/Famix-Java-Entities/FamixJavaParametricMethod.class.st @@ -26,12 +26,4 @@ FamixJavaParametricMethod class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaParametricMethod >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaParametricMethod: self ] diff --git a/src/Famix-Java-Entities/FamixJavaParametricReference.class.st b/src/Famix-Java-Entities/FamixJavaParametricReference.class.st index 8b61ca4fb..e35376ab6 100644 --- a/src/Famix-Java-Entities/FamixJavaParametricReference.class.st +++ b/src/Famix-Java-Entities/FamixJavaParametricReference.class.st @@ -26,12 +26,4 @@ FamixJavaParametricReference class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaParametricReference >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaParametricReference: self ] diff --git a/src/Famix-Java-Entities/FamixJavaPrimitiveType.class.st b/src/Famix-Java-Entities/FamixJavaPrimitiveType.class.st index 42a412790..7e1dd33b3 100644 --- a/src/Famix-Java-Entities/FamixJavaPrimitiveType.class.st +++ b/src/Famix-Java-Entities/FamixJavaPrimitiveType.class.st @@ -49,14 +49,6 @@ FamixJavaPrimitiveType class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaPrimitiveType >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaPrimitiveType: self ] { #category : 'testing' } diff --git a/src/Famix-Java-Entities/FamixJavaReference.class.st b/src/Famix-Java-Entities/FamixJavaReference.class.st index a2c97fc2d..afb797c8a 100644 --- a/src/Famix-Java-Entities/FamixJavaReference.class.st +++ b/src/Famix-Java-Entities/FamixJavaReference.class.st @@ -38,14 +38,6 @@ FamixJavaReference class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaReference >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaReference: self ] { #category : 'printing' } diff --git a/src/Famix-Java-Entities/FamixJavaSourceAnchor.class.st b/src/Famix-Java-Entities/FamixJavaSourceAnchor.class.st index 9db90c6bf..c06067a5a 100644 --- a/src/Famix-Java-Entities/FamixJavaSourceAnchor.class.st +++ b/src/Famix-Java-Entities/FamixJavaSourceAnchor.class.st @@ -27,7 +27,6 @@ FamixJavaSourceAnchor class >> annotation [ - ^ self ] { #category : 'testing' } @@ -36,10 +35,3 @@ FamixJavaSourceAnchor class >> isAbstract [ ^ self == FamixJavaSourceAnchor ] - -{ #category : 'visitor' } -FamixJavaSourceAnchor >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaSourceAnchor: self -] diff --git a/src/Famix-Java-Entities/FamixJavaSourceLanguage.class.st b/src/Famix-Java-Entities/FamixJavaSourceLanguage.class.st index d14eedf4d..f698de90c 100644 --- a/src/Famix-Java-Entities/FamixJavaSourceLanguage.class.st +++ b/src/Famix-Java-Entities/FamixJavaSourceLanguage.class.st @@ -26,14 +26,6 @@ FamixJavaSourceLanguage class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaSourceLanguage >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaSourceLanguage: self ] { #category : 'testing' } diff --git a/src/Famix-Java-Entities/FamixJavaSourceTextAnchor.class.st b/src/Famix-Java-Entities/FamixJavaSourceTextAnchor.class.st index 95c8cd026..b17333e65 100644 --- a/src/Famix-Java-Entities/FamixJavaSourceTextAnchor.class.st +++ b/src/Famix-Java-Entities/FamixJavaSourceTextAnchor.class.st @@ -32,12 +32,4 @@ FamixJavaSourceTextAnchor class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaSourceTextAnchor >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaSourceTextAnchor: self ] diff --git a/src/Famix-Java-Entities/FamixJavaSourcedEntity.class.st b/src/Famix-Java-Entities/FamixJavaSourcedEntity.class.st index 4a3edb41e..487027255 100644 --- a/src/Famix-Java-Entities/FamixJavaSourcedEntity.class.st +++ b/src/Famix-Java-Entities/FamixJavaSourcedEntity.class.st @@ -27,7 +27,6 @@ FamixJavaSourcedEntity class >> annotation [ - ^ self ] { #category : 'testing' } @@ -37,13 +36,6 @@ FamixJavaSourcedEntity class >> isAbstract [ ^ self == FamixJavaSourcedEntity ] -{ #category : 'visitor' } -FamixJavaSourcedEntity >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaSourcedEntity: self -] - { #category : 'Famix-SourceAnchor' } FamixJavaSourcedEntity >> fileAnchorPath: aString startLine: anInteger startColumn: anInteger2 endLine: anInteger3 endColumn: anInteger4 [ "I need to be called after the mooseModel is set." diff --git a/src/Famix-Java-Entities/FamixJavaTBound.trait.st b/src/Famix-Java-Entities/FamixJavaTBound.trait.st index c90fbc313..ca6cc295f 100644 --- a/src/Famix-Java-Entities/FamixJavaTBound.trait.st +++ b/src/Famix-Java-Entities/FamixJavaTBound.trait.st @@ -30,14 +30,6 @@ FamixJavaTBound classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaTBound >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaTBound: self ] { #category : 'adding' } diff --git a/src/Famix-Java-Entities/FamixJavaTBounded.trait.st b/src/Famix-Java-Entities/FamixJavaTBounded.trait.st index 033fa3db4..36abc04f5 100644 --- a/src/Famix-Java-Entities/FamixJavaTBounded.trait.st +++ b/src/Famix-Java-Entities/FamixJavaTBounded.trait.st @@ -30,14 +30,6 @@ FamixJavaTBounded classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaTBounded >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaTBounded: self ] { #category : 'accessing' } diff --git a/src/Famix-Java-Entities/FamixJavaTCanBeSynchronized.trait.st b/src/Famix-Java-Entities/FamixJavaTCanBeSynchronized.trait.st index 42f32ddc1..421740d16 100644 --- a/src/Famix-Java-Entities/FamixJavaTCanBeSynchronized.trait.st +++ b/src/Famix-Java-Entities/FamixJavaTCanBeSynchronized.trait.st @@ -36,14 +36,6 @@ FamixJavaTCanBeSynchronized classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaTCanBeSynchronized >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaTCanBeSynchronized: self ] { #category : 'accessing' } diff --git a/src/Famix-Java-Entities/FamixJavaTCanBeTransient.trait.st b/src/Famix-Java-Entities/FamixJavaTCanBeTransient.trait.st index 94bc23a03..05db0baab 100644 --- a/src/Famix-Java-Entities/FamixJavaTCanBeTransient.trait.st +++ b/src/Famix-Java-Entities/FamixJavaTCanBeTransient.trait.st @@ -32,14 +32,6 @@ FamixJavaTCanBeTransient classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaTCanBeTransient >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaTCanBeTransient: self ] { #category : 'accessing' } diff --git a/src/Famix-Java-Entities/FamixJavaTCanBeVolatile.trait.st b/src/Famix-Java-Entities/FamixJavaTCanBeVolatile.trait.st index 2566cf5a2..d57b0e3f4 100644 --- a/src/Famix-Java-Entities/FamixJavaTCanBeVolatile.trait.st +++ b/src/Famix-Java-Entities/FamixJavaTCanBeVolatile.trait.st @@ -32,14 +32,6 @@ FamixJavaTCanBeVolatile classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaTCanBeVolatile >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaTCanBeVolatile: self ] { #category : 'accessing' } diff --git a/src/Famix-Java-Entities/FamixJavaTClassMetrics.trait.st b/src/Famix-Java-Entities/FamixJavaTClassMetrics.trait.st index bfed24e94..5b83cfab9 100644 --- a/src/Famix-Java-Entities/FamixJavaTClassMetrics.trait.st +++ b/src/Famix-Java-Entities/FamixJavaTClassMetrics.trait.st @@ -11,14 +11,6 @@ FamixJavaTClassMetrics classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaTClassMetrics >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaTClassMetrics: self ] { #category : 'metrics' } diff --git a/src/Famix-Java-Entities/FamixJavaTEntityCreator.trait.st b/src/Famix-Java-Entities/FamixJavaTEntityCreator.trait.st index 1d497517a..b6e5c6b29 100644 --- a/src/Famix-Java-Entities/FamixJavaTEntityCreator.trait.st +++ b/src/Famix-Java-Entities/FamixJavaTEntityCreator.trait.st @@ -17,7 +17,6 @@ FamixJavaTEntityCreator classSide >> annotation [ - ^ self ] { #category : 'entity creation' } diff --git a/src/Famix-Java-Entities/FamixJavaTVisitor.trait.st b/src/Famix-Java-Entities/FamixJavaTVisitor.trait.st index 8d33c4dfb..f5985ac75 100644 --- a/src/Famix-Java-Entities/FamixJavaTVisitor.trait.st +++ b/src/Famix-Java-Entities/FamixJavaTVisitor.trait.st @@ -1,11 +1,11 @@ " I am a visitor for FamixJavaEntities. I am generated with the metamodel. + + " Trait { #name : 'FamixJavaTVisitor', - #traits : 'FamixTVisitor', - #classTraits : 'FamixTVisitor classTrait', #category : 'Famix-Java-Entities-Visitor', #package : 'Famix-Java-Entities', #tag : 'Visitor' @@ -17,494 +17,1164 @@ FamixJavaTVisitor classSide >> annotation [ - ^ self ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaAccess: aFamixJavaAccess [ +FamixJavaTVisitor >> visitCollection: aCollection [ + + + ^ aCollection collect: [ :each | each accept: self ] +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitEntity: aFamixEntity [ + + + ^ aFamixEntity ifNotNil: [ aFamixEntity accept: self ] +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaAccess: anAccess [ + + + self visitFamixTAccess: anAccess +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaAnnotationInstance: anAnnotationInstance [ + + + self visitFamixTAnnotationInstance: anAnnotationInstance. + self visitFamixJavaSourcedEntity: anAnnotationInstance +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaAnnotationInstanceAttribute: anAnnotationInstanceAttribute [ + + + self visitFamixTAnnotationInstanceAttribute: anAnnotationInstanceAttribute. + self visitFamixJavaSourcedEntity: anAnnotationInstanceAttribute +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaAnnotationType: anAnnotationType [ + + + self visitFamixTAnnotationType: anAnnotationType. + self visitFamixTHasVisibility: anAnnotationType. + self visitFamixTImplementable: anAnnotationType. + self visitFamixTPackageable: anAnnotationType. + self visitFamixTTypeArgument: anAnnotationType. + self visitFamixTWithAttributes: anAnnotationType. + self visitFamixTWithComments: anAnnotationType. + self visitFamixTWithInheritances: anAnnotationType. + self visitFamixJavaType: anAnnotationType +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaAnnotationTypeAttribute: anAnnotationTypeAttribute [ + + + self visitFamixTAnnotationTypeAttribute: anAnnotationTypeAttribute. + self visitFamixTWithComments: anAnnotationTypeAttribute. + self visitFamixJavaVariable: anAnnotationTypeAttribute +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaAttribute: anAttribute [ + + + self visitFamixJavaTCanBeTransient: anAttribute. + self visitFamixJavaTCanBeVolatile: anAttribute. + self visitFamixTAttribute: anAttribute. + self visitFamixTCanBeClassSide: anAttribute. + self visitFamixTCanBeFinal: anAttribute. + self visitFamixTHasVisibility: anAttribute. + self visitFamixTWithComments: anAttribute. + self visitFamixJavaVariable: anAttribute +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaClass: aClass [ + + + self visitFamixJavaTClassMetrics: aClass. + self visitFamixTCanBeAbstract: aClass. + self visitFamixTCanBeClassSide: aClass. + self visitFamixTCanBeFinal: aClass. + self visitFamixTCanImplement: aClass. + self visitFamixTClass: aClass. + self visitFamixTClassMetrics: aClass. + self visitFamixTHasVisibility: aClass. + self visitFamixTImportable: aClass. + self visitFamixTLCOMMetrics: aClass. + self visitFamixTPackageable: aClass. + self visitFamixTTypeArgument: aClass. + self visitFamixTWithImports: aClass. + self visitFamixJavaType: aClass +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaComment: aComment [ + + + self visitFamixTComment: aComment. + self visitFamixJavaSourcedEntity: aComment +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaConcretization: aConcretization [ + + + self visitFamixTConcretization: aConcretization +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaContainerEntity: aContainerEntity [ + + + self visitFamixJavaTWithInterfaces: aContainerEntity. + self visitFamixTWithAnnotationTypes: aContainerEntity. + self visitFamixTWithClasses: aContainerEntity. + self visitFamixJavaNamedEntity: aContainerEntity +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaEntity: anEntity [ + + + +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaEntityTyping: anEntityTyping [ + + + self visitFamixTEntityTyping: anEntityTyping +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaEnum: anEnum [ + + + self visitFamixTEnum: anEnum. + self visitFamixTHasVisibility: anEnum. + self visitFamixTImportable: anEnum. + self visitFamixTInvocationsReceiver: anEnum. + self visitFamixTTypeArgument: anEnum. + self visitFamixTWithAttributes: anEnum. + self visitFamixTWithComments: anEnum. + self visitFamixTWithImports: anEnum. + self visitFamixTWithInheritances: anEnum. + self visitFamixTWithMethods: anEnum. + self visitFamixJavaType: anEnum +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaEnumValue: anEnumValue [ + + + self visitFamixTEnumValue: anEnumValue. + self visitFamixTWithComments: anEnumValue. + self visitFamixJavaVariable: anEnumValue +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaException: anException [ + + + self visitFamixTException: anException. + self visitFamixJavaClass: anException +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaImplementation: anImplementation [ + + + self visitFamixTImplementation: anImplementation +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaImplicitVariable: anImplicitVariable [ + + + self visitFamixTImplicitVariable: anImplicitVariable. + self visitFamixJavaVariable: anImplicitVariable +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaImport: anImport [ + + + self visitFamixTImport: anImport +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaIndexedFileAnchor: anIndexedFileAnchor [ + + + self visitFamixTIndexedFileNavigation: anIndexedFileAnchor. + self visitFamixJavaSourceAnchor: anIndexedFileAnchor +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaInheritance: anInheritance [ + + + self visitFamixTInheritance: anInheritance +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaInitializer: anInitializer [ + + + self visitFamixJavaMethod: anInitializer +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaInterface: anInterface [ + + + self visitFamixTCanBeClassSide: anInterface. + self visitFamixTCanBeFinal: anInterface. + self visitFamixTHasVisibility: anInterface. + self visitFamixTImplementable: anInterface. + self visitFamixTImportable: anInterface. + self visitFamixTInvocationsReceiver: anInterface. + self visitFamixTPackageable: anInterface. + self visitFamixTTypeArgument: anInterface. + self visitFamixTWithAttributes: anInterface. + self visitFamixTWithComments: anInterface. + self visitFamixTWithImports: anInterface. + self visitFamixTWithInheritances: anInterface. + self visitFamixTWithMethods: anInterface. + self visitFamixJavaType: anInterface +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaInvocation: anInvocation [ + + + self visitFamixTInvocation: anInvocation +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaLocalVariable: aLocalVariable [ + + + self visitFamixTCanBeFinal: aLocalVariable. + self visitFamixTLocalVariable: aLocalVariable. + self visitFamixTWithComments: aLocalVariable. + self visitFamixJavaVariable: aLocalVariable +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaMethod: aMethod [ + + + self visitFamixJavaTCanBeSynchronized: aMethod. + self visitFamixTCanBeAbstract: aMethod. + self visitFamixTCanBeClassSide: aMethod. + self visitFamixTCanBeFinal: aMethod. + self visitFamixTHasKind: aMethod. + self visitFamixTHasVisibility: aMethod. + self visitFamixTImportable: aMethod. + self visitFamixTMethod: aMethod. + self visitFamixTWithComments: aMethod. + self visitFamixTWithExceptions: aMethod. + self visitFamixJavaContainerEntity: aMethod +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaNamedEntity: aNamedEntity [ + + + self visitFamixTNamedEntity: aNamedEntity. + self visitFamixTWithAnnotationInstances: aNamedEntity. + self visitTEntityMetaLevelDependency: aNamedEntity. + self visitFamixJavaSourcedEntity: aNamedEntity +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaPackage: aPackage [ + + + self visitFamixTImportable: aPackage. + self visitFamixTPackage: aPackage. + self visitFamixTPackageable: aPackage. + self visitFamixTWithComments: aPackage. + self visitFamixJavaContainerEntity: aPackage +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaParameter: aParameter [ + + + self visitFamixTCanBeFinal: aParameter. + self visitFamixTParameter: aParameter. + self visitFamixTWithComments: aParameter. + self visitFamixJavaVariable: aParameter +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaParametricClass: aParametricClass [ + + + self visitFamixTParametricEntity: aParametricClass. + self visitFamixJavaClass: aParametricClass +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaParametricEntityTyping: aParametricEntityTyping [ + + + self visitFamixTParametricAssociation: aParametricEntityTyping. + self visitFamixJavaEntityTyping: aParametricEntityTyping +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaParametricImplementation: aParametricImplementation [ + + + self visitFamixTParametricAssociation: aParametricImplementation. + self visitFamixJavaImplementation: aParametricImplementation +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaParametricInheritance: aParametricInheritance [ + + + self visitFamixTParametricAssociation: aParametricInheritance. + self visitFamixJavaInheritance: aParametricInheritance +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaParametricInterface: aParametricInterface [ + + + self visitFamixTParametricEntity: aParametricInterface. + self visitFamixJavaInterface: aParametricInterface +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaParametricInvocation: aParametricInvocation [ + + + self visitFamixTParametricAssociation: aParametricInvocation. + self visitFamixJavaInvocation: aParametricInvocation +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaParametricMethod: aParametricMethod [ + + + self visitFamixTParametricEntity: aParametricMethod. + self visitFamixJavaMethod: aParametricMethod +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaParametricReference: aParametricReference [ + + + self visitFamixTParametricAssociation: aParametricReference. + self visitFamixJavaReference: aParametricReference +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaPrimitiveType: aPrimitiveType [ + + + self visitFamixTPrimitiveType: aPrimitiveType. + self visitFamixTTypeArgument: aPrimitiveType. + self visitFamixJavaType: aPrimitiveType +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaReference: aReference [ + + + self visitFamixTReference: aReference +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaSourceAnchor: aSourceAnchor [ + + + self visitFamixTSourceAnchor: aSourceAnchor +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaSourceLanguage: aSourceLanguage [ + + + self visitFamixTSourceLanguage: aSourceLanguage +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaSourceTextAnchor: aSourceTextAnchor [ + + + self visitFamixTHasImmediateSource: aSourceTextAnchor. + self visitFamixJavaSourceAnchor: aSourceTextAnchor +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaSourcedEntity: aSourcedEntity [ + + + self visitFamixTSourceEntity: aSourcedEntity +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaTBound: aTBound [ + + + self visitCollection: aTBound lowerBoundedWildcards. + self visitCollection: aTBound upperBoundedWildcards +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaTBounded: aTBounded [ + + + self visitEntity: aTBounded lowerBound. + self visitEntity: aTBounded upperBound +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaTCanBeSynchronized: aTCanBeSynchronized [ + + + +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaTCanBeTransient: aTCanBeTransient [ + + + +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaTCanBeVolatile: aTCanBeVolatile [ + + + +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaTClassMetrics: aTClassMetrics [ + + + +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaTWithInterfaces: aTWithInterfaces [ + + + self visitFamixTWithTypes: aTWithInterfaces +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaType: aType [ + + + self visitFamixJavaTBound: aType. + self visitFamixTType: aType. + self visitFamixTWithMethods: aType. + self visitFamixJavaContainerEntity: aType +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaTypeParameter: aTypeParameter [ + + + self visitFamixJavaTBounded: aTypeParameter. + self visitFamixTThrowable: aTypeParameter. + self visitFamixTTypeArgument: aTypeParameter. + self visitFamixTTypeParameter: aTypeParameter. + self visitFamixJavaType: aTypeParameter +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaUnknownVariable: anUnknownVariable [ + + + self visitFamixTUnknownVariable: anUnknownVariable. + self visitFamixJavaVariable: anUnknownVariable +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaVariable: aVariable [ + + + self visitFamixTInvocationsReceiver: aVariable. + self visitFamixJavaNamedEntity: aVariable +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixJavaWildcard: aWildcard [ + + + self visitFamixJavaTBounded: aWildcard. + self visitFamixTTypeArgument: aWildcard. + self visitFamixJavaType: aWildcard +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTAccess: aTAccess [ + + + self visitFamixTAssociation: aTAccess. + + self visitEntity: aTAccess accessor. + self visitCollection: aTAccess candidates +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTAccessible: aTAccessible [ + + + self visitCollection: aTAccessible incomingAccesses +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTAnnotationInstance: aTAnnotationInstance [ + + + self visitTEntityMetaLevelDependency: aTAnnotationInstance. + + self visitEntity: aTAnnotationInstance annotatedEntity. + self visitCollection: aTAnnotationInstance attributes. + self visitEntity: aTAnnotationInstance annotationType +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTAnnotationInstanceAttribute: aTAnnotationInstanceAttribute [ + + + self visitTEntityMetaLevelDependency: aTAnnotationInstanceAttribute. + + self visitEntity: aTAnnotationInstanceAttribute annotationTypeAttribute +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTAnnotationType: aTAnnotationType [ + + + self visitCollection: aTAnnotationType instances +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTAnnotationTypeAttribute: aTAnnotationTypeAttribute [ + + + self visitFamixTAttribute: aTAnnotationTypeAttribute. + + self visitCollection: aTAnnotationTypeAttribute annotationAttributeInstances +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTAssociation: aTAssociation [ + + + self visitFamixTSourceEntity: aTAssociation. + self visitTAssociationMetaLevelDependency: aTAssociation. + + self visitEntity: aTAssociation previous. + self visitEntity: aTAssociation next +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTAttribute: aTAttribute [ + + + self visitFamixTStructuralEntity: aTAttribute. + + +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTCanBeAbstract: aTCanBeAbstract [ + + + +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTCanBeClassSide: aTCanBeClassSide [ + + + +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTCanBeFinal: aTCanBeFinal [ + + + +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTCanBeStub: aTCanBeStub [ + + + "We should visit FamixTSourceEntity but all its users in this language already visit it in their superclasses so we skip the call here." +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTCanImplement: aTCanImplement [ + + + self visitCollection: aTCanImplement interfaceImplementations +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTClass: aTClass [ + + + "We do not visit all behaviorals because some classes already visit it in their superclasses in this language implementation. Visiting them here also would cause a double visit of this trait." + ({ FamixJavaException } includes: aTClass class) + ifFalse: [ self visitFamixTInvocationsReceiver: aTClass ]. + "We should visit FamixTType but all its users in this language already visit it in their superclasses so we skip the call here.". + "We do not visit all behaviorals because some classes already visit it in their superclasses in this language implementation. Visiting them here also would cause a double visit of this trait." + ({ FamixJavaException } includes: aTClass class) + ifFalse: [ self visitFamixTWithAttributes: aTClass ]. + "We do not visit all behaviorals because some classes already visit it in their superclasses in this language implementation. Visiting them here also would cause a double visit of this trait." + ({ FamixJavaException } includes: aTClass class) + ifFalse: [ self visitFamixTWithComments: aTClass ]. + "We do not visit all behaviorals because some classes already visit it in their superclasses in this language implementation. Visiting them here also would cause a double visit of this trait." + ({ FamixJavaException } includes: aTClass class) + ifFalse: [ self visitFamixTWithInheritances: aTClass ]. + "We should visit FamixTWithMethods but all its users in this language already visit it in their superclasses so we skip the call here." +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTClassMetrics: aTClassMetrics [ + + + +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTComment: aTComment [ + + + "We should visit FamixTSourceEntity but all its users in this language already visit it in their superclasses so we skip the call here.". + self visitTEntityMetaLevelDependency: aTComment. + + +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTConcretization: aTConcretization [ + + + self visitFamixTAssociation: aTConcretization. + + self visitEntity: aTConcretization triggeringAssociation. + self visitEntity: aTConcretization typeArgument. + self visitEntity: aTConcretization typeParameter +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTEntityTyping: aTEntityTyping [ + + + self visitFamixTAssociation: aTEntityTyping. + + self visitEntity: aTEntityTyping typedEntity. + self visitEntity: aTEntityTyping declaredType +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTEnum: aTEnum [ + + + "We should visit FamixTType but all its users in this language already visit it in their superclasses so we skip the call here.". + self visitFamixTWithEnumValues: aTEnum +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTEnumValue: aTEnumValue [ + + + self visitFamixTStructuralEntity: aTEnumValue. + + +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTException: aTException [ - self visitFamixTAccess: aFamixJavaAccess + "We should visit FamixTClass but all its users in this language already visit it in their superclasses so we skip the call here.". + self visitFamixTThrowable: aTException ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaAnnotationInstance: aFamixJavaAnnotationInstance [ +FamixJavaTVisitor >> visitFamixTFileAnchor: aTFileAnchor [ - self visitFamixTAnnotationInstance: aFamixJavaAnnotationInstance. - self visitFamixJavaSourcedEntity: aFamixJavaAnnotationInstance + ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaAnnotationInstanceAttribute: aFamixJavaAnnotationInstanceAttribute [ +FamixJavaTVisitor >> visitFamixTHasImmediateSource: aTHasImmediateSource [ - self visitFamixTAnnotationInstanceAttribute: aFamixJavaAnnotationInstanceAttribute. - self visitFamixJavaSourcedEntity: aFamixJavaAnnotationInstanceAttribute + "We should visit FamixTSourceAnchor but all its users in this language already visit it in their superclasses so we skip the call here." ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaAnnotationType: aFamixJavaAnnotationType [ +FamixJavaTVisitor >> visitFamixTHasKind: aTHasKind [ - self visitFamixTAnnotationType: aFamixJavaAnnotationType. - self visitFamixTHasVisibility: aFamixJavaAnnotationType. - self visitFamixTImplementable: aFamixJavaAnnotationType. - self visitFamixTPackageable: aFamixJavaAnnotationType. - self visitFamixTTypeArgument: aFamixJavaAnnotationType. - self visitFamixTWithAttributes: aFamixJavaAnnotationType. - self visitFamixTWithComments: aFamixJavaAnnotationType. - self visitFamixTWithInheritances: aFamixJavaAnnotationType. - self visitFamixJavaType: aFamixJavaAnnotationType + ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaAnnotationTypeAttribute: aFamixJavaAnnotationTypeAttribute [ +FamixJavaTVisitor >> visitFamixTHasSignature: aTHasSignature [ - self visitFamixTAnnotationTypeAttribute: aFamixJavaAnnotationTypeAttribute. - self visitFamixTWithComments: aFamixJavaAnnotationTypeAttribute. - self visitFamixJavaVariable: aFamixJavaAnnotationTypeAttribute + ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaAttribute: aFamixJavaAttribute [ +FamixJavaTVisitor >> visitFamixTHasVisibility: aTHasVisibility [ - self visitFamixJavaTCanBeTransient: aFamixJavaAttribute. - self visitFamixJavaTCanBeVolatile: aFamixJavaAttribute. - self visitFamixTAttribute: aFamixJavaAttribute. - self visitFamixTCanBeClassSide: aFamixJavaAttribute. - self visitFamixTCanBeFinal: aFamixJavaAttribute. - self visitFamixTHasVisibility: aFamixJavaAttribute. - self visitFamixTWithComments: aFamixJavaAttribute. - self visitFamixJavaVariable: aFamixJavaAttribute + ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaClass: aFamixJavaClass [ +FamixJavaTVisitor >> visitFamixTImplementable: aTImplementable [ - self visitFamixJavaTClassMetrics: aFamixJavaClass. - self visitFamixTCanBeAbstract: aFamixJavaClass. - self visitFamixTCanBeClassSide: aFamixJavaClass. - self visitFamixTCanBeFinal: aFamixJavaClass. - self visitFamixTCanImplement: aFamixJavaClass. - self visitFamixTClass: aFamixJavaClass. - self visitFamixTClassMetrics: aFamixJavaClass. - self visitFamixTHasVisibility: aFamixJavaClass. - self visitFamixTImportable: aFamixJavaClass. - self visitFamixTLCOMMetrics: aFamixJavaClass. - self visitFamixTPackageable: aFamixJavaClass. - self visitFamixTTypeArgument: aFamixJavaClass. - self visitFamixTWithImports: aFamixJavaClass. - self visitFamixJavaType: aFamixJavaClass + self visitCollection: aTImplementable implementations ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaComment: aFamixJavaComment [ +FamixJavaTVisitor >> visitFamixTImplementation: aTImplementation [ - self visitFamixTComment: aFamixJavaComment. - self visitFamixJavaSourcedEntity: aFamixJavaComment + self visitFamixTAssociation: aTImplementation. + + self visitEntity: aTImplementation implementingClass. + self visitEntity: aTImplementation interface ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaConcretization: aFamixJavaConcretization [ +FamixJavaTVisitor >> visitFamixTImplicitVariable: aTImplicitVariable [ - self visitFamixTConcretization: aFamixJavaConcretization + self visitFamixTStructuralEntity: aTImplicitVariable. + + ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaContainerEntity: aFamixJavaContainerEntity [ +FamixJavaTVisitor >> visitFamixTImport: aTImport [ - self visitFamixJavaTWithInterfaces: aFamixJavaContainerEntity. - self visitFamixTWithAnnotationTypes: aFamixJavaContainerEntity. - self visitFamixTWithClasses: aFamixJavaContainerEntity. - self visitFamixJavaNamedEntity: aFamixJavaContainerEntity + self visitFamixTAssociation: aTImport. + + self visitEntity: aTImport importingEntity. + self visitEntity: aTImport importedEntity ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaEntity: aFamixJavaEntity [ +FamixJavaTVisitor >> visitFamixTImportable: aTImportable [ + self visitCollection: aTImportable incomingImports +] +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTIndexedFileNavigation: aTIndexedFileNavigation [ + + + self visitFamixTFileAnchor: aTIndexedFileNavigation ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaEntityTyping: aFamixJavaEntityTyping [ +FamixJavaTVisitor >> visitFamixTInheritance: aTInheritance [ - self visitFamixTEntityTyping: aFamixJavaEntityTyping + self visitFamixTAssociation: aTInheritance. + + self visitEntity: aTInheritance subclass. + self visitEntity: aTInheritance superclass ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaEnum: aFamixJavaEnum [ +FamixJavaTVisitor >> visitFamixTInvocable: aTInvocable [ - self visitFamixTEnum: aFamixJavaEnum. - self visitFamixTHasVisibility: aFamixJavaEnum. - self visitFamixTImportable: aFamixJavaEnum. - self visitFamixTInvocationsReceiver: aFamixJavaEnum. - self visitFamixTTypeArgument: aFamixJavaEnum. - self visitFamixTWithAttributes: aFamixJavaEnum. - self visitFamixTWithComments: aFamixJavaEnum. - self visitFamixTWithImports: aFamixJavaEnum. - self visitFamixTWithInheritances: aFamixJavaEnum. - self visitFamixTWithMethods: aFamixJavaEnum. - self visitFamixJavaType: aFamixJavaEnum + self visitCollection: aTInvocable incomingInvocations ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaEnumValue: aFamixJavaEnumValue [ +FamixJavaTVisitor >> visitFamixTInvocation: aTInvocation [ - self visitFamixTEnumValue: aFamixJavaEnumValue. - self visitFamixTWithComments: aFamixJavaEnumValue. - self visitFamixJavaVariable: aFamixJavaEnumValue + self visitFamixTAssociation: aTInvocation. + self visitFamixTHasSignature: aTInvocation. + + self visitCollection: aTInvocation candidates. + self visitEntity: aTInvocation sender. + self visitEntity: aTInvocation receiver ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaException: aFamixJavaException [ +FamixJavaTVisitor >> visitFamixTInvocationsReceiver: aTInvocationsReceiver [ - self visitFamixTException: aFamixJavaException. - self visitFamixJavaClass: aFamixJavaException + self visitCollection: aTInvocationsReceiver receivingInvocations ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaImplementation: aFamixJavaImplementation [ +FamixJavaTVisitor >> visitFamixTLCOMMetrics: aTLCOMMetrics [ - self visitFamixTImplementation: aFamixJavaImplementation + ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaImplicitVariable: aFamixJavaImplicitVariable [ +FamixJavaTVisitor >> visitFamixTLocalVariable: aTLocalVariable [ - self visitFamixTImplicitVariable: aFamixJavaImplicitVariable. - self visitFamixJavaVariable: aFamixJavaImplicitVariable + self visitFamixTStructuralEntity: aTLocalVariable. + + ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaImport: aFamixJavaImport [ +FamixJavaTVisitor >> visitFamixTMethod: aTMethod [ - self visitFamixTImport: aFamixJavaImport + self visitFamixTHasSignature: aTMethod. + self visitFamixTInvocable: aTMethod. + self visitFamixTMethodMetrics: aTMethod. + "We should visit FamixTNamedEntity but all its users in this language already visit it in their superclasses so we skip the call here.". + self visitFamixTTypedEntity: aTMethod. + self visitFamixTWithImplicitVariables: aTMethod. + self visitFamixTWithLocalVariables: aTMethod. + self visitFamixTWithParameters: aTMethod. + self visitFamixTWithStatements: aTMethod. + "We should visit TEntityMetaLevelDependency but all its users in this language already visit it in their superclasses so we skip the call here.". + + ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaIndexedFileAnchor: aFamixJavaIndexedFileAnchor [ +FamixJavaTVisitor >> visitFamixTMethodMetrics: aTMethodMetrics [ - self visitFamixTIndexedFileNavigation: aFamixJavaIndexedFileAnchor. - self visitFamixJavaSourceAnchor: aFamixJavaIndexedFileAnchor + ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaInheritance: aFamixJavaInheritance [ +FamixJavaTVisitor >> visitFamixTNamedEntity: aTNamedEntity [ - self visitFamixTInheritance: aFamixJavaInheritance + ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaInitializer: aFamixJavaInitializer [ +FamixJavaTVisitor >> visitFamixTPackage: aTPackage [ - self visitFamixJavaMethod: aFamixJavaInitializer + self visitFamixTCanBeStub: aTPackage. + "We should visit FamixTNamedEntity but all its users in this language already visit it in their superclasses so we skip the call here.". + "We should visit TEntityMetaLevelDependency but all its users in this language already visit it in their superclasses so we skip the call here.". + + self visitCollection: aTPackage childEntities ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaInterface: aFamixJavaInterface [ +FamixJavaTVisitor >> visitFamixTPackageable: aTPackageable [ - self visitFamixTCanBeClassSide: aFamixJavaInterface. - self visitFamixTCanBeFinal: aFamixJavaInterface. - self visitFamixTHasVisibility: aFamixJavaInterface. - self visitFamixTImplementable: aFamixJavaInterface. - self visitFamixTImportable: aFamixJavaInterface. - self visitFamixTInvocationsReceiver: aFamixJavaInterface. - self visitFamixTPackageable: aFamixJavaInterface. - self visitFamixTTypeArgument: aFamixJavaInterface. - self visitFamixTWithAttributes: aFamixJavaInterface. - self visitFamixTWithComments: aFamixJavaInterface. - self visitFamixTWithImports: aFamixJavaInterface. - self visitFamixTWithInheritances: aFamixJavaInterface. - self visitFamixTWithMethods: aFamixJavaInterface. - self visitFamixJavaType: aFamixJavaInterface + ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaInvocation: aFamixJavaInvocation [ +FamixJavaTVisitor >> visitFamixTParameter: aTParameter [ - self visitFamixTInvocation: aFamixJavaInvocation + self visitFamixTStructuralEntity: aTParameter. + + ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaLocalVariable: aFamixJavaLocalVariable [ +FamixJavaTVisitor >> visitFamixTParametricAssociation: aTParametricAssociation [ - self visitFamixTCanBeFinal: aFamixJavaLocalVariable. - self visitFamixTLocalVariable: aFamixJavaLocalVariable. - self visitFamixTWithComments: aFamixJavaLocalVariable. - self visitFamixJavaVariable: aFamixJavaLocalVariable + self visitCollection: aTParametricAssociation concretizations ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaMethod: aFamixJavaMethod [ +FamixJavaTVisitor >> visitFamixTParametricEntity: aTParametricEntity [ - self visitFamixJavaTCanBeSynchronized: aFamixJavaMethod. - self visitFamixTCanBeAbstract: aFamixJavaMethod. - self visitFamixTCanBeClassSide: aFamixJavaMethod. - self visitFamixTCanBeFinal: aFamixJavaMethod. - self visitFamixTHasKind: aFamixJavaMethod. - self visitFamixTHasVisibility: aFamixJavaMethod. - self visitFamixTImportable: aFamixJavaMethod. - self visitFamixTMethod: aFamixJavaMethod. - self visitFamixTWithComments: aFamixJavaMethod. - self visitFamixTWithExceptions: aFamixJavaMethod. - self visitFamixJavaContainerEntity: aFamixJavaMethod + self visitCollection: aTParametricEntity typeParameters ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaNamedEntity: aFamixJavaNamedEntity [ +FamixJavaTVisitor >> visitFamixTPrimitiveType: aTPrimitiveType [ - self visitFamixTNamedEntity: aFamixJavaNamedEntity. - self visitFamixTWithAnnotationInstances: aFamixJavaNamedEntity. - self visitTEntityMetaLevelDependency: aFamixJavaNamedEntity. - self visitFamixJavaSourcedEntity: aFamixJavaNamedEntity + "We should visit FamixTType but all its users in this language already visit it in their superclasses so we skip the call here." ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaPackage: aFamixJavaPackage [ +FamixJavaTVisitor >> visitFamixTReference: aTReference [ - self visitFamixTImportable: aFamixJavaPackage. - self visitFamixTPackage: aFamixJavaPackage. - self visitFamixTPackageable: aFamixJavaPackage. - self visitFamixTWithComments: aFamixJavaPackage. - self visitFamixJavaContainerEntity: aFamixJavaPackage + self visitFamixTAssociation: aTReference. + + self visitEntity: aTReference referencer. + self visitEntity: aTReference referredEntity ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaParameter: aFamixJavaParameter [ +FamixJavaTVisitor >> visitFamixTReferenceable: aTReferenceable [ - self visitFamixTCanBeFinal: aFamixJavaParameter. - self visitFamixTParameter: aFamixJavaParameter. - self visitFamixTWithComments: aFamixJavaParameter. - self visitFamixJavaVariable: aFamixJavaParameter + self visitCollection: aTReferenceable incomingReferences ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaParametricClass: aFamixJavaParametricClass [ +FamixJavaTVisitor >> visitFamixTSourceAnchor: aTSourceAnchor [ - self visitFamixTParametricEntity: aFamixJavaParametricClass. - self visitFamixJavaClass: aFamixJavaParametricClass + self visitEntity: aTSourceAnchor element ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaParametricEntityTyping: aFamixJavaParametricEntityTyping [ +FamixJavaTVisitor >> visitFamixTSourceEntity: aTSourceEntity [ - self visitFamixTParametricAssociation: aFamixJavaParametricEntityTyping. - self visitFamixJavaEntityTyping: aFamixJavaParametricEntityTyping + self visitEntity: aTSourceEntity sourceAnchor ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaParametricImplementation: aFamixJavaParametricImplementation [ +FamixJavaTVisitor >> visitFamixTSourceLanguage: aTSourceLanguage [ - self visitFamixTParametricAssociation: aFamixJavaParametricImplementation. - self visitFamixJavaImplementation: aFamixJavaParametricImplementation + self visitCollection: aTSourceLanguage sourcedEntities ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaParametricInheritance: aFamixJavaParametricInheritance [ +FamixJavaTVisitor >> visitFamixTStructuralEntity: aTStructuralEntity [ - self visitFamixTParametricAssociation: aFamixJavaParametricInheritance. - self visitFamixJavaInheritance: aFamixJavaParametricInheritance + self visitFamixTAccessible: aTStructuralEntity. + self visitFamixTCanBeStub: aTStructuralEntity. + "We should visit FamixTNamedEntity but all its users in this language already visit it in their superclasses so we skip the call here.". + self visitFamixTTypedEntity: aTStructuralEntity. + "We should visit TEntityMetaLevelDependency but all its users in this language already visit it in their superclasses so we skip the call here." ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaParametricInterface: aFamixJavaParametricInterface [ +FamixJavaTVisitor >> visitFamixTThrowable: aTThrowable [ - self visitFamixTParametricEntity: aFamixJavaParametricInterface. - self visitFamixJavaInterface: aFamixJavaParametricInterface + self visitCollection: aTThrowable catchingEntities. + self visitCollection: aTThrowable declaringEntities. + self visitCollection: aTThrowable throwingEntities ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaParametricInvocation: aFamixJavaParametricInvocation [ +FamixJavaTVisitor >> visitFamixTType: aTType [ - self visitFamixTParametricAssociation: aFamixJavaParametricInvocation. - self visitFamixJavaInvocation: aFamixJavaParametricInvocation + "We do not visit all behaviorals because some classes already visit it in their superclasses in this language implementation. Visiting them here also would cause a double visit of this trait." + ({ FamixJavaClass . FamixJavaEnum . FamixJavaException . FamixJavaPrimitiveType } includes: aTType class) + ifFalse: [ self visitFamixTCanBeStub: aTType ]. + "We should visit FamixTNamedEntity but all its users in this language already visit it in their superclasses so we skip the call here.". + "We do not visit all behaviorals because some classes already visit it in their superclasses in this language implementation. Visiting them here also would cause a double visit of this trait." + ({ FamixJavaClass . FamixJavaEnum . FamixJavaException . FamixJavaPrimitiveType } includes: aTType class) + ifFalse: [ self visitFamixTReferenceable: aTType ]. + "We should visit TEntityMetaLevelDependency but all its users in this language already visit it in their superclasses so we skip the call here.". + + self visitCollection: aTType incomingTypings ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaParametricMethod: aFamixJavaParametricMethod [ +FamixJavaTVisitor >> visitFamixTTypeArgument: aTTypeArgument [ - self visitFamixTParametricEntity: aFamixJavaParametricMethod. - self visitFamixJavaMethod: aFamixJavaParametricMethod + self visitCollection: aTTypeArgument outgoingConcretizations ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaParametricReference: aFamixJavaParametricReference [ +FamixJavaTVisitor >> visitFamixTTypeParameter: aTTypeParameter [ - self visitFamixTParametricAssociation: aFamixJavaParametricReference. - self visitFamixJavaReference: aFamixJavaParametricReference + self visitCollection: aTTypeParameter concretizations. + self visitEntity: aTTypeParameter genericEntity ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaPrimitiveType: aFamixJavaPrimitiveType [ +FamixJavaTVisitor >> visitFamixTTypedEntity: aTTypedEntity [ - self visitFamixTPrimitiveType: aFamixJavaPrimitiveType. - self visitFamixTTypeArgument: aFamixJavaPrimitiveType. - self visitFamixJavaType: aFamixJavaPrimitiveType + self visitEntity: aTTypedEntity typing ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaReference: aFamixJavaReference [ +FamixJavaTVisitor >> visitFamixTUnknownVariable: aTUnknownVariable [ - self visitFamixTReference: aFamixJavaReference + self visitFamixTStructuralEntity: aTUnknownVariable ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaSourceAnchor: aFamixJavaSourceAnchor [ +FamixJavaTVisitor >> visitFamixTWithAccesses: aTWithAccesses [ - self visitFamixTSourceAnchor: aFamixJavaSourceAnchor + self visitCollection: aTWithAccesses accesses ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaSourceLanguage: aFamixJavaSourceLanguage [ +FamixJavaTVisitor >> visitFamixTWithAnnotationInstances: aTWithAnnotationInstances [ - self visitFamixTSourceLanguage: aFamixJavaSourceLanguage + self visitCollection: aTWithAnnotationInstances annotationInstances ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaSourceTextAnchor: aFamixJavaSourceTextAnchor [ +FamixJavaTVisitor >> visitFamixTWithAnnotationTypes: aTWithAnnotationTypes [ - self visitFamixTHasImmediateSource: aFamixJavaSourceTextAnchor. - self visitFamixJavaSourceAnchor: aFamixJavaSourceTextAnchor + self visitCollection: aTWithAnnotationTypes definedAnnotationTypes ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaSourcedEntity: aFamixJavaSourcedEntity [ +FamixJavaTVisitor >> visitFamixTWithAttributes: aTWithAttributes [ - self visitFamixTSourceEntity: aFamixJavaSourcedEntity + self visitCollection: aTWithAttributes attributes ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaTBound: aFamixJavaTBound [ +FamixJavaTVisitor >> visitFamixTWithClasses: aTWithClasses [ - self visitCollection: aFamixJavaTBound lowerBoundedWildcards. - self visitCollection: aFamixJavaTBound upperBoundedWildcards + self visitFamixTWithTypes: aTWithClasses ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaTBounded: aFamixJavaTBounded [ +FamixJavaTVisitor >> visitFamixTWithComments: aTWithComments [ - self visitEntity: aFamixJavaTBounded lowerBound. - self visitEntity: aFamixJavaTBounded upperBound + self visitCollection: aTWithComments comments ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaTCanBeSynchronized: aFamixJavaTCanBeSynchronized [ +FamixJavaTVisitor >> visitFamixTWithEnumValues: aTWithEnumValues [ + self visitCollection: aTWithEnumValues enumValues +] +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTWithExceptions: aTWithExceptions [ + + + self visitCollection: aTWithExceptions caughtExceptions. + self visitCollection: aTWithExceptions declaredExceptions. + self visitCollection: aTWithExceptions thrownExceptions ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaTCanBeTransient: aFamixJavaTCanBeTransient [ +FamixJavaTVisitor >> visitFamixTWithImplicitVariables: aTWithImplicitVariables [ + self visitCollection: aTWithImplicitVariables implicitVariables +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTWithImports: aTWithImports [ + + self visitCollection: aTWithImports imports ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaTCanBeVolatile: aFamixJavaTCanBeVolatile [ +FamixJavaTVisitor >> visitFamixTWithInheritances: aTWithInheritances [ + self visitCollection: aTWithInheritances superInheritances. + self visitCollection: aTWithInheritances subInheritances +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTWithInvocations: aTWithInvocations [ + + self visitCollection: aTWithInvocations outgoingInvocations ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaTClassMetrics: aFamixJavaTClassMetrics [ +FamixJavaTVisitor >> visitFamixTWithLocalVariables: aTWithLocalVariables [ + self visitCollection: aTWithLocalVariables localVariables +] + +{ #category : 'visiting' } +FamixJavaTVisitor >> visitFamixTWithMethods: aTWithMethods [ + + self visitCollection: aTWithMethods methods ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaTWithInterfaces: aFamixJavaTWithInterfaces [ +FamixJavaTVisitor >> visitFamixTWithParameters: aTWithParameters [ - self visitFamixTWithTypes: aFamixJavaTWithInterfaces + self visitCollection: aTWithParameters parameters ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaType: aFamixJavaType [ +FamixJavaTVisitor >> visitFamixTWithReferences: aTWithReferences [ - self visitFamixJavaTBound: aFamixJavaType. - self visitFamixTType: aFamixJavaType. - self visitFamixTWithMethods: aFamixJavaType. - self visitFamixJavaContainerEntity: aFamixJavaType + self visitCollection: aTWithReferences outgoingReferences ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaTypeParameter: aFamixJavaTypeParameter [ +FamixJavaTVisitor >> visitFamixTWithStatements: aTWithStatements [ - self visitFamixJavaTBounded: aFamixJavaTypeParameter. - self visitFamixTThrowable: aFamixJavaTypeParameter. - self visitFamixTTypeArgument: aFamixJavaTypeParameter. - self visitFamixTTypeParameter: aFamixJavaTypeParameter. - self visitFamixJavaType: aFamixJavaTypeParameter + self visitFamixTCanBeStub: aTWithStatements. + self visitFamixTWithAccesses: aTWithStatements. + self visitFamixTWithInvocations: aTWithStatements. + self visitFamixTWithReferences: aTWithStatements ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaUnknownVariable: aFamixJavaUnknownVariable [ +FamixJavaTVisitor >> visitFamixTWithTypes: aTWithTypes [ - self visitFamixTUnknownVariable: aFamixJavaUnknownVariable. - self visitFamixJavaVariable: aFamixJavaUnknownVariable + self visitCollection: aTWithTypes types ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaVariable: aFamixJavaVariable [ +FamixJavaTVisitor >> visitTAssociationMetaLevelDependency: aTAssociationMetaLevelDependency [ - self visitFamixTInvocationsReceiver: aFamixJavaVariable. - self visitFamixJavaNamedEntity: aFamixJavaVariable + ] { #category : 'visiting' } -FamixJavaTVisitor >> visitFamixJavaWildcard: aFamixJavaWildcard [ +FamixJavaTVisitor >> visitTEntityMetaLevelDependency: aTEntityMetaLevelDependency [ - self visitFamixJavaTBounded: aFamixJavaWildcard. - self visitFamixTTypeArgument: aFamixJavaWildcard. - self visitFamixJavaType: aFamixJavaWildcard + ] diff --git a/src/Famix-Java-Entities/FamixJavaTWithInterfaces.trait.st b/src/Famix-Java-Entities/FamixJavaTWithInterfaces.trait.st index b1707a9c2..ae3dc21ef 100644 --- a/src/Famix-Java-Entities/FamixJavaTWithInterfaces.trait.st +++ b/src/Famix-Java-Entities/FamixJavaTWithInterfaces.trait.st @@ -27,14 +27,6 @@ FamixJavaTWithInterfaces classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaTWithInterfaces >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaTWithInterfaces: self ] { #category : 'accessing' } diff --git a/src/Famix-Java-Entities/FamixJavaType.class.st b/src/Famix-Java-Entities/FamixJavaType.class.st index daff518b2..c3d82459c 100644 --- a/src/Famix-Java-Entities/FamixJavaType.class.st +++ b/src/Famix-Java-Entities/FamixJavaType.class.st @@ -51,14 +51,6 @@ FamixJavaType class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaType >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaType: self ] { #category : 'Famix-Extensions' } diff --git a/src/Famix-Java-Entities/FamixJavaTypeParameter.class.st b/src/Famix-Java-Entities/FamixJavaTypeParameter.class.st index e0ece00ef..c74f9e8a8 100644 --- a/src/Famix-Java-Entities/FamixJavaTypeParameter.class.st +++ b/src/Famix-Java-Entities/FamixJavaTypeParameter.class.st @@ -41,12 +41,4 @@ FamixJavaTypeParameter class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaTypeParameter >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaTypeParameter: self ] diff --git a/src/Famix-Java-Entities/FamixJavaUnknownVariable.class.st b/src/Famix-Java-Entities/FamixJavaUnknownVariable.class.st index 126a1d1b2..281791326 100644 --- a/src/Famix-Java-Entities/FamixJavaUnknownVariable.class.st +++ b/src/Famix-Java-Entities/FamixJavaUnknownVariable.class.st @@ -43,12 +43,4 @@ FamixJavaUnknownVariable class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaUnknownVariable >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaUnknownVariable: self ] diff --git a/src/Famix-Java-Entities/FamixJavaVariable.class.st b/src/Famix-Java-Entities/FamixJavaVariable.class.st index 3fd9af776..1d4907c36 100644 --- a/src/Famix-Java-Entities/FamixJavaVariable.class.st +++ b/src/Famix-Java-Entities/FamixJavaVariable.class.st @@ -27,7 +27,6 @@ FamixJavaVariable class >> annotation [ - ^ self ] { #category : 'testing' } @@ -36,10 +35,3 @@ FamixJavaVariable class >> isAbstract [ ^ self == FamixJavaVariable ] - -{ #category : 'visitor' } -FamixJavaVariable >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaVariable: self -] diff --git a/src/Famix-Java-Entities/FamixJavaWildcard.class.st b/src/Famix-Java-Entities/FamixJavaWildcard.class.st index cd4ab87dc..6d09af2b2 100644 --- a/src/Famix-Java-Entities/FamixJavaWildcard.class.st +++ b/src/Famix-Java-Entities/FamixJavaWildcard.class.st @@ -32,12 +32,4 @@ FamixJavaWildcard class >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixJavaWildcard >> accept: aVisitor [ - - - ^ aVisitor visitFamixJavaWildcard: self ] diff --git a/src/Famix-Java-Fusionner/FamixFusionnerJava.class.st b/src/Famix-Java-Fusionner/FamixFusionnerJava.class.st index e4f49d0df..a1b45d831 100644 --- a/src/Famix-Java-Fusionner/FamixFusionnerJava.class.st +++ b/src/Famix-Java-Fusionner/FamixFusionnerJava.class.st @@ -138,6 +138,18 @@ FamixFusionnerJava >> visitFamixTAssociation: aFamixTAssociation [ ifFalse: [ aFamixTAssociation target: resourceEntity ] ] +{ #category : 'visiting' } +FamixFusionnerJava >> visitFamixTClass: aTClass [ + "We override because with the current implementation we have a problem if we do not visit two times some relations in exceptions." + + self visitFamixTInvocationsReceiver: aTClass. + self visitFamixTType: aTClass. + self visitFamixTWithAttributes: aTClass. + self visitFamixTWithComments: aTClass. + self visitFamixTWithInheritances: aTClass. + self visitFamixTWithMethods: aTClass +] + { #category : 'visiting - traits' } FamixFusionnerJava >> visitFamixTInvocable: aFamixTInvocable [ "similar to #visitFamixTAssociation: diff --git a/src/Famix-MetamodelBuilder-Core/Class.extension.st b/src/Famix-MetamodelBuilder-Core/Class.extension.st index 082ea907a..c1b7e0252 100644 --- a/src/Famix-MetamodelBuilder-Core/Class.extension.st +++ b/src/Famix-MetamodelBuilder-Core/Class.extension.st @@ -9,37 +9,3 @@ Class >> customTraitNames [ Class >> generatedSlots [ ^ self localSlots select: #isFameSlot ] - -{ #category : '*Famix-MetamodelBuilder-Core' } -Class >> generatedTraitNames [ - ^ self generatedTraits collect: #name -] - -{ #category : '*Famix-MetamodelBuilder-Core' } -Class >> generatedTraits [ - ^ self traits select: #isMetamodelEntity -] - -{ #category : '*Famix-MetamodelBuilder-Core' } -Class >> needToAdaptTo: aRGClass [ - | generatedTraitNames generatedTraitDefinitions | - generatedTraitNames := self generatedTraitNames. - - "We need to manage the cases where it will be things like `FamixJavaTStructuralEntity - {#mooseNameOn:}`" - generatedTraitDefinitions := self traitComposition rootMembers - select: [ :member | generatedTraitNames includes: member name ] - thenCollect: #traitCompositionExpression. - - "If the new class has a trait precedence, we check that the current one also have the same. Else we need to adapt. - If the new class does not have a trait precedent, we check that the current one also does not have one. Else we need to adapt." - aRGClass properties - at: #precedingTrait - ifPresent: [ :aTrait | (self traitComposition isPrecedingSequence and: [ self traitComposition preferedTrait name = aTrait ]) ifFalse: [ ^ true ] ] - ifAbsent: [ self traitComposition isPrecedingSequence ifTrue: [ ^ true ] ]. - - (generatedTraitDefinitions equalsTo: aRGClass traitsDefinitions) ifFalse: [ ^ true ]. - - ((self generatedSlots collect: #definitionString) equalsTo: (aRGClass slots collect: #definitionString)) ifFalse: [ ^ true ]. - - ^ (self superclass ifNil: [ Trait ]) name ~= aRGClass superclass name -] diff --git a/src/Famix-MetamodelBuilder-Core/ClassDescription.extension.st b/src/Famix-MetamodelBuilder-Core/ClassDescription.extension.st deleted file mode 100644 index 19a28eedb..000000000 --- a/src/Famix-MetamodelBuilder-Core/ClassDescription.extension.st +++ /dev/null @@ -1,12 +0,0 @@ -Extension { #name : 'ClassDescription' } - -{ #category : '*Famix-MetamodelBuilder-Core' } -ClassDescription >> needToAdaptToMethod: aRGMethod [ - - ^ self - compiledMethodAt: aRGMethod selector - ifPresent: [ :realMethod | - (aRGMethod sourceCode = realMethod sourceCode and: [ - aRGMethod protocol = realMethod protocolName ]) not ] - ifAbsent: [ true ] -] diff --git a/src/Famix-MetamodelBuilder-Core/FamixAbstractMetamodelGeneratorCleaningStrategy.class.st b/src/Famix-MetamodelBuilder-Core/FamixAbstractMetamodelGeneratorCleaningStrategy.class.st index 9214238e2..e4e877296 100644 --- a/src/Famix-MetamodelBuilder-Core/FamixAbstractMetamodelGeneratorCleaningStrategy.class.st +++ b/src/Famix-MetamodelBuilder-Core/FamixAbstractMetamodelGeneratorCleaningStrategy.class.st @@ -9,9 +9,9 @@ Cleaning strategies are used by a MM generator to know how to regenerate a MM. Class { #name : 'FamixAbstractMetamodelGeneratorCleaningStrategy', #superclass : 'Object', - #category : 'Famix-MetamodelBuilder-Core-Cleaning', + #category : 'Famix-MetamodelBuilder-Core-Basic', #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Cleaning' + #tag : 'Basic' } { #category : 'testing' } diff --git a/src/Famix-MetamodelBuilder-Core/FamixMetamodelBuilder.class.st b/src/Famix-MetamodelBuilder-Core/FamixMetamodelBuilder.class.st index 863721adc..d4c8bd855 100644 --- a/src/Famix-MetamodelBuilder-Core/FamixMetamodelBuilder.class.st +++ b/src/Famix-MetamodelBuilder-Core/FamixMetamodelBuilder.class.st @@ -48,15 +48,12 @@ Class { #name : 'FamixMetamodelBuilder', #superclass : 'Object', #instVars : [ - 'environment', 'classes', 'traits', - 'relations', 'generator', 'testingSelectorsMapping', 'configuration', 'parentBuilder', - 'extensionBehaviors', 'withoutBuilder' ], #category : 'Famix-MetamodelBuilder-Core-Basic', @@ -92,16 +89,6 @@ FamixMetamodelBuilder >> allSubBuilders [ ^ self generator ifNil: [ Set new ] ifNotNil: #allSubBuilders ] -{ #category : 'accessing' } -FamixMetamodelBuilder >> apply [ - - self environment apply. - - "This next line should not be here... - This feature should fill a ring model that should be manipulate by the apply above to check if we need the code, to be able to clean it and other mechanisms. But we do not yet support to create extension methods like this and I don't have the time to implement it for now. So, breaking layers we generate the extensions after we generated everything else in the 'right' way." - self generateTestingMethodsOfRemoteEntities -] - { #category : 'accessing' } FamixMetamodelBuilder >> association: anAssociationName [ @@ -123,7 +110,10 @@ FamixMetamodelBuilder >> baseImportingContextName [ FamixMetamodelBuilder >> changesToApply [ self prepareGeneration. - ^ self environment changesToApply + + ^ (FmxMBChangesBuilderVisitor visit: self) + filterRedoundantChanges; + changesToApply ] { #category : 'initialization' } @@ -147,7 +137,7 @@ FamixMetamodelBuilder >> classes [ { #category : 'accessing' } FamixMetamodelBuilder >> concreteClasses [ - ^ self classes reject: [ :class | class isAbstractClass or: [ class isModelClass or: [ class isMetamodelClassGroup ] ] ] + ^ self classes select: #isConcreteClass ] { #category : 'accessing' } @@ -188,8 +178,9 @@ FamixMetamodelBuilder >> ensureEntityClassIsTheCommonSuperclass [ "All classes should have a common superclass called Entity. Here we ensure it is created and used." - self classes iterator | #isRoot selectIt - | #isMetamodelClassGroup rejectIt | #isModelClass rejectIt + self classes iterator + | #isClassEntity selectIt + | #isRoot selectIt | [ :class | class name = #Entity ] rejectIt | [ :class | class --|> (self ensureAbstractClassNamed: #Entity) ] doIt > NullAddableObject @@ -215,33 +206,15 @@ FamixMetamodelBuilder >> entityCreatorTrait [ self traits add: (FmxMBEntityCreatorTrait new builder: self; prefix: self configuration prefix; - packageName: self configuration packageName; + packageName: self packageName; yourself) ] ] -{ #category : 'accessing' } -FamixMetamodelBuilder >> environment [ - - ^ environment -] - -{ #category : 'accessing' } -FamixMetamodelBuilder >> environment: anObject [ - - environment := anObject -] - -{ #category : 'accessing' } -FamixMetamodelBuilder >> extensionBehaviors [ - - ^ extensionBehaviors -] - { #category : 'generating' } FamixMetamodelBuilder >> generate [ self prepareGeneration. - self apply + FmxMBChangesBuilderVisitor generate: self ] { #category : 'generating' } @@ -253,51 +226,17 @@ FamixMetamodelBuilder >> generateImportingContext [ aClass := FmxMBImportingContext new. aClass builder: self. aClass prefix: self configuration prefix. - aClass packageName: self configuration packageName. + aClass packageName: self packageName. aClass tag: 'Import'. - aClass generate + + self classes add: aClass. + ^ aClass ] { #category : 'generating' } FamixMetamodelBuilder >> generateRemotes [ - self traits do: [ :each | each generateRemotes ]. - self classes do: [ :each | each generateRemotes ]. - - self apply -] - -{ #category : 'generating' } -FamixMetamodelBuilder >> generateTestingMethodsOfRemoteEntities [ - - | entitiesWithRemoteSuperclasses | - entitiesWithRemoteSuperclasses := self classes groupedBy: [ :class | - class remoteClassGeneratization ]. - - - entitiesWithRemoteSuperclasses keysAndValuesDo: [ - :remoteClass - :subclasses | - remoteClass ifNotNil: [ - | subclassesAndTraits | - subclassesAndTraits := subclasses flatCollectAsSet: [ :subclass | - subclass allTransitiveTraits - , { subclass } ]. - - self testingSelectorsMapping keysAndValuesDo: [ - :behavior - :selectors | - ((self shouldGeneratorTestingMethodsOf: behavior in: remoteClass) and: [ - subclassesAndTraits includes: behavior ]) ifTrue: [ - selectors do: [ :selector | - (remoteClass realClass includesSelector: selector) - ifFalse: [ - self environment - compile: - ('{1}\\ \ ^ false' withCRs format: - { selector }) - in: remoteClass realClass - classified: '*' , self configuration packageName ] ] ] ] ] ] + FmxMBRemoteChangesBuilderVisitor generate: self ] { #category : 'accessing' } @@ -340,16 +279,6 @@ In order to fix the issue you should use #remoteTrait:withPrefix: in your genera ^ self traitNamed: aSymbol ] -{ #category : 'generating' } -FamixMetamodelBuilder >> groupOf: aClass [ - - | group | - group := (self newClassGroupNamed: aClass name , 'Group') - innerClass: aClass; - yourself. - ^ group -] - { #category : 'accessing' } FamixMetamodelBuilder >> importingContextName [ @@ -360,14 +289,11 @@ FamixMetamodelBuilder >> importingContextName [ FamixMetamodelBuilder >> initialize [ super initialize. - environment := FmxMBRingEnvironment for: self. configuration := FmxMBConfiguration new. classes := OrderedCollection new. traits := OrderedCollection new. - extensionBehaviors := OrderedCollection new. - relations := OrderedCollection new. testingSelectorsMapping := Dictionary new. withoutBuilder := false ] @@ -382,7 +308,7 @@ FamixMetamodelBuilder >> model [ aClass := FmxMBModel new. aClass builder: self. aClass prefix: self configuration prefix. - aClass packageName: self configuration packageName. + aClass packageName: self packageName. self classes add: aClass. ^ aClass ] @@ -403,10 +329,11 @@ FamixMetamodelBuilder >> newAbstractClassNamed: aClassName [ FamixMetamodelBuilder >> newClass [ | aClass | - aClass := FmxMBClass new. - aClass builder: self. - aClass prefix: self configuration prefix. - aClass packageName: self configuration packageName. + aClass := FmxMBClassEntity new + builder: self; + prefix: self configuration prefix; + packageName: self packageName; + yourself. self classes add: aClass. ^ aClass ] @@ -418,7 +345,7 @@ FamixMetamodelBuilder >> newClassGroup [ aClass := FmxMBClassGroup new. aClass builder: self. aClass prefix: self configuration prefix. - aClass packageName: self configuration packageName. + aClass packageName: self packageName. self classes add: aClass. ^ aClass ] @@ -449,21 +376,11 @@ FamixMetamodelBuilder >> newClassNamed: aClassName comment: aString [ yourself ] -{ #category : 'initialization' } -FamixMetamodelBuilder >> newRelation [ - - | aRelation | - aRelation := FmxMBRelation new. - aRelation builder: self. - self relations add: aRelation. - ^ aRelation -] - { #category : 'initialization' } FamixMetamodelBuilder >> newTrait [ | aTrait | - aTrait := FmxMBTrait new. + aTrait := FmxMBTraitEntity new. aTrait builder: self. aTrait prefix: self configuration prefix. aTrait packageName: self configuration packageName. @@ -474,9 +391,9 @@ FamixMetamodelBuilder >> newTrait [ { #category : 'initialization' } FamixMetamodelBuilder >> newTraitNamed: aTraitName [ - (self traits select: [ :each | - each fullName = (self configuration prefix , aTraitName) ]) - ifNotEmpty: [ FmxMBEntityAlreadyExists signal ]. + | fullName | + fullName := self configuration prefix , aTraitName. + (self traits select: [ :each | each fullName = fullName ]) ifNotEmpty: [ FmxMBEntityAlreadyExists signal ]. ^ self unsafeNewTraitNamed: aTraitName ] @@ -489,6 +406,12 @@ FamixMetamodelBuilder >> newTraitNamed: aClassName comment: aString [ yourself ] +{ #category : 'accessing' } +FamixMetamodelBuilder >> packageName [ + + ^ self configuration packageName +] + { #category : 'accessing' } FamixMetamodelBuilder >> parentBuilder [ @@ -499,8 +422,7 @@ FamixMetamodelBuilder >> parentBuilder [ { #category : 'accessing' } FamixMetamodelBuilder >> parentBuilder: anObject [ - parentBuilder := anObject. - self environment: parentBuilder environment + parentBuilder := anObject ] { #category : 'tests support' } @@ -514,29 +436,20 @@ FamixMetamodelBuilder >> parentBuilderPackageName [ { #category : 'generating' } FamixMetamodelBuilder >> prepareBehaviorsGeneration [ - self traitsWithSubBuildersTraits do: [ :each | - self testingSelectorsMapping at: each put: each testingSelectors ]. - self classes do: [ :each | - self testingSelectorsMapping at: each put: each testingSelectors ]. - self traits do: [ :each | each generate ]. - self sortedClasses do: [ :each | each generate ]. - self extensionBehaviors do: [ :each | each generate ] + self traitsWithSubBuildersTraits do: [ :each | self testingSelectorsMapping at: each put: each testingSelectors ]. + self classes do: [ :each | self testingSelectorsMapping at: each put: each testingSelectors ] ] { #category : 'generating' } FamixMetamodelBuilder >> prepareGeneration [ - self registerPackages. self ensureEntityClassIsTheCommonSuperclass. - self shouldGenerateModel - ifTrue: [ - | model | - model := self model. - self withSubBuildersAddEntityCreatorTraitTo: model. - self prepareBehaviorsGeneration. - self generateImportingContext. - self entityCreatorTrait generateEntityCreationMethods ] - ifFalse: [ self prepareBehaviorsGeneration ] + + self shouldGenerateModel ifTrue: [ + self withSubBuildersAddEntityCreatorTraitTo: self model. + self generateImportingContext ]. + + self prepareBehaviorsGeneration ] { #category : 'printing' } @@ -552,37 +465,14 @@ FamixMetamodelBuilder >> printOn: aStream [ ] { #category : 'generating' } -FamixMetamodelBuilder >> registerPackages [ - - self environment registerPackage: self configuration packageName -] - -{ #category : 'accessing' } -FamixMetamodelBuilder >> relations [ - - ^ relations -] - -{ #category : 'accessing' } -FamixMetamodelBuilder >> relations: anObject [ - - - relations := anObject -] - -{ #category : 'accessing' } -FamixMetamodelBuilder >> reservedKeywords [ - - ^ { #class } -] +FamixMetamodelBuilder >> remoteChangesToApply [ -{ #category : 'accessing' } -FamixMetamodelBuilder >> safeAnnotationPackageName [ - - ^ self configuration packageNameForAnnotations asSymbol printString + ^ (FmxMBRemoteChangesBuilderVisitor visit: self) + filterRedoundantChanges; + changesToApply ] -{ #category : 'generating' } +{ #category : 'asserting' } FamixMetamodelBuilder >> shouldGenerateModel [ withoutBuilder ifTrue: [ ^ false ]. @@ -613,7 +503,7 @@ FamixMetamodelBuilder >> sortedClasses [ ^ self classes sorted: [ :class | class isModelClass ifTrue: [ -1 ] - ifFalse: [ class allClassGeneralizations size ] ] ascending + ifFalse: [ class allSuperclasses size ] ] ascending ] { #category : 'accessing' } @@ -632,12 +522,6 @@ FamixMetamodelBuilder >> subBuilders [ ^ self generator ifNil: [ #( ) ] ifNotNil: #subBuilders ] -{ #category : 'tests support' } -FamixMetamodelBuilder >> testingEnvironment [ - - ^ self environment ringEnvironment -] - { #category : 'accessing' } FamixMetamodelBuilder >> testingSelectorsMapping [ diff --git a/src/Famix-MetamodelBuilder-Core/FamixMetamodelGenerator.class.st b/src/Famix-MetamodelBuilder-Core/FamixMetamodelGenerator.class.st index 26f5d59ef..4d7137d3d 100644 --- a/src/Famix-MetamodelBuilder-Core/FamixMetamodelGenerator.class.st +++ b/src/Famix-MetamodelBuilder-Core/FamixMetamodelGenerator.class.st @@ -88,7 +88,7 @@ FamixMetamodelGenerator class >> generateAllMetamodels [ { #category : 'generation' } FamixMetamodelGenerator class >> generateAllMetamodelsSuchAs: aBlock [ - (self metamodelsToGenerate select: aBlock) do: [ :mm | mm generate ] displayingProgress: [ :mm | 'Regenerate ' , mm name ] + (self metamodelsToGenerate select: aBlock) do: [ :mm | mm generate ] displayingProgress: [ :mm | 'Regenerate ' , mm name ] every: 200 ] { #category : 'generation' } @@ -153,13 +153,6 @@ FamixMetamodelGenerator class >> packageName [ self subclassResponsibility ] -{ #category : 'accessing' } -FamixMetamodelGenerator class >> packageNameForAnnotations [ - - - ^ self packageName -] - { #category : 'accessing' } FamixMetamodelGenerator class >> prefix [ @@ -194,8 +187,7 @@ FamixMetamodelGenerator >> adoptBuilder: aBuilder [ aBuilder configuration prefix: self prefix; - packageName: self packageName; - packageNameForAnnotations: self packageNameForAnnotations + packageName: self packageName ] { #category : 'accessing' } @@ -213,12 +205,18 @@ FamixMetamodelGenerator >> allSubBuilders [ FamixMetamodelGenerator >> apply: aTrait on: aGeneratedClass oppositeOn: anotherGeneratedClass [ "A shorter version of #apply:on:oppositeTrait:on: Only works if aTrait has excatly 1 opposite (slot)" - | oppositeTrait | - ((builder getTraitNamed: aTrait) properties size = 1) ifFalse: [ self error: '#apply:on:oppositeOn: only accept traits with a unique opposite' ]. + | oppositeTrait properties | + properties := (builder getTraitNamed: aTrait) propertiesAndRelations. + + properties size = 1 ifFalse: [ self error: '#apply:on:oppositeOn: only accept traits with a unique opposite' ]. - oppositeTrait := (builder getTraitNamed: aTrait) properties anyOne relation side relatedClass name. - self apply: aTrait on: aGeneratedClass oppositeTrait: oppositeTrait on: anotherGeneratedClass + oppositeTrait := properties anyOne oppositeClass name. + self + apply: aTrait + on: aGeneratedClass + oppositeTrait: oppositeTrait + on: anotherGeneratedClass ] { #category : 'definition' } @@ -246,8 +244,13 @@ FamixMetamodelGenerator >> builder: anObject [ { #category : 'testing' } FamixMetamodelGenerator >> changesToApply [ + + | allChanges | + allChanges := OrderedCollection new. self define. - ^ self builder changesToApply + allChanges addAll: self builder changesToApply. + self subBuilders do: [ :remote | allChanges addAll: remote remoteChangesToApply ]. + ^ allChanges ] { #category : 'accessing' } @@ -345,18 +348,13 @@ FamixMetamodelGenerator >> initialize [ builder := self newBuilder. self adoptBuilder: builder. - subBuildersMapByPrefix := Dictionary newFrom: - (self class submetamodels collect: [ :each | - | subbuilder | - subbuilder := each - builderWithDefinitions. - subbuilder parentBuilder: self builder. - builder environment: builder environment. - each prefix -> subbuilder ]). + subBuildersMapByPrefix := Dictionary newFrom: (self class submetamodels collect: [ :each | + | subbuilder | + subbuilder := each builderWithDefinitions. + subbuilder parentBuilder: self builder. + each prefix -> subbuilder ]). - metamodelToolGenerators := self class metamodelToolGenerators - collect: [ :generatorClass | - generatorClass forGenerator: self ] + metamodelToolGenerators := self class metamodelToolGenerators collect: [ :generatorClass | generatorClass forGenerator: self ] ] { #category : 'accessing' } @@ -412,13 +410,6 @@ FamixMetamodelGenerator >> packageName [ ] -{ #category : 'definition' } -FamixMetamodelGenerator >> packageNameForAnnotations [ - - ^ self class packageNameForAnnotations - -] - { #category : 'definition' } FamixMetamodelGenerator >> prefix [ diff --git a/src/Famix-MetamodelBuilder-Core/FamixMetamodelGeneratorNoCleaningStrategy.class.st b/src/Famix-MetamodelBuilder-Core/FamixMetamodelGeneratorNoCleaningStrategy.class.st index baf269089..c4fea115f 100644 --- a/src/Famix-MetamodelBuilder-Core/FamixMetamodelGeneratorNoCleaningStrategy.class.st +++ b/src/Famix-MetamodelBuilder-Core/FamixMetamodelGeneratorNoCleaningStrategy.class.st @@ -7,9 +7,9 @@ I am a cleaning strategy that cleans nothing (Null design patter) Class { #name : 'FamixMetamodelGeneratorNoCleaningStrategy', #superclass : 'FamixAbstractMetamodelGeneratorCleaningStrategy', - #category : 'Famix-MetamodelBuilder-Core-Cleaning', + #category : 'Famix-MetamodelBuilder-Core-Basic', #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Cleaning' + #tag : 'Basic' } { #category : 'action' } diff --git a/src/Famix-MetamodelBuilder-Core/FamixMetamodelGeneratorTotalCleaningStrategy.class.st b/src/Famix-MetamodelBuilder-Core/FamixMetamodelGeneratorTotalCleaningStrategy.class.st index c25daa50e..0e60f733a 100644 --- a/src/Famix-MetamodelBuilder-Core/FamixMetamodelGeneratorTotalCleaningStrategy.class.st +++ b/src/Famix-MetamodelBuilder-Core/FamixMetamodelGeneratorTotalCleaningStrategy.class.st @@ -7,9 +7,9 @@ I am a hard cleaning strategy. I'll just delete the package generated by the gen Class { #name : 'FamixMetamodelGeneratorTotalCleaningStrategy', #superclass : 'FamixAbstractMetamodelGeneratorCleaningStrategy', - #category : 'Famix-MetamodelBuilder-Core-Cleaning', + #category : 'Famix-MetamodelBuilder-Core-Basic', #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Cleaning' + #tag : 'Basic' } { #category : 'action' } diff --git a/src/Famix-MetamodelBuilder-Core/FamixShouldNotUseSymbolsToAccessLocalEntities.class.st b/src/Famix-MetamodelBuilder-Core/FamixShouldNotUseSymbolsToAccessLocalEntities.class.st deleted file mode 100644 index 91fef3f64..000000000 --- a/src/Famix-MetamodelBuilder-Core/FamixShouldNotUseSymbolsToAccessLocalEntities.class.st +++ /dev/null @@ -1,53 +0,0 @@ -Class { - #name : 'FamixShouldNotUseSymbolsToAccessLocalEntities', - #superclass : 'Warning', - #instVars : [ - 'symbol', - 'generator' - ], - #category : 'Famix-MetamodelBuilder-Core-Exception', - #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Exception' -} - -{ #category : 'signalling' } -FamixShouldNotUseSymbolsToAccessLocalEntities class >> signalFor: aSymbol [ - self new - symbol: aSymbol; - signal -] - -{ #category : 'signalling' } -FamixShouldNotUseSymbolsToAccessLocalEntities class >> signalFor: aSymbol from: aGenerator [ - self new - symbol: aSymbol; - generator: aGenerator; - signal -] - -{ #category : 'accessing' } -FamixShouldNotUseSymbolsToAccessLocalEntities >> generator [ - ^ generator -] - -{ #category : 'accessing' } -FamixShouldNotUseSymbolsToAccessLocalEntities >> generator: anObject [ - generator := anObject -] - -{ #category : 'accessing' } -FamixShouldNotUseSymbolsToAccessLocalEntities >> messageText [ - ^ 'Should not use a symbol to access to local entity named: ' , symbol , ' in: ' , generator class name - , - '. In a Famix generator, local entities should be accessed via a direct reference and remote entity should be accessed via symbol, or via a direct reference in case of conflict in multiple sub metamodels.' -] - -{ #category : 'accessing' } -FamixShouldNotUseSymbolsToAccessLocalEntities >> symbol [ - ^ symbol -] - -{ #category : 'accessing' } -FamixShouldNotUseSymbolsToAccessLocalEntities >> symbol: anObject [ - symbol := anObject -] diff --git a/src/Famix-MetamodelBuilder-Core/FmxBehavioralAddition.class.st b/src/Famix-MetamodelBuilder-Core/FmxBehavioralAddition.class.st new file mode 100644 index 000000000..1e659ded3 --- /dev/null +++ b/src/Famix-MetamodelBuilder-Core/FmxBehavioralAddition.class.st @@ -0,0 +1,154 @@ +Class { + #name : 'FmxBehavioralAddition', + #superclass : 'FmxCodeChange', + #instVars : [ + 'name', + 'traits', + 'slots', + 'package', + 'tag', + 'traitComposition' + ], + #category : 'Famix-MetamodelBuilder-Core-Generation', + #package : 'Famix-MetamodelBuilder-Core', + #tag : 'Generation' +} + +{ #category : 'accessing' } +FmxBehavioralAddition >> apply [ + + | makeBlock | + makeBlock := [ :builder | + self initialize: builder. + builder + name: name; + package: package; + tag: tag. + + traits ifNotNil: [ builder traits: self traitComposition ]. + slots ifNotNil: [ builder slots: (self class compiler evaluate: '{' , (slots joinUsing: '. ') , '}') ] ]. + + "If the class already exist we update it to not remove the class slots and shared variables." + self class environment + at: name + ifPresent: [ :class | self class classInstaller update: class to: makeBlock ] + ifAbsent: [ self class classInstaller make: makeBlock ] +] + +{ #category : 'initialization' } +FmxBehavioralAddition >> initialize: aBuilder [ + + self subclassResponsibility +] + +{ #category : 'testing' } +FmxBehavioralAddition >> isRequired [ + + ^ self realClass + ifNil: [ true ] + ifNotNil: [ :realClass | + realClass localSlots ifEmpty: [ self slots ifNotNil: [ ^ true ] ] ifNotEmpty: [ :currentSlots | + self slots ifNil: [ ^ true ]. + self slots size = currentSlots size ifFalse: [ ^ true ]. + (self slots allSatisfy: [ :slotDefinition | currentSlots anySatisfy: [ :slot | slot definitionString = slotDefinition ] ]) ifFalse: [ ^ true ] ]. + + realClass traitComposition isEmpty + ifTrue: [ self traits ifNotNil: [ ^ true ] ] + ifFalse: [ + self traits ifNil: [ ^ true ]. + self traitComposition = realClass traitComposition ifFalse: [ ^ true ] ]. + + realClass package name = self package ifFalse: [ ^ true ]. + realClass packageTag name ~= self tag ] +] + +{ #category : 'accessing' } +FmxBehavioralAddition >> name [ + ^ name +] + +{ #category : 'accessing' } +FmxBehavioralAddition >> name: anObject [ + name := anObject +] + +{ #category : 'accessing' } +FmxBehavioralAddition >> package [ + ^ package +] + +{ #category : 'accessing' } +FmxBehavioralAddition >> package: anObject [ + package := anObject +] + +{ #category : 'printing' } +FmxBehavioralAddition >> printOn: aStream [ + + super printOn: aStream. + + aStream + nextPutAll: '[ name: '; + nextPutAll: (name ifNil: [ 'unnumed' ]). + slots ifNotNil: [ + aStream + nextPutAll: ' slots: '; + print: slots ]. + traits ifNotNil: [ + aStream + nextPutAll: ' uses:  '; + print: traits ]. + aStream + nextPutAll: ' package: '; + nextPutAll: package; + nextPutAll: ' tag: '; + nextPutAll: tag; + nextPutAll: ']' +] + +{ #category : 'accessing' } +FmxBehavioralAddition >> realClass [ + + ^ self class environment at: self name ifAbsent: [ nil ] +] + +{ #category : 'accessing' } +FmxBehavioralAddition >> slots [ + ^ slots +] + +{ #category : 'accessing' } +FmxBehavioralAddition >> slots: anObject [ + slots := anObject +] + +{ #category : 'accessing' } +FmxBehavioralAddition >> tag [ + ^ tag +] + +{ #category : 'accessing' } +FmxBehavioralAddition >> tag: anObject [ + tag := anObject +] + +{ #category : 'testing' } +FmxBehavioralAddition >> traitComposition [ + "Cached" + + ^ traitComposition ifNil: [ + traitComposition := (OpalCompiler new + source: self traits; + failBlock: [ ^ nil ]; "This might happen if a trait is not yet in the system. In that case we return #nil to make #isRequired return true. Then during the application of the change I'll be recomputed." + evaluate) asTraitComposition ] +] + +{ #category : 'accessing' } +FmxBehavioralAddition >> traits [ + ^ traits +] + +{ #category : 'accessing' } +FmxBehavioralAddition >> traits: anObject [ + traits := anObject +] diff --git a/src/Famix-MetamodelBuilder-Core/FmxClassAddition.class.st b/src/Famix-MetamodelBuilder-Core/FmxClassAddition.class.st index 43c6d7fac..7a9f33ea8 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxClassAddition.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxClassAddition.class.st @@ -21,18 +21,13 @@ Internal Representation and Key Implementation Points. " Class { #name : 'FmxClassAddition', - #superclass : 'FmxCodeChange', + #superclass : 'FmxBehavioralAddition', #instVars : [ - 'name', - 'superclass', - 'traits', - 'slots', - 'package', - 'tag' + 'superclass' ], - #category : 'Famix-MetamodelBuilder-Core-Changes', + #category : 'Famix-MetamodelBuilder-Core-Generation', #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Changes' + #tag : 'Generation' } { #category : 'accessing' } @@ -43,24 +38,13 @@ FmxClassAddition class >> priority [ ] { #category : 'accessing' } -FmxClassAddition >> apply [ - - | makeBlock | - makeBlock := [ :builder | - self initialize: builder. - builder - name: name; - package: package; - tag: tag. - - traits ifNotNil: [ builder traits: (self class compiler evaluate: traits) ]. - slots ifNotNil: [ builder slots: (self class compiler evaluate: slots) ] ]. - - "If the class already exist we update it to not remove the class slots and shared variables." - self class environment - at: name - ifPresent: [ :class | self class classInstaller update: class to: makeBlock ] - ifAbsent: [ self class classInstaller make: makeBlock ] +FmxClassAddition >> followingChangesIn: changes [ + "I should declare that each class with me as superclass should be built after me." + + | result | + result := super followingChangesIn: changes. + result addAll: (changes select: [ :change | change priority = self priority and: [ change superclass = name ] ]). + ^ result ] { #category : 'accessing' } @@ -69,32 +53,22 @@ FmxClassAddition >> initialize: builder [ builder superclass: (self class environment at: superclass) ] -{ #category : 'accessing' } -FmxClassAddition >> name: anObject [ - name := anObject -] +{ #category : 'testing' } +FmxClassAddition >> isRequired [ -{ #category : 'accessing' } -FmxClassAddition >> package: anObject [ - package := anObject + | realClass | + super isRequired ifTrue: [ ^ true ]. + + (realClass := self realClass) isTrait ifTrue: [ ^ true ]. + ^ self superclass ~= realClass superclass name ] { #category : 'accessing' } -FmxClassAddition >> slots: anObject [ - slots := anObject +FmxClassAddition >> superclass [ + ^ superclass ] { #category : 'accessing' } FmxClassAddition >> superclass: anObject [ superclass := anObject ] - -{ #category : 'accessing' } -FmxClassAddition >> tag: anObject [ - tag := anObject -] - -{ #category : 'accessing' } -FmxClassAddition >> traits: anObject [ - traits := anObject -] diff --git a/src/Famix-MetamodelBuilder-Core/FmxClassCommentUpdate.class.st b/src/Famix-MetamodelBuilder-Core/FmxClassCommentUpdate.class.st index ecd0dd60e..50c3f40df 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxClassCommentUpdate.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxClassCommentUpdate.class.st @@ -22,9 +22,9 @@ Class { #instVars : [ 'comment' ], - #category : 'Famix-MetamodelBuilder-Core-Changes', + #category : 'Famix-MetamodelBuilder-Core-Generation', #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Changes' + #tag : 'Generation' } { #category : 'instance creation' } @@ -37,6 +37,7 @@ FmxClassCommentUpdate class >> className: aSymbol comment: aString [ { #category : 'accessing' } FmxClassCommentUpdate >> apply [ + self realClass comment: self comment ] @@ -49,3 +50,11 @@ FmxClassCommentUpdate >> comment [ FmxClassCommentUpdate >> comment: anObject [ comment := anObject ] + +{ #category : 'testing' } +FmxClassCommentUpdate >> isRequired [ + + ^ self realClass + ifNil: [ true ] + ifNotNil: [ :class | class comment ~= comment ] +] diff --git a/src/Famix-MetamodelBuilder-Core/FmxClassRemoval.class.st b/src/Famix-MetamodelBuilder-Core/FmxClassRemoval.class.st index 6da564d03..72e80e1ad 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxClassRemoval.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxClassRemoval.class.st @@ -22,9 +22,9 @@ Class { #instVars : [ 'class' ], - #category : 'Famix-MetamodelBuilder-Core-Changes', + #category : 'Famix-MetamodelBuilder-Core-Generation', #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Changes' + #tag : 'Generation' } { #category : 'instance creation' } diff --git a/src/Famix-MetamodelBuilder-Core/FmxCodeChange.class.st b/src/Famix-MetamodelBuilder-Core/FmxCodeChange.class.st index ef016555f..bd4342076 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxCodeChange.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxCodeChange.class.st @@ -16,9 +16,9 @@ Public API and Key Messages Class { #name : 'FmxCodeChange', #superclass : 'Object', - #category : 'Famix-MetamodelBuilder-Core-Changes', + #category : 'Famix-MetamodelBuilder-Core-Generation', #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Changes' + #tag : 'Generation' } { #category : 'testing' } @@ -38,8 +38,26 @@ FmxCodeChange >> apply [ self subclassResponsibility ] +{ #category : 'accessing' } +FmxCodeChange >> followingChangesIn: changes [ + "I should filter the changes in parameter to select changes that should be built after me." + + ^ changes select: [ :change | self priority < change priority ] +] + +{ #category : 'testing' } +FmxCodeChange >> isRequired [ + + ^ true +] + { #category : 'accessing' } FmxCodeChange >> priority [ ^ self class priority ] + +{ #category : 'sorting' } +FmxCodeChange >> threeWayCompareTo: anotherObject [ + ^ self printString threeWayCompareTo: anotherObject printString +] diff --git a/src/Famix-MetamodelBuilder-Core/FmxLazyClassChange.class.st b/src/Famix-MetamodelBuilder-Core/FmxLazyClassChange.class.st index c333684fb..2fcb3e935 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxLazyClassChange.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxLazyClassChange.class.st @@ -20,9 +20,9 @@ Class { 'className', 'isClassSide' ], - #category : 'Famix-MetamodelBuilder-Core-Changes', + #category : 'Famix-MetamodelBuilder-Core-Generation', #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Changes' + #tag : 'Generation' } { #category : 'testing' } @@ -69,6 +69,6 @@ FmxLazyClassChange >> printOn: aStream [ { #category : 'accessing' } FmxLazyClassChange >> realClass [ | class | - class := self class environment at: self className. + class := self class environment at: self className ifAbsent: [ ^ nil ]. ^ self isClassSide ifTrue: [ class class ] ifFalse: [ class ] ] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBAbstractChangesBuilderVisitor.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBAbstractChangesBuilderVisitor.class.st new file mode 100644 index 000000000..e7af4e701 --- /dev/null +++ b/src/Famix-MetamodelBuilder-Core/FmxMBAbstractChangesBuilderVisitor.class.st @@ -0,0 +1,274 @@ +" +I am ar abstract visitor to generate the code of metamodels. + +My subclasses will visit the model generated by the generator and build a list of changes to apply to the system. +Then I'll filter the changes to keep only those that would have an impact if we apply them on the system. +Then I sort them (we need to create a class before adding its methods for example) and apply the changes. + +I am using `FmxMBMethodsFactory` to build the code of all methods to generate without poluting the visitors. +" +Class { + #name : 'FmxMBAbstractChangesBuilderVisitor', + #superclass : 'FmxMBWalkerVisitor', + #instVars : [ + 'builder', + 'currentBehavioral', + 'changesToApply' + ], + #category : 'Famix-MetamodelBuilder-Core-Generation', + #package : 'Famix-MetamodelBuilder-Core', + #tag : 'Generation' +} + +{ #category : 'instance creation' } +FmxMBAbstractChangesBuilderVisitor class >> generate: aBuilder [ + + (self visit: aBuilder) + filterRedoundantChanges; + applyChanges +] + +{ #category : 'private' } +FmxMBAbstractChangesBuilderVisitor >> addMethod: sourceCode classSide: aBoolean protocol: protocol [ + + self + addMethod: sourceCode + in: currentBehavioral fullName + classSide: aBoolean + protocol: protocol +] + +{ #category : 'private' } +FmxMBAbstractChangesBuilderVisitor >> addMethod: sourceCode in: aClassName classSide: aBoolean protocol: protocol [ + + changesToApply add: (FmxMethodAddition + className: aClassName + isClassSide: aBoolean + sourceCode: sourceCode + protocol: protocol) +] + +{ #category : 'private' } +FmxMBAbstractChangesBuilderVisitor >> addMethod: sourceCode in: aClassName protocol: protocol [ + + self + addMethod: sourceCode + in: aClassName + classSide: false + protocol: protocol +] + +{ #category : 'private' } +FmxMBAbstractChangesBuilderVisitor >> addMethod: sourceCode protocol: protocol [ + + self addMethod: sourceCode in: currentBehavioral fullName protocol: protocol +] + +{ #category : 'operations' } +FmxMBAbstractChangesBuilderVisitor >> applyChanges [ + + | dependencies | + changesToApply ifEmpty: [ ^ self ]. + + "Now we have a list of changes to apply. Some changes needs to by applied before others (for example, we need to create a classe to compile its methods or compile superclasses before their subclasses or traits before their users)." + dependencies := changesToApply inject: Dictionary new into: [ :dictionary :change | + dictionary + at: change put: (change followingChangesIn: (changesToApply copyWithout: change)); + yourself ]. + (AITopologicalSorting sort: changesToApply followingIncomingProperty: [ :change | dependencies at: change ]) do: #apply +] + +{ #category : 'private' } +FmxMBAbstractChangesBuilderVisitor >> buildSlotsDefinitionsFor: properties existingClass: currentClass [ + + | modelSlotDefinitions | + currentClass + ifNil: [ modelSlotDefinitions := properties collect: [ :property | property slotDefinition ] ] + ifNotNil: [ + | currentCustomSlots | + currentCustomSlots := currentClass localSlots copyWithoutAll: currentClass generatedSlots. + + (currentClass generatedSlots reject: [ :generatedSlot | properties anySatisfy: [ :property | property name = generatedSlot name ] ]) ifNotEmpty: [ + :slotRemovals | changesToApply add: (FmxSlotRemovals slots: slotRemovals) ]. + + modelSlotDefinitions := properties + reject: [ :property | currentCustomSlots anySatisfy: [ :slot | slot name = property name ] ] + thenCollect: [ :property | property slotDefinition ]. + + modelSlotDefinitions addAll: (currentCustomSlots collect: #definitionString) ]. + + modelSlotDefinitions ifEmpty: [ ^ nil ]. + ^ modelSlotDefinitions sorted +] + +{ #category : 'accessing' } +FmxMBAbstractChangesBuilderVisitor >> changesOfType: aClass [ + + ^ changesToApply select: [ :change | change isKindOf: aClass ] +] + +{ #category : 'accessing' } +FmxMBAbstractChangesBuilderVisitor >> changesToApply [ + ^ changesToApply +] + +{ #category : 'private' } +FmxMBAbstractChangesBuilderVisitor >> createClassNamed: className superclass: superclassName traitDefinitions: traitDefinitions precedingTrait: precedingTrait properties: properties in: defaultPackage tag: defaultTag comment: comment [ + + | realClass packageName tag change | + realClass := self class environment at: className ifAbsent: [ nil ]. + + packageName := realClass + ifNil: [ defaultPackage ] + ifNotNil: [ realClass package name ]. + tag := realClass + ifNil: [ defaultTag ] + ifNotNil: [ realClass packageTag name ]. + + change := FmxClassAddition new. + change + name: className; + superclass: superclassName; + package: packageName; + tag: tag. + + traitDefinitions ifNotEmpty: [ change traits: (self traitStringFrom: traitDefinitions precedingTrait: precedingTrait existingClass: realClass) ]. + + self validateProperties: properties. + change slots: (self buildSlotsDefinitionsFor: properties existingClass: realClass). + changesToApply add: change. + + self ensurePackageNamed: packageName. + + comment ifNotEmpty: [ changesToApply add: (FmxClassCommentUpdate className: className comment: comment) ] +] + +{ #category : 'private' } +FmxMBAbstractChangesBuilderVisitor >> createTraitNamed: traitName traitDefinitions: traitDefinitions precedingTrait: precedingTrait properties: properties in: defaultPackage tag: defaultTag comment: comment [ + + | packageName tag realClass change | + realClass := self class environment at: traitName ifAbsent: [ nil ]. + + packageName := realClass + ifNil: [ defaultPackage ] + ifNotNil: [ realClass package name ]. + tag := realClass + ifNil: [ defaultTag ] + ifNotNil: [ realClass packageTag name ]. + + change := FmxTraitAddition new. + change + name: traitName; + package: packageName; + tag: tag. + + traitDefinitions ifNotEmpty: [ change traits: (self traitStringFrom: traitDefinitions precedingTrait: precedingTrait existingClass: realClass) ]. + + properties ifNotEmpty: [ + self validateProperties: properties. + change slots: (self buildSlotsDefinitionsFor: properties existingClass: realClass) ]. + changesToApply add: change. + + self ensurePackageNamed: packageName. + + comment ifNotEmpty: [ changesToApply add: (FmxClassCommentUpdate className: traitName comment: comment) ] +] + +{ #category : 'private' } +FmxMBAbstractChangesBuilderVisitor >> ensurePackageNamed: packageName [ + + ((self changesOfType: FmxPackageAddition) anySatisfy: [ :change | change packageName = packageName ]) ifTrue: [ ^ self ]. + + changesToApply add: (FmxPackageAddition named: packageName) +] + +{ #category : 'operations' } +FmxMBAbstractChangesBuilderVisitor >> filterRedoundantChanges [ + + changesToApply := changesToApply select: #isRequired +] + +{ #category : 'initialization' } +FmxMBAbstractChangesBuilderVisitor >> initialize [ + + super initialize. + changesToApply := OrderedCollection new +] + +{ #category : 'accessing' } +FmxMBAbstractChangesBuilderVisitor >> methodFactory [ + + ^ FmxMBMethodsFactory +] + +{ #category : 'private' } +FmxMBAbstractChangesBuilderVisitor >> traitStringFrom: traitDefinitions precedingTrait: precedingTrait existingClass: realClass [ + "We need to collect the generated traits + the custom traits added by the user." + + | customTraitNames traitCompositionString | + customTraitNames := ((realClass + ifNil: [ #( ) ] + ifNotNil: [ :class | class traitComposition rootMembers ]) select: [ :e | realClass customTraitNames includes: e name ]) collect: + #traitCompositionExpression. + "manage methods to remove." + traitCompositionString := traitDefinitions , customTraitNames ifEmpty: [ ^ '{ }' ] ifNotEmpty: [ :definitions | definitions joinUsing: ' + ' ]. + + precedingTrait ifNil: [ ^ traitCompositionString ]. + + ^ String streamContents: [ :s | + s + nextPutAll: '('; + nextPutAll: traitCompositionString; + nextPutAll: ' withPrecedenceOf: '; + nextPutAll: precedingTrait; + nextPutAll: ')' ] +] + +{ #category : 'private' } +FmxMBAbstractChangesBuilderVisitor >> validateProperties: properties [ + + | names | + names := properties collect: #name. + self assert: names size = names asSet size description: 'Two properties of the same class cannot have the same names.'. + properties do: [ :property | property validate ] +] + +{ #category : 'visiting' } +FmxMBAbstractChangesBuilderVisitor >> visitBuilder: aBuilder [ + + builder := aBuilder. + super visitBuilder: aBuilder +] + +{ #category : 'visiting' } +FmxMBAbstractChangesBuilderVisitor >> visitRelation: aRelation [ + + | generationStrategy protocol | + super visitRelation: aRelation. + + generationStrategy := (aRelation producesSlot + ifTrue: [ FmxMBRelationSlotsGenerationStrategy ] + ifFalse: [ FmxMBRelationAttributesGenerationStrategy ]) defaultInstance. + + protocol := aRelation isRemote + ifTrue: [ '*' , builder parentBuilderPackageName ] + ifFalse: [ #accessing ]. + + self addMethod: (generationStrategy generateSetterCodeFor: aRelation) protocol: protocol. + self addMethod: (generationStrategy generateGetterCodeFor: aRelation) protocol: protocol +] + +{ #category : 'visiting' } +FmxMBAbstractChangesBuilderVisitor >> visitTypedProperty: aTypedProperty [ + + | protocol | + super visitTypedProperty: aTypedProperty. + + protocol := aTypedProperty isRemote + ifTrue: [ '*' , builder parentBuilderPackageName ] + ifFalse: [ #accessing ]. + + self addMethod: (self methodFactory getTypedProperty: aTypedProperty) protocol: protocol. + + self addMethod: (self methodFactory setTypedProperty: aTypedProperty name remote: aTypedProperty isRemote) protocol: protocol +] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBBehavior.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBBehavior.class.st index aeae8b4cf..391795e1b 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBBehavior.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBBehavior.class.st @@ -4,14 +4,13 @@ Class { #traits : 'FmxMBRelationSideTrait', #classTraits : 'FmxMBRelationSideTrait classTrait', #instVars : [ - 'relations', - 'realClass', - 'properties', + 'builder', 'tag', 'prefix', 'packageName', 'testingSelectors', - 'traitGeneralizations' + 'traitGeneralizations', + 'propertiesAndRelations' ], #category : 'Famix-MetamodelBuilder-Core-Implementation', #package : 'Famix-MetamodelBuilder-Core', @@ -35,39 +34,34 @@ FmxMBBehavior >> <|-- anObject [ ^ anObject ] -{ #category : 'accessing' } -FmxMBBehavior >> addAllTransitiveTraitsIn: aCollection [ +{ #category : 'visiting' } +FmxMBBehavior >> acceptVisitor: aVisitor [ - aCollection add: self. - self allLocalTraits do: [ :trait | trait addAllTransitiveTraitsIn: aCollection ]. - ^ aCollection + + ^ aVisitor visitBehavioral: self ] { #category : 'accessing' } -FmxMBBehavior >> addRelation: aRelation with: anotherClass [ +FmxMBBehavior >> addAllTransitiveTraitsIn: aCollection [ - self relations add: aRelation. - anotherClass relations add: aRelation oppositeRelation - - + self isTraitEntity ifTrue: [ aCollection add: self ]. + self allLocalTraits do: [ :trait | trait addAllTransitiveTraitsIn: aCollection ]. + ^ aCollection ] { #category : 'accessing' } -FmxMBBehavior >> addRelationSide: aRelationSide [ +FmxMBBehavior >> addRelation: aRelation [ - "skip duplicities" - (self sides anySatisfy: [ :each | each name = aRelationSide name ]) - ifTrue: [ ^ self ]. + (self relations anySatisfy: [ :relation | relation name = aRelation name ]) ifTrue: [ ^ self ]. - self sides add: aRelationSide + self propertiesAndRelations add: aRelation ] { #category : 'accessing' } FmxMBBehavior >> addTraitGeneralization: aTrait [ - (self traitGeneralizations includes: aTrait) - ifFalse: [ self traitGeneralizations add: aTrait ]. - + (self traitGeneralizations includes: aTrait) ifFalse: [ self traitGeneralizations add: aTrait ]. + ^ aTrait ] @@ -80,19 +74,35 @@ FmxMBBehavior >> allLocalTraits [ FmxMBBehavior >> allProperties [ "Return my properties and the properties from my traits." - ^ (self allTransitiveTraits flatCollect: [ :trait | trait properties ]) , self properties + ^ self allPropertiesAndRelations reject: #isRelation +] + +{ #category : 'accessing' } +FmxMBBehavior >> allPropertiesAndRelations [ + "Return my properties and the properties from my traits." + + ^ (self allTransitiveTraits flatCollect: [ :trait | trait propertiesAndRelations ]) , self propertiesAndRelations ] { #category : 'accessing' } FmxMBBehavior >> allRelations [ "Return my relations and the relations from my traits." - ^ (self allTransitiveTraits flatCollect: [ :trait | trait relations ]) , self relations + ^ self allPropertiesAndRelations select: #isRelation ] { #category : 'accessing' } -FmxMBBehavior >> allTraitNames [ - ^ (self allLocalTraits collect: #fullName) sorted +FmxMBBehavior >> allTraitDefinitions [ + + ^ self allLocalTraits ifEmpty: [ #( ) ] ifNotEmpty: [ :traits | + | methodsToRemove | + methodsToRemove := self additionalProperties at: #methodsToRemoveFromTraitComposition ifAbsent: [ Dictionary new ]. + + (traits sorted: #fullName ascending) collect: [ :trait | + methodsToRemove + at: trait fullName + ifPresent: [ :methods | '(' , trait fullName , ' - {' , ('. ' join: (methods collect: #printString)) , '})' ] + ifAbsent: [ trait fullName ] ] ] ] { #category : 'accessing' } @@ -102,25 +112,26 @@ FmxMBBehavior >> allTransitiveTraits [ ] { #category : 'accessing' } -FmxMBBehavior >> allTransitiveTraitsIncludingClassGeneralization [ +FmxMBBehavior >> allTransitiveTraitsIncludingSuperclasses [ ^ self allTransitiveTraits ] { #category : 'converting' } -FmxMBBehavior >> asRelationSideNamed: aPropertyName [ +FmxMBBehavior >> asRelationNamed: aPropertyName [ ^ self property: aPropertyName ] { #category : 'accessing' } -FmxMBBehavior >> classGeneralization [ - ^ self subclassResponsibility +FmxMBBehavior >> builder [ + + ^ builder ] { #category : 'accessing' } -FmxMBBehavior >> classGeneralization: anObject [ - ^ self subclassResponsibility +FmxMBBehavior >> builder: anObject [ + builder := anObject ] { #category : 'accessing' } @@ -128,97 +139,68 @@ FmxMBBehavior >> commentWithRelations [ "It is sometimes hard to find our way through all the methods and relations of a moose entity. To help, I add information in the class comments about the different kind of relations in the model." ^ String streamContents: [ :aStream | - aStream nextPutAll: self comment. - self comment ifNotEmpty: [ - aStream - cr; - cr ]. - self allRelations ifNotEmpty: [ :rels | - aStream - nextPutAll: '## Relations + self comment ifNotEmpty: [ + aStream + nextPutAll: self comment; + cr; + cr ]. + self allRelations ifNotEmpty: [ :relations | + aStream + nextPutAll: '## Relations ======================'; - cr; - cr. - OrderedDictionary new - at: 'Parents' put: [ :relation | relation side isContainer ]; - at: 'Children' put: [ :relation | relation oppositeSide isContainer ]; - at: 'Outgoing dependencies' put: [ :relation | relation oppositeSide isSource ]; - at: 'Incoming dependencies' put: [ :relation | relation oppositeSide isTarget ]; - at: 'Association source' put: [ :relation | relation side isSource ]; - at: 'Association target' put: [ :relation | relation side isTarget ]; - at: 'Other' put: [ :relation | - relation side isTarget not and: [ - relation side isSource not and: [ - relation side isContainer not and: [ - relation oppositeSide isTarget not and: [ relation oppositeSide isSource not and: [ relation oppositeSide isContainer not ] ] ] ] ] ]; - keysAndValuesDo: [ :relationKind :selectionBlock | - (rels select: selectionBlock) ifNotEmpty: [ :parents | - aStream - nextPutAll: '### '; - nextPutAll: relationKind; - cr; - nextPutAll: '| Relation | Origin | Opposite | Type | Comment |'; - cr; - nextPutAll: '|---|'; - cr. - (parents sorted: [ :parent | parent side generationStrategy relationSide name ] ascending) do: [ :parent | - | strategy | - strategy := parent side generationStrategy. - - aStream - nextPutAll: '| `'; - nextPutAll: strategy relationSide name; - nextPutAll: '` | `'; - nextPutAll: strategy relationSide type; - nextPutAll: '` | `'; - nextPutAll: strategy relationSide oppositeName; - nextPutAll: '` | `'; - nextPutAll: strategy relationSide oppositeType; - nextPutAll: '` | '; - nextPutAll: (strategy relationSide comment - copyWithRegex: (String with: Character cr with: $+) - matchesReplacedWith: ' '); - nextPut: $|; - cr ]. - - aStream cr ] ]. - aStream cr ]. - - (self allProperties reject: [ :p | p isRelation ]) ifNotEmpty: [ :props | - aStream - nextPutAll: '## Properties + cr; + cr. + self relationSectionsToCommentMap keysAndValuesDo: [ :sectionTitle :selectionBlock | + (relations select: selectionBlock) ifNotEmpty: [ :selectedRelations | + aStream + nextPutAll: '### '; + nextPutAll: sectionTitle; + cr; + nextPutAll: '| Relation | Origin | Opposite | Type | Comment |'; + cr; + nextPutAll: '|---|'; + cr. + (selectedRelations sorted: #name ascending) do: [ :relation | + aStream + nextPutAll: '| `'; + nextPutAll: relation name; + nextPutAll: '` | `'; + nextPutAll: relation type; + nextPutAll: '` | `'; + nextPutAll: relation oppositeName; + nextPutAll: '` | `'; + nextPutAll: relation oppositeType; + nextPutAll: '` | '; + nextPutAll: (relation comment copyWithRegex: (String with: Character cr with: $+) matchesReplacedWith: ' '); + nextPut: $|; + cr ]. + + aStream cr ] ]. + aStream cr ]. + + self allProperties ifNotEmpty: [ :props | + aStream + nextPutAll: '## Properties ======================'; - cr; - cr; - nextPutAll: '| Name | Type | Default value | Comment |'; - cr; - nextPutAll: '|---|'; - cr. - - (props sorted: #name ascending) do: [ :property | - aStream - nextPutAll: '| `'; - nextPutAll: property name; - nextPutAll: '` | `'; - nextPutAll: property propertyType; - nextPutAll: '` | '; - print: property defaultValue; - nextPutAll: ' | '; - nextPutAll: (property comment - copyWithRegex: (String with: Character cr with: $+) - matchesReplacedWith: ' '); - nextPut: $|; - cr ] ] ] -] - -{ #category : 'settings - default' } -FmxMBBehavior >> defaultSuperclass [ - ^ self builder environment basicSuperclass -] - -{ #category : 'generating' } -FmxMBBehavior >> defaultSuperclassName [ - ^ self defaultSuperclass name + cr; + cr; + nextPutAll: '| Name | Type | Default value | Comment |'; + cr; + nextPutAll: '|---|'; + cr. + + (props sorted: #name ascending) do: [ :property | + aStream + nextPutAll: '| `'; + nextPutAll: property name; + nextPutAll: '` | `'; + nextPutAll: property propertyType; + nextPutAll: '` | '; + print: property defaultValue; + nextPutAll: ' | '; + nextPutAll: (property comment copyWithRegex: (String with: Character cr with: $+) matchesReplacedWith: ' '); + nextPut: $|; + cr ] ] ] ] { #category : 'settings - default' } @@ -227,14 +209,6 @@ FmxMBBehavior >> defaultTag [ ^ #Entities ] -{ #category : 'generating' } -FmxMBBehavior >> ensureRealClass [ - ^ realClass - ifNil: [ self generate. - self willGenerate: false. - self realClass ] -] - { #category : 'accessing' } FmxMBBehavior >> fullName [ ^ (self prefix , self name) asSymbol @@ -249,98 +223,7 @@ FmxMBBehavior >> generalization: anObject [ ifFalse: [ anObject isMetamodelTrait ifTrue: [ self addTraitGeneralization: anObject ] - ifFalse: [ self classGeneralization: anObject ] ] -] - -{ #category : 'generating' } -FmxMBBehavior >> generate [ - ^ self subclassResponsibility -] - -{ #category : 'generating' } -FmxMBBehavior >> generateAccessors [ - self properties do: [ :each | each generateAccessorsIn: self realClass ] -] - -{ #category : 'generating' } -FmxMBBehavior >> generateAddToCollectionFor: aClass [ - self relations - collect: #side - thenDo: [ :side | - side isMany - ifTrue: [ | sideName | - sideName := side name. - self builder environment - compile: - ('add{1}: anObject - - ^ self {2} add: anObject' format: {sideName capitalized asSingular . sideName}) - in: aClass instanceSide - classified: #adding ] ] -] - -{ #category : 'generating' } -FmxMBBehavior >> generateAnnotationIn: aRealClass [ - - | aSuperclassName | - aSuperclassName := self classGeneralization = self defaultSuperclass - ifTrue: [ self defaultSuperclassName ] - ifFalse: [ - self classGeneralization - ifNil: [ self defaultSuperclassName ] - ifNotNil: [ :cg | cg realClass name ] ]. - - aRealClass classSide - compile: ('annotation - - - - {4} - ^ self' format: { - self name. - aSuperclassName. - self builder safeAnnotationPackageName. - self optionalPragma }) - classified: 'meta' -] - -{ #category : 'generating' } -FmxMBBehavior >> generateMethodsToRemoveFromTraitCompositionFor: aBehavioral [ - "In case of method conflict the user can select methods to remove from a trait. In that case we give the information to ring here." - - self additionalProperties - at: #methodsToRemoveFromTraitComposition - ifPresent: [ :methodsDictionary | - aBehavioral - propertyNamed: #methodsToRemoveFromTraitComposition - put: methodsDictionary ] -] - -{ #category : 'generating' } -FmxMBBehavior >> generatePrecedenceInTraitComposition: aBehavioral [ - "In case of method conflict the user can select methods to remove from a trait. In that case we give the information to ring here." - - self additionalProperties - at: #precedingTrait - ifPresent: [ :value | - aBehavioral - propertyNamed: #precedingTrait - put: value ] -] - -{ #category : 'generating' } -FmxMBBehavior >> generateRemoteAccessors [ - (self properties select: #isRemote) do: [ :each | each generateAccessorsIn: self realClass ] -] - -{ #category : 'generating' } -FmxMBBehavior >> generateTestingMethodsIn: aClass [ - - self testingSelectors do: [ :aSelector | - aClass instanceSide compile: ('{1}\\ \ ^ true' withCRs format: { aSelector }) - classified: #testing. ] - - + ifFalse: [ self superclass: anObject ] ] ] { #category : 'generalization' } @@ -356,14 +239,20 @@ FmxMBBehavior >> inheritsFromTrait: aTrait without: aCollection [ { #category : 'initialization' } FmxMBBehavior >> initialize [ + super initialize. - relations := OrderedCollection new. - properties := OrderedCollection new. + propertiesAndRelations := OrderedCollection new. prefix := ''. packageName := ''. testingSelectors := Set new ] +{ #category : 'testing' } +FmxMBBehavior >> isAbstractClass [ + + ^ false +] + { #category : 'testing' } FmxMBBehavior >> isEntityCreatorTrait [ @@ -394,14 +283,6 @@ FmxMBBehavior >> isModelClass [ ^ false ] -{ #category : 'generating' } -FmxMBBehavior >> optionalPragma [ - - "Override to add a pragma to your entity #annotation method" - - ^ String new -] - { #category : 'accessing' } FmxMBBehavior >> packageName [ ^ packageName @@ -445,7 +326,7 @@ FmxMBBehavior >> prefix: anObject [ prefix := anObject ] -{ #category : 'generating' } +{ #category : 'printing' } FmxMBBehavior >> printOn: aStream [ aStream @@ -457,55 +338,49 @@ FmxMBBehavior >> printOn: aStream [ { #category : 'accessing' } FmxMBBehavior >> properties [ - ^ properties + + ^ propertiesAndRelations reject: #isRelation ] -{ #category : 'generating' } -FmxMBBehavior >> property: propertyName [ +{ #category : 'accessing' } +FmxMBBehavior >> propertiesAndRelations [ - | aSide | - - self assert: propertyName isString. - - aSide := FmxMBRelationSide new - builder: self builder; - relatedClass: self; - name: propertyName; - yourself. - - self addRelationSide: aSide. - ^ aSide. + ^ propertiesAndRelations ] -{ #category : 'accessing' } -FmxMBBehavior >> property: propertyName type: aTypeName [ +{ #category : 'associations' } +FmxMBBehavior >> property: propertyName [ | aSide | - aSide := FmxMBTypedProperty new - builder: self builder; + self assert: propertyName isString. + + aSide := FmxMBRelation new + relatedClass: self; name: propertyName; - isRemote: self isRemote; - propertyType: aTypeName asSymbol; yourself. - self properties add: aSide. - + self addRelation: aSide. ^ aSide ] +{ #category : 'accessing' } +FmxMBBehavior >> property: propertyName type: aTypeName [ + + ^ self property: propertyName type: aTypeName defaultValue: nil +] + { #category : 'accessing' } FmxMBBehavior >> property: propertyName type: aTypeName defaultValue: aValue [ | aSide | aSide := FmxMBTypedProperty new - builder: self builder; name: propertyName; isRemote: self isRemote; propertyType: aTypeName asSymbol; defaultValue: aValue; yourself. - self properties add: aSide. + self propertiesAndRelations add: aSide. ^ aSide ] @@ -515,17 +390,6 @@ FmxMBBehavior >> propertyName [ ^ self name uncapitalized ] -{ #category : 'accessing' } -FmxMBBehavior >> realClass [ - - ^ realClass ifNil: [ self class environment at: self fullName ] -] - -{ #category : 'accessing' } -FmxMBBehavior >> realClass: anObject [ - realClass := anObject -] - { #category : 'accessing' } FmxMBBehavior >> relatedEntityName [ @@ -533,13 +397,28 @@ FmxMBBehavior >> relatedEntityName [ ] { #category : 'accessing' } -FmxMBBehavior >> relations [ - ^ relations +FmxMBBehavior >> relationSectionsToCommentMap [ + "When generating a class comment, we group the relations by kind. This method builds a dictionary to declare the sections to comment and declare how to select the relations inside." + + ^ OrderedDictionary new + at: 'Parents' put: [ :relation | relation isContainer ]; + at: 'Children' put: [ :relation | relation oppositeSide isContainer ]; + at: 'Outgoing dependencies' put: [ :relation | relation oppositeSide isSource ]; + at: 'Incoming dependencies' put: [ :relation | relation oppositeSide isTarget ]; + at: 'Association source' put: [ :relation | relation isSource ]; + at: 'Association target' put: [ :relation | relation isTarget ]; + at: 'Other' put: [ :relation | + relation isTarget not and: [ + relation isSource not and: [ + relation isContainer not and: [ + relation oppositeSide isTarget not and: [ relation oppositeSide isSource not and: [ relation oppositeSide isContainer not ] ] ] ] ] ]; + yourself ] { #category : 'accessing' } -FmxMBBehavior >> sides [ - ^ self properties +FmxMBBehavior >> relations [ + + ^ self propertiesAndRelations select: #isRelation ] { #category : 'name conversion' } @@ -559,17 +438,6 @@ FmxMBBehavior >> singularPropertyName [ ] -{ #category : 'generating' } -FmxMBBehavior >> slotDefinitions [ - | slotGroups | - slotGroups := (self properties select: #producesSlot thenCollect: [ :property | property asSlot ]) groupedBy: #name. - - "check that all slots with the same name have the same properties" - slotGroups valuesDo: [ :similarSlots | self assert: (similarSlots collect: #name) asSet size = 1 ]. - - ^ slotGroups values collect: [ :each | each anyOne ] -] - { #category : 'associations' } FmxMBBehavior >> source: aFmxTrait [ "By default, a source property is *-" @@ -607,6 +475,13 @@ FmxMBBehavior >> sourceOneToOne: aFmxTrait [ source - (aFmxTrait property: #outgoing , self name) ] +{ #category : 'accessing' } +FmxMBBehavior >> superclassName [ + "Trait do not have a superclass but they declare one for the fame annotation" + + ^ self subclassResponsibility +] + { #category : 'accessing' } FmxMBBehavior >> tag [ ^ tag ifNil: [ self defaultTag ] @@ -679,25 +554,20 @@ FmxMBBehavior >> traitGeneralizations [ ^ traitGeneralizations ifNil: [ traitGeneralizations := OrderedCollection new ] ] -{ #category : 'accessing' } -FmxMBBehavior >> uses: aTrait [ - - ^ self generalization: aTrait -] - { #category : 'testing selectors' } FmxMBBehavior >> withGroup [ - ^ self builder groupOf: self + + ^ (self builder newClassGroupNamed: self name , 'Group') + innerClass: self; + yourself ] { #category : 'generalization' } FmxMBBehavior >> withPrecedenceOf: aTrait [ - self additionalProperties - at: #precedingTrait - put: - (aTrait isSymbol - ifTrue: [ (self builder getTraitNamed: aTrait) fullName ] - ifFalse: [ aTrait fullName ]) + + self additionalProperties at: #precedingTrait put: (aTrait isSymbol + ifTrue: [ (self builder getTraitNamed: aTrait) fullName ] + ifFalse: [ aTrait fullName ]) ] { #category : 'testing selectors' } diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBChangesBuilderVisitor.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBChangesBuilderVisitor.class.st new file mode 100644 index 000000000..3a4f92832 --- /dev/null +++ b/src/Famix-MetamodelBuilder-Core/FmxMBChangesBuilderVisitor.class.st @@ -0,0 +1,275 @@ +" +I am a visitor to generate the metamodel code of everything that is not remote. +" +Class { + #name : 'FmxMBChangesBuilderVisitor', + #superclass : 'FmxMBAbstractChangesBuilderVisitor', + #category : 'Famix-MetamodelBuilder-Core-Generation', + #package : 'Famix-MetamodelBuilder-Core', + #tag : 'Generation' +} + +{ #category : 'generation' } +FmxMBChangesBuilderVisitor >> generateAddToCollection [ + + currentBehavioral relations do: [ :relation | + relation isMany ifTrue: [ self addMethod: (self methodFactory addToCollectionFor: relation name) protocol: #adding ] ] +] + +{ #category : 'generation' } +FmxMBChangesBuilderVisitor >> generateAnnotation [ + + self + addMethod: (self methodFactory + annotationFor: currentBehavioral name + super: currentBehavioral superclassName + package: currentBehavioral packageName asSymbol printString + isAbstract: currentBehavioral isAbstractClass) + classSide: true + protocol: #meta +] + +{ #category : 'generation' } +FmxMBChangesBuilderVisitor >> generateFalseTestingMethods [ + + | selectorsToGenerate | + currentBehavioral isRoot ifFalse: [ ^ self ]. + + selectorsToGenerate := Set new. + builder testingSelectorsMapping keysAndValuesDo: [ :concernedClass :selectors | + (builder shouldGeneratorTestingMethodsOf: concernedClass in: currentBehavioral) ifTrue: [ selectorsToGenerate addAll: selectors ] ]. + + (selectorsToGenerate difference: (currentBehavioral traitGeneralizations flatCollect: #testingSelectors)) do: [ :selector | + self addMethod: (self methodFactory testReturning: false for: selector) protocol: #testing ] +] + +{ #category : 'generation' } +FmxMBChangesBuilderVisitor >> generateFileImportMethods [ + + builder configuration shouldGenerateFileImportHelpers ifFalse: [ ^ self ]. + + self addMethod: self methodFactory canBeImportedFromFile classSide: true protocol: #testing. + + self addMethod: (self methodFactory importingClassNamed: builder importingContextName) classSide: true protocol: #accessing +] + +{ #category : 'generation' } +FmxMBChangesBuilderVisitor >> generateMetamodelMethod [ + + currentBehavioral isRoot ifFalse: [ ^ self ]. + + builder model ifNotNil: [ :model | self addMethod: (self methodFactory metamodelFor: model fullName) classSide: true protocol: #meta ] +] + +{ #category : 'generation' } +FmxMBChangesBuilderVisitor >> generateTestingMethodsOfRemoteEntities [ + + | entitiesWithRemoteSuperclasses | + entitiesWithRemoteSuperclasses := builder classes groupedBy: [ :class | class remoteSuperclass ]. + + + entitiesWithRemoteSuperclasses keysAndValuesDo: [ :remoteClass :subclasses | + remoteClass ifNotNil: [ + | subclassesAndTraits | + subclassesAndTraits := subclasses flatCollectAsSet: [ :subclass | subclass allTransitiveTraits , { subclass } ]. + + builder testingSelectorsMapping keysAndValuesDo: [ :behavior :selectors | + ((builder shouldGeneratorTestingMethodsOf: behavior in: remoteClass) and: [ subclassesAndTraits includes: behavior ]) ifTrue: [ + selectors do: [ :selector | + self class environment + at: remoteClass fullName + ifPresent: [ :class | + (class includesSelector: selector) ifFalse: [ + self addMethod: (self methodFactory testReturning: true for: selector) in: remoteClass fullName protocol: '*' , builder packageName ] ] + ifAbsent: [ self error: 'The class ' , remoteClass fullName , ' was not found in the system to generate a remote testing method.' ] ] ] ] ] ] +] + +{ #category : 'generation' } +FmxMBChangesBuilderVisitor >> generateTrueTestingMethods [ + + currentBehavioral testingSelectors do: [ :aSelector | self addMethod: (self methodFactory testReturning: true for: aSelector) protocol: #testing ] +] + +{ #category : 'private' } +FmxMBChangesBuilderVisitor >> recordMethodRemovalsOf: realClass [ + + | generatedMethodsOfRealClass generatedMethodNamesOfRealClass selectorsToGenerate | + generatedMethodsOfRealClass := (Pragma allNamed: #generated in: realClass) + collect: #method + thenReject: [ :m | m isFromTrait ]. + + "In case we have an extension, we remove it if the package is the right one" + self flag: #todo. "Demeter. Clean package name management." + generatedMethodsOfRealClass := generatedMethodsOfRealClass reject: [ :method | (method hasPragmaNamed: #package:) and: [ ((method pragmaAt: #package:) argumentAt: 1) ~= builder packageName ] ]. + + generatedMethodNamesOfRealClass := generatedMethodsOfRealClass collect: #selector. + + selectorsToGenerate := ((self changesOfType: FmxMethodAddition) select: [ :change | change className = realClass instanceSide name and: [ change isClassSide = realClass isClassSide ] ]) collect: #selector. + + "First we removed the generated methods should not be here anymore" + (generatedMethodNamesOfRealClass difference: selectorsToGenerate) ifNotEmpty: [ :selectorsOfRemovedGeneratedMethod | + changesToApply add: (FmxMethodRemovals className: realClass instanceSide name isClassSide: realClass isClassSide selectors: selectorsOfRemovedGeneratedMethod) ] +] + +{ #category : 'private' } +FmxMBChangesBuilderVisitor >> recordRemovalOfGeneratedPackagesAndClasses [ + "Since the last generation it is possible some behaviorals were removed from the generator. In that case we should remove them. We will remove all classes and traits of Famix that are not part of the current generator." + + | classesToGenerate | + classesToGenerate := (self changesOfType: FmxBehavioralAddition) collectAsSet: #name. + + (self changesOfType: FmxPackageAddition) + collect: #systemPackage + thenDo: [ :package | + package ifNotNil: [ + package definedClasses + select: #canBeGenerated + thenDo: [ :class | (classesToGenerate includes: class name) ifFalse: [ changesToApply add: (FmxClassRemoval class: class) ] ] ] ] +] + +{ #category : 'private' } +FmxMBChangesBuilderVisitor >> registerRemovals [ + + | classesToGenerate | + classesToGenerate := (self changesOfType: FmxBehavioralAddition) collectAsSet: #name. + + classesToGenerate do: [ :className | + self class environment at: className asSymbol ifPresent: [ :realClass | + self recordMethodRemovalsOf: realClass. + self recordMethodRemovalsOf: realClass class ] ]. + + self recordRemovalOfGeneratedPackagesAndClasses +] + +{ #category : 'visiting' } +FmxMBChangesBuilderVisitor >> visitBuilder: aBuilder [ + + super visitBuilder: aBuilder. + + self ensurePackageNamed: aBuilder configuration packageName. + + self generateTestingMethodsOfRemoteEntities. + + self registerRemovals +] + +{ #category : 'visiting' } +FmxMBChangesBuilderVisitor >> visitClass: aClass [ + + currentBehavioral := aClass. + + self + createClassNamed: aClass fullName + superclass: aClass superclassName + traitDefinitions: aClass allTraitDefinitions + precedingTrait: (aClass additionalProperties at: #precedingTrait ifAbsent: [ nil ]) + properties: (aClass propertiesAndRelations select: #producesSlot) + in: aClass packageName + tag: aClass tag + comment: aClass commentWithRelations. + + + super visitClass: aClass +] + +{ #category : 'visiting' } +FmxMBChangesBuilderVisitor >> visitClassEntity: aClass [ + + super visitClassEntity: aClass. + + self + generateAnnotation; + generateTrueTestingMethods; + generateFalseTestingMethods; + generateAddToCollection; + generateMetamodelMethod. + + aClass isAbstractClass ifTrue: [ self addMethod: (self methodFactory isAbstractFor: aClass fullName) classSide: true protocol: #testing ]. + + aClass propertiesForEqualityCheck ifNotNil: [ + self addMethod: (self methodFactory equalsForVariableNamed: 'a' , aClass fullName properties: aClass propertiesForEqualityCheck) protocol: #comparing. + self addMethod: (self methodFactory hashForProperties: aClass propertiesForEqualityCheck) protocol: #comparing ] +] + +{ #category : 'visiting' } +FmxMBChangesBuilderVisitor >> visitClassGroup: aClass [ + + super visitClassGroup: aClass. + self + addMethod: (self methodFactory groupAnnotationNamed: aClass fullName) + in: aClass innerClass fullName + classSide: true + protocol: #groups +] + +{ #category : 'visiting' } +FmxMBChangesBuilderVisitor >> visitEntityCreator: aTrait [ + + super visitEntityCreator: aTrait. + + builder concreteClasses do: [ :class | + self addMethod: (self methodFactory instantiate: class) protocol: #'entity creation'. + + (class allTransitiveTraitsIncludingSuperclasses anySatisfy: [ :trait | trait prefix = #Famix and: [ trait name = #TNamedEntity ] ]) ifTrue: [ + self addMethod: (self methodFactory instantiateNamed: class) protocol: #'entity creation' ] ] +] + +{ #category : 'visiting' } +FmxMBChangesBuilderVisitor >> visitImportingContext: aClass [ + + super visitImportingContext: aClass. + + self addMethod: (self methodFactory importedMetamodelForPrefix: aClass prefix) classSide: true protocol: #accessing. + + builder concreteClasses do: [ :each | + self + addMethod: (each allTransitiveTraits + detect: [ :trait | trait name = #TAssociation ] + ifFound: [ self methodFactory importAssociationNamed: each name ] + ifNone: [ self methodFactory importEntityNamed: each name ]) + protocol: #importing. + + self addMethod: (self methodFactory shouldImportNamed: each name) protocol: #testing ] +] + +{ #category : 'visiting' } +FmxMBChangesBuilderVisitor >> visitModel: aClass [ + + super visitClassGroup: aClass. + + self + generateFileImportMethods; + generateAnnotation. + + builder allSubBuilders ifNotEmpty: [ :subBuilders | + self addMethod: (self methodFactory allSubmetamodelsPackagesNamesFor: subBuilders) classSide: true protocol: #accessing ] +] + +{ #category : 'visiting' } +FmxMBChangesBuilderVisitor >> visitTrait: aTrait [ + + currentBehavioral := aTrait. + + self + createTraitNamed: aTrait fullName + traitDefinitions: aTrait allTraitDefinitions + precedingTrait: (aTrait additionalProperties at: #precedingTrait ifAbsent: [ nil ]) + properties: (aTrait propertiesAndRelations select: #producesSlot) + in: aTrait packageName + tag: aTrait tag + comment: aTrait commentWithRelations. + + self generateAnnotation. + + super visitTrait: aTrait +] + +{ #category : 'visiting' } +FmxMBChangesBuilderVisitor >> visitTraitEntity: aTrait [ + + super visitTraitEntity: aTrait. + + self + generateTrueTestingMethods; + generateAddToCollection +] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBClass.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBClass.class.st index d3bedaa82..9603355f4 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBClass.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBClass.class.st @@ -2,15 +2,19 @@ Class { #name : 'FmxMBClass', #superclass : 'FmxMBBehavior', #instVars : [ - 'classGeneralization', - 'isAbstractClass', - 'propertiesForEqualityCheck' + 'superclass' ], #category : 'Famix-MetamodelBuilder-Core-Implementation', #package : 'Famix-MetamodelBuilder-Core', #tag : 'Implementation' } +{ #category : 'testing' } +FmxMBClass class >> isAbstract [ + + ^ self = FmxMBClass +] + { #category : 'visitor' } FmxMBClass >> acceptVisitor: aVisitor [ @@ -18,207 +22,38 @@ FmxMBClass >> acceptVisitor: aVisitor [ ^ aVisitor visitClass: self. ] -{ #category : 'accessing' } -FmxMBClass >> allClassGeneralizations [ - | result c g | - result := OrderedCollection new. - c := self. - [ g := c classGeneralization. - g isNotNil and: [ g isKindOf: FmxMBClass ] ] - whileTrue: [ result add: g. - c := g ]. - ^ result -] - { #category : 'accessing' } FmxMBClass >> allLocalTraits [ ^ self traitsFromRelations , super allLocalTraits ] { #category : 'accessing' } -FmxMBClass >> allTransitiveTraitsIncludingClassGeneralization [ +FmxMBClass >> allSuperclasses [ - | result | - result := super allTransitiveTraitsIncludingClassGeneralization. - self classGeneralization ifNotNil: [ :class | class ~= Object ifTrue: [ result addAll: class allTransitiveTraitsIncludingClassGeneralization ] ]. + | result class g | + result := OrderedCollection new. + class := self. + [ + g := class superclass. + g isNotNil ] whileTrue: [ + result add: g. + class := g ]. ^ result ] { #category : 'accessing' } -FmxMBClass >> classGeneralization [ - ^ classGeneralization -] - -{ #category : 'accessing' } -FmxMBClass >> classGeneralization: anObject [ - - classGeneralization := anObject. - ^ anObject -] - -{ #category : 'generating' } -FmxMBClass >> generate [ - - | aClass aSuperclass aClassName | - self willGenerate ifFalse: [ ^ self ]. - - aClassName := self fullName. - - aSuperclass := self classGeneralization - ifNil: [ self defaultSuperclass ] - ifNotNil: [ self classGeneralization realClass ]. - - aClass := self builder environment - createClassNamed: aClassName asSymbol - superclass: aSuperclass - traitNames: self allTraitNames - slots: self slotDefinitions - in: self packageName - tag: self tag - comment: self commentWithRelations. - - self realClass: aClass. - - self generateAccessors. - self generateAnnotationIn: aClass. - self generateIsAbstractMethodIfNecessaryIn: aClass. - - self generateTestingMethodsIn: aClass. - self generateRootMetamodelMethodIn: aClass. - - self generateMethodsToRemoveFromTraitCompositionFor: aClass. - self generatePrecedenceInTraitComposition: aClass. - - self generateAddToCollectionFor: aClass. - - self generateEqualsMethodFor: aClass. - self generateHashMethodFor: aClass -] - -{ #category : 'generating-methods' } -FmxMBClass >> generateEqualsMethodFor: aClass [ - - propertiesForEqualityCheck ifNotNil: [ - | variableName | - variableName := 'a' , aClass name. - self builder environment - compile: (String streamContents: [ :stream | - stream << '= '. - stream << variableName. - stream << ' - - - ^ '. - stream - << variableName; - << ' '; - << propertiesForEqualityCheck first; - << ' = self '; - << propertiesForEqualityCheck first. - propertiesForEqualityCheck size > 1 ifTrue: [ - 2 to: propertiesForEqualityCheck size do: [ :idx | - stream << ' and: [ '. - stream - << variableName; - << ' '; - << (propertiesForEqualityCheck at: idx); - << ' = self '; - << (propertiesForEqualityCheck at: idx) ]. - 2 to: propertiesForEqualityCheck size do: [ :idx | - stream << '] ' ] ] ]) - in: aClass instanceSide - classified: #comparing ] -] - -{ #category : 'generating-methods' } -FmxMBClass >> generateHashMethodFor: aClass [ - - propertiesForEqualityCheck ifNotNil: [ - self builder environment - compile: (String streamContents: [ :stream | - stream << 'hash'. - stream << ' +FmxMBClass >> allTransitiveTraitsIncludingSuperclasses [ - - ^ '. - stream - << 'self '; - << propertiesForEqualityCheck first; - << ' hash '. - propertiesForEqualityCheck size > 1 ifTrue: [ - 2 to: propertiesForEqualityCheck size do: [ :idx | - stream - << 'bitXor: self '; - << (propertiesForEqualityCheck at: idx); - << ' hash ' ] ] ]) - in: aClass instanceSide - classified: #comparing ] -] - -{ #category : 'generating' } -FmxMBClass >> generateIsAbstractMethodIfNecessaryIn: aClass [ - - self isAbstractClass ifTrue: [ - aClass classSide - compile: ('isAbstract - - - ^ self == {1}' format: { aClass name asString }) - classified: 'testing' ] -] - -{ #category : 'generating' } -FmxMBClass >> generateRemotes [ - | aClass aClassName | - aClassName := self fullName. - - aClass := self class environment at: aClassName asSymbol ifAbsent: [ self builder environment classNamed: aClassName asSymbol ]. - - self realClass: aClass. - - self generateRemoteAccessors -] - -{ #category : 'generating-methods' } -FmxMBClass >> generateRootMetamodelMethodIn: aClass [ - self isRoot ifFalse: [ ^ self ]. - - self builder model - ifNotNil: [ :model | - aClass classSide - compile: - ('metamodel - - - ^ {1} metamodel' format: {model fullName}) - classified: 'meta' ] -] - -{ #category : 'generating-methods' } -FmxMBClass >> generateTestingMethodsIn: aClass [ - - self isRoot ifTrue: [ - builder testingSelectorsMapping keysAndValuesDo: [ :concernedClass :selectors | - (builder shouldGeneratorTestingMethodsOf: concernedClass in: self) ifTrue: [ - selectors do: [ :sel | - | selectorsFromTraits | - selectorsFromTraits := self traitGeneralizations flatCollect: #testingSelectors. - (selectorsFromTraits includes: sel) ifFalse: [ - aClass instanceSide compile: ('{1}\\ \ ^ false' withCRs format: { sel }) classified: #testing ] ] ] ] ]. - - super generateTestingMethodsIn: aClass -] - -{ #category : 'testing' } -FmxMBClass >> isAbstractClass [ - - ^ isAbstractClass ifNil: [ false ] + | result | + result := super allTransitiveTraitsIncludingSuperclasses. + self superclass ifNotNil: [ :class | result addAll: class allTransitiveTraitsIncludingSuperclasses ]. + ^ result ] -{ #category : 'accessing' } -FmxMBClass >> isAbstractClass: aBoolean [ +{ #category : 'settings - default' } +FmxMBClass >> defaultSuperclassName [ - isAbstractClass := aBoolean + ^ #MooseEntity ] { #category : 'testing' } @@ -227,42 +62,43 @@ FmxMBClass >> isMetamodelClass [ ^ true ] -{ #category : 'testing' } -FmxMBClass >> isRoot [ - ^ self classGeneralization isNil +{ #category : 'accessing' } +FmxMBClass >> remoteSuperclass [ + + ^ self allSuperclasses detect: #isRemote ifNone: [ nil ] ] -{ #category : 'generating' } -FmxMBClass >> optionalPragma [ +{ #category : 'accessing' } +FmxMBClass >> superclass [ - ^ self isAbstractClass - ifTrue: [ - ' - ' ] - ifFalse: [ super optionalPragma ] + ^ superclass ] { #category : 'accessing' } -FmxMBClass >> remoteClassGeneratization [ +FmxMBClass >> superclass: aFmxClass [ + "In the past we could have real objects here but this is not the case anymore" - ^ self allClassGeneralizations detect: #isRemote ifNone: [ nil ] + superclass ifNotNil: [ + self error: + 'Cannot have two superclasses for an entity. ' , self name , ' declared ' , superclass name , ' as superclass and try to set also ' , aFmxClass name + , ' as second superclass.' ]. + superclass := aFmxClass. + ^ aFmxClass ] -{ #category : 'generalization' } -FmxMBClass >> subclassOf: aClass [ - - self generalization: aClass +{ #category : 'settings - default' } +FmxMBClass >> superclassName [ + + ^ self superclass + ifNil: [ self defaultSuperclassName ] + ifNotNil: #fullName ] { #category : 'accessing' } FmxMBClass >> traitsFromRelations [ "returns traits defined by relations" - ^ (self relations collect: [ :each | each side trait ] thenSelect: #isNotNil) asSet -] - -{ #category : 'generalization' } -FmxMBClass >> withEqualityCheckOn: aCollectionOfPropertySymbol [ - - propertiesForEqualityCheck := aCollectionOfPropertySymbol + ^ (self relations + collect: #trait + thenSelect: #isNotNil) asSet ] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBClassEntity.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBClassEntity.class.st new file mode 100644 index 000000000..df261f4b1 --- /dev/null +++ b/src/Famix-MetamodelBuilder-Core/FmxMBClassEntity.class.st @@ -0,0 +1,78 @@ +Class { + #name : 'FmxMBClassEntity', + #superclass : 'FmxMBClass', + #instVars : [ + 'propertiesForEqualityCheck', + 'isAbstractClass' + ], + #category : 'Famix-MetamodelBuilder-Core-Implementation', + #package : 'Famix-MetamodelBuilder-Core', + #tag : 'Implementation' +} + +{ #category : 'visitor' } +FmxMBClassEntity >> acceptVisitor: aVisitor [ + + + ^ aVisitor visitClassEntity: self +] + +{ #category : 'settings - default' } +FmxMBClassEntity >> defaultSuperclassName [ + "We have a special case with MooseObject that should inherit from Object." + + self isMooseObject ifTrue: [ ^ #Object ]. + + ^ super defaultSuperclassName +] + +{ #category : 'testing' } +FmxMBClassEntity >> isAbstractClass [ + + ^ isAbstractClass ifNil: [ false ] +] + +{ #category : 'accessing' } +FmxMBClassEntity >> isAbstractClass: aBoolean [ + + isAbstractClass := aBoolean +] + +{ #category : 'testing' } +FmxMBClassEntity >> isClassEntity [ + + ^ true +] + +{ #category : 'testing' } +FmxMBClassEntity >> isConcreteClass [ + + ^ self isAbstractClass not +] + +{ #category : 'testing' } +FmxMBClassEntity >> isMooseObject [ + + ^ self name = 'Object' and: [ self prefix = 'Moose' ] +] + +{ #category : 'testing' } +FmxMBClassEntity >> isRoot [ + + self superclass ifNotNil: [ ^ false ]. + + "We have a special case with MooseObject because we do not want to consider it as a root but it inherits from Object." + ^ self isMooseObject not +] + +{ #category : 'accessing' } +FmxMBClassEntity >> propertiesForEqualityCheck [ + + ^ propertiesForEqualityCheck +] + +{ #category : 'generalization' } +FmxMBClassEntity >> withEqualityCheckOn: aCollectionOfPropertySymbol [ + + propertiesForEqualityCheck := aCollectionOfPropertySymbol +] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBClassGroup.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBClassGroup.class.st index bf1f0a0ff..e845e00f2 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBClassGroup.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBClassGroup.class.st @@ -9,32 +9,23 @@ Class { #tag : 'Implementation' } -{ #category : 'settings - default' } -FmxMBClassGroup >> defaultSuperclass [ - ^ self builder environment basicGroupSuperclass +{ #category : 'visitor' } +FmxMBClassGroup >> acceptVisitor: aVisitor [ + + + ^ aVisitor visitClassGroup: self ] { #category : 'settings - default' } -FmxMBClassGroup >> defaultTag [ +FmxMBClassGroup >> defaultSuperclassName [ - ^ #Groups + ^ #MooseSpecializedGroup ] -{ #category : 'generating' } -FmxMBClassGroup >> generate [ - super generate. - self generateMooseGroupAnnotationIn: innerClass ensureRealClass as: self fullName superclass: nil. -] - -{ #category : 'generating-methods' } -FmxMBClassGroup >> generateMooseGroupAnnotationIn: aRealClass as: aName superclass: aSuperclass [ +{ #category : 'settings - default' } +FmxMBClassGroup >> defaultTag [ - aRealClass classSide - compile: ('annotation{1} - - - ^ {1}' format: { aName }) - classified: 'groups' + ^ #Groups ] { #category : 'accessing' } diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBConfiguration.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBConfiguration.class.st index 0c05cc712..18d562888 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBConfiguration.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBConfiguration.class.st @@ -25,7 +25,7 @@ FmxMBConfiguration >> initialize [ { #category : 'accessing' } FmxMBConfiguration >> packageName [ - ^ packageName ifNil: [ packageName := #'FamixMetamodelBulder-Generated' ] + ^ packageName ifNil: [ packageName := #'FamixMetamodelBuilder-Generated' ] ] { #category : 'accessing' } @@ -33,16 +33,6 @@ FmxMBConfiguration >> packageName: anObject [ packageName := anObject ] -{ #category : 'accessing' } -FmxMBConfiguration >> packageNameForAnnotations [ - ^ packageNameForAnnotations ifNil: [ self packageName ]. -] - -{ #category : 'accessing' } -FmxMBConfiguration >> packageNameForAnnotations: anObject [ - packageNameForAnnotations := anObject -] - { #category : 'accessing' } FmxMBConfiguration >> prefix [ ^ prefix ifNil: [ prefix := '' ] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBEntity.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBEntity.class.st index d36cec669..4c33a41cf 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBEntity.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBEntity.class.st @@ -4,8 +4,6 @@ Class { #instVars : [ 'name', 'comment', - 'builder', - 'willGenerate', 'additionalProperties', 'isRemote' ], @@ -25,16 +23,6 @@ FmxMBEntity >> additionalProperties [ ^ additionalProperties ] -{ #category : 'accessing' } -FmxMBEntity >> builder [ - ^ builder -] - -{ #category : 'accessing' } -FmxMBEntity >> builder: anObject [ - builder := anObject -] - { #category : 'accessing' } FmxMBEntity >> comment [ ^ comment @@ -51,11 +39,22 @@ FmxMBEntity >> initialize [ super initialize. comment := String new. - willGenerate := true. additionalProperties := Dictionary new. isRemote := false. ] +{ #category : 'testing' } +FmxMBEntity >> isClassEntity [ + + ^ false +] + +{ #category : 'testing' } +FmxMBEntity >> isConcreteClass [ + + ^ false +] + { #category : 'accessing' } FmxMBEntity >> isRemote [ @@ -67,6 +66,12 @@ FmxMBEntity >> isRemote: anObject [ isRemote := anObject ] +{ #category : 'testing' } +FmxMBEntity >> isTraitEntity [ + + ^ false +] + { #category : 'accessing' } FmxMBEntity >> name [ ^ name @@ -74,6 +79,7 @@ FmxMBEntity >> name [ { #category : 'accessing' } FmxMBEntity >> name: anObject [ + name := anObject ] @@ -90,11 +96,7 @@ FmxMBEntity >> remoteBuilder: aRemoteBuilder [ ] { #category : 'accessing' } -FmxMBEntity >> willGenerate [ - ^ willGenerate -] +FmxMBEntity >> reservedKeywords [ -{ #category : 'accessing' } -FmxMBEntity >> willGenerate: anObject [ - willGenerate := anObject + ^ { #class } ] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBEntityAlreadyExists.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBEntityAlreadyExists.class.st index 843c1d1b2..f6ff9e1ef 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBEntityAlreadyExists.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBEntityAlreadyExists.class.st @@ -1,9 +1,9 @@ Class { #name : 'FmxMBEntityAlreadyExists', #superclass : 'Error', - #category : 'Famix-MetamodelBuilder-Core-Implementation', + #category : 'Famix-MetamodelBuilder-Core-Exception', #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Implementation' + #tag : 'Exception' } { #category : 'accessing' } diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBEntityCreatorTrait.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBEntityCreatorTrait.class.st index ad3520aab..06c1217e7 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBEntityCreatorTrait.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBEntityCreatorTrait.class.st @@ -10,41 +10,11 @@ Class { #tag : 'Implementation' } -{ #category : 'generating' } -FmxMBEntityCreatorTrait >> generateEntityCreationMethodFor: aClass [ +{ #category : 'visitor' } +FmxMBEntityCreatorTrait >> acceptVisitor: aVisitor [ - self builder environment - compile: ('new{1} - - - ^ self add: {2} new' format: { - aClass name. - aClass fullName }) - in: self realClass - classified: 'entity creation' -] - -{ #category : 'generating' } -FmxMBEntityCreatorTrait >> generateEntityCreationMethods [ - - self builder concreteClasses do: [ :class | - self generateEntityCreationMethodFor: class. - (class allTransitiveTraitsIncludingClassGeneralization anySatisfy: [ :trait | trait prefix = #Famix and: [ trait name = #TNamedEntity ] ]) ifTrue: [ - self generateNamedEntityCreationMethodFor: class ] ] -] - -{ #category : 'generating' } -FmxMBEntityCreatorTrait >> generateNamedEntityCreationMethodFor: aClass [ - - ^ self builder environment - compile: ('new{1}Named: aName - - - ^ self add: ({2} named: aName)' format: { - aClass name. - aClass fullName }) - in: self realClass - classified: 'entity creation' + + ^ aVisitor visitEntityCreator: self ] { #category : 'initialization' } diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBImportingContext.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBImportingContext.class.st index 7d2264181..3922d1159 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBImportingContext.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBImportingContext.class.st @@ -13,7 +13,7 @@ newBuilder " Class { #name : 'FmxMBImportingContext', - #superclass : 'FmxMBBehavior', + #superclass : 'FmxMBClass', #category : 'Famix-MetamodelBuilder-Core-Implementation', #package : 'Famix-MetamodelBuilder-Core', #tag : 'Implementation' @@ -25,125 +25,21 @@ FmxMBImportingContext >> acceptVisitor: aVisitor [ ^ aVisitor visitImportingContext: self ] -{ #category : 'accessing' } -FmxMBImportingContext >> classGeneralization [ - - ^ self builder environment basicImportingContextSuperclass -] - { #category : 'accessing' } FmxMBImportingContext >> comment [ ^ 'This class is used to choose the entities to be imported when loading a model from file. -It is used by `MiImportingContextPresenter` in a `MiImportModelFromFileDialog` to import a {1}Model.' - format: { self builder configuration prefix } -] - -{ #category : 'settings - default' } -FmxMBImportingContext >> defaultSuperclass [ - - ^ self builder environment basicImportingContextSuperclass -] - -{ #category : 'generating' } -FmxMBImportingContext >> generate [ - - | aClass superclass | - self willGenerate ifFalse: [ ^ self ]. - - superclass := self classGeneralization - ifNil: [ self defaultSuperclass ] - ifNotNil: [ self classGeneralization ]. - - aClass := self builder environment - createClassNamed: self fullName asSymbol - superclass: superclass - traitNames: self allTraitNames - slots: self slotDefinitions - in: self packageName - tag: self tag - comment: self comment. - - self realClass: aClass. - - self generateMethodsIn: aClass -] - -{ #category : 'generating-methods' } -FmxMBImportingContext >> generateImportAssociation: aFmxMBAssociationClass in: aClass [ - - aClass - compile: ('import{1} - - - ^ self importAssociation: (self class fm3ClassNamed: #{1})' format: - { aFmxMBAssociationClass name }) - classified: 'importing' -] - -{ #category : 'generating-methods' } -FmxMBImportingContext >> generateImportConcreteEntity: aFmxMBClass in: aClass [ - - aClass - compile: ('import{1} - - - ^ self importConcreteEntity: (self class fm3ClassNamed: #{1})' - format: { aFmxMBClass name }) - classified: 'importing' +It is used by `MiImportingContextPresenter` in a `MiImportModelFromFileDialog` to import a {1}Model.' format: { self builder configuration prefix } ] -{ #category : 'generating-methods' } -FmxMBImportingContext >> generateImportIn: aClass [ - - self builder classes do: [ :each | - "No need to generate methods for model and groups." - (each isModelClass or: [ - each isMetamodelClassGroup or: [ each isAbstractClass ] ]) ifFalse: [ - - "Associations and other entities are managed differently by the importing context" - each allTransitiveTraits - detect: [ :trait | trait name = #TAssociation ] - ifFound: [ self generateImportAssociation: each in: aClass ] - ifNone: [ self generateImportConcreteEntity: each in: aClass ] ] ] -] - -{ #category : 'generating-methods' } -FmxMBImportingContext >> generateImportingContextMetamodelIn: aClass [ - - aClass classSide - compile: ('importedMetamodel - - - ^ {1}Model metamodel' format: { self prefix }) - classified: 'accessing' -] - -{ #category : 'generating' } -FmxMBImportingContext >> generateMethodsIn: aClass [ - - self generateImportingContextMetamodelIn: aClass. - self generateShouldImportIn: aClass. - self generateImportIn: aClass -] - -{ #category : 'generating-methods' } -FmxMBImportingContext >> generateShouldImportIn: aClass [ - - self builder classes do: [ :each | - "No need to generate methods for model and groups." - (each isModelClass or: [ - each isMetamodelClassGroup or: [ each isAbstractClass ] ]) ifFalse: [ - aClass - compile: ('shouldImport{1} +{ #category : 'accessing' } +FmxMBImportingContext >> defaultSuperclassName [ - - ^ self shouldImport: #{1}' format: { each name }) - classified: 'testing' ] ] + ^ #FamixImportingContext ] { #category : 'accessing' } FmxMBImportingContext >> name [ - ^ 'ImportingContext' + ^ super name ifNil:[ 'ImportingContext'] ] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBIncompletePropertyDefiniton.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBIncompletePropertyDefiniton.class.st index 915483243..9a8482532 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBIncompletePropertyDefiniton.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBIncompletePropertyDefiniton.class.st @@ -4,9 +4,9 @@ FamixMetamodelBuilderIncompletePropertyDefiniton Class { #name : 'FmxMBIncompletePropertyDefiniton', #superclass : 'Error', - #category : 'Famix-MetamodelBuilder-Core-Implementation', + #category : 'Famix-MetamodelBuilder-Core-Exception', #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Implementation' + #tag : 'Exception' } { #category : 'accessing' } diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBMethodsFactory.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBMethodsFactory.class.st new file mode 100644 index 000000000..c6ed5c562 --- /dev/null +++ b/src/Famix-MetamodelBuilder-Core/FmxMBMethodsFactory.class.st @@ -0,0 +1,288 @@ +" +The Famix metamodel generator needs to generate a lot of methods. Those can be quite verbose. + +My responsisbility is to return the code of all methods to generate. + +I'll be used during the generation of a metamodel. +" +Class { + #name : 'FmxMBMethodsFactory', + #superclass : 'Object', + #category : 'Famix-MetamodelBuilder-Core-Generation', + #package : 'Famix-MetamodelBuilder-Core', + #tag : 'Generation' +} + +{ #category : 'code generation' } +FmxMBMethodsFactory class >> addToCollectionFor: aName [ + + ^ 'add{1}: anObject + + ^ self {2} add: anObject' format: { + aName capitalized asSingular. + aName } +] + +{ #category : 'code generation' } +FmxMBMethodsFactory class >> allSubmetamodelsPackagesNamesFor: subBuilders [ + + ^ String streamContents: [ :stream | + | packages | + stream nextPutAll: 'allSubmetamodelsPackagesNames + + ^ #('. + + packages := (subBuilders collect: [ :subBuilder | subBuilder packageName ]) asOrderedCollection sorted: #yourself descending. + + packages do: [ :package | stream print: package ] separatedBy: [ stream space ]. + + stream nextPut: $) ] +] + +{ #category : 'code generation' } +FmxMBMethodsFactory class >> annotationFor: aName super: superclassName package: package isAbstract: aBoolean [ + + ^ 'annotation + + + + {4}' format: { + aName. + superclassName. + package. + (aBoolean + ifTrue: [ + ' + ' ] + ifFalse: [ '' ]) } +] + +{ #category : 'code generation' } +FmxMBMethodsFactory class >> canBeImportedFromFile [ + + ^ 'canBeImportedFromFile + + ^true' +] + +{ #category : 'code generation' } +FmxMBMethodsFactory class >> equalsForVariableNamed: variableName properties: properties [ + + ^ String streamContents: [ :stream | + stream + << '= '; + << variableName; + << ' + + + ^ '; + << variableName; + << ' '; + << properties first; + << ' = self '; + << properties first. + properties size > 1 ifTrue: [ + 2 to: properties size do: [ :idx | + stream << ' and: [ '. + stream + << variableName; + << ' '; + << (properties at: idx); + << ' = self '; + << (properties at: idx) ]. + 2 to: properties size do: [ :idx | stream << '] ' ] ] ] +] + +{ #category : 'code generation' } +FmxMBMethodsFactory class >> getTypedProperty: aProperty [ + + | propertyDefinition commentDefinition pragmaFormat | + pragmaFormat := aProperty defaultValue + ifNil: [ '' ] + ifNotNil: [ '' ]. + propertyDefinition := pragmaFormat format: { + aProperty name. + aProperty propertyType. + aProperty defaultValue printString }. + + commentDefinition := aProperty comment ifNotEmpty: [ '' format: { aProperty comment printString } ]. + + ^ String streamContents: [ :s | + s + nextPutAll: aProperty name; + cr; + cr. + s + tab; + nextPutAll: propertyDefinition; + cr. + s + tab; + nextPutAll: ''; + cr. + aProperty isMultivalued ifTrue: [ + s + tab; + nextPutAll: ''; + cr ]. + commentDefinition ifNotEmpty: [ + s + tab; + nextPutAll: commentDefinition; + cr ]. + s + tab; + nextPutAll: '^ '. + + aProperty isRemote + ifTrue: [ + s + nextPutAll: 'self attributeAt: #'; + nextPutAll: aProperty name; + nextPutAll: ' ifAbsent: [ nil ]' ] + ifFalse: [ s nextPutAll: aProperty name ]. + + + aProperty defaultValue ifNotNil: [ + s nextPutAll: (' ifNil: [ {1} := {2} ]' format: { + aProperty name. + aProperty defaultValue printString }) ] ] +] + +{ #category : 'code generation' } +FmxMBMethodsFactory class >> groupAnnotationNamed: aName [ + + ^ 'annotation{1} + + + ^ {1}' format: { aName } +] + +{ #category : 'code generation' } +FmxMBMethodsFactory class >> hashForProperties: properties [ + + ^ String streamContents: [ :stream | + stream << 'hash'. + stream << ' + + + ^ '. + stream + << 'self '; + << properties first; + << ' hash '. + properties size > 1 ifTrue: [ + 2 to: properties size do: [ :idx | + stream + << 'bitXor: self '; + << (properties at: idx); + << ' hash ' ] ] ] +] + +{ #category : 'code generation' } +FmxMBMethodsFactory class >> importAssociationNamed: aName [ + + ^ 'import{1} + + + ^ self importAssociation: (self class fm3ClassNamed: #{1})' format: { aName } +] + +{ #category : 'code generation' } +FmxMBMethodsFactory class >> importEntityNamed: aName [ + + ^ 'import{1} + + + ^ self importConcreteEntity: (self class fm3ClassNamed: #{1})' format: { aName } +] + +{ #category : 'code generation' } +FmxMBMethodsFactory class >> importedMetamodelForPrefix: prefix [ + + ^ 'importedMetamodel + + + ^ {1}Model metamodel' format: { prefix } +] + +{ #category : 'code generation' } +FmxMBMethodsFactory class >> importingClassNamed: aName [ + + ^ 'importingContextClass + + + ^ {1}' format: { aName } +] + +{ #category : 'code generation' } +FmxMBMethodsFactory class >> instantiate: aClass [ + + ^ 'new{1} + + + ^ self add: {2} new' format: { + aClass name. + aClass fullName } +] + +{ #category : 'code generation' } +FmxMBMethodsFactory class >> instantiateNamed: aClass [ + + ^ 'new{1}Named: aName + + + ^ self add: ({2} named: aName)' format: { + aClass name. + aClass fullName } +] + +{ #category : 'code generation' } +FmxMBMethodsFactory class >> isAbstractFor: className [ + + ^ 'isAbstract + + + ^ self == {1}' format: { className } +] + +{ #category : 'code generation' } +FmxMBMethodsFactory class >> metamodelFor: className [ + + ^ 'metamodel + + + ^ {1} metamodel' format: { className } +] + +{ #category : 'code generation' } +FmxMBMethodsFactory class >> setTypedProperty: aName remote: aBoolean [ + + ^ (String streamContents: [ :stream | + stream nextPutAll: '{1}: anObject + + '. + aBoolean + ifTrue: [ stream nextPutAll: 'self attributeAt: #{1} put: anObject' ] + ifFalse: [ stream nextPutAll: '{1} := anObject' ] ]) format: { aName } +] + +{ #category : 'code generation' } +FmxMBMethodsFactory class >> shouldImportNamed: aName [ + + ^ 'shouldImport{1} + + + ^ self shouldImport: #{1}' format: { aName } +] + +{ #category : 'code generation' } +FmxMBMethodsFactory class >> testReturning: aBoolean for: aSelector [ + + ^ '{1} + + + ^ {2}' format: { + aSelector. + aBoolean printString } +] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBModel.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBModel.class.st index 3d10bcacb..28c1ff7db 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBModel.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBModel.class.st @@ -6,100 +6,22 @@ Class { #tag : 'Implementation' } -{ #category : 'settings - default' } -FmxMBModel >> defaultSuperclass [ - ^ self builder environment basicModelSuperclass -] - -{ #category : 'settings - default' } -FmxMBModel >> defaultTag [ - - ^ #Model -] - -{ #category : 'generating' } -FmxMBModel >> generate [ - - super generate. - self generateModelMethods: self ensureRealClass -] - -{ #category : 'generating-methods' } -FmxMBModel >> generateAnnotationMethodIn: aModelClass [ - - aModelClass classSide - compile: ('annotation - - - ' format: { - self fullName. - self builder safeAnnotationPackageName }) - classified: 'meta' -] - -{ #category : 'generating-methods' } -FmxMBModel >> generateFileImportMethodsIn: aModelClass [ +{ #category : 'visitor' } +FmxMBModel >> acceptVisitor: aVisitor [ - self builder configuration shouldGenerateFileImportHelpers ifFalse: [ - ^ self ]. - - aModelClass classSide - compile: 'canBeImportedFromFile - - ^true' - classified: 'testing'. - - aModelClass classSide - compile: ('importingContextClass - - - ^ {1}' format: { self builder importingContextName }) - classified: 'accessing' -] - -{ #category : 'generating-methods' } -FmxMBModel >> generateModelMethods: aModelClass [ - - self generateAnnotationMethodIn: aModelClass. - self generateFileImportMethodsIn: aModelClass. - self generateSubmetamodelsMethodIn: aModelClass + ^ aVisitor visitModel: self ] -{ #category : 'generating-methods' } -FmxMBModel >> generateRootMetamodelMethodIn: aClass [ - - "no need to define the method #metamodel in the #Model entity - because it is already the #Model entity that hold the metamodel" - - -] - -{ #category : 'generating-methods' } -FmxMBModel >> generateSubmetamodelsMethodIn: aModelClass [ +{ #category : 'settings - default' } +FmxMBModel >> defaultSuperclassName [ - self builder allSubBuilders ifNotEmpty: [ :subBuilders | - aModelClass classSide - compile: ('allSubmetamodelsPackagesNames - - ^ #({1})' format: { (String streamContents: [ :stream | - | packages | - packages := (subBuilders collect: [ :subBuilder | - subBuilder configuration packageName ]) - asOrderedCollection. - packages sort: #yourself descending. - packages - do: [ :package | stream print: package ] - separatedBy: [ stream space ] ]) }) - classified: 'accessing' ] + ^ #MooseModel ] -{ #category : 'generating-methods' } -FmxMBModel >> generateTestingMethodsIn: aClass [ - - "No need to define the testing methods in the #Model entity - because we already have a test that check that the entity is a Model" +{ #category : 'settings - default' } +FmxMBModel >> defaultTag [ - + ^ #Model ] { #category : 'testing' } diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBNonRemoteRelationSideGenerationStrategy.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBNonRemoteRelationSideGenerationStrategy.class.st deleted file mode 100644 index 1812a01ce..000000000 --- a/src/Famix-MetamodelBuilder-Core/FmxMBNonRemoteRelationSideGenerationStrategy.class.st +++ /dev/null @@ -1,110 +0,0 @@ -Class { - #name : 'FmxMBNonRemoteRelationSideGenerationStrategy', - #superclass : 'FmxMBRelationSideGenerationStrategy', - #category : 'Famix-MetamodelBuilder-Core-Implementation', - #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Implementation' -} - -{ #category : 'generation' } -FmxMBNonRemoteRelationSideGenerationStrategy >> generateGetterCoreIn: aClassOrTrait on: aStream for: aRelationSide [ - - aStream - tab; - nextPutAll: ('' format: { - aRelationSide name. - aRelationSide oppositeType. - aRelationSide oppositeName }); - cr. - - "We need to add the multivalued since we do not use a FMMany slot." - aRelationSide isMany ifTrue: [ - aStream - tab; - nextPutAll: ''; - cr ]. - - aRelationSide remoteBuilderDo: [ :aRemoteBuilder | - aStream - tab; - nextPutAll: ('' format: { aRemoteBuilder generator packageName }); - cr ]. - - aStream - tab; - nextPutAll: '^ self attributeAt: #'; - nextPutAll: aRelationSide name. - - aRelationSide isOne ifTrue: [ aStream nextPutAll: ' ifAbsent: [ nil ]' ]. - - (aRelationSide otherSide isOne and: [ aRelationSide isMany ]) ifTrue: [ - aStream nextPutAll: (' ifAbsentPut: [ FMMultivalueLink on: self opposite: #{1}: ]' format: { aRelationSide otherSide name }) ]. - - (aRelationSide isMany and: [ aRelationSide otherSide isMany ]) ifTrue: [ - aStream nextPutAll: (' ifAbsentPut: [ FMMultiMultivalueLink on: self opposite: #{1} ]' format: { aRelationSide otherSide name }) ] -] - -{ #category : 'generation' } -FmxMBNonRemoteRelationSideGenerationStrategy >> generateSetterCoreIn: aClassOrTrait on: aStream for: aRelationSide [ - - (aRelationSide isOne and: [ aRelationSide otherSide isOne ]) ifTrue: [ - aStream - tab; - nextPutAll: - ('(self attributeAt: #{1} ifAbsentPut: [nil]) == anObject ifTrue: [ ^ anObject ].' - format: { aRelationSide name }); - cr; - tab; - nextPutAll: 'anObject ifNil: [ | otherSide |'; - cr; - tab; - tab; - nextPutAll: - ('otherSide := self {1}.' format: { aRelationSide name }); - cr; - tab; - tab; - nextPutAll: ('self attributeAt: #{1} put: anObject.' format: - { aRelationSide name }); - cr; - tab; - tab; - nextPutAll: - ('otherSide {1}: nil ]' format: { aRelationSide otherSide name }); - cr; - tab; - nextPutAll: - ('ifNotNil: [ ' format: { aRelationSide otherSide name }); - cr; - tab; - tab; - nextPutAll: ('self attributeAt: #{1} put: anObject.' format: - { aRelationSide name }); - cr; - tab; - tab; - nextPutAll: - ('anObject {1}: self ]' format: { aRelationSide otherSide name }) ]. - - aRelationSide isMany ifTrue: [ - aStream - tab; - nextPutAll: - ('self {1} value: anObject' format: { aRelationSide name }) ]. - - (aRelationSide otherSide isMany and: [ aRelationSide isOne ]) - ifTrue: [ - aStream - tab; - nextPutAll: - ('self attributeAt: #{1} put: (FMMultivalueLink on: self update: #{2} from: self {1} to: anObject).' - format: { - aRelationSide name. - aRelationSide otherSide name }) ] -] - -{ #category : 'testing' } -FmxMBNonRemoteRelationSideGenerationStrategy >> producesSlot [ - - ^ false -] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBPlantTextVisitor.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBPlantTextVisitor.class.st index a917f24a4..1d0ccf026 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBPlantTextVisitor.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBPlantTextVisitor.class.st @@ -43,10 +43,7 @@ FmxMBPlantTextVisitor >> behaviors [ { #category : 'checking' } FmxMBPlantTextVisitor >> checkTrait: aTrait [ - ^ aTrait willGenerate and: [ - (traitsWithUsers includes: aTrait) and: [ - (aTrait builder classes flatCollect: [ :each | - each traitGeneralizations ]) includes: aTrait ] ] + ^ (traitsWithUsers includes: aTrait) and: [ (aTrait builder classes flatCollect: [ :each | each traitGeneralizations ]) includes: aTrait ] ] { #category : 'accessing' } @@ -108,22 +105,20 @@ FmxMBPlantTextVisitor >> mergeTraits: anObject [ { #category : 'private' } FmxMBPlantTextVisitor >> onlySingleUserOf: aTrait [ - ^ ((aTrait builder classes select: #willGenerate) - count: [ :aClass | - | traits | - traits := aClass traitGeneralizations. - traits size = 1 and: [ traits anyOne = aTrait ] ]) = 1 + + ^ (aTrait builder classes count: [ :aClass | + | traits | + traits := aClass traitGeneralizations. + traits size = 1 and: [ traits anyOne = aTrait ] ]) = 1 ] { #category : 'private' } FmxMBPlantTextVisitor >> recordGeneralizationsForClass: aClass mergingTraits: mergesTrait [ - aClass classGeneralization ifNotNil: [ :generalization | - generalizationDefinitions add: generalization -> aClass ]. - mergesTrait ifFalse: [ - aClass traitGeneralizations ifNotEmpty: [ :generalizations | - generalizations do: [ :generalization | - generalizationDefinitions add: generalization -> aClass ] ] ] + aClass superclass ifNotNil: [ :superclass | generalizationDefinitions add: superclass -> aClass ]. + mergesTrait ifFalse: [ + aClass traitGeneralizations ifNotEmpty: [ :generalizations | + generalizations do: [ :generalization | generalizationDefinitions add: generalization -> aClass ] ] ] ] { #category : 'visiting' } @@ -163,17 +158,16 @@ FmxMBPlantTextVisitor >> visitBuilder: aBuilder [ nextPutAll: 'hide empty members'; cr; cr. - self gatherTraits ifTrue: [ - stream - nextPutAll: 'together {'; - cr ]. + self gatherTraits ifTrue: [ + stream + nextPutAll: 'together {'; + cr ]. self selectTraitsWithUsersFrom: aBuilder. - (aBuilder traits select: #willGenerate) do: [ :each | - each acceptVisitor: self ]. - self gatherTraits ifTrue: [ - stream - nextPutAll: '}'; - cr ]. + aBuilder traits do: [ :each | each acceptVisitor: self ]. + self gatherTraits ifTrue: [ + stream + nextPutAll: '}'; + cr ]. aBuilder sortedClasses do: [ :each | each acceptVisitor: self ]. self writeGeneralizations. self writeRelations. @@ -187,9 +181,6 @@ FmxMBPlantTextVisitor >> visitBuilder: aBuilder [ FmxMBPlantTextVisitor >> visitClass: aClass [ | mergesTrait | - - aClass willGenerate ifFalse: [ ^ self ]. - mergesTrait := self mergeTraits and: [ aClass traitGeneralizations size = 1 and: [ self onlySingleUserOf: aClass traitGeneralizations first ]]. @@ -201,10 +192,9 @@ FmxMBPlantTextVisitor >> visitClass: aClass [ ] { #category : 'visiting' } -FmxMBPlantTextVisitor >> visitRelationSide: aRelationSide [ - - relations add: aRelationSide relation. +FmxMBPlantTextVisitor >> visitRelation: aRelation [ + relations add: aRelation ] { #category : 'visiting' } @@ -212,18 +202,18 @@ FmxMBPlantTextVisitor >> visitTrait: aTrait [ | behaviorKey | withAllTraits - ifFalse: [ (self checkTrait: aTrait) ifFalse: [^ self]] + ifFalse: [ (self checkTrait: aTrait) ifFalse: [ ^ self ] ] ifTrue: [ self recordGeneralizationsForTrait: aTrait ]. behaviorKey := self ensureBehaviorNameFor: aTrait. - (self onlySingleUserOf: aTrait) ifTrue: [ self writeSingleUseOf: aTrait.]. + (self onlySingleUserOf: aTrait) ifTrue: [ self writeSingleUseOf: aTrait ]. self writeTraitBeginningOf: aTrait with: behaviorKey. - aTrait properties do: [ :each | each acceptVisitor: self ]. + aTrait propertiesAndRelations do: [ :each | each acceptVisitor: self ]. - self writeTraitEnd. + self writeTraitEnd ] { #category : 'visiting' } @@ -274,7 +264,7 @@ FmxMBPlantTextVisitor >> writeClass: aClass mergingTraits: mergesTraits [ nextPutAll: displayedName; nextPutAll: '" {'; cr. - aClass properties do: [ :each | each acceptVisitor: self ]. + aClass propertiesAndRelations do: [ :each | each acceptVisitor: self ]. mergesTraits ifTrue: [ | defs | @@ -289,13 +279,12 @@ FmxMBPlantTextVisitor >> writeClass: aClass mergingTraits: mergesTraits [ { #category : 'relations' } FmxMBPlantTextVisitor >> writeGeneralizations [ - generalizationDefinitions do: [ :each | - (each key willGenerate and: [ each value willGenerate ]) ifTrue: [ + generalizationDefinitions do: [ :each | stream nextPutAll: (self ensureBehaviorNameFor: each key); nextPutAll: ' <|-- '; nextPutAll: (self ensureBehaviorNameFor: each value); - cr ] ]. + cr ]. stream cr ] @@ -303,52 +292,49 @@ FmxMBPlantTextVisitor >> writeGeneralizations [ FmxMBPlantTextVisitor >> writeRelations [ | isContainer | + relations do: [ :relation | + stream + nextPutAll: (self ensureBehaviorNameFor: relation relatedEntity); + nextPutAll: ' "'; + nextPutAll: relation oppositeSide name; + space; + nextPutAll: relation oppositeSide shortCardinalityString; + space; + nextPutAll: '"'. - relations do: [ :relation | - stream - nextPutAll: (self ensureBehaviorNameFor: relation from relatedEntity); - nextPutAll: ' "'; - nextPutAll: relation to name; - space; - nextPutAll: relation oppositeRelation shortCardinalityString; - space; - nextPutAll: '"'. - - isContainer := relation from isContainer or: [ relation to isContainer ]. - - stream space. - relation to isContainer - ifTrue: [ stream nextPutAll: 'o' ]. - - isContainer - ifTrue: [ stream nextPutAll: '-[#red]-'. ] - ifFalse: [ stream nextPutAll: '-[#black]-'. ]. - - relation from isContainer - ifTrue: [ stream nextPutAll: 'o' ]. - stream space. - - stream - nextPutAll: '"'; - nextPutAll: relation from name; - space; - nextPutAll: relation shortCardinalityString; - space; - nextPutAll: '" '; - nextPutAll: (self ensureBehaviorNameFor: relation to relatedEntity); - cr] - + isContainer := relation isContainer or: [ relation oppositeSide isContainer ]. + + stream space. + relation oppositeSide isContainer ifTrue: [ stream nextPutAll: 'o' ]. + + isContainer + ifTrue: [ stream nextPutAll: '-[#red]-' ] + ifFalse: [ stream nextPutAll: '-[#black]-' ]. + + relation isContainer ifTrue: [ stream nextPutAll: 'o' ]. + stream space. + + stream + nextPutAll: '"'; + nextPutAll: relation name; + space; + nextPutAll: relation shortCardinalityString; + space; + nextPutAll: '" '; + nextPutAll: (self ensureBehaviorNameFor: relation oppositeSide relatedEntity); + cr ] ] { #category : 'writing' } FmxMBPlantTextVisitor >> writeSingleUseOf: aTrait [ + | savedStream | - savedStream := stream. - stream := String new writeStream. - aTrait properties do: [ :each | each acceptVisitor: self ]. - typedProperties add: aTrait -> stream contents. - stream := savedStream. - ^ self + savedStream := stream. + stream := String new writeStream. + aTrait propertiesAndRelations do: [ :each | each acceptVisitor: self ]. + typedProperties add: aTrait -> stream contents. + stream := savedStream. + ^ self ] { #category : 'writing' } diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBPlantTextVisitorPartial.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBPlantTextVisitorPartial.class.st index 02c73d1a5..3f0eeab99 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBPlantTextVisitorPartial.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBPlantTextVisitorPartial.class.st @@ -31,12 +31,9 @@ FmxMBPlantTextVisitorPartial >> isWantedClass: aClass [ ] { #category : 'testing' } -FmxMBPlantTextVisitorPartial >> isWantedRelation: aRelationSide [ - ^aRelationSide relation sides allSatisfy: [ :side | - side relatedClass notNil and: - [ self isWantedClass: side relatedClass ] - ] +FmxMBPlantTextVisitorPartial >> isWantedRelation: aRelation [ + ^ aRelation relations allSatisfy: [ :side | side relatedClass isNotNil and: [ self isWantedClass: side relatedClass ] ] ] { #category : 'visiting' } @@ -46,11 +43,10 @@ FmxMBPlantTextVisitorPartial >> visitClass: aClass [ ] { #category : 'visiting' } -FmxMBPlantTextVisitorPartial >> visitRelationSide: aRelationSide [ - (self isWantedRelation: aRelationSide) - ifFalse: [ ^ self ]. - super visitRelationSide: aRelationSide +FmxMBPlantTextVisitorPartial >> visitRelation: aRelation [ + (self isWantedRelation: aRelation) ifFalse: [ ^ self ]. + super visitRelation: aRelation ] { #category : 'relations' } diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBPrintVisitor.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBPrintVisitor.class.st index dd8971893..1c838452f 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBPrintVisitor.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBPrintVisitor.class.st @@ -15,11 +15,10 @@ Class { #tag : 'Visitors' } -{ #category : 'as yet unclassified' } +{ #category : 'visiting' } FmxMBPrintVisitor >> prepareForPropertiesIn: aClassOrTrait [ - (aClassOrTrait properties isNotEmpty or: [ - aClassOrTrait relations isNotEmpty ]) ifFalse: [ ^ self ]. + aClassOrTrait propertiesAndRelations ifEmpty: [ ^ self ]. Transcript cr; @@ -49,22 +48,19 @@ FmxMBPrintVisitor >> visitClass: aClass [ self traceCrTab: ''. aClass name trace. self trace: ' -|> '. - (aClass classGeneralization + (aClass superclass ifNil: [ 'Entity' ] - ifNotNil: [ :generalization | generalization name ]) trace. - aClass traitGeneralizations ifNotEmpty: [ :generalizations | - generalizations - do: [ :generalization | generalization name trace ] - separatedBy: [ ', ' trace ] ]. + ifNotNil: #name) trace. + aClass traitGeneralizations ifNotEmpty: [ :generalizations | generalizations do: [ :generalization | generalization name trace ] separatedBy: [ ', ' trace ] ]. super visitClass: aClass ] { #category : 'visiting' } -FmxMBPrintVisitor >> visitRelationSide: aRelationSide [ +FmxMBPrintVisitor >> visitRelation: aRelation [ self trace: - aRelationSide name , ' (' , aRelationSide oppositeType , ')' + aRelation name , ' (' , aRelation oppositeType , ')' ] { #category : 'visiting' } diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBProperty.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBProperty.class.st index ac144db75..5cc4ed983 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBProperty.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBProperty.class.st @@ -11,34 +11,11 @@ FmxMBProperty class >> isAbstract [ ^ self = FmxMBProperty ] -{ #category : 'accessing' } -FmxMBProperty >> asSlot [ +{ #category : 'visiting' } +FmxMBProperty >> acceptVisitor: aVisitor [ - self subclassResponsibility -] - -{ #category : 'generating' } -FmxMBProperty >> generateAccessorsIn: aClassOrTrait [ - self generateGetterIn: aClassOrTrait. - self generateSetterIn: aClassOrTrait -] - -{ #category : 'generating' } -FmxMBProperty >> generateGetterIn: aClassOrTrait [ - - self subclassResponsibility -] - -{ #category : 'generating' } -FmxMBProperty >> generateSetterIn: aClassOrTrait [ - - self subclassResponsibility -] - -{ #category : 'printing' } -FmxMBProperty >> hasDefaultValue [ - ^ false + ^ aVisitor visitProperty: self ] { #category : 'initialization' } @@ -47,11 +24,6 @@ FmxMBProperty >> initialize [ comment := '' ] -{ #category : 'printing' } -FmxMBProperty >> isContainer [ - ^ false -] - { #category : 'accessing' } FmxMBProperty >> isRelation [ @@ -60,7 +32,8 @@ FmxMBProperty >> isRelation [ { #category : 'accessing' } FmxMBProperty >> name: aString [ - (self builder reservedKeywords includes: aString) ifTrue: [ FmxMBPropertyNameIsReserved signal ]. + + (self reservedKeywords includes: aString) ifTrue: [ FmxMBPropertyNameIsReserved signal ]. name := aString ] @@ -80,3 +53,21 @@ FmxMBProperty >> printOn: aStream [ FmxMBProperty >> producesSlot [ ^ true ] + +{ #category : 'accessing' } +FmxMBProperty >> slotDefinition [ + + ^ '#' , self name , ' => ' , self slotExpression +] + +{ #category : 'accessing' } +FmxMBProperty >> slotExpression [ + + self subclassResponsibility +] + +{ #category : 'validation' } +FmxMBProperty >> validate [ + + self subclassResponsibility +] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBPropertyNameIsReserved.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBPropertyNameIsReserved.class.st index ed68e698d..c68a50bc5 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBPropertyNameIsReserved.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBPropertyNameIsReserved.class.st @@ -1,22 +1,14 @@ Class { #name : 'FmxMBPropertyNameIsReserved', #superclass : 'Error', - #category : 'Famix-MetamodelBuilder-Core-Implementation', + #category : 'Famix-MetamodelBuilder-Core-Exception', #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Implementation' + #tag : 'Exception' } { #category : 'accessing' } FmxMBPropertyNameIsReserved >> messageText [ + - ^ String - streamContents: [ :stream | - stream << 'Properties cannot have this name: '. - self receiver builder reservedKeywords - do: [ :keyword | - stream - << ''''; - << keyword; - << '''' ] - separatedBy: [ stream space ] ] + ^ String streamContents: [ :stream | stream << 'Properties cannot have this name' ] ] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBRelation.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBRelation.class.st index d34837794..43016bb63 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBRelation.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBRelation.class.st @@ -1,64 +1,168 @@ " -FamixMetamodelBuilderRelation +Represents a property referencing another entity " Class { #name : 'FmxMBRelation', - #superclass : 'Object', + #superclass : 'FmxMBProperty', + #traits : 'FmxMBRelationSideTrait', + #classTraits : 'FmxMBRelationSideTrait classTrait', #instVars : [ - 'side', - 'oppositeSide', - 'builder' + 'cardinality', + 'trait', + 'container', + 'relatedClass', + 'derived', + 'source', + 'target', + 'oppositeSide' ], #category : 'Famix-MetamodelBuilder-Core-Implementation', #package : 'Famix-MetamodelBuilder-Core', #tag : 'Implementation' } -{ #category : 'accessing' } -FmxMBRelation >> builder [ - ^ builder +{ #category : 'visitor' } +FmxMBRelation >> acceptVisitor: aVisitor [ + + + ^ aVisitor visitRelation: self. +] + +{ #category : 'converting' } +FmxMBRelation >> asRelationNamed: aPropertyName [ + + "ignore the proposed name" + ^ self ] { #category : 'accessing' } -FmxMBRelation >> builder: anObject [ - builder := anObject +FmxMBRelation >> cardinality [ + ^ cardinality ] { #category : 'accessing' } -FmxMBRelation >> cardinalityString [ - ^ String - streamContents: [ :s | - self to isMany ifTrue: [ s nextPutAll: '*' ] ifFalse: [ s nextPutAll: '1' ]. - s nextPutAll: '..'. - self from isMany ifTrue: [ s nextPutAll: '*' ] ifFalse: [ s nextPutAll: '1' ] ] +FmxMBRelation >> cardinality: anObject [ + cardinality := anObject +] + +{ #category : 'properties' } +FmxMBRelation >> container [ + + container := true ] { #category : 'accessing' } -FmxMBRelation >> from [ +FmxMBRelation >> container: anObject [ + container := anObject +] + +{ #category : 'properties' } +FmxMBRelation >> derived [ + derived := true +] + +{ #category : 'properties' } +FmxMBRelation >> derived: anObject [ + derived := anObject +] + +{ #category : 'initialization' } +FmxMBRelation >> initialize [ + super initialize. + + cardinality := #one. + container := false. + derived := false. + target := false. + source := false +] + +{ #category : 'properties' } +FmxMBRelation >> isContainer [ + + ^ container +] + +{ #category : 'properties' } +FmxMBRelation >> isDerived [ + + ^ derived +] + +{ #category : 'testing' } +FmxMBRelation >> isMany [ - ^ side + ^ self cardinality = #many +] + +{ #category : 'testing' } +FmxMBRelation >> isOne [ + + ^ self cardinality = #one +] + +{ #category : 'testing' } +FmxMBRelation >> isRelation [ + ^ true +] + +{ #category : 'testing' } +FmxMBRelation >> isRemote [ + + ^ self relatedClass isRemote +] + +{ #category : 'properties' } +FmxMBRelation >> isSource [ + + ^ source +] + +{ #category : 'properties' } +FmxMBRelation >> isTarget [ + + ^ target +] + +{ #category : 'converting' } +FmxMBRelation >> makeRemote [ + + self isRemote: true ] { #category : 'accessing' } -FmxMBRelation >> from: aBlock [ +FmxMBRelation >> many [ - side := (FmxMBRelationSide new - relation: self; - builder: self builder; - yourself). - aBlock cull: side. + cardinality := #many +] + +{ #category : 'properties' } +FmxMBRelation >> noContainer [ + + container := false +] + +{ #category : 'properties' } +FmxMBRelation >> notDerived [ + + derived := false ] { #category : 'accessing' } -FmxMBRelation >> left [ +FmxMBRelation >> one [ - ^ side + cardinality := #one ] { #category : 'accessing' } -FmxMBRelation >> oppositeRelation [ +FmxMBRelation >> oppositeClass [ + + ^ oppositeSide relatedEntity +] - ^ self copy swapSides +{ #category : 'accessing' } +FmxMBRelation >> oppositeName [ + ^ self oppositeSide name asSymbol ] { #category : 'accessing' } @@ -68,58 +172,153 @@ FmxMBRelation >> oppositeSide [ { #category : 'accessing' } FmxMBRelation >> oppositeSide: anObject [ - oppositeSide := anObject + "We keep an opposite relation bidirectional" + + oppositeSide := anObject. + anObject oppositeSide = self ifFalse: [ anObject oppositeSide: self ] ] { #category : 'accessing' } -FmxMBRelation >> right [ +FmxMBRelation >> oppositeType [ + + ^ (self oppositeClass prefix , self oppositeSide relatedEntityName) asSymbol +] + +{ #category : 'private' } +FmxMBRelation >> pluralPropertyName [ + + ^ self propertyName +] + +{ #category : 'printing' } +FmxMBRelation >> producesSlot [ + "I produce a slot if one of the side is remote. Else we will use the attribute mecanism" + + self relatedClass isRemote ifTrue: [ ^ false ]. + + ^ self oppositeClass isRemote not +] + +{ #category : 'private' } +FmxMBRelation >> propertyName [ - ^ oppositeSide + ^ self relatedClass propertyName ] { #category : 'accessing' } -FmxMBRelation >> shortCardinalityString [ - ^ self from isMany ifTrue: [ '*' ] ifFalse: [ '' ] +FmxMBRelation >> relatedClass [ + ^ relatedClass +] + +{ #category : 'accessing' } +FmxMBRelation >> relatedClass: anObject [ + relatedClass := anObject ] { #category : 'accessing' } -FmxMBRelation >> side [ +FmxMBRelation >> relatedEntity [ - ^ side + ^ trait ifNil: [ relatedClass ] ] { #category : 'accessing' } -FmxMBRelation >> side: anObject [ - side := anObject +FmxMBRelation >> relatedEntityName [ + + ^ self relatedEntity name ] { #category : 'accessing' } -FmxMBRelation >> sides [ +FmxMBRelation >> remoteBuilderDo: aBlock [ + + self relatedEntity additionalProperties at: #remoteBuilder ifPresent: aBlock +] + +{ #category : 'accessing' } +FmxMBRelation >> shortCardinalityString [ - ^ { side. oppositeSide } + ^ self isMany + ifTrue: [ '*' ] + ifFalse: [ '' ] ] { #category : 'accessing' } -FmxMBRelation >> swapSides [ +FmxMBRelation >> sides [ + + ^ { + self. + self oppositeSide } +] + +{ #category : 'name conversion' } +FmxMBRelation >> singularPropertyName [ + + | normalizedName uncapitalized aName | + + aName := self propertyName. + + normalizedName := ((aName size >= 2) + and: [ ((aName first:2) allSatisfy: #isUppercase) + and: [ aName beginsWith: 'T' ] ]) + ifTrue: [ aName withoutPrefix: 'T' ] + ifFalse: [ aName ]. + + uncapitalized := normalizedName uncapitalized. + + ^ uncapitalized + +] + +{ #category : 'generating' } +FmxMBRelation >> slotExpression [ + + ^ (cardinality = #one + ifTrue: [ 'FMOne' ] + ifFalse: [ 'FMMany' ]) , ' type: #' , self oppositeType , ' opposite: #' , self oppositeName +] + +{ #category : 'properties' } +FmxMBRelation >> source [ - | temp | - temp := oppositeSide. - oppositeSide := side. - side := temp + source := true. +] + +{ #category : 'properties' } +FmxMBRelation >> source: aBoolean [ + source := aBoolean +] + +{ #category : 'properties' } +FmxMBRelation >> target [ + + target := true. +] + +{ #category : 'properties' } +FmxMBRelation >> target: anObject [ + target := anObject ] { #category : 'accessing' } -FmxMBRelation >> to [ +FmxMBRelation >> trait [ + ^ trait +] - ^ oppositeSide +{ #category : 'accessing' } +FmxMBRelation >> trait: anObject [ + self relatedEntity ifNotNil: [ :aRelatedEntity | aRelatedEntity removeRelation: self ]. + trait := anObject. + trait addRelation: self ] { #category : 'accessing' } -FmxMBRelation >> to: aBlock [ +FmxMBRelation >> type [ + + ^ (self relatedClass prefix , self relatedEntityName) asSymbol +] + +{ #category : 'generating' } +FmxMBRelation >> validate [ + "Nothing to validate here" - oppositeSide := (FmxMBRelationSide new - relation: self; - builder: self builder; - yourself). - aBlock cull: oppositeSide. + ] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBRelationAccessorsGenerationStrategy.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBRelationAccessorsGenerationStrategy.class.st new file mode 100644 index 000000000..cc3551296 --- /dev/null +++ b/src/Famix-MetamodelBuilder-Core/FmxMBRelationAccessorsGenerationStrategy.class.st @@ -0,0 +1,103 @@ +" +I am a strategy used during the generation of the Famix code to handle the way to generate accessors for a relation. + +I am an abstract class. Check my subclasses for more information +" +Class { + #name : 'FmxMBRelationAccessorsGenerationStrategy', + #superclass : 'Object', + #classInstVars : [ + 'defaultInstance' + ], + #category : 'Famix-MetamodelBuilder-Core-Generation', + #package : 'Famix-MetamodelBuilder-Core', + #tag : 'Generation' +} + +{ #category : 'accessing' } +FmxMBRelationAccessorsGenerationStrategy class >> defaultInstance [ + "Keeping a default instance since I have no state" + + ^ defaultInstance ifNil: [ defaultInstance := self new ] +] + +{ #category : 'generation' } +FmxMBRelationAccessorsGenerationStrategy >> generateGetterCodeFor: aRelation [ + + | commentDefinition | + commentDefinition := aRelation comment ifNotEmpty: [ :comment | '' format: { comment printString } ]. + + ^ String streamContents: [ :s | + s + nextPutAll: aRelation name; + cr; + tab; + nextPutAll: '"Relation named: #'; + nextPutAll: aRelation name; + nextPutAll: ' type: #'; + nextPutAll: aRelation oppositeType; + nextPutAll: ' opposite: #'; + nextPutAll: aRelation oppositeName; + nextPutAll: '"'; + cr; + cr. + s + tab; + nextPutAll: ''; + cr. + commentDefinition ifNotEmpty: [ + s + tab; + nextPutAll: commentDefinition; + cr ]. + aRelation isContainer ifTrue: [ + s + tab; + nextPutAll: ''; + cr ]. + aRelation isDerived ifTrue: [ + s + tab; + nextPutAll: ''; + cr ]. + aRelation isSource ifTrue: [ + s + tab; + nextPutAll: ''; + cr ]. + aRelation isTarget ifTrue: [ + s + tab; + nextPutAll: ''; + cr ]. + + self generateGetterCoreOn: s for: aRelation ] +] + +{ #category : 'generation' } +FmxMBRelationAccessorsGenerationStrategy >> generateGetterCoreOn: aStream for: aRelation [ + + ^ self subclassResponsibility +] + +{ #category : 'generation' } +FmxMBRelationAccessorsGenerationStrategy >> generateSetterCodeFor: aRelation [ + + ^ String streamContents: [ :s | + s + nextPutAll: aRelation name; + nextPutAll: ': anObject'; + cr; + cr. + s + tab; + nextPutAll: ''; + cr. + self generateSetterCoreOn: s for: aRelation ] +] + +{ #category : 'generation' } +FmxMBRelationAccessorsGenerationStrategy >> generateSetterCoreOn: aStream for: aRelation [ + + ^ self subclassResponsibility +] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBRelationAttributesGenerationStrategy.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBRelationAttributesGenerationStrategy.class.st new file mode 100644 index 000000000..f88ba8b16 --- /dev/null +++ b/src/Famix-MetamodelBuilder-Core/FmxMBRelationAttributesGenerationStrategy.class.st @@ -0,0 +1,104 @@ +" +I will generate accessors using the Moose concept of attributes to access a relation. + +This is used when one of the side of the relation is remote. +" +Class { + #name : 'FmxMBRelationAttributesGenerationStrategy', + #superclass : 'FmxMBRelationAccessorsGenerationStrategy', + #category : 'Famix-MetamodelBuilder-Core-Generation', + #package : 'Famix-MetamodelBuilder-Core', + #tag : 'Generation' +} + +{ #category : 'generation' } +FmxMBRelationAttributesGenerationStrategy >> generateGetterCoreOn: aStream for: aRelation [ + + aStream + tab; + nextPutAll: ('' format: { + aRelation name. + aRelation oppositeType. + aRelation oppositeName }); + cr. + + "We need to add the multivalued since we do not use a FMMany slot." + aRelation isMany ifTrue: [ + aStream + tab; + nextPutAll: ''; + cr ]. + + aRelation remoteBuilderDo: [ :aRemoteBuilder | + aStream + tab; + nextPutAll: ('' format: { aRemoteBuilder packageName }); + cr ]. + + aStream + tab; + nextPutAll: '^ self attributeAt: #'; + nextPutAll: aRelation name. + + aRelation isOne ifTrue: [ aStream nextPutAll: ' ifAbsent: [ nil ]' ]. + + (aRelation oppositeSide isOne and: [ aRelation isMany ]) ifTrue: [ + aStream nextPutAll: (' ifAbsentPut: [ FMMultivalueLink on: self opposite: #{1}: ]' format: { aRelation oppositeSide name }) ]. + + (aRelation isMany and: [ aRelation oppositeSide isMany ]) ifTrue: [ + aStream nextPutAll: (' ifAbsentPut: [ FMMultiMultivalueLink on: self opposite: #{1} ]' format: { aRelation oppositeSide name }) ] +] + +{ #category : 'generation' } +FmxMBRelationAttributesGenerationStrategy >> generateSetterCoreOn: aStream for: aRelation [ + + aRelation remoteBuilderDo: [ :aRemoteBuilder | + aStream + tab; + nextPutAll: ('' format: { aRemoteBuilder generator packageName }); + cr; + cr ]. + + (aRelation isOne and: [ aRelation oppositeSide isOne ]) ifTrue: [ + aStream + tab; + nextPutAll: ('(self attributeAt: #{1} ifAbsentPut: [nil]) == anObject ifTrue: [ ^ anObject ].' format: { aRelation name }); + cr; + tab; + nextPutAll: 'anObject ifNil: [ | otherSide |'; + cr; + tab; + tab; + nextPutAll: ('otherSide := self {1}.' format: { aRelation name }); + cr; + tab; + tab; + nextPutAll: ('self attributeAt: #{1} put: anObject.' format: { aRelation name }); + cr; + tab; + tab; + nextPutAll: ('otherSide {1}: nil ]' format: { aRelation oppositeSide name }); + cr; + tab; + nextPutAll: ('ifNotNil: [ ' format: { aRelation oppositeSide name }); + cr; + tab; + tab; + nextPutAll: ('self attributeAt: #{1} put: anObject.' format: { aRelation name }); + cr; + tab; + tab; + nextPutAll: ('anObject {1}: self ]' format: { aRelation oppositeSide name }) ]. + + aRelation isMany ifTrue: [ + aStream + tab; + nextPutAll: ('self {1} value: anObject' format: { aRelation name }) ]. + + (aRelation oppositeSide isMany and: [ aRelation isOne ]) ifTrue: [ + aStream + tab; + nextPutAll: ('self attributeAt: #{1} put: (FMMultivalueLink on: self update: #{2} from: self {1} to: anObject).' format: { + aRelation name. + aRelation oppositeSide name }) ] +] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBRelationSide.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBRelationSide.class.st deleted file mode 100644 index e5a23e979..000000000 --- a/src/Famix-MetamodelBuilder-Core/FmxMBRelationSide.class.st +++ /dev/null @@ -1,357 +0,0 @@ -" -Represents a property referencing another entity -" -Class { - #name : 'FmxMBRelationSide', - #superclass : 'FmxMBProperty', - #traits : 'FmxMBRelationSideTrait', - #classTraits : 'FmxMBRelationSideTrait classTrait', - #instVars : [ - 'cardinality', - 'trait', - 'container', - 'relation', - 'relatedClass', - 'derived', - 'source', - 'target', - 'generationStrategy' - ], - #category : 'Famix-MetamodelBuilder-Core-Implementation', - #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Implementation' -} - -{ #category : 'visitor' } -FmxMBRelationSide >> acceptVisitor: aVisitor [ - - - ^ aVisitor visitRelationSide: self. -] - -{ #category : 'converting' } -FmxMBRelationSide >> asRelationSideNamed: aPropertyName [ - - "ignore the proposed name" - ^ self -] - -{ #category : 'generating' } -FmxMBRelationSide >> asSlot [ - self hasRelation ifFalse: [ FmxMBIncompletePropertyDefiniton signal ]. - - ^ self builder environment - slotNamed: self name asSymbol - cardinality: self cardinality - type: self oppositeType - opposite: self oppositeName -] - -{ #category : 'accessing' } -FmxMBRelationSide >> cardinality [ - ^ cardinality -] - -{ #category : 'accessing' } -FmxMBRelationSide >> cardinality: anObject [ - cardinality := anObject -] - -{ #category : 'properties' } -FmxMBRelationSide >> container [ - - container := true -] - -{ #category : 'accessing' } -FmxMBRelationSide >> container: anObject [ - container := anObject -] - -{ #category : 'properties' } -FmxMBRelationSide >> derived [ - derived := true -] - -{ #category : 'properties' } -FmxMBRelationSide >> derived: anObject [ - derived := anObject -] - -{ #category : 'accessing' } -FmxMBRelationSide >> from [ - - ^ self relation from -] - -{ #category : 'generating' } -FmxMBRelationSide >> generateGetterIn: aClassOrTrait [ - - ^ generationStrategy generateGetterIn: aClassOrTrait for: self -] - -{ #category : 'generating' } -FmxMBRelationSide >> generateSetterIn: aClassOrTrait [ - - self generationStrategy generateSetterIn: aClassOrTrait for: self - - -] - -{ #category : 'accessing' } -FmxMBRelationSide >> generationStrategy [ - ^ generationStrategy -] - -{ #category : 'accessing' } -FmxMBRelationSide >> generationStrategy: anObject [ - generationStrategy := anObject -] - -{ #category : 'testing' } -FmxMBRelationSide >> hasRelation [ - ^ self relation isNotNil -] - -{ #category : 'initialization' } -FmxMBRelationSide >> initialize [ - super initialize. - - cardinality := #one. - container := false. - derived := false. - target := false. - source := false. - - self makeStandard -] - -{ #category : 'properties' } -FmxMBRelationSide >> isContainer [ - - ^ container -] - -{ #category : 'properties' } -FmxMBRelationSide >> isDerived [ - - ^ derived -] - -{ #category : 'testing' } -FmxMBRelationSide >> isMany [ - - ^ self cardinality = #many -] - -{ #category : 'testing' } -FmxMBRelationSide >> isOne [ - - ^ self cardinality = #one -] - -{ #category : 'testing' } -FmxMBRelationSide >> isRelation [ - ^ true -] - -{ #category : 'testing' } -FmxMBRelationSide >> isRemote [ - - ^ self relatedClass isRemote -] - -{ #category : 'properties' } -FmxMBRelationSide >> isSource [ - - ^ source -] - -{ #category : 'properties' } -FmxMBRelationSide >> isTarget [ - - ^ target -] - -{ #category : 'converting' } -FmxMBRelationSide >> makeNonremote [ - - self generationStrategy: (FmxMBNonRemoteRelationSideGenerationStrategy for: self) -] - -{ #category : 'converting' } -FmxMBRelationSide >> makeRemote [ - - self generationStrategy: (FmxMBRemoteRelationSideGenerationStrategy for: self). - self isRemote: true. -] - -{ #category : 'converting' } -FmxMBRelationSide >> makeStandard [ - - self generationStrategy: (FmxMBStandardRelationSideGenerationStrategy for: self) -] - -{ #category : 'accessing' } -FmxMBRelationSide >> many [ - - cardinality := #many -] - -{ #category : 'properties' } -FmxMBRelationSide >> noContainer [ - - container := false -] - -{ #category : 'properties' } -FmxMBRelationSide >> notDerived [ - - derived := false -] - -{ #category : 'accessing' } -FmxMBRelationSide >> one [ - - cardinality := #one -] - -{ #category : 'accessing' } -FmxMBRelationSide >> oppositeName [ - ^ self otherSide name asSymbol -] - -{ #category : 'accessing' } -FmxMBRelationSide >> oppositeType [ - ^ (self otherSide builder configuration prefix , self otherSide relatedEntityName) asSymbol -] - -{ #category : 'accessing' } -FmxMBRelationSide >> otherSide [ - | aFromSide | - aFromSide := self relation from. - ^ aFromSide == self - ifTrue: [ self relation to ] - ifFalse: [ aFromSide ] -] - -{ #category : 'private' } -FmxMBRelationSide >> pluralPropertyName [ - - ^ self propertyName -] - -{ #category : 'printing' } -FmxMBRelationSide >> producesSlot [ - - ^ self generationStrategy producesSlot -] - -{ #category : 'private' } -FmxMBRelationSide >> propertyName [ - - ^ self relatedClass propertyName -] - -{ #category : 'accessing' } -FmxMBRelationSide >> relatedClass [ - ^ relatedClass -] - -{ #category : 'accessing' } -FmxMBRelationSide >> relatedClass: anObject [ - relatedClass := anObject -] - -{ #category : 'accessing' } -FmxMBRelationSide >> relatedEntity [ - - ^ trait ifNil: [ relatedClass ] -] - -{ #category : 'accessing' } -FmxMBRelationSide >> relatedEntityName [ - - ^ self relatedEntity name -] - -{ #category : 'accessing' } -FmxMBRelationSide >> relation [ - ^ relation -] - -{ #category : 'accessing' } -FmxMBRelationSide >> relation: anObject [ - relation := anObject -] - -{ #category : 'accessing' } -FmxMBRelationSide >> remoteBuilderDo: aBlock [ - - self relatedEntity additionalProperties at: #remoteBuilder ifPresent: aBlock -] - -{ #category : 'name conversion' } -FmxMBRelationSide >> singularPropertyName [ - - | normalizedName uncapitalized aName | - - aName := self propertyName. - - normalizedName := ((aName size >= 2) - and: [ ((aName first:2) allSatisfy: #isUppercase) - and: [ aName beginsWith: 'T' ] ]) - ifTrue: [ aName withoutPrefix: 'T' ] - ifFalse: [ aName ]. - - uncapitalized := normalizedName uncapitalized. - - ^ uncapitalized - -] - -{ #category : 'properties' } -FmxMBRelationSide >> source [ - - source := true. -] - -{ #category : 'properties' } -FmxMBRelationSide >> source: aBoolean [ - source := aBoolean -] - -{ #category : 'properties' } -FmxMBRelationSide >> target [ - - target := true. -] - -{ #category : 'properties' } -FmxMBRelationSide >> target: anObject [ - target := anObject -] - -{ #category : 'accessing' } -FmxMBRelationSide >> to [ - - ^ self relation to -] - -{ #category : 'accessing' } -FmxMBRelationSide >> trait [ - ^ trait -] - -{ #category : 'accessing' } -FmxMBRelationSide >> trait: anObject [ - self relatedEntity ifNotNil: [ :aRelatedEntity | aRelatedEntity removeRelationSide: self ]. - trait := anObject. - trait addRelationSide: self -] - -{ #category : 'accessing' } -FmxMBRelationSide >> type [ - - ^ (self builder configuration prefix , self relatedEntityName) asSymbol -] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBRelationSideGenerationStrategy.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBRelationSideGenerationStrategy.class.st deleted file mode 100644 index 13ad02bb7..000000000 --- a/src/Famix-MetamodelBuilder-Core/FmxMBRelationSideGenerationStrategy.class.st +++ /dev/null @@ -1,138 +0,0 @@ -Class { - #name : 'FmxMBRelationSideGenerationStrategy', - #superclass : 'Object', - #instVars : [ - 'relationSide' - ], - #category : 'Famix-MetamodelBuilder-Core-Implementation', - #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Implementation' -} - -{ #category : 'instance creation' } -FmxMBRelationSideGenerationStrategy class >> for: aRelationSide [ - - ^ self new relationSide: aRelationSide -] - -{ #category : 'accessing' } -FmxMBRelationSideGenerationStrategy >> category [ - - ^ 'accessing' -] - -{ #category : 'generation' } -FmxMBRelationSideGenerationStrategy >> compileMethod: methodSource for: aRelationSide in: aClassOrTrait [ - - aRelationSide builder environment - compile: methodSource - in: aClassOrTrait - classified: self category -] - -{ #category : 'generation' } -FmxMBRelationSideGenerationStrategy >> generateGetterCoreIn: aClassOrTrait on: aStream for: aRelationSide [ - - ^ self subclassResponsibility -] - -{ #category : 'generation' } -FmxMBRelationSideGenerationStrategy >> generateGetterIn: aClassOrTrait for: aRelationSide [ - - | methodSource commentDefinition | - - commentDefinition := aRelationSide comment ifNotEmpty: [ :comment | - '' format: - { comment printString } ]. - - methodSource := String streamContents: [ :s | - s - nextPutAll: aRelationSide name; - cr. - aRelationSide hasRelation ifTrue: [ - s - tab; - nextPutAll: '"Relation named: #'; - nextPutAll: relationSide name; - nextPutAll: ' type: #'; - nextPutAll: relationSide oppositeType; - nextPutAll: ' opposite: #'; - nextPutAll: relationSide oppositeName; - nextPutAll: '"'; - cr; - cr ]. - s - tab; - nextPutAll: ''; - cr. - commentDefinition ifNotEmpty: [ - s - tab; - nextPutAll: commentDefinition; - cr ]. - aRelationSide isContainer ifTrue: [ - s - tab; - nextPutAll: ''; - cr ]. - aRelationSide isDerived ifTrue: [ - s - tab; - nextPutAll: ''; - cr ]. - aRelationSide isSource ifTrue: [ - s - tab; - nextPutAll: ''; - cr ]. - aRelationSide isTarget ifTrue: [ - s - tab; - nextPutAll: ''; - cr ]. - - self - generateGetterCoreIn: aClassOrTrait - on: s - for: aRelationSide ]. - - self compileMethod: methodSource for: aRelationSide in: aClassOrTrait -] - -{ #category : 'generation' } -FmxMBRelationSideGenerationStrategy >> generateSetterCoreIn: aClassOrTrait on: aStream for: aRelationSide [ - - ^ self subclassResponsibility -] - -{ #category : 'generation' } -FmxMBRelationSideGenerationStrategy >> generateSetterIn: aClassOrTrait for: aRelationSide [ - - | methodSource | - methodSource := String - streamContents: [ :s | - s - nextPutAll: aRelationSide name; - nextPutAll: ': anObject'; - cr; - cr. - s - tab; - nextPutAll: ''; - cr. - self generateSetterCoreIn: aClassOrTrait on: s for: aRelationSide ]. - - self compileMethod: methodSource for: aRelationSide in: aClassOrTrait -] - -{ #category : 'accessing' } -FmxMBRelationSideGenerationStrategy >> relationSide [ - - ^ relationSide -] - -{ #category : 'accessing' } -FmxMBRelationSideGenerationStrategy >> relationSide: anObject [ - - relationSide := anObject -] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBRelationSideTrait.trait.st b/src/Famix-MetamodelBuilder-Core/FmxMBRelationSideTrait.trait.st index 3ba216c71..f8e2655f9 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBRelationSideTrait.trait.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBRelationSideTrait.trait.st @@ -1,67 +1,67 @@ Trait { #name : 'FmxMBRelationSideTrait', - #category : 'Famix-MetamodelBuilder-Core-Traits', + #category : 'Famix-MetamodelBuilder-Core-Implementation', #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Traits' + #tag : 'Implementation' } { #category : 'relations - arrows' } -FmxMBRelationSideTrait >> *- aRelationSide [ +FmxMBRelationSideTrait >> *- relationOrBehavior [ - ^ self manyToOne: aRelationSide + ^ self manyToOne: relationOrBehavior ] { #category : 'relations - arrows' } -FmxMBRelationSideTrait >> *-* aRelationSide [ +FmxMBRelationSideTrait >> *-* relationOrBehavior [ - ^ self manyToMany: aRelationSide + ^ self manyToMany: relationOrBehavior ] { #category : 'relations - arrows' } -FmxMBRelationSideTrait >> *-<> aRelationSide [ +FmxMBRelationSideTrait >> *-<> relationOrBehavior [ - ^ self manyBelongTo: aRelationSide + ^ self manyBelongTo: relationOrBehavior ] { #category : 'relations - arrows' } -FmxMBRelationSideTrait >> - aRelationSide [ +FmxMBRelationSideTrait >> - relationOrBehavior [ - ^ self oneToOne: aRelationSide + ^ self oneToOne: relationOrBehavior ] { #category : 'relations - arrows' } -FmxMBRelationSideTrait >> -* aRelationSide [ +FmxMBRelationSideTrait >> -* relationOrBehavior [ - ^ self oneToMany: aRelationSide + ^ self oneToMany: relationOrBehavior ] { #category : 'relations - arrows' } -FmxMBRelationSideTrait >> -<> aRelationSide [ +FmxMBRelationSideTrait >> -<> relationOrBehavior [ - ^ self oneBelongsTo: aRelationSide + ^ self oneBelongsTo: relationOrBehavior ] { #category : 'relations - arrows' } -FmxMBRelationSideTrait >> <>- aRelationSide [ +FmxMBRelationSideTrait >> <>- relationOrBehavior [ - ^ self containsOne: aRelationSide + ^ self containsOne: relationOrBehavior ] { #category : 'relations - arrows' } -FmxMBRelationSideTrait >> <>-* aRelationSide [ +FmxMBRelationSideTrait >> <>-* relationOrBehavior [ - ^ self containsMany: aRelationSide + ^ self containsMany: relationOrBehavior ] { #category : 'relations - named' } -FmxMBRelationSideTrait >> asRelationSideNamed: aPropertyName [ +FmxMBRelationSideTrait >> asRelationNamed: aPropertyName [ self explicitRequirement @@ -69,122 +69,101 @@ FmxMBRelationSideTrait >> asRelationSideNamed: aPropertyName [ ] { #category : 'relations - named containers' } -FmxMBRelationSideTrait >> containsMany: aRelationSide [ +FmxMBRelationSideTrait >> containsMany: relationOrBehavior [ | aRelation | - aRelation := self oneToMany: aRelationSide. - aRelation right container. + aRelation := self oneToMany: relationOrBehavior. + aRelation oppositeSide container. ^ aRelation ] { #category : 'relations - named containers' } -FmxMBRelationSideTrait >> containsOne: aRelationSide [ +FmxMBRelationSideTrait >> containsOne: relationOrBehavior [ | aRelation | - aRelation := self oneToOne: aRelationSide. - aRelation right container. + aRelation := self oneToOne: relationOrBehavior. + aRelation oppositeSide container. ^ aRelation ] { #category : 'relations - named containers' } -FmxMBRelationSideTrait >> manyBelongTo: aRelationSide [ +FmxMBRelationSideTrait >> manyBelongTo: relationOrBehavior [ - | aRelation | - aRelation := self manyToOne: aRelationSide. - aRelation left container. - ^ aRelation + ^ (self manyToOne: relationOrBehavior) + container; + yourself ] { #category : 'relations - named' } -FmxMBRelationSideTrait >> manyToMany: aRelationSide [ +FmxMBRelationSideTrait >> manyToMany: relationOrBehavior [ - | aRelation ownSide oppositeSide | - - ownSide := self asRelationSideNamed: aRelationSide pluralPropertyName. - oppositeSide := aRelationSide asRelationSideNamed: self pluralPropertyName. + | ownSide oppositeSide | + ownSide := self asRelationNamed: relationOrBehavior pluralPropertyName. + oppositeSide := relationOrBehavior asRelationNamed: self pluralPropertyName. ownSide many. ownSide derived. oppositeSide many. - aRelation := self relationFrom: ownSide to: oppositeSide. + ownSide oppositeSide: oppositeSide. self isRemote ifTrue: [ ownSide makeRemote ]. - aRelationSide isRemote ifTrue: [ oppositeSide makeRemote ]. - (self isRemote and: [ aRelationSide isRemote not ]) ifTrue: [ oppositeSide makeNonremote ]. - (self isRemote not and: [ aRelationSide isRemote ]) ifTrue: [ ownSide makeNonremote ]. - - ^ aRelation - - + relationOrBehavior isRemote ifTrue: [ oppositeSide makeRemote ]. + + ^ ownSide ] { #category : 'relations - named' } -FmxMBRelationSideTrait >> manyToOne: aRelationSide [ +FmxMBRelationSideTrait >> manyToOne: relationOrBehavior [ - | aRelation ownSide oppositeSide | - - ownSide := self asRelationSideNamed: aRelationSide singularPropertyName. - oppositeSide := aRelationSide asRelationSideNamed: self pluralPropertyName. + | ownSide oppositeSide | + ownSide := self asRelationNamed: relationOrBehavior singularPropertyName. + oppositeSide := relationOrBehavior asRelationNamed: self pluralPropertyName. oppositeSide many. oppositeSide derived. - aRelation := self relationFrom: ownSide to: oppositeSide. + ownSide oppositeSide: oppositeSide. self isRemote ifTrue: [ ownSide makeRemote ]. - aRelationSide isRemote ifTrue: [ oppositeSide makeRemote ]. - (self isRemote and: [ aRelationSide isRemote not ]) ifTrue: [ oppositeSide makeNonremote ]. - (self isRemote not and: [ aRelationSide isRemote ]) ifTrue: [ ownSide makeNonremote ]. - - ^ aRelation - - + relationOrBehavior isRemote ifTrue: [ oppositeSide makeRemote ]. + + ^ ownSide ] { #category : 'relations - named containers' } -FmxMBRelationSideTrait >> oneBelongsTo: aRelationSide [ +FmxMBRelationSideTrait >> oneBelongsTo: relationOrBehavior [ - | aRelation | - aRelation := self oneToOne: aRelationSide. - aRelation left container. - ^ aRelation + ^ (self oneToOne: relationOrBehavior) + container; + yourself ] { #category : 'relations - named' } -FmxMBRelationSideTrait >> oneToMany: aRelationSide [ +FmxMBRelationSideTrait >> oneToMany: relationOrBehavior [ - | aRelation ownSide oppositeSide | - ownSide := self asRelationSideNamed: aRelationSide pluralPropertyName. - oppositeSide := aRelationSide asRelationSideNamed: self singularPropertyName. + | ownSide oppositeSide | + ownSide := self asRelationNamed: relationOrBehavior pluralPropertyName. + oppositeSide := relationOrBehavior asRelationNamed: self singularPropertyName. ownSide many. ownSide derived. - aRelation := self relationFrom: ownSide to: oppositeSide. + ownSide oppositeSide: oppositeSide. self isRemote ifTrue: [ ownSide makeRemote ]. - aRelationSide isRemote ifTrue: [ oppositeSide makeRemote ]. - (self isRemote and: [ aRelationSide isRemote not ]) ifTrue: [ oppositeSide makeNonremote ]. - (self isRemote not and: [ aRelationSide isRemote ]) ifTrue: [ ownSide makeNonremote ]. - - ^ aRelation - - + relationOrBehavior isRemote ifTrue: [ oppositeSide makeRemote ]. + + ^ ownSide ] { #category : 'relations - named' } -FmxMBRelationSideTrait >> oneToOne: aRelationSide [ +FmxMBRelationSideTrait >> oneToOne: relationOrBehavior [ - | aRelation ownSide oppositeSide | - - ownSide := self asRelationSideNamed: aRelationSide propertyName. - oppositeSide := aRelationSide asRelationSideNamed: self propertyName. + | ownSide oppositeSide | + ownSide := self asRelationNamed: relationOrBehavior propertyName. + oppositeSide := relationOrBehavior asRelationNamed: self propertyName. oppositeSide derived. - aRelation := self relationFrom: ownSide to: oppositeSide. - + ownSide oppositeSide: oppositeSide. + self isRemote ifTrue: [ ownSide makeRemote ]. - aRelationSide isRemote ifTrue: [ oppositeSide makeRemote ]. - (self isRemote and: [ aRelationSide isRemote not ]) ifTrue: [ oppositeSide makeNonremote ]. - (self isRemote not and: [ aRelationSide isRemote ]) ifTrue: [ ownSide makeNonremote ]. - - ^ aRelation - - + relationOrBehavior isRemote ifTrue: [ oppositeSide makeRemote ]. + + ^ ownSide ] { #category : 'private' } @@ -198,28 +177,3 @@ FmxMBRelationSideTrait >> propertyName [ ^ self explicitRequirement ] - -{ #category : 'private' } -FmxMBRelationSideTrait >> relationFrom: ownSide to: oppositeSide [ - - | aRelation | - - aRelation := self builder newRelation - side: ownSide; - oppositeSide: oppositeSide; - builder: self builder; - yourself. - - ownSide remoteBuilderDo: [ :aRemoteBuilder | - aRemoteBuilder = self builder - ifFalse: [ aRemoteBuilder relations add: aRelation ] ]. - - ownSide relation: aRelation. - oppositeSide relation: aRelation. - - ownSide relatedClass ifNotNil: [ - ownSide relatedClass addRelation: aRelation with: oppositeSide relatedEntity ]. - - ^ aRelation - -] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBRelationSlotsGenerationStrategy.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBRelationSlotsGenerationStrategy.class.st new file mode 100644 index 000000000..adf4bab38 --- /dev/null +++ b/src/Famix-MetamodelBuilder-Core/FmxMBRelationSlotsGenerationStrategy.class.st @@ -0,0 +1,32 @@ +" +I will generate accessors accessing a slot for a relation. + +This is useful when both sides of the relation are non remote. +" +Class { + #name : 'FmxMBRelationSlotsGenerationStrategy', + #superclass : 'FmxMBRelationAccessorsGenerationStrategy', + #category : 'Famix-MetamodelBuilder-Core-Generation', + #package : 'Famix-MetamodelBuilder-Core', + #tag : 'Generation' +} + +{ #category : 'generation' } +FmxMBRelationSlotsGenerationStrategy >> generateGetterCoreOn: aStream for: aRelation [ + + aStream + tab; + nextPutAll: '^ '; + nextPutAll: aRelation name +] + +{ #category : 'generation' } +FmxMBRelationSlotsGenerationStrategy >> generateSetterCoreOn: aStream for: aRelation [ + + aStream + tab; + nextPutAll: aRelation name. + aRelation isOne + ifTrue: [ aStream nextPutAll: ' := anObject' ] + ifFalse: [ aStream nextPutAll: ' value: anObject' ] +] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBRemoteChangesBuilderVisitor.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBRemoteChangesBuilderVisitor.class.st new file mode 100644 index 000000000..c87533790 --- /dev/null +++ b/src/Famix-MetamodelBuilder-Core/FmxMBRemoteChangesBuilderVisitor.class.st @@ -0,0 +1,31 @@ +" +I am a visitor to generate the metamodel code of everything that is remote. +" +Class { + #name : 'FmxMBRemoteChangesBuilderVisitor', + #superclass : 'FmxMBAbstractChangesBuilderVisitor', + #category : 'Famix-MetamodelBuilder-Core-Generation', + #package : 'Famix-MetamodelBuilder-Core', + #tag : 'Generation' +} + +{ #category : 'visiting' } +FmxMBRemoteChangesBuilderVisitor >> visitClass: aClass [ + + currentBehavioral := aClass. + self class environment at: aClass fullName ifAbsent: [ ^ self ]. + + (aClass propertiesAndRelations select: #isRemote) do: [ :each | each acceptVisitor: self ] +] + +{ #category : 'visiting' } +FmxMBRemoteChangesBuilderVisitor >> visitTrait: aTrait [ + + | realTrait | + currentBehavioral := aTrait. + + realTrait := self class environment at: aTrait fullName ifAbsent: [ ^ self ]. + + (aTrait propertiesAndRelations select: [ :prop | prop isRemote and: [ (realTrait localSelectors includes: prop name) not ] ]) do: [ :each | + each acceptVisitor: self ] +] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBRemoteRelationSideGenerationStrategy.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBRemoteRelationSideGenerationStrategy.class.st deleted file mode 100644 index ca56e9ab9..000000000 --- a/src/Famix-MetamodelBuilder-Core/FmxMBRemoteRelationSideGenerationStrategy.class.st +++ /dev/null @@ -1,17 +0,0 @@ -Class { - #name : 'FmxMBRemoteRelationSideGenerationStrategy', - #superclass : 'FmxMBNonRemoteRelationSideGenerationStrategy', - #category : 'Famix-MetamodelBuilder-Core-Implementation', - #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Implementation' -} - -{ #category : 'generation' } -FmxMBRemoteRelationSideGenerationStrategy >> compileMethod: methodSource for: aRelationSide in: aClassOrTrait [ - - aRelationSide builder environment - compile: methodSource - in: aClassOrTrait - classified: self category - package: self relationSide builder parentBuilderPackageName -] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBRingEnvironment.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBRingEnvironment.class.st deleted file mode 100644 index bb88dd42a..000000000 --- a/src/Famix-MetamodelBuilder-Core/FmxMBRingEnvironment.class.st +++ /dev/null @@ -1,437 +0,0 @@ -Class { - #name : 'FmxMBRingEnvironment', - #superclass : 'Object', - #instVars : [ - 'changesToApply', - 'ringEnvironment', - 'builder' - ], - #category : 'Famix-MetamodelBuilder-Core-Implementation', - #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Implementation' -} - -{ #category : 'instance creation' } -FmxMBRingEnvironment class >> for: aBuilder [ - - ^ self new - builder: aBuilder; - yourself. -] - -{ #category : 'adding' } -FmxMBRingEnvironment >> addMethod: sourceCode in: aClassName classSide: aBoolean protocol: protocol [ - - changesToApply add: (FmxMethodAddition - className: aClassName - isClassSide: aBoolean - sourceCode: sourceCode - protocol: protocol) -] - -{ #category : 'accessing' } -FmxMBRingEnvironment >> apply [ - - self collectChangesToApply. - "Sort the changes before applying them" - (changesToApply sorted: #priority ascending) do: [ :change | change apply ] -] - -{ #category : 'accessing' } -FmxMBRingEnvironment >> basicGroupSuperclass [ - - ^ self ringEnvironment ensureClassNamed: #MooseSpecializedGroup -] - -{ #category : 'accessing' } -FmxMBRingEnvironment >> basicImportingContextSuperclass [ - - ^ self ringEnvironment ensureClassNamed: #FamixImportingContext -] - -{ #category : 'accessing' } -FmxMBRingEnvironment >> basicModelSuperclass [ - - ^ self ringEnvironment ensureClassNamed: #MooseModel -] - -{ #category : 'accessing' } -FmxMBRingEnvironment >> basicSuperclass [ - - ^ self ringEnvironment ensureClassNamed: #MooseEntity -] - -{ #category : 'accessing' } -FmxMBRingEnvironment >> basicTrait [ - - ^ self ringEnvironment ensureClassNamed: #Trait -] - -{ #category : 'accessing' } -FmxMBRingEnvironment >> builder [ - ^ builder -] - -{ #category : 'accessing' } -FmxMBRingEnvironment >> builder: anObject [ - builder := anObject -] - -{ #category : 'testing' } -FmxMBRingEnvironment >> changesToApply [ - "Return the list of changes to apply if a regeneration would cause changes in the system." - - self collectChangesToApply. - ^ changesToApply -] - -{ #category : 'initialization' } -FmxMBRingEnvironment >> classNamed: aClassName [ - - ^ self ringEnvironment ask behaviorNamed: aClassName -] - -{ #category : 'accessing' } -FmxMBRingEnvironment >> collectChangesToApply [ - | resolvedClasses resolvedPackages | - changesToApply := OrderedCollection new. - resolvedPackages := ringEnvironment ask packages select: [ :each | each isRingResolved ]. - resolvedClasses := ringEnvironment ask behaviors select: [ :each | each isRingResolved and: [ each superclass isRingResolved ] ]. - - self recordPackagesChangesFor: resolvedPackages. - self recordClassesChangesFor: resolvedClasses. - self recordRemovalOfGeneratedEntitiesIn: resolvedPackages notPresentIn: resolvedClasses -] - -{ #category : 'accessing' } -FmxMBRingEnvironment >> compile: aSource in: aClass classified: aProtocol [ - - aClass compile: aSource classified: aProtocol. -] - -{ #category : 'installing' } -FmxMBRingEnvironment >> compile: aSource in: aClass classified: aProtocol package: aPackageName [ - - | category | - category := '*' , aPackageName. - aProtocol ifNotEmpty: [ category := category , '-' , aProtocol ]. - aClass compile: aSource classified: category -] - -{ #category : 'initialization' } -FmxMBRingEnvironment >> createClassNamed: aClassName superclass: aSuperclass traitNames: traitNames slots: slots in: packageName tag: tag comment: comment [ - - | aClass existingClass composition | - existingClass := self ringEnvironment ask behaviorNamed: - aClassName asSymbol. - - aClass := self ringEnvironment ensureClassNamed: aClassName. - aClass superclass: - (self ringEnvironment ensureClassNamed: aSuperclass name). - - composition := RGTraitComposition parent: aClass. - aClass traitComposition: composition. - - traitNames do: [ :each | - composition addTransformation: - (self ringEnvironment ensureTraitNamed: each) ]. - - aClass package: - (self ringEnvironment ensurePackageNamed: packageName). - aClass layout makeResolved. - - slots do: [ :slotInBadEnvironment | - | slot | - slot := slotInBadEnvironment needsFullDefinition - ifTrue: [ - (RGUnknownSlot - named: slotInBadEnvironment name - parent: aClass layout) - expression: slotInBadEnvironment expression; - yourself ] - ifFalse: [ - RGInstanceVariableSlot - named: slotInBadEnvironment name - parent: aClass layout ]. - aClass layout addSlot: slot. - slot propertyNamed: #isGenerated put: true ]. - - aClass tagWith: tag. - comment ifNotEmpty: [ aClass comment content: comment ]. - - ^ aClass -] - -{ #category : 'initialization' } -FmxMBRingEnvironment >> createTraitNamed: traitName uses: traitNames slots: slots in: packageName tag: tag comment: comment [ - - | aPackage aTrait existingClass composition | - existingClass := self ringEnvironment ask behaviorNamed: traitName asSymbol. - - aPackage := self ringEnvironment ensurePackageNamed: packageName. - - aTrait := ringEnvironment ensureTraitNamed: traitName. - aTrait superclass: self basicTrait. - - composition := RGTraitComposition parent: aTrait. - aTrait traitComposition: composition. - - traitNames do: [ :each | - composition addTransformation: - (self ringEnvironment ensureTraitNamed: each) ]. - - aTrait package: aPackage. - aTrait layout makeResolved. - - slots do: [ :slotInBadEnvironment | - | slot | - slot := slotInBadEnvironment needsFullDefinition - ifTrue: [ - (RGUnknownSlot - named: slotInBadEnvironment name - parent: aTrait layout) - expression: slotInBadEnvironment expression; - yourself ] - ifFalse: [ - RGInstanceVariableSlot - named: slotInBadEnvironment name - parent: aTrait layout ]. - aTrait layout addSlot: slot. - slot propertyNamed: #isGenerated put: true ]. - - aTrait tagWith: tag. - comment ifNotEmpty: [ aTrait comment content: comment ]. - - ^ aTrait -] - -{ #category : 'initialization' } -FmxMBRingEnvironment >> hasBehaviorNamed: aClassName [ - - ^ self ringEnvironment ask includesClassNamed: aClassName -] - -{ #category : 'initialization' } -FmxMBRingEnvironment >> initialize [ - - super initialize. - - ringEnvironment := RGEnvironment new. - ringEnvironment version: 7. - ringEnvironment ensureClassNamed: #FMOne. - ringEnvironment ensureClassNamed: #FMMany. - ringEnvironment ensureClassNamed: #FMMultivalueLink. - ringEnvironment ensureClassNamed: #FMMultiMultivalueLink. - ringEnvironment ensureClassNamed: #MooseSpecializedGroup. -] - -{ #category : 'installing' } -FmxMBRingEnvironment >> recordAdoptionOfClassDefinitionFrom: currentClass to: anRGClassModel [ - - | currentCustomSlots currentCustomSlotNames modelSlotDefinitions currentGeneratedSlots modelGeneratedSlots slotRemovals | - (currentClass isNil or: [ currentClass needToAdaptTo: anRGClassModel ]) ifFalse: [ ^ self ]. - - "We are updating a class installed in the system (currentClass) to a new representation defined in the model (anRGClass). - This has to be done in order to allow updating the class at run time" - - currentGeneratedSlots := currentClass - ifNil: [ #( ) ] - ifNotNil: #generatedSlots. - currentCustomSlots := currentClass - ifNil: [ #( ) ] - ifNotNil: [ :class | class localSlots copyWithoutAll: currentGeneratedSlots ]. - currentCustomSlotNames := currentCustomSlots collect: #name. - - modelGeneratedSlots := anRGClassModel slots reject: [ :each | currentCustomSlotNames includes: each name ]. - - modelSlotDefinitions := (modelGeneratedSlots collect: #definitionString) asOrderedCollection. - modelSlotDefinitions addAll: (currentCustomSlots collect: #definitionString). - modelSlotDefinitions := modelSlotDefinitions sorted. - - slotRemovals := currentGeneratedSlots reject: [ :e | modelGeneratedSlots anySatisfy: [ :current | current name = e name ] ]. - - slotRemovals ifNotEmpty: [ changesToApply add: (FmxSlotRemovals slots: slotRemovals) ]. - - self - recordClassAdditionFromClass: anRGClassModel - traits: (self traitStringFrom: currentClass to: anRGClassModel) - slots: '{' , (modelSlotDefinitions joinUsing: '. ') , '}' - package: (currentClass ifNil: [ anRGClassModel ]) package name - tag: (currentClass - ifNil: [ anRGClassModel packageTag ] - ifNotNil: [ :class | class packageTag name ]) -] - -{ #category : 'installing' } -FmxMBRingEnvironment >> recordClassAdditionFromClass: aRGClass traits: traitsString slots: slotsString package: packageName tag: tagName [ - - | change | - change := aRGClass isTrait - ifTrue: [ FmxTraitAddition new ] - ifFalse: [ - FmxClassAddition new - superclass: aRGClass superclass name; - yourself ]. - - change - name: aRGClass name; - traits: traitsString; - slots: slotsString; - package: packageName; - tag: tagName. - - changesToApply add: change -] - -{ #category : 'installing' } -FmxMBRingEnvironment >> recordClassChangesFor: aRGClass [ - - | realClass | - realClass := self class environment classNamed: aRGClass name. - self recordAdoptionOfClassDefinitionFrom: realClass to: aRGClass. - self recordClassCommentChangeOf: realClass to: aRGClass. - self recordMethodsAdoptionsOf: realClass to: aRGClass realClassName: aRGClass name. - self recordMethodsAdoptionsOf: (realClass ifNotNil: [ realClass class ]) to: aRGClass classSide realClassName: aRGClass name -] - -{ #category : 'installing' } -FmxMBRingEnvironment >> recordClassCommentChangeOf: realClass to: anRGClass [ - - | newComment | - newComment := anRGClass comment content. - (realClass isNotNil and: [ newComment = realClass comment ]) ifTrue: [ ^ self ]. - - newComment isEmptyOrNil ifFalse: [ changesToApply add: (FmxClassCommentUpdate className: anRGClass name comment: newComment) ] -] - -{ #category : 'installing' } -FmxMBRingEnvironment >> recordClassesChangesFor: resolvedClasses [ - | sorted notSorted toMove | - resolvedClasses ifEmpty: [ ^ self ]. - - notSorted := resolvedClasses asOrderedCollection. - - sorted := OrderedCollection new. - [ toMove := notSorted select: [ :each | notSorted noneSatisfy: [ :toCompare | each dependsOn: toCompare ] ]. - toMove ifEmpty: [ self error: 'Classes cycling dependency' ]. - sorted addAll: toMove. - notSorted removeAll: toMove. - notSorted isEmpty ] whileFalse. - - sorted do: [ :each | self recordClassChangesFor: each ] -] - -{ #category : 'installing' } -FmxMBRingEnvironment >> recordMethodsAdoptionsOf: realClass to: anRGClass realClassName: aClassName [ - | generatedMethodsOfRealClass generatedMethodNamesOfRealClass | - generatedMethodsOfRealClass := realClass - ifNil: [ {} ] - ifNotNil: [ (Pragma allNamed: #generated in: realClass) collect: #method thenReject: [ :m | m isFromTrait ] ] . - - generatedMethodNamesOfRealClass := generatedMethodsOfRealClass collect: #selector. - - "First we removed the generated methods should not be here anymore" - (generatedMethodNamesOfRealClass difference: anRGClass localSelectors) - ifNotEmpty: [ :selectorsOfRemovedGeneratedMethod | changesToApply add: (FmxMethodRemovals className: aClassName isClassSide: anRGClass isClassSide selectors: selectorsOfRemovedGeneratedMethod) ]. - - "Add new generated methods" - ((anRGClass localSelectors difference: generatedMethodNamesOfRealClass) - select: [ :selectorOfMethodToAdd | realClass ifNil: [ true ] ifNotNil: [ (realClass localSelectors includes: selectorOfMethodToAdd) not ] ] - thenCollect: [ :selectorOfMethodToAdd | anRGClass methodNamed: selectorOfMethodToAdd ]) - ifNotEmpty: [ :methods | methods do: [ :method | self addMethod: method sourceCode in: aClassName classSide: anRGClass isClassSide protocol: method protocol ] ]. - - "Finally, update methods needing updates" - ((generatedMethodNamesOfRealClass intersection: anRGClass localSelectors) - collect: [ :selectorOfMethodToUpdate | anRGClass methodNamed: selectorOfMethodToUpdate ] - thenSelect: [ :method | realClass needToAdaptToMethod: method ]) - ifNotEmpty: [ :methods |methods do: [ :method | self addMethod: method sourceCode in: aClassName classSide: anRGClass isClassSide protocol: method protocol ] ] -] - -{ #category : 'installing' } -FmxMBRingEnvironment >> recordPackagesChangesFor: resolvedPackages [ - - resolvedPackages - reject: [ :each | self packageOrganizer hasPackage: each name ] - thenDo: [ :each | changesToApply add: (FmxPackageAddition named: each name) ] -] - -{ #category : 'accessing' } -FmxMBRingEnvironment >> recordRemovalOfGeneratedEntitiesIn: resolvedPackages notPresentIn: resolvedClasses [ - "Since the last generation it is possible some behaviorals were removed from the generator. In that case we should remove them. We will remove all classes and traits of Famix that are not part of the current generator." - - resolvedPackages - collect: [ :e | e name asPackageIfAbsent: [ nil ] ] - thenDo: [ :package | - package - ifNotNil: - [ package definedClasses select: #isMetamodelEntity thenDo: [ :class | resolvedClasses detect: [ :rgClass | rgClass name = class name ] ifNone: [ changesToApply add: (FmxClassRemoval class: class) ] ] ] ] -] - -{ #category : 'public registration' } -FmxMBRingEnvironment >> registerPackage: aPackageName [ - - ^ self ringEnvironment ensurePackageNamed: aPackageName. - -] - -{ #category : 'accessing' } -FmxMBRingEnvironment >> ringEnvironment [ - ^ ringEnvironment -] - -{ #category : 'initialization' } -FmxMBRingEnvironment >> slotNamed: slotName [ - ^ (RGUnknownSlot named: slotName asSymbol) expression: #FMProperty -] - -{ #category : 'initialization' } -FmxMBRingEnvironment >> slotNamed: slotName cardinality: cardinality type: type opposite: oppositeName [ - - | cardinalityClassName | - - cardinalityClassName := cardinality = #one - ifTrue: [ #FMOne ] - ifFalse: [ #FMMany ]. - - ^ (RGUnknownSlot named: slotName asSymbol) - expression: ('{1} type: #{2} opposite: #{3}' - format: { cardinalityClassName. type. oppositeName}) -] - -{ #category : 'initialization' } -FmxMBRingEnvironment >> slotNamed: slotName defaultValue: aValue [ - - aValue ifNil: [ ^ self slotNamed: slotName ]. - ^ (RGUnknownSlot named: slotName asSymbol) expression: - ('FMProperty defaultValue: {1}' format: { aValue printString }) -] - -{ #category : 'installing' } -FmxMBRingEnvironment >> traitStringFrom: realClass to: aRGClass [ - "We need to collect the generated traits + the custom traits added by the user." - - | customTraitNames traitsDefinitions traitCompositionString precedingTrait | - customTraitNames := ((realClass - ifNil: [ #( ) ] - ifNotNil: [ :class | class traitComposition rootMembers ]) select: [ :e | - realClass - ifNil: [ false ] - ifNotNil: [ :class | class customTraitNames includes: e name ] ]) collect: #traitCompositionExpression. - - traitsDefinitions := aRGClass traitsDefinitions - ifEmpty: [ { } ] - ifNotEmpty: [ :rgDefinitions | { rgDefinitions anyOne } , (rgDefinitions allButFirst collect: [ :e | '(' , e , ')' ]) ]. - traitsDefinitions := traitsDefinitions , customTraitNames. - - traitCompositionString := traitsDefinitions ifEmpty: [ ^ '{ }' ] ifNotEmpty: [ traitsDefinitions joinUsing: ' + ' ]. - - precedingTrait := aRGClass propertyNamed: #precedingTrait ifAbsent: [ ^ traitCompositionString ]. - - ^ String streamContents: [ :s | - s - nextPutAll: '(( '; - nextPutAll: traitCompositionString; - nextPutAll: ' ) withPrecedenceOf: '; - nextPutAll: precedingTrait; - nextPutAll: ' )' ] -] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBStandardRelationSideGenerationStrategy.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBStandardRelationSideGenerationStrategy.class.st deleted file mode 100644 index 33467d8da..000000000 --- a/src/Famix-MetamodelBuilder-Core/FmxMBStandardRelationSideGenerationStrategy.class.st +++ /dev/null @@ -1,33 +0,0 @@ -Class { - #name : 'FmxMBStandardRelationSideGenerationStrategy', - #superclass : 'FmxMBRelationSideGenerationStrategy', - #category : 'Famix-MetamodelBuilder-Core-Implementation', - #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Implementation' -} - -{ #category : 'generation' } -FmxMBStandardRelationSideGenerationStrategy >> generateGetterCoreIn: aClassOrTrait on: aStream for: aRelationSide [ - - aStream - tab; - nextPutAll: '^ '; - nextPutAll: aRelationSide name -] - -{ #category : 'generation' } -FmxMBStandardRelationSideGenerationStrategy >> generateSetterCoreIn: aClassOrTrait on: aStream for: aRelationSide [ - - aStream - tab; - nextPutAll: aRelationSide name. - aRelationSide isOne - ifTrue: [ aStream nextPutAll: ' := anObject' ] - ifFalse: [ aStream nextPutAll: ' value: anObject' ] -] - -{ #category : 'testing' } -FmxMBStandardRelationSideGenerationStrategy >> producesSlot [ - - ^ true -] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBTrait.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBTrait.class.st index 7c33178c6..f78de7e0c 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBTrait.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBTrait.class.st @@ -6,6 +6,12 @@ Class { #tag : 'Implementation' } +{ #category : 'testing' } +FmxMBTrait class >> isAbstract [ + + ^ self = FmxMBTrait +] + { #category : 'visitor' } FmxMBTrait >> acceptVisitor: aVisitor [ @@ -20,85 +26,12 @@ FmxMBTrait >> allTraitGeneralizations [ { each } , each allTraitGeneralizations ]) removeDuplicates ] -{ #category : 'accessing' } -FmxMBTrait >> classGeneralization [ - - ^ self builder environment basicTrait -] - -{ #category : 'accessing' } -FmxMBTrait >> classGeneralization: anObject [ - FmxMBTraitsGeneralizationError signal -] - -{ #category : 'accessing' } -FmxMBTrait >> defaultSuperclass [ - - ^ self builder environment basicTrait -] - -{ #category : 'accessing' } -FmxMBTrait >> defaultSuperclassName [ - "In case of Traits we want the annotation to point Object as superclass." - - ^ 'Object' -] - { #category : 'settings-default' } FmxMBTrait >> defaultTag [ ^ #Traits ] -{ #category : 'generating' } -FmxMBTrait >> generate [ - - | aTrait traitName | - self willGenerate ifFalse: [ ^ self ]. - - traitName := self fullName. - - aTrait := self builder environment - createTraitNamed: traitName asSymbol - uses: self allTraitNames - slots: self slotDefinitions - in: self packageName - tag: self tag - comment: self commentWithRelations. - - self realClass: aTrait. - - self generateAccessors. - self generateAnnotationIn: aTrait. - - self generateTestingMethodsIn: aTrait. - self generateMethodsToRemoveFromTraitCompositionFor: aTrait. - self generatePrecedenceInTraitComposition: aTrait. - - self generateAddToCollectionFor: aTrait -] - -{ #category : 'generating' } -FmxMBTrait >> generateRemoteAccessors [ - (self properties select: [ :prop | - prop isRemote and: [ - (self realClass localSelectors includes: prop name) not ] ]) do: [ - :each | each generateAccessorsIn: self realClass ] -] - -{ #category : 'generating' } -FmxMBTrait >> generateRemotes [ - | aTrait traitName | - - traitName := self fullName. - - aTrait := self class environment at: traitName asSymbol ifAbsent: [ builder environment classNamed: traitName asSymbol ]. - - self realClass: aTrait. - - self generateRemoteAccessors -] - { #category : 'testing' } FmxMBTrait >> isMetamodelTrait [ @@ -122,7 +55,14 @@ FmxMBTrait >> propertyName [ ] { #category : 'accessing' } -FmxMBTrait >> removeRelationSide: aRelationSide [ +FmxMBTrait >> removeRelation: aRelation [ - properties remove: aRelationSide ifAbsent: [ ]. + propertiesAndRelations remove: aRelation ifAbsent: [ ]. +] + +{ #category : 'accessing' } +FmxMBTrait >> superclassName [ + "For trait we declare the Fame superclass as Object" + + ^ 'Object' ] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBTraitEntity.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBTraitEntity.class.st new file mode 100644 index 000000000..66f1c2b59 --- /dev/null +++ b/src/Famix-MetamodelBuilder-Core/FmxMBTraitEntity.class.st @@ -0,0 +1,20 @@ +Class { + #name : 'FmxMBTraitEntity', + #superclass : 'FmxMBTrait', + #category : 'Famix-MetamodelBuilder-Core-Implementation', + #package : 'Famix-MetamodelBuilder-Core', + #tag : 'Implementation' +} + +{ #category : 'visitor' } +FmxMBTraitEntity >> acceptVisitor: aVisitor [ + + + ^ aVisitor visitTraitEntity: self +] + +{ #category : 'testing' } +FmxMBTraitEntity >> isTraitEntity [ + + ^ true +] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBTraitsGeneralizationError.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBTraitsGeneralizationError.class.st deleted file mode 100644 index 054a6e6a3..000000000 --- a/src/Famix-MetamodelBuilder-Core/FmxMBTraitsGeneralizationError.class.st +++ /dev/null @@ -1,15 +0,0 @@ -Class { - #name : 'FmxMBTraitsGeneralizationError', - #superclass : 'Error', - #category : 'Famix-MetamodelBuilder-Core-Implementation', - #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Implementation' -} - -{ #category : 'accessing' } -FmxMBTraitsGeneralizationError >> messageText [ - - - - ^ 'Traits cannot inherit from classes' -] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBTypedProperty.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBTypedProperty.class.st index 2429bf472..b6d44f014 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBTypedProperty.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBTypedProperty.class.st @@ -20,13 +20,6 @@ FmxMBTypedProperty >> acceptVisitor: aVisitor [ ^ aVisitor visitTypedProperty: self. ] -{ #category : 'generating' } -FmxMBTypedProperty >> asSlot [ - self propertyType ifNil: [ FmxMBIncompletePropertyDefiniton signal ]. - - ^ self builder environment slotNamed: self name asSymbol defaultValue: self defaultValue -] - { #category : 'accessing' } FmxMBTypedProperty >> defaultValue [ ^ defaultValue @@ -37,89 +30,6 @@ FmxMBTypedProperty >> defaultValue: aValue [ defaultValue := aValue ] -{ #category : 'generating' } -FmxMBTypedProperty >> generateGetterIn: aClassOrTrait [ - - | methodSource propertyDefinition commentDefinition pragmaFormat | - - pragmaFormat := self defaultValue ifNil: [ '' ] - ifNotNil: [ '' ]. - propertyDefinition := pragmaFormat - format: { self name. self propertyType. self defaultValue printString}. - - commentDefinition := self comment - ifNotEmpty: [ '' format: { self comment printString } ]. - - methodSource := String streamContents: [ :s | - s nextPutAll: self name; cr; cr. - s tab; nextPutAll: propertyDefinition; cr. - s tab; nextPutAll: ''; cr. - self isMultivalued ifTrue: [ - s tab; nextPutAll: ''; cr. ]. - commentDefinition - ifNotEmpty: [ s tab; nextPutAll: commentDefinition; cr]. - s tab; nextPutAll: '^ '. - - self isRemote - ifTrue: [ s nextPutAll: 'self attributeAt: #'; - nextPutAll: self name; - nextPutAll: ' ifAbsent: [ nil ]' ] - ifFalse: [ s nextPutAll: self name ]. - - - self defaultValue ifNotNil: [ - s nextPutAll: (' ifNil: [ {1} := {2} ]' format: { self name. self defaultValue printString }) ] ]. - - "cannot merge both builder of the accessing disapear for non remote entity" - self isRemote - ifTrue: [ - self builder environment - compile: methodSource - in: aClassOrTrait - classified: 'accessing' - package: self builder parentBuilderPackageName - ] - ifFalse: [ - self builder environment - compile: methodSource - in: aClassOrTrait - classified: 'accessing' ] - - - - -] - -{ #category : 'generating' } -FmxMBTypedProperty >> generateSetterIn: aClassOrTrait [ - - | methodToFormat | - methodToFormat := String streamContents: [ :stream | - stream nextPutAll: '{1}: anObject - - '. - self isRemote - ifTrue: [ - stream nextPutAll: - 'self attributeAt: #{1} put: anObject' ] - ifFalse: [ stream nextPutAll: '{1} := anObject' ] ]. - - "cannot merge both builder of the accessing disapear for non remote entity" - self isRemote - ifTrue: [ - self builder environment - compile: (methodToFormat format: { self name }) - in: aClassOrTrait - classified: 'accessing' - package: self builder parentBuilderPackageName - ] - ifFalse: [ - self builder environment - compile: (methodToFormat format: { self name }) - in: aClassOrTrait - classified: 'accessing' ] -] - { #category : 'generating' } FmxMBTypedProperty >> hasDefaultValue [ ^ defaultValue isNotNil @@ -156,3 +66,17 @@ FmxMBTypedProperty >> propertyType [ FmxMBTypedProperty >> propertyType: anObject [ propertyType := anObject ] + +{ #category : 'generating' } +FmxMBTypedProperty >> slotExpression [ + + ^ self defaultValue + ifNil: [ 'FMProperty' ] + ifNotNil: [ :value | 'FMProperty defaultValue: ' , value printString ] +] + +{ #category : 'generating' } +FmxMBTypedProperty >> validate [ + + self propertyType ifNil: [ FmxMBIncompletePropertyDefiniton signal ] +] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBVisitor.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBVisitor.class.st index 77e0aac62..0cc57ebfa 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBVisitor.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBVisitor.class.st @@ -11,9 +11,16 @@ A minimum builder needs to subclass FamixMetamodelGenerator, and override the cl use the #FmxMBPrintVisitor class for a working example. general case: + +```st b := aFamixMetamodelGeneratorClass builderWithDefinitions. v := aFmxMBVisitorClass new. -b acceptVisitor: v. +b acceptVisitor: v +``` + +```st +aFmxMBVisitorClass visit: (aFamixMetamodelGeneratorClass builderWithDefinitions) +``` " Class { #name : 'FmxMBVisitor', @@ -23,6 +30,21 @@ Class { #tag : 'Visitors' } +{ #category : 'visiting' } +FmxMBVisitor class >> visit: aFmxEntity [ + + | visitor | + visitor := self new. + aFmxEntity acceptVisitor: visitor. + ^ visitor +] + +{ #category : 'visiting' } +FmxMBVisitor >> visitBehavioral: aBehavioral [ + + +] + { #category : 'visiting' } FmxMBVisitor >> visitBuilder: aBuilder [ @@ -31,16 +53,66 @@ FmxMBVisitor >> visitBuilder: aBuilder [ { #category : 'visiting' } FmxMBVisitor >> visitClass: aClass [ + + self visitBehavioral: aClass +] + +{ #category : 'visiting' } +FmxMBVisitor >> visitClassEntity: aClass [ + + ^ self visitClass: aClass +] + +{ #category : 'visiting' } +FmxMBVisitor >> visitClassGroup: aClass [ + + ^ self visitClass: aClass +] + +{ #category : 'visiting' } +FmxMBVisitor >> visitEntityCreator: aTrait [ + + self visitTrait: aTrait +] + +{ #category : 'visiting' } +FmxMBVisitor >> visitImportingContext: aClass [ + + ^ self visitClass: aClass +] + +{ #category : 'visiting' } +FmxMBVisitor >> visitModel: aClass [ + + ^ self visitClass: aClass +] + +{ #category : 'visiting' } +FmxMBVisitor >> visitProperty: aRelation [ + + ] { #category : 'visiting' } -FmxMBVisitor >> visitRelationSide: aRelationSide [ +FmxMBVisitor >> visitRelation: aRelation [ + + self visitProperty: aRelation ] { #category : 'visiting' } FmxMBVisitor >> visitTrait: aTrait [ + + self visitBehavioral: aTrait +] + +{ #category : 'visiting' } +FmxMBVisitor >> visitTraitEntity: aTrait [ + + self visitTrait: aTrait ] { #category : 'visiting' } FmxMBVisitor >> visitTypedProperty: aTypedProperty [ + + self visitProperty: aTypedProperty ] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMBWalkerVisitor.class.st b/src/Famix-MetamodelBuilder-Core/FmxMBWalkerVisitor.class.st index 84f5e668c..daabf3af4 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMBWalkerVisitor.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMBWalkerVisitor.class.st @@ -33,29 +33,17 @@ FmxMBWalkerVisitor >> separateProperties [ ] { #category : 'visiting' } -FmxMBWalkerVisitor >> visitBuilder: aBuilder [ - "Visit every Traits, and classes after that." - - aBuilder sortedTraits do: [ :each | each acceptVisitor: self ]. - aBuilder sortedClasses do: [ :each | each acceptVisitor: self ] -] - -{ #category : 'visiting' } -FmxMBWalkerVisitor >> visitClass: aClass [ +FmxMBWalkerVisitor >> visitBehavioral: aBehavioral [ "Visit all properties of aClass" - self prepareForPropertiesIn: aClass. - aClass properties - do: [ :each | each acceptVisitor: self ] - separatedBy: [ self separateProperties ] + self prepareForPropertiesIn: aBehavioral. + aBehavioral propertiesAndRelations do: [ :each | each acceptVisitor: self ] separatedBy: [ self separateProperties ] ] { #category : 'visiting' } -FmxMBWalkerVisitor >> visitTrait: aTrait [ - "visit all properties of aTrait" +FmxMBWalkerVisitor >> visitBuilder: aBuilder [ + "Visit every Traits, and classes after that." - self prepareForPropertiesIn: aTrait. - aTrait properties - do: [ :each | each acceptVisitor: self ] - separatedBy: [ self separateProperties ] + aBuilder sortedTraits do: [ :each | each acceptVisitor: self ]. + aBuilder sortedClasses do: [ :each | each acceptVisitor: self ] ] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMethodAddition.class.st b/src/Famix-MetamodelBuilder-Core/FmxMethodAddition.class.st index b684ecd21..f1d62d8ea 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMethodAddition.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMethodAddition.class.st @@ -14,14 +14,15 @@ Class { #superclass : 'FmxLazyClassChange', #instVars : [ 'protocol', - 'sourceCode' + 'sourceCode', + 'selector' ], - #category : 'Famix-MetamodelBuilder-Core-Changes', + #category : 'Famix-MetamodelBuilder-Core-Generation', #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Changes' + #tag : 'Generation' } -{ #category : 'class initialization' } +{ #category : 'instance creation' } FmxMethodAddition class >> className: aSymbol isClassSide: aBoolean sourceCode: aString protocol: protocol [ ^ self new @@ -38,6 +39,18 @@ FmxMethodAddition >> apply [ self realClass compile: sourceCode classified: protocol ] +{ #category : 'testing' } +FmxMethodAddition >> isRequired [ + + ^ self realClass + ifNil: [ true ] + ifNotNil: [ :class | + class + compiledMethodAt: self selector + ifPresent: [ :method | (method hasPragmaNamed: #generated) and: [ (method protocolName = protocol) not or: [ method sourceCode ~= sourceCode ] ] ] + ifAbsent: [ true ] ] +] + { #category : 'printing' } FmxMethodAddition >> printOn: aStream [ @@ -51,12 +64,33 @@ FmxMethodAddition >> printOn: aStream [ nextPutAll: ']' ] +{ #category : 'accessing' } +FmxMethodAddition >> protocol [ + + ^ protocol +] + { #category : 'accessing' } FmxMethodAddition >> protocol: anObject [ + protocol := anObject ] +{ #category : 'testing' } +FmxMethodAddition >> selector [ + "Cached - parsing only the signature" + + ^ selector ifNil: [ selector := (OCParser parseMethod: sourceCode lines first) selector ] +] + +{ #category : 'accessing' } +FmxMethodAddition >> sourceCode [ + + ^ sourceCode +] + { #category : 'accessing' } FmxMethodAddition >> sourceCode: anObject [ + sourceCode := anObject ] diff --git a/src/Famix-MetamodelBuilder-Core/FmxMethodRemovals.class.st b/src/Famix-MetamodelBuilder-Core/FmxMethodRemovals.class.st index 2d30776f8..b8415cc62 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxMethodRemovals.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxMethodRemovals.class.st @@ -22,9 +22,9 @@ Class { #instVars : [ 'selectors' ], - #category : 'Famix-MetamodelBuilder-Core-Changes', + #category : 'Famix-MetamodelBuilder-Core-Generation', #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Changes' + #tag : 'Generation' } { #category : 'instance creation' } diff --git a/src/Famix-MetamodelBuilder-Core/FmxPackageAddition.class.st b/src/Famix-MetamodelBuilder-Core/FmxPackageAddition.class.st index ebf584ef2..b938c92fc 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxPackageAddition.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxPackageAddition.class.st @@ -21,9 +21,9 @@ Class { #instVars : [ 'packageName' ], - #category : 'Famix-MetamodelBuilder-Core-Changes', + #category : 'Famix-MetamodelBuilder-Core-Generation', #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Changes' + #tag : 'Generation' } { #category : 'instance creation' } @@ -46,6 +46,12 @@ FmxPackageAddition >> apply [ self packageOrganizer ensurePackage: self packageName ] +{ #category : 'testing' } +FmxPackageAddition >> isRequired [ + + ^ self systemPackage isNil +] + { #category : 'accessing' } FmxPackageAddition >> packageName [ @@ -66,3 +72,9 @@ FmxPackageAddition >> printOn: aStream [ nextPutAll: (packageName ifNil: [ #unamed ]); nextPut: $) ] + +{ #category : 'accessing' } +FmxPackageAddition >> systemPackage [ + + ^ self packageOrganizer packageNamed: self packageName ifAbsent: [ nil ] +] diff --git a/src/Famix-MetamodelBuilder-Core/FmxSlotRemovals.class.st b/src/Famix-MetamodelBuilder-Core/FmxSlotRemovals.class.st index d3fbbeff6..74a690a70 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxSlotRemovals.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxSlotRemovals.class.st @@ -4,6 +4,7 @@ Description I represent a the removal of slots from a class when updating an already generated metamodel. +The slot removal is also managed in `FmxBehavioralAddition`, but if we do not do it before, we might end up with a duplicated slot in a hierarchy. So we first remove slots to remove and then we update the hierarchy. " Class { #name : 'FmxSlotRemovals', @@ -11,9 +12,9 @@ Class { #instVars : [ 'slots' ], - #category : 'Famix-MetamodelBuilder-Core-Changes', + #category : 'Famix-MetamodelBuilder-Core-Generation', #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Changes' + #tag : 'Generation' } { #category : 'accessing' } diff --git a/src/Famix-MetamodelBuilder-Core/FmxTraitAddition.class.st b/src/Famix-MetamodelBuilder-Core/FmxTraitAddition.class.st index abe57685c..3530e15bb 100644 --- a/src/Famix-MetamodelBuilder-Core/FmxTraitAddition.class.st +++ b/src/Famix-MetamodelBuilder-Core/FmxTraitAddition.class.st @@ -1,13 +1,45 @@ Class { #name : 'FmxTraitAddition', - #superclass : 'FmxClassAddition', - #category : 'Famix-MetamodelBuilder-Core-Changes', + #superclass : 'FmxBehavioralAddition', + #category : 'Famix-MetamodelBuilder-Core-Generation', #package : 'Famix-MetamodelBuilder-Core', - #tag : 'Changes' + #tag : 'Generation' } +{ #category : 'accessing' } +FmxTraitAddition class >> priority [ + + ^ 3.5 +] + +{ #category : 'accessing' } +FmxTraitAddition >> followingChangesIn: changes [ + + | result | + result := super followingChangesIn: changes. + result addAll: (changes select: [ :change | change priority = self priority and: [ change usesTrait: name ] ]). + ^ result +] + { #category : 'accessing' } FmxTraitAddition >> initialize: builder [ builder beTrait ] + +{ #category : 'testing' } +FmxTraitAddition >> isRequired [ + + super isRequired ifTrue: [ ^ true ]. + + ^ self realClass isTrait not +] + +{ #category : 'testing' } +FmxTraitAddition >> usesTrait: aString [ + "Return true if I use the trait named as the parameter." + + traits ifNil: [ ^ false ]. + + ^ traits includesSubstring: aString +] diff --git a/src/Famix-MetamodelBuilder-Core/Metaclass.extension.st b/src/Famix-MetamodelBuilder-Core/Metaclass.extension.st new file mode 100644 index 000000000..0b9b8e380 --- /dev/null +++ b/src/Famix-MetamodelBuilder-Core/Metaclass.extension.st @@ -0,0 +1,8 @@ +Extension { #name : 'Metaclass' } + +{ #category : '*Famix-MetamodelBuilder-Core' } +Metaclass >> canBeGenerated [ + "I return true if I am the kind of entities generated by the metamodel generator of Famix." + + ^ self isMetamodelEntity +] diff --git a/src/Famix-MetamodelBuilder-Core/Object.extension.st b/src/Famix-MetamodelBuilder-Core/Object.extension.st new file mode 100644 index 000000000..02e9a049e --- /dev/null +++ b/src/Famix-MetamodelBuilder-Core/Object.extension.st @@ -0,0 +1,7 @@ +Extension { #name : 'Object' } + +{ #category : '*Famix-MetamodelBuilder-Core' } +Object >> canBeGenerated [ + + ^ self class canBeGenerated +] diff --git a/src/Famix-MetamodelBuilder-Core/RGBehavior.extension.st b/src/Famix-MetamodelBuilder-Core/RGBehavior.extension.st deleted file mode 100644 index 3fc146535..000000000 --- a/src/Famix-MetamodelBuilder-Core/RGBehavior.extension.st +++ /dev/null @@ -1,31 +0,0 @@ -Extension { #name : 'RGBehavior' } - -{ #category : '*Famix-MetamodelBuilder-Core' } -RGBehavior >> dependsOn: anotherBehavior [ - - (self allSuperclasses includes: anotherBehavior) ifTrue: [ ^ true ]. - - ((self withAllSuperclasses flatCollect: [:each | each traitComposition traits]) includes: anotherBehavior) ifTrue: [ ^ true ]. - - ^ false -] - -{ #category : '*Famix-MetamodelBuilder-Core' } -RGBehavior >> traitsDefinitions [ - | methodsToRemoveMap | - methodsToRemoveMap := self propertyNamed: #methodsToRemoveFromTraitComposition ifAbsent: [ Dictionary new ]. - ^ self traitComposition transformations - collect: [ :trait | - methodsToRemoveMap - at: trait name - ifPresent: [ :methods | - String - streamContents: [ :s | - s - nextPutAll: trait asString; - nextPutAll: ' - '. - methods sorted printAsSelfEvaluatingFormOn: s ] ] - ifAbsent: [ trait asString ] ]. - - -] diff --git a/src/Famix-MetamodelBuilder-Core/Trait.extension.st b/src/Famix-MetamodelBuilder-Core/Trait.extension.st deleted file mode 100644 index 5f88493c1..000000000 --- a/src/Famix-MetamodelBuilder-Core/Trait.extension.st +++ /dev/null @@ -1,7 +0,0 @@ -Extension { #name : 'Trait' } - -{ #category : '*Famix-MetamodelBuilder-Core' } -Trait class >> named: aName uses: aTraitCompositionOrCollection slots: someSlots package: aCategory [ - - ^ self named: aName uses: aTraitCompositionOrCollection slots: someSlots category: aCategory -] diff --git a/src/Famix-MetamodelBuilder-Tests/FamixMetamodelBuilder.extension.st b/src/Famix-MetamodelBuilder-Tests/FamixMetamodelBuilder.extension.st index fa33a8249..b2ef30b6d 100644 --- a/src/Famix-MetamodelBuilder-Tests/FamixMetamodelBuilder.extension.st +++ b/src/Famix-MetamodelBuilder-Tests/FamixMetamodelBuilder.extension.st @@ -4,7 +4,6 @@ Extension { #name : 'FamixMetamodelBuilder' } FamixMetamodelBuilder >> beForTesting [ - self environment: (FmxMBStubEnvironment for: self). self configuration prefix: 'Tst'; packageName: 'Tst'. diff --git a/src/Famix-MetamodelBuilder-Tests/FamixMetamodelGenerator.extension.st b/src/Famix-MetamodelBuilder-Tests/FamixMetamodelGenerator.extension.st deleted file mode 100644 index e98bf3f7c..000000000 --- a/src/Famix-MetamodelBuilder-Tests/FamixMetamodelGenerator.extension.st +++ /dev/null @@ -1,8 +0,0 @@ -Extension { #name : 'FamixMetamodelGenerator' } - -{ #category : '*Famix-MetamodelBuilder-Tests' } -FamixMetamodelGenerator >> beForTesting [ - - builder environment: (FmxMBStubEnvironment for: builder). - -] diff --git a/src/Famix-MetamodelBuilder-Tests/FmxMBBehaviorTest.class.st b/src/Famix-MetamodelBuilder-Tests/FmxMBBehaviorTest.class.st index 9482ab78e..969fb1f7f 100644 --- a/src/Famix-MetamodelBuilder-Tests/FmxMBBehaviorTest.class.st +++ b/src/Famix-MetamodelBuilder-Tests/FmxMBBehaviorTest.class.st @@ -24,19 +24,6 @@ FmxMBBehaviorTest >> newEntityNamed: aString [ self subclassResponsibility ] -{ #category : 'tests' } -FmxMBBehaviorTest >> testComment [ - "test assigning of a comment to a class" - - | simpleClass generated commentString | - simpleClass := self newEntityNamed: #Comment. - commentString := 'Simple testing class'. - simpleClass comment: commentString. - builder generate. - generated := builder testingEnvironment ask classNamed: 'TstComment'. - self assert: (generated comment content beginsWith: commentString) -] - { #category : 'tests' } FmxMBBehaviorTest >> testCustomTestingSelectors [ @@ -67,16 +54,6 @@ FmxMBBehaviorTest >> testCustomTestingSelectorsAtOnce [ ] -{ #category : 'tests' } -FmxMBBehaviorTest >> testDefaultSuperclass [ - - | entity | - - entity := builder newClassNamed: #Entity. - - self assert: entity defaultSuperclass name equals: #MooseEntity. -] - { #category : 'tests' } FmxMBBehaviorTest >> testPluralOf [ diff --git a/src/Famix-MetamodelBuilder-Tests/FmxMBBuilderRelationTest.class.st b/src/Famix-MetamodelBuilder-Tests/FmxMBBuilderRelationTest.class.st deleted file mode 100644 index 44dea4288..000000000 --- a/src/Famix-MetamodelBuilder-Tests/FmxMBBuilderRelationTest.class.st +++ /dev/null @@ -1,215 +0,0 @@ -Class { - #name : 'FmxMBBuilderRelationTest', - #superclass : 'FmxMBTestCase', - #category : 'Famix-MetamodelBuilder-Tests-Tests', - #package : 'Famix-MetamodelBuilder-Tests', - #tag : 'Tests' -} - -{ #category : 'initialization' } -FmxMBBuilderRelationTest >> checkArrow: aBinarySelector from: cardinality1 to: cardinality2 containerFrom: containerFrom containerTo: containerTo forTraits: aBoolean [ - | tClass tComment generatedTClass generatedTComment hasContainer | - tComment := aBoolean - ifTrue: [ tClass := builder newTraitNamed: #TClass. - builder newTraitNamed: #TComment ] - ifFalse: [ tClass := builder newClassNamed: #TClass. - builder newClassNamed: #TComment ]. - - (tClass property: #property1) perform: aBinarySelector with: (tComment property: #property2). - - builder generate. - - generatedTClass := builder testingEnvironment ask classNamed: 'TstTClass'. - generatedTComment := builder testingEnvironment ask classNamed: 'TstTComment'. - - self assert: generatedTClass slots size equals: 1. - self assert: generatedTClass slots first name equals: #property1. - self assert: generatedTClass slots first expression equals: cardinality1 , ' type: #TstTComment opposite: #property2'. - self - assertCollection: (generatedTClass instanceSide selectors copyWithoutAll: {#addProperty1: . #property1Group . #property2Group}) - hasSameElements: #(property1 property1:). - hasContainer := (generatedTClass methodNamed: #property1) sourceCode includesSubstring: ''. - containerFrom - ifTrue: [ self assert: hasContainer ] - ifFalse: [ self deny: hasContainer ]. - - self assert: generatedTComment slots size equals: 1. - self assert: generatedTComment slots first name equals: #property2. - self assert: generatedTComment slots first expression equals: cardinality2 , ' type: #TstTClass opposite: #property1'. - self - assertCollection: (generatedTComment instanceSide selectors copyWithoutAll: {#addProperty2: . #property1Group . #property2Group}) - hasSameElements: #(property2 property2:). - hasContainer := (generatedTComment methodNamed: #property2) sourceCode includesSubstring: ''. - containerTo - ifTrue: [ self assert: hasContainer ] - ifFalse: [ self deny: hasContainer ] -] - -{ #category : 'initialization' } -FmxMBBuilderRelationTest >> resetBuilder [ - - builder := FamixMetamodelBuilder forTesting. - -] - -{ #category : 'tests' } -FmxMBBuilderRelationTest >> testClassRelations [ - - self checkArrow: #- from: 'FMOne' to: 'FMOne' containerFrom: false containerTo: false forTraits: false. - self resetBuilder. - self checkArrow: #*- from: 'FMOne' to: 'FMMany' containerFrom: false containerTo: false forTraits: false. - self resetBuilder. - self checkArrow: #-* from: 'FMMany' to: 'FMOne' containerFrom: false containerTo: false forTraits: false. - self resetBuilder. - self checkArrow: #*-* from: 'FMMany' to: 'FMMany' containerFrom: false containerTo: false forTraits: false. - - self resetBuilder. - self checkArrow: #-<> from: 'FMOne' to: 'FMOne' containerFrom: true containerTo: false forTraits: false. - self resetBuilder. - self checkArrow: #<>- from: 'FMOne' to: 'FMOne' containerFrom: false containerTo: true forTraits: false. - - self resetBuilder. - self checkArrow: #*-<> from: 'FMOne' to: 'FMMany' containerFrom: true containerTo: false forTraits: false. - self resetBuilder. - self checkArrow: #<>-* from: 'FMMany' to: 'FMOne' containerFrom: false containerTo: true forTraits: false. - -] - -{ #category : 'tests' } -FmxMBBuilderRelationTest >> testManyToManyTraitsRelation [ - - | tClass1 tClass2 generatedClass1 generatedClass2 | - - tClass1 := builder newTraitNamed: #TClass1. - tClass2 := builder newTraitNamed: #TClass2. - - (tClass1 property: #property1) *-* (tClass2 property: #property2). - - builder generate. - - generatedClass1 := builder testingEnvironment ask classNamed: 'TstTClass1'. - generatedClass2 := builder testingEnvironment ask classNamed: 'TstTClass2'. - - self assert: generatedClass1 slots size equals: 1. - self assert: generatedClass1 slots first name equals: #property1. - self assert: generatedClass1 slots first expression equals: 'FMMany type: #TstTClass2 opposite: #property2'. - - self assertCollection: generatedClass1 instanceSide selectors hasSameElements: #(property1 property1: addProperty1:). - - self assert: generatedClass2 slots size equals: 1. - self assert: generatedClass2 slots first name equals: #property2. - self assert: generatedClass2 slots first expression equals: 'FMMany type: #TstTClass1 opposite: #property1'. - - self assertCollection: generatedClass2 instanceSide selectors hasSameElements: #(property2 property2: addProperty2:). - -] - -{ #category : 'tests' } -FmxMBBuilderRelationTest >> testManyToOneTraitsRelation [ - - | tClass1 tClass2 generatedClass1 generatedClass2 | - - tClass1 := builder newTraitNamed: #TClass1. - tClass2 := builder newTraitNamed: #TClass2. - - (tClass1 property: #property1) *- (tClass2 property: #property2). - - builder generate. - - generatedClass1 := builder testingEnvironment ask classNamed: 'TstTClass1'. - generatedClass2 := builder testingEnvironment ask classNamed: 'TstTClass2'. - - self assert: generatedClass1 slots size equals: 1. - self assert: generatedClass1 slots first name equals: #property1. - self assert: generatedClass1 slots first expression equals: 'FMOne type: #TstTClass2 opposite: #property2'. - - self assertCollection: generatedClass1 instanceSide selectors hasSameElements: #(property1 property1:). - - self assert: generatedClass2 slots size equals: 1. - self assert: generatedClass2 slots first name equals: #property2. - self assert: generatedClass2 slots first expression equals: 'FMMany type: #TstTClass1 opposite: #property1'. - - self assertCollection: generatedClass2 instanceSide selectors hasSameElements: #(property2 property2: addProperty2:). - -] - -{ #category : 'tests' } -FmxMBBuilderRelationTest >> testOneToManyTraitsRelation [ - - | tClass1 tClass2 generatedClass1 generatedClass2 | - - tClass1 := builder newTraitNamed: #TClass1. - tClass2 := builder newTraitNamed: #TClass2. - - (tClass1 property: #property1) -* (tClass2 property: #property2). - - builder generate. - - generatedClass1 := builder testingEnvironment ask classNamed: 'TstTClass1'. - generatedClass2 := builder testingEnvironment ask classNamed: 'TstTClass2'. - - self assert: generatedClass1 slots size equals: 1. - self assert: generatedClass1 slots first name equals: #property1. - self assert: generatedClass1 slots first expression equals: 'FMMany type: #TstTClass2 opposite: #property2'. - - self assertCollection: generatedClass1 instanceSide selectors hasSameElements: #(property1 property1: addProperty1:). - - self assert: generatedClass2 slots size equals: 1. - self assert: generatedClass2 slots first name equals: #property2. - self assert: generatedClass2 slots first expression equals: 'FMOne type: #TstTClass1 opposite: #property1'. - - self assertCollection: generatedClass2 instanceSide selectors hasSameElements: #(property2 property2:). - -] - -{ #category : 'tests' } -FmxMBBuilderRelationTest >> testOneToOneTraitsRelation [ - - | tClass tComment generatedTClass generatedTComment | - - tClass := builder newTraitNamed: #TClass. - tComment := builder newTraitNamed: #TComment. - - (tClass property: #property1) - (tComment property: #property2). - - builder generate. - - generatedTClass := builder testingEnvironment ask classNamed: 'TstTClass'. - generatedTComment := builder testingEnvironment ask classNamed: 'TstTComment'. - - self assert: generatedTClass slots size equals: 1. - self assert: generatedTClass slots first name equals: #property1. - self assert: generatedTClass slots first expression equals: 'FMOne type: #TstTComment opposite: #property2'. - - self assertCollection: generatedTClass instanceSide selectors hasSameElements: #(property1 property1:). - - self assert: generatedTComment slots size equals: 1. - self assert: generatedTComment slots first name equals: #property2. - self assert: generatedTComment slots first expression equals: 'FMOne type: #TstTClass opposite: #property1'. - - self assertCollection: generatedTComment instanceSide selectors hasSameElements: #(property2 property2:). - -] - -{ #category : 'tests' } -FmxMBBuilderRelationTest >> testTraitRelations [ - - self checkArrow: #- from: 'FMOne' to: 'FMOne' containerFrom: false containerTo: false forTraits: true. - self resetBuilder. - self checkArrow: #*- from: 'FMOne' to: 'FMMany' containerFrom: false containerTo: false forTraits: true. - self resetBuilder. - self checkArrow: #-* from: 'FMMany' to: 'FMOne' containerFrom: false containerTo: false forTraits: true. - self resetBuilder. - self checkArrow: #*-* from: 'FMMany' to: 'FMMany' containerFrom: false containerTo: false forTraits: true. - - self resetBuilder. - self checkArrow: #-<> from: 'FMOne' to: 'FMOne' containerFrom: true containerTo: false forTraits: true. - self resetBuilder. - self checkArrow: #<>- from: 'FMOne' to: 'FMOne' containerFrom: false containerTo: true forTraits: true. - - self resetBuilder. - self checkArrow: #*-<> from: 'FMOne' to: 'FMMany' containerFrom: true containerTo: false forTraits: true. - self resetBuilder. - self checkArrow: #<>-* from: 'FMMany' to: 'FMOne' containerFrom: false containerTo: true forTraits: true. - -] diff --git a/src/Famix-MetamodelBuilder-Tests/FmxMBBuilderTest.class.st b/src/Famix-MetamodelBuilder-Tests/FmxMBBuilderTest.class.st index f0a51c4f0..fbec8eab2 100644 --- a/src/Famix-MetamodelBuilder-Tests/FmxMBBuilderTest.class.st +++ b/src/Famix-MetamodelBuilder-Tests/FmxMBBuilderTest.class.st @@ -17,41 +17,6 @@ Class { #tag : 'Tests' } -{ #category : 'tests' } -FmxMBBuilderTest >> testChildBuildersGeneration [ - | parentBuilder childBuilder environment | - parentBuilder := FamixMetamodelBuilder forTesting. - parentBuilder configuration packageName: 'ParentBuilderPackage'. - parentBuilder ensureClassNamed: 'ParentEntity'. - - childBuilder := FamixMetamodelBuilder new. - childBuilder parentBuilder: parentBuilder. - childBuilder configuration packageName: 'ChildBuilderPackage'. - childBuilder ensureClassNamed: 'ChildEntity'. - - parentBuilder generate. - parentBuilder generateRemotes. - - environment := parentBuilder environment ringEnvironment. - - self assert: (environment ask behaviorNamed: #TstParentEntity) isNotNil. - self assert: (environment ask behaviorNamed: #TstParentEntity) package name equals: 'ParentBuilderPackage'. - self assert: (environment ask behaviorNamed: #TstChildEntity) isNil -] - -{ #category : 'tests' } -FmxMBBuilderTest >> testChildBuildersShareTheSameEnvironment [ - - | parentBuilder childBuilder | - - parentBuilder := FamixMetamodelBuilder new. - childBuilder := FamixMetamodelBuilder new. - childBuilder parentBuilder: parentBuilder. - - self assert: childBuilder environment equals: parentBuilder environment. - -] - { #category : 'tests' } FmxMBBuilderTest >> testClassNamed [ @@ -63,6 +28,18 @@ FmxMBBuilderTest >> testClassNamed [ self assert: (builder classNamed: #C2) isNil. ] +{ #category : 'tests' } +FmxMBBuilderTest >> testConfiguration [ + | config | + config := builder configuration. + + self assert: config isNotNil. + + self deny: config shouldGenerateFileImportHelpers. + config shouldGenerateFileImportHelpers: true. + self assert: config shouldGenerateFileImportHelpers +] + { #category : 'tests' } FmxMBBuilderTest >> testEnsureClassNamed [ @@ -119,34 +96,6 @@ FmxMBBuilderTest >> testMultipleTraitsCreation [ ] -{ #category : 'tests' } -FmxMBBuilderTest >> testNewClassNamedComment [ - - | c1 aClass | - aClass := builder newClassNamed: #C1 comment: 'comment'. - self assert: aClass comment equals: 'comment'. - self assert: aClass isMetamodelClass. - - builder generate. - - c1 := builder testingEnvironment ask classNamed: 'TstC1'. - self assert: (c1 comment content beginsWith: 'comment') -] - -{ #category : 'tests' } -FmxMBBuilderTest >> testNewTraitNamedComment [ - - | t1 aTrait | - aTrait := builder newTraitNamed: #T1 comment: 'comment'. - self assert: aTrait comment equals: 'comment'. - self assert: aTrait isMetamodelTrait. - - builder generate. - - t1 := builder testingEnvironment ask traitNamed: 'TstT1'. - self assert: (t1 comment content beginsWith: 'comment') -] - { #category : 'tests' } FmxMBBuilderTest >> testParentBuilder [ @@ -163,16 +112,6 @@ FmxMBBuilderTest >> testParentBuilder [ ] -{ #category : 'tests' } -FmxMBBuilderTest >> testSafeAnnotationPackageName [ - - builder configuration packageName: 'Package'. - self assert: builder safeAnnotationPackageName equals: '#Package'. - - builder configuration packageName: 'Package-Core'. - self assert: builder safeAnnotationPackageName equals: '#''Package-Core'''. -] - { #category : 'tests' } FmxMBBuilderTest >> testSortedClasses [ diff --git a/src/Famix-MetamodelBuilder-Tests/FmxMBClassGeneralizationsTest.class.st b/src/Famix-MetamodelBuilder-Tests/FmxMBClassGeneralizationsTest.class.st deleted file mode 100644 index 1f16b9ef3..000000000 --- a/src/Famix-MetamodelBuilder-Tests/FmxMBClassGeneralizationsTest.class.st +++ /dev/null @@ -1,100 +0,0 @@ -Class { - #name : 'FmxMBClassGeneralizationsTest', - #superclass : 'FmxMBTestCase', - #instVars : [ - 'named', - 'behavior', - 'class' - ], - #category : 'Famix-MetamodelBuilder-Tests-Tests', - #package : 'Famix-MetamodelBuilder-Tests', - #tag : 'Tests' -} - -{ #category : 'running' } -FmxMBClassGeneralizationsTest >> checkGeneralizationWithAnnotations [ - - "check if TstClass is correctly created as a subclass of TstBehavior" - - | generatedBehavior generatedClass annotation | - - builder generate. - - generatedBehavior := builder testingEnvironment ask classNamed: 'TstBehavior'. - generatedClass := builder testingEnvironment ask classNamed: 'TstClass'. - - self assert: generatedClass superclass equals: generatedBehavior. - annotation := generatedClass classSide methodNamed: #annotation. - self assert: (annotation sourceCode includesSubstring: ''). - self assert: (annotation sourceCode includesSubstring: ''). - - -] - -{ #category : 'running' } -FmxMBClassGeneralizationsTest >> checkHierarchy [ - self assertEmpty: named allClassGeneralizations. - self assertCollection: behavior allClassGeneralizations hasSameElements: {named}. - self assertCollection: class allClassGeneralizations hasSameElements: {named . behavior} -] - -{ #category : 'running' } -FmxMBClassGeneralizationsTest >> setUp [ - - super setUp. - - named := builder newClassNamed: #Named. - behavior := builder newClassNamed: #Behavior. - class := builder newClassNamed: #Class. - -] - -{ #category : 'tests' } -FmxMBClassGeneralizationsTest >> testAllClassGeneralizations [ - - named <|-- behavior. - behavior <|-- class. - - self checkHierarchy. -] - -{ #category : 'tests' } -FmxMBClassGeneralizationsTest >> testAllClassGeneralizationsInChain [ - - named <|-- behavior <|-- class. - - self checkHierarchy. -] - -{ #category : 'tests' } -FmxMBClassGeneralizationsTest >> testAllClassGeneralizationsInChainInverted [ - - class --|> behavior --|> named. - - self checkHierarchy. -] - -{ #category : 'tests' } -FmxMBClassGeneralizationsTest >> testClassOppositeGeneralization [ - - behavior <|-- class. - - self checkGeneralizationWithAnnotations -] - -{ #category : 'tests' } -FmxMBClassGeneralizationsTest >> testGeneralization [ - - class --|> behavior. - - self checkGeneralizationWithAnnotations -] - -{ #category : 'tests' } -FmxMBClassGeneralizationsTest >> testSubclassOf [ - - behavior subclassOf: named. - class subclassOf: behavior. - - self checkHierarchy. -] diff --git a/src/Famix-MetamodelBuilder-Tests/FmxMBClassTest.class.st b/src/Famix-MetamodelBuilder-Tests/FmxMBClassTest.class.st index f778d3cf2..f66f29f31 100644 --- a/src/Famix-MetamodelBuilder-Tests/FmxMBClassTest.class.st +++ b/src/Famix-MetamodelBuilder-Tests/FmxMBClassTest.class.st @@ -12,251 +12,32 @@ FmxMBClassTest >> behaviorClass [ ^ FmxMBClass ] -{ #category : 'utilities' } -FmxMBClassTest >> checkGeneralizationWithAnnotations [ - - "check if TstClass is correctly created as a subclass of TstBehavior" - - | generatedBehavior generatedClass annotation | - generatedBehavior := builder testingEnvironment ask classNamed: 'TstBehavior'. - generatedClass := builder testingEnvironment ask classNamed: 'TstClass'. - - self assert: generatedClass superclass equals: generatedBehavior. - annotation := generatedClass classSide methodNamed: #annotation. - self assert: (annotation sourceCode includesSubstring: ''). - self assert: (annotation sourceCode includesSubstring: ''). - - -] - { #category : 'accessing' } FmxMBClassTest >> newEntityNamed: aString [ ^ builder newClassNamed: aString ] -{ #category : 'tests - settings' } -FmxMBClassTest >> testBasicSuperclass [ - "check if a new class has correct superclass (Entity for most of them. The default one for Entity.)" - - | generated | - builder newClassNamed: #Comment. - builder generate. - generated := builder testingEnvironment ask classNamed: 'TstComment'. - self assert: generated superclass name equals: #TstEntity. - - generated := builder testingEnvironment ask classNamed: 'TstEntity'. - self assert: generated superclass name equals: #MooseEntity -] - -{ #category : 'tests - settings' } -FmxMBClassTest >> testBasicTrait [ - "test if the trits have correct supperclass" - - | generated | - builder newTraitNamed: #TComment. - builder generate. - generated := builder testingEnvironment ask classNamed: 'TstTComment'. - self assert: generated superclass name equals: #Trait -] - -{ #category : 'tests' } -FmxMBClassTest >> testBuilderPackageChange [ - "if we set for a builder a packag name, all newely defined entities should use be assigned to this package. If no explicit package name is set, the default one is used." - - | generated | - builder newClassNamed: #Comment. - builder configuration packageName: 'Another'. - builder newClassNamed: #Method. - builder generate. - generated := builder testingEnvironment ask classNamed: 'TstComment'. - self assert: generated isNotNil. - self assert: generated isClass. - self assert: generated package name equals: #Tst. - generated := builder testingEnvironment ask classNamed: 'TstMethod'. - self assert: generated isNotNil. - self assert: generated isClass. - self assert: generated package name equals: #Another -] - -{ #category : 'tests' } -FmxMBClassTest >> testBuilderPrefixChange [ - "if we set for a builder a prefix, all newely defined entities should use it. If no explicit prefix is set, the default one is used." - - | generated | - builder newClassNamed: #Comment. - builder configuration prefix: 'Another'. - builder newClassNamed: #Method. - builder generate. - generated := builder testingEnvironment ask classNamed: 'TstComment'. - self assert: generated isNotNil. - self assert: generated isClass. - self assert: generated package name equals: #Tst. - generated := builder testingEnvironment ask classNamed: 'AnotherMethod'. - self assert: generated isNotNil. - self assert: generated isClass. - self assert: generated package name equals: #Tst -] - -{ #category : 'tests' } -FmxMBClassTest >> testCommentOnTrait [ - "test assigning of a comment to a trait" - - | simpleTrait generated commentString | - simpleTrait := builder newTraitNamed: #TComment. - commentString := 'Simple testing class'. - simpleTrait comment: commentString. - builder generate. - generated := builder testingEnvironment ask classNamed: 'TstTComment'. - self assert: (generated comment content beginsWith: commentString) -] - -{ #category : 'tests' } -FmxMBClassTest >> testCustomPackageForUserClasses [ - - "check if package name can by correctly set to a class" - - | generated | - - builder configuration packageName: 'Custom'. - - builder newClassNamed: #Comment. - builder generate. - generated := builder testingEnvironment ask classNamed: 'TstComment'. - - self assert: generated package name equals: #Custom. - -] - -{ #category : 'tests' } -FmxMBClassTest >> testCustomPackageForUserClassesChanged [ - - "test correct package assignments to classes" - - | generated generatedAccess | - - builder configuration packageName: 'Custom'. - builder newClassNamed: #Comment. - - builder configuration packageName: 'Custom2'. - builder newClassNamed: #Access. - - builder generate. - generated := builder testingEnvironment ask classNamed: 'TstComment'. - generatedAccess := builder testingEnvironment ask classNamed: 'TstAccess'. - - self assert: generated package name equals: #Custom. - self assert: generatedAccess package name equals: #Custom2. - - - -] - -{ #category : 'tests' } -FmxMBClassTest >> testDefaultPackageForUserClasses [ - - "test if the default package name is correctly set to classes" - - | generated | - - builder newClassNamed: #Comment. - builder generate. - generated := builder testingEnvironment ask classNamed: 'TstComment'. - - self assert: generated package name equals: #Tst. - -] - -{ #category : 'tests - tags' } -FmxMBClassTest >> testDefaultTagForClass [ - "test if correct default tag name is assigned to classes" - - | generatedTAccess | - builder newTraitNamed: #TAccess. - builder generate. - - generatedTAccess := builder testingEnvironment ask classNamed: #TstTAccess. - self assertCollection: generatedTAccess tags hasSameElements: { #Traits } -] - -{ #category : 'tests' } -FmxMBClassTest >> testEmptyComment [ - - "check that by default classes do not have any class comment" - - | generated | - - builder newClassNamed: #Comment. - builder generate. - generated := builder testingEnvironment ask classNamed: 'TstComment'. - self assert: generated comment content isEmptyOrNil. -] - -{ #category : 'tests' } -FmxMBClassTest >> testEntityClass [ - "check expected parameters of a newely generated entity class" - - | generated method | - builder newClassNamed: #Entity. - builder generate. - generated := builder testingEnvironment ask classNamed: 'TstEntity'. - self assert: generated isNotNil. - self assert: generated isClass. - self assert: generated superclass name equals: 'MooseEntity'. - self assertEmpty: generated slots. - self assertEmpty: generated instanceSide localSelectors. - self assertCollection: generated classSide localSelectors sorted equals: #(annotation metamodel). - - method := generated classSide methodNamed: #annotation. - self assert: (method sourceCode includesSubstring: ''). - self assert: (method sourceCode includesSubstring: ''). - self assert: (method sourceCode includesSubstring: '') -] - -{ #category : 'tests' } -FmxMBClassTest >> testMultipleClasses [ +{ #category : 'tests - names' } +FmxMBClassTest >> testCannotHaveTwoSuperclasses [ - "trivial test if we can generate several different classes" - - builder newClassNamed: #Comment. - builder newClassNamed: #Method. - builder newClassNamed: #Package. + | class1 class2 class3 | + class1 := builder newClassNamed: #Class1. + class2 := builder newClassNamed: #Class2. + class3 := builder newClassNamed: #Class3. - builder generate. - builder testingEnvironment ask classNamed: 'TstComment'. - builder testingEnvironment ask classNamed: 'TstMethod'. - builder testingEnvironment ask classNamed: 'TstPackage'. + class1 --|> class2. + self should: [ class1 --|> class3 ] raise: Error ] { #category : 'tests' } -FmxMBClassTest >> testSimpleClass [ - "check expected parameters of a newely generated class" +FmxMBClassTest >> testDefaultSuperclassName [ - | generated | - builder newClassNamed: #Comment. - builder generate. - generated := builder testingEnvironment ask classNamed: 'TstComment'. - self assert: generated isNotNil. - self assert: generated isClass. - self assert: generated superclass name equals: 'TstEntity'. - self assertEmpty: generated slots. - self assertEmpty: generated instanceSide localSelectors. - self assertCollection: generated classSide localSelectors sorted equals: #(annotation) -] - -{ #category : 'tests' } -FmxMBClassTest >> testSimpleClassAnnotation [ - "test correct generation of class annotations" + | entity | + entity := builder newClassNamed: #Entity. - | generated method | - builder newClassNamed: #Comment. - builder generate. - generated := builder testingEnvironment ask classNamed: 'TstComment'. - method := generated classSide methodNamed: #annotation. - self assert: (method sourceCode includesSubstring: ''). - self assert: (method sourceCode includesSubstring: ''). - self assert: (method sourceCode includesSubstring: '') + self assert: entity defaultSuperclassName equals: #MooseEntity ] { #category : 'tests - names' } @@ -277,76 +58,13 @@ FmxMBClassTest >> testSingularPropertyName [ ] -{ #category : 'tests - tags' } -FmxMBClassTest >> testTagForClass [ - - | access generatedAccess | - - access := builder newClassNamed: #Access. - access tag: #classes. - - builder generate. - - generatedAccess := builder testingEnvironment ask classNamed: #TstAccess. - self assertCollection: generatedAccess tags hasSameElements: { #classes } -] - -{ #category : 'tests - tags' } -FmxMBClassTest >> testTagForClassFromBuilder [ - | generatedAccess comment generatedComment | - builder newClassNamed: #Access. - comment := builder newClassNamed: #Comment. - comment tag: #support. - - builder generate. - - generatedAccess := builder testingEnvironment ask classNamed: #TstAccess. - generatedComment := builder testingEnvironment ask classNamed: #TstComment. - self assertCollection: generatedAccess tags hasSameElements: {#Entities}. - self assertCollection: generatedComment tags hasSameElements: {#support} -] - -{ #category : 'tests - tags' } -FmxMBClassTest >> testTagForTraitFromBuilder [ - - | generatedTAccess tComment generatedTComment | - builder newTraitNamed: #TAccess. - tComment := builder newTraitNamed: #TComment. - tComment tag: #support. - - builder generate. - - generatedTAccess := builder testingEnvironment ask classNamed: #TstTAccess. - generatedTComment := builder testingEnvironment ask classNamed: #TstTComment. - self assertCollection: generatedTAccess tags hasSameElements: { #Traits }. - self assertCollection: generatedTComment tags hasSameElements: { #support } -] - -{ #category : 'tests - tags' } -FmxMBClassTest >> testTagForTraits [ - - | tAccess generatedTAccess | - - tAccess := builder newTraitNamed: #TAccess. - tAccess tag: #support. - - builder generate. - - generatedTAccess := builder testingEnvironment ask classNamed: #TstTAccess. - self assertCollection: generatedTAccess tags hasSameElements: { #support } -] - { #category : 'tests - tags' } FmxMBClassTest >> testTestingMethods [ - "test messages isMetamodelClass and isMetamodelTrait" - - | named | - named := builder newClassNamed: #Named. + | named | + named := builder newClassNamed: #Named. self assert: named isMetamodelClass. - self deny: named isMetamodelTrait. - - + self deny: named isMetamodelTrait ] diff --git a/src/Famix-MetamodelBuilder-Tests/FmxMBConfigurationTest.class.st b/src/Famix-MetamodelBuilder-Tests/FmxMBConfigurationTest.class.st deleted file mode 100644 index fc6bc7fb4..000000000 --- a/src/Famix-MetamodelBuilder-Tests/FmxMBConfigurationTest.class.st +++ /dev/null @@ -1,19 +0,0 @@ -Class { - #name : 'FmxMBConfigurationTest', - #superclass : 'FmxMBTestCase', - #category : 'Famix-MetamodelBuilder-Tests-Tests', - #package : 'Famix-MetamodelBuilder-Tests', - #tag : 'Tests' -} - -{ #category : 'tests' } -FmxMBConfigurationTest >> testConfiguration [ - | config | - config := builder configuration. - - self assert: config isNotNil. - - self deny: config shouldGenerateFileImportHelpers. - config shouldGenerateFileImportHelpers: true. - self assert: config shouldGenerateFileImportHelpers -] diff --git a/src/Famix-MetamodelBuilder-Tests/FmxMBGeneratorCleaningStrategyTest.class.st b/src/Famix-MetamodelBuilder-Tests/FmxMBGeneratorCleaningStrategyTest.class.st index cb6a80f79..670ccda09 100644 --- a/src/Famix-MetamodelBuilder-Tests/FmxMBGeneratorCleaningStrategyTest.class.st +++ b/src/Famix-MetamodelBuilder-Tests/FmxMBGeneratorCleaningStrategyTest.class.st @@ -56,10 +56,17 @@ FmxMBGeneratorCleaningStrategyTest >> generateClasses [ (class slotNamed: #fursonas) inClass: #FmxTestCleaningStrategyEntity. "Here we change the type of the slot to ensure it is regenerated correctly" class comment: 'Test' ] ifAbsent: [ self fail ]. - self class classInstaller make: [ :aBuilder | + + "We add a manually added class to ensure it is not removed. Also, we add a metadescribed trait to it to ensure we do not remove classes metadescribed from a trait" + self class environment at: #FmxTestCleaningStrategyTATrait ifPresent: [ :trait | + + self class classInstaller make: [ :aBuilder | aBuilder name: #FmxCleanerTestAddedClass; + traits: trait; package: self packageName ]. + ] ifAbsent: [ self fail ]. + self class classInstaller make: [ :aBuilder | aBuilder beTrait; diff --git a/src/Famix-MetamodelBuilder-Tests/FmxMBImportingContextTest.class.st b/src/Famix-MetamodelBuilder-Tests/FmxMBImportingContextTest.class.st deleted file mode 100644 index 102e6b61a..000000000 --- a/src/Famix-MetamodelBuilder-Tests/FmxMBImportingContextTest.class.st +++ /dev/null @@ -1,105 +0,0 @@ -Class { - #name : 'FmxMBImportingContextTest', - #superclass : 'FmxMBTestCase', - #instVars : [ - 'access', - 'variable', - 'generatedAccess', - 'generatedVariable', - 'generatedMethod', - 'method', - 'generatedContext' - ], - #category : 'Famix-MetamodelBuilder-Tests-Tests', - #package : 'Famix-MetamodelBuilder-Tests', - #tag : 'Tests' -} - -{ #category : 'running' } -FmxMBImportingContextTest >> setUp [ - - super setUp. - - builder withFileImport. - - access := builder newClassNamed: #Access. - variable := builder newClassNamed: #Variable. - method := builder newClassNamed: #Method. - - builder generate. - - generatedAccess := builder testingEnvironment ask classNamed: - #TstAccess. - generatedVariable := builder testingEnvironment ask classNamed: - #TstVariable. - generatedMethod := builder testingEnvironment ask classNamed: - #TstMethod. - - generatedContext := builder testingEnvironment ask classNamed: - #TstImportingContext -] - -{ #category : 'tests' } -FmxMBImportingContextTest >> testDefineImport [ - - | localMethod | - localMethod := generatedContext methodNamed: #importMethod. - self assert: - (localMethod sourceCode includesSubstring: ''). - self assert: (localMethod sourceCode includesSubstring: - 'self importConcreteEntity: (self class fm3ClassNamed: #Method') -] - -{ #category : 'tests' } -FmxMBImportingContextTest >> testGeneratedContextClass [ - self assert: generatedContext isNotNil. - self assert: generatedContext superclass name equals: #FamixImportingContext -] - -{ #category : 'tests' } -FmxMBImportingContextTest >> testNotGenerated [ - - builder := FamixMetamodelBuilder forTesting. - - access := builder newClassNamed: #Access. - variable := builder newClassNamed: #Variable. - method := builder newClassNamed: #Method. - - builder generate. - - generatedContext := builder testingEnvironment ask classNamed: #TstImportingContext. - self assert: generatedContext isNil. - -] - -{ #category : 'tests' } -FmxMBImportingContextTest >> testNotGeneratedForEmptyBuilder [ - - builder := FamixMetamodelBuilder forTesting. - builder withFileImport. - - builder generate. - - generatedContext := builder testingEnvironment ask classNamed: - #TstImportingContext. - self assert: generatedContext isNil -] - -{ #category : 'tests' } -FmxMBImportingContextTest >> testShouldImport [ - - | localMethod | - - localMethod := generatedContext methodNamed: #shouldImportMethod. - self assert: (localMethod sourceCode includesSubstring: ''). - self assert: (localMethod sourceCode includesSubstring: '^ self shouldImport: #Method'). - - localMethod := generatedContext methodNamed: #shouldImportAccess. - self assert: (localMethod sourceCode includesSubstring: ''). - self assert: (localMethod sourceCode includesSubstring: '^ self shouldImport: #Access'). - - localMethod := generatedContext methodNamed: #shouldImportVariable. - self assert: (localMethod sourceCode includesSubstring: ''). - self assert: (localMethod sourceCode includesSubstring: '^ self shouldImport: #Variable'). - -] diff --git a/src/Famix-MetamodelBuilder-Tests/FmxMBRelationSideTest.class.st b/src/Famix-MetamodelBuilder-Tests/FmxMBRelationSideTest.class.st index e0e43e05f..5e163bff0 100644 --- a/src/Famix-MetamodelBuilder-Tests/FmxMBRelationSideTest.class.st +++ b/src/Famix-MetamodelBuilder-Tests/FmxMBRelationSideTest.class.st @@ -11,14 +11,13 @@ FmxMBRelationSideTest >> testBasics [ "check trivial testing and accessing methods" | side | - side := FmxMBRelationSide new. + side := FmxMBRelation new. self assert: side cardinality equals: #one. self deny: side isContainer. self deny: side isDerived. self deny: side isTarget. self deny: side isSource. - self assert: side willGenerate. self assertEmpty: side comment ] @@ -26,78 +25,56 @@ FmxMBRelationSideTest >> testBasics [ FmxMBRelationSideTest >> testContainmentRelations [ | aClass aTrait relation | - aClass := builder newClassNamed: #AClass. aTrait := builder newTraitNamed: #ATrait. - + relation := aClass <>- aTrait. - self assert: relation left isOne. - self assert: relation right isOne. - self deny: relation left isContainer. - self assert: relation right isContainer. + self assert: relation isOne. + self assert: relation oppositeSide isOne. + self deny: relation isContainer. + self assert: relation oppositeSide isContainer. relation := aClass -<> aTrait. - self assert: relation left isOne. - self assert: relation right isOne. - self assert: relation left isContainer. - self deny: relation right isContainer. + self assert: relation isOne. + self assert: relation oppositeSide isOne. + self assert: relation isContainer. + self deny: relation oppositeSide isContainer. relation := aClass <>-* aTrait. - self assert: relation left isMany. - self assert: relation right isOne. - self deny: relation left isContainer. - self assert: relation right isContainer. + self assert: relation isMany. + self assert: relation oppositeSide isOne. + self deny: relation isContainer. + self assert: relation oppositeSide isContainer. relation := aClass *-<> aTrait. - self assert: relation left isOne. - self assert: relation right isMany. - self assert: relation left isContainer. - self deny: relation right isContainer. - -] - -{ #category : 'tests' } -FmxMBRelationSideTest >> testDirections [ - - "test setting of a type of the property" - - | aClass aTrait relation | - - aClass := builder newClassNamed: #AClass. - aTrait := builder newTraitNamed: #ATrait. - - relation := aClass - aTrait. - - self assert: relation left from equals: relation left. - self assert: relation right from equals: relation left. - - self assert: relation left to equals: relation right. - self assert: relation right to equals: relation right. - + self assert: relation isOne. + self assert: relation oppositeSide isMany. + self assert: relation isContainer. + self deny: relation oppositeSide isContainer ] { #category : 'tests' } FmxMBRelationSideTest >> testOppositeName [ + | aClass aTrait relation | - builder configuration prefix: 'Banane'. aClass := builder newClassNamed: #AClass. aTrait := builder newTraitNamed: #ATrait. - + relation := aClass <>- aTrait. - self assert: relation left oppositeName equals: 'aClass' + self assert: relation oppositeName equals: 'aClass' ] { #category : 'tests' } FmxMBRelationSideTest >> testOppositeType [ + | aClass aTrait relation | - builder configuration prefix: 'Banane'. aClass := builder newClassNamed: #AClass. aTrait := builder newTraitNamed: #ATrait. - + relation := aClass <>- aTrait. - self assert: relation left oppositeType equals: 'BananeATrait' + self assert: relation oppositeType equals: 'BananeATrait' ] { #category : 'tests' } @@ -112,7 +89,7 @@ FmxMBRelationSideTest >> testOppositeTypeInRemoteBuilder [ aTrait := builder2 newTraitNamed: #ATrait. relation := aClass <>- aTrait. - self assert: relation left oppositeType equals: 'FurryATrait' + self assert: relation oppositeType equals: 'FurryATrait' ] { #category : 'tests' } @@ -122,7 +99,7 @@ FmxMBRelationSideTest >> testProperties [ | side | - side := FmxMBRelationSide new. + side := FmxMBRelation new. self deny: side isContainer. side container: true. @@ -176,100 +153,107 @@ FmxMBRelationSideTest >> testProperties [ FmxMBRelationSideTest >> testPropertyReservedName [ "simple tests of basic relation side properties" - | side | - side := FmxMBRelationSide new - builder: builder; - yourself. - self should: [ side name: 'class' ] raise: FmxMBPropertyNameIsReserved + self should: [ FmxMBRelation new name: 'class' ] raise: FmxMBPropertyNameIsReserved ] { #category : 'tests' } FmxMBRelationSideTest >> testPropertyType [ "test if after changing of related trait of a relation side all will be consistent" - | tClass tComment tAccess side | + | tClass tComment tAccess relation | tClass := builder newTraitNamed: #TClass. tComment := builder newTraitNamed: #TComment. tAccess := builder newTraitNamed: #TAccess. - (side := tClass property: #property1) - (tComment property: #property2). + (relation := tClass property: #property1) - (tComment property: #property2). - self assert: side relatedEntity equals: tClass. - self assertCollection: tClass sides asArray equals: {side}. - self assertEmpty: tAccess sides. + self assert: relation relatedEntity equals: tClass. + self assertCollection: tClass relations asArray equals: {relation}. + self assertEmpty: tAccess relations. - side trait: tAccess. + relation trait: tAccess. - self assert: side relatedEntity equals: tAccess. - self assertEmpty: tClass sides. - self assertCollection: tAccess sides asArray equals: {side} + self assert: relation relatedEntity equals: tAccess. + self assertEmpty: tClass relations. + self assertCollection: tAccess relations asArray equals: {relation} ] { #category : 'tests' } FmxMBRelationSideTest >> testReconnection [ "test if after changing of related trait of a relation side all will be consistent" - | tClass tComment tAccess side | + | tClass tComment tAccess relation | tClass := builder newTraitNamed: #TClass. tComment := builder newTraitNamed: #TComment. tAccess := builder newTraitNamed: #TAccess. - (side := tClass property: #property1) - (tComment property: #property2). + (relation := tClass property: #property1) - (tComment property: #property2). - self assert: side relatedEntity equals: tClass. - self assertCollection: tClass sides asArray equals: {side}. - self assertEmpty: tAccess sides. + self assert: relation relatedEntity equals: tClass. + self assertCollection: tClass relations asArray equals: { relation }. + self assertEmpty: tAccess relations. - side trait: tAccess. + relation trait: tAccess. - self assert: side trait equals: tAccess. - self assertEmpty: tClass sides. - self assertCollection: tAccess sides asArray equals: {side} + self assert: relation trait equals: tAccess. + self assertEmpty: tClass relations. + self assertCollection: tAccess relations asArray equals: { relation } ] { #category : 'tests' } FmxMBRelationSideTest >> testRelatedEntity [ - "test setting of a type of the property" | aClass aTrait relation | - aClass := builder newClassNamed: #AClass. aTrait := builder newTraitNamed: #ATrait. - + relation := aClass - aTrait. - - self assert: relation left relatedEntity equals: aClass. - self assert: relation right relatedEntity equals: aTrait. + self assert: relation relatedEntity equals: aClass. + self assert: relation oppositeSide relatedEntity equals: aTrait ] { #category : 'tests' } FmxMBRelationSideTest >> testRelations [ | aClass aTrait relation | - aClass := builder newClassNamed: #AClass. aTrait := builder newTraitNamed: #ATrait. - + relation := aClass - aTrait. - self assert: relation left isOne. - self assert: relation right isOne. - self deny: (relation left isContainer | relation left isContainer). + self assert: relation isOne. + self assert: relation oppositeSide isOne. + self deny: relation isContainer | relation oppositeSide isContainer. relation := aClass -* aTrait. - self assert: relation left isMany. - self assert: relation right isOne. - self deny: (relation left isContainer | relation left isContainer). - + self assert: relation isMany. + self assert: relation oppositeSide isOne. + self deny: relation isContainer | relation oppositeSide isContainer. + relation := aClass *- aTrait. - self assert: relation left isOne. - self assert: relation right isMany. - self deny: (relation left isContainer | relation left isContainer). - + self assert: relation isOne. + self assert: relation oppositeSide isMany. + self deny: relation isContainer | relation oppositeSide isContainer. + relation := aClass *-* aTrait. - self assert: relation left isMany. - self assert: relation right isMany. - self deny: (relation left isContainer | relation left isContainer). + self assert: relation isMany. + self assert: relation oppositeSide isMany. + self deny: relation isContainer | relation oppositeSide isContainer +] +{ #category : 'tests' } +FmxMBRelationSideTest >> testShortCardinalityString [ + + | tClass tMethod relation | + + tClass := builder newTraitNamed: #TClass. + tMethod := builder newTraitNamed: #TMethod. + + relation := (tClass <>-* (tMethod property: #methodClass)). + self assert: relation shortCardinalityString equals: '*'. + relation := (tClass - (tMethod property: #methodClass)). + self assert: relation shortCardinalityString equals: ''. + relation := (tClass *-* tMethod). + self assert: relation shortCardinalityString equals: '*'. ] diff --git a/src/Famix-MetamodelBuilder-Tests/FmxMBRelationSidesCombinationsTest.class.st b/src/Famix-MetamodelBuilder-Tests/FmxMBRelationSidesCombinationsTest.class.st deleted file mode 100644 index d95c4f379..000000000 --- a/src/Famix-MetamodelBuilder-Tests/FmxMBRelationSidesCombinationsTest.class.st +++ /dev/null @@ -1,106 +0,0 @@ -Class { - #name : 'FmxMBRelationSidesCombinationsTest', - #superclass : 'FmxMBTestCase', - #category : 'Famix-MetamodelBuilder-Tests-Tests', - #package : 'Famix-MetamodelBuilder-Tests', - #tag : 'Tests' -} - -{ #category : 'tests' } -FmxMBRelationSidesCombinationsTest >> testClassToClass [ - - "test simple relation between class and class" - - | entity1 entity2 env | - - entity1 := builder newClassNamed: #Named. - entity2 := builder newClassNamed: #Access. - - (entity1 property: #access) - (entity2 property: #named). - - builder generate. - - env := builder environment ringEnvironment. - - self - assert: ((env ask behaviorNamed: #TstNamed) slots first) expression - equals: 'FMOne type: #TstAccess opposite: #named'. - self - assert: ((env ask behaviorNamed: #TstAccess) slots first) expression - equals: 'FMOne type: #TstNamed opposite: #access'. - - - -] - -{ #category : 'tests' } -FmxMBRelationSidesCombinationsTest >> testClassToTrait [ - - "test simple relation between class and trait" - - | entity1 entity2 env | - - entity1 := builder newClassNamed: #Named. - entity2 := builder newTraitNamed: #TAccess. - - (entity1 property: #access) - (entity2 property: #named). - - builder generate. - - env := builder environment ringEnvironment. - - self - assert: ((env ask behaviorNamed: #TstNamed) slots first) expression - equals: 'FMOne type: #TstTAccess opposite: #named'. - self - assert: ((env ask behaviorNamed: #TstTAccess) slots first) expression - equals: 'FMOne type: #TstNamed opposite: #access'. -] - -{ #category : 'tests' } -FmxMBRelationSidesCombinationsTest >> testTraitToClass [ - - "test simple relation between class and trait" - - | entity1 entity2 env | - - entity1 := builder newTraitNamed: #TNamedEntity. - entity2 := builder newClassNamed: #Access. - - (entity1 property: #access) - (entity2 property: #named). - - builder generate. - - env := builder environment ringEnvironment. - - self - assert: ((env ask behaviorNamed: #TstTNamedEntity) slots first) expression - equals: 'FMOne type: #TstAccess opposite: #named'. - self - assert: ((env ask behaviorNamed: #TstAccess) slots first) expression - equals: 'FMOne type: #TstTNamedEntity opposite: #access'. -] - -{ #category : 'tests' } -FmxMBRelationSidesCombinationsTest >> testTraitToTrait [ - - "test simple relation between trait and trait" - - | entity1 entity2 env | - - entity1 := builder newTraitNamed: #TNamedEntity. - entity2 := builder newTraitNamed: #TAccess. - - (entity1 property: #access) - (entity2 property: #named). - - builder generate. - - env := builder environment ringEnvironment. - - self - assert: ((env ask behaviorNamed: #TstTNamedEntity) slots first) expression - equals: 'FMOne type: #TstTAccess opposite: #named'. - self - assert: ((env ask behaviorNamed: #TstTAccess) slots first) expression - equals: 'FMOne type: #TstTNamedEntity opposite: #access'. -] diff --git a/src/Famix-MetamodelBuilder-Tests/FmxMBRelationTest.class.st b/src/Famix-MetamodelBuilder-Tests/FmxMBRelationTest.class.st deleted file mode 100644 index b62e12157..000000000 --- a/src/Famix-MetamodelBuilder-Tests/FmxMBRelationTest.class.st +++ /dev/null @@ -1,38 +0,0 @@ -Class { - #name : 'FmxMBRelationTest', - #superclass : 'FmxMBPropertyTest', - #category : 'Famix-MetamodelBuilder-Tests-Tests', - #package : 'Famix-MetamodelBuilder-Tests', - #tag : 'Tests' -} - -{ #category : 'tests' } -FmxMBRelationTest >> testCardinalityString [ - - | tClass tMethod relation | - tClass := builder newTraitNamed: #TClass. - tMethod := builder newTraitNamed: #TMethod. - - relation := (tClass <>-* (tMethod property: #methodClass)). - self assert: relation cardinalityString equals: '1..*'. - relation := (tClass - (tMethod property: #methodClass)). - self assert: relation cardinalityString equals: '1..1'. - relation := (tClass *-* tMethod). - self assert: relation cardinalityString equals: '*..*'. -] - -{ #category : 'tests' } -FmxMBRelationTest >> testShortCardinalityString [ - - | tClass tMethod relation | - - tClass := builder newTraitNamed: #TClass. - tMethod := builder newTraitNamed: #TMethod. - - relation := (tClass <>-* (tMethod property: #methodClass)). - self assert: relation shortCardinalityString equals: '*'. - relation := (tClass - (tMethod property: #methodClass)). - self assert: relation shortCardinalityString equals: ''. - relation := (tClass *-* tMethod). - self assert: relation shortCardinalityString equals: '*'. -] diff --git a/src/Famix-MetamodelBuilder-Tests/FmxMBRelationsGenerationTest.class.st b/src/Famix-MetamodelBuilder-Tests/FmxMBRelationsGenerationTest.class.st deleted file mode 100644 index 632e7d0fc..000000000 --- a/src/Famix-MetamodelBuilder-Tests/FmxMBRelationsGenerationTest.class.st +++ /dev/null @@ -1,208 +0,0 @@ -Class { - #name : 'FmxMBRelationsGenerationTest', - #superclass : 'FmxMBTestCase', - #instVars : [ - 'access', - 'variable', - 'generatedAccess', - 'generatedVariable' - ], - #category : 'Famix-MetamodelBuilder-Tests-Tests', - #package : 'Famix-MetamodelBuilder-Tests', - #tag : 'Tests' -} - -{ #category : 'utilities' } -FmxMBRelationsGenerationTest >> assertContainerInAccessMethod: selector [ - - self assert: ((generatedAccess methodNamed: selector) sourceCode includesSubstring: ''). - self assert: ((generatedAccess methodNamed: selector) sourceCode includesSubstring: ''). - - -] - -{ #category : 'utilities' } -FmxMBRelationsGenerationTest >> assertContainerInVariableMethod: selector [ - - self assert: ((generatedVariable methodNamed: selector) sourceCode includesSubstring: ''). - self assert: ((generatedVariable methodNamed: selector) sourceCode includesSubstring: ''). - - -] - -{ #category : 'utilities' } -FmxMBRelationsGenerationTest >> cardinalityInAccess: selector1 inVariable: selector2 [ - - self assert: generatedAccess slots first name equals: selector1. - self assert: generatedVariable slots first name equals: selector2. - -] - -{ #category : 'utilities' } -FmxMBRelationsGenerationTest >> checkSlotsCount [ - - self assert: generatedAccess slots size equals: 1. - self assert: generatedVariable slots size equals: 1. - -] - -{ #category : 'utilities' } -FmxMBRelationsGenerationTest >> denyContainerInAccessMethod: selector [ - - self deny: ((generatedAccess methodNamed: selector) sourceCode includesSubstring: ''). - self assert: ((generatedAccess methodNamed: selector) sourceCode includesSubstring: ''). - - -] - -{ #category : 'utilities' } -FmxMBRelationsGenerationTest >> denyContainerInVarialbeMethod: selector [ - - self deny: ((generatedVariable methodNamed: selector) sourceCode includesSubstring: ''). - self assert: ((generatedVariable methodNamed: selector) sourceCode includesSubstring: ''). - - -] - -{ #category : 'utilities' } -FmxMBRelationsGenerationTest >> generate [ - - builder generate. - - generatedAccess := builder testingEnvironment ask classNamed: 'TstAccess'. - generatedVariable := builder testingEnvironment ask classNamed: 'TstVariable'. - - self checkSlotsCount. - -] - -{ #category : 'running' } -FmxMBRelationsGenerationTest >> setUp [ - - super setUp. - - access := builder newClassNamed: #Access. - variable := builder newClassNamed: #Variable. - -] - -{ #category : 'utilities' } -FmxMBRelationsGenerationTest >> slotCardinalityinAccess: accessCardinality inVariable: variableCardinality [ - - "slot expression example: FMMany type: #TstAccess opposite: #accessOwner" - self assert: (generatedAccess slots first expression beginsWith: ('FM', accessCardinality capitalized)). - self assert: (generatedVariable slots first expression beginsWith: ('FM', variableCardinality capitalized)). - -] - -{ #category : 'utilities' } -FmxMBRelationsGenerationTest >> slotNameinAccess: selector1 inVariable: selector2 [ - - self assert: generatedAccess slots first name equals: selector1. - self assert: generatedVariable slots first name equals: selector2. - -] - -{ #category : 'tests' } -FmxMBRelationsGenerationTest >> testContainsMany [ - - variable <>-* access. - - self - variable: #accesses cardinality: #many container: false - access: #variable cardinality: #one container: true - -] - -{ #category : 'tests' } -FmxMBRelationsGenerationTest >> testContainsOne [ - - variable <>- access. - - self - variable: #access cardinality: #one container: false - access: #variable cardinality: #one container: true - -] - -{ #category : 'tests' } -FmxMBRelationsGenerationTest >> testManyBelongTo [ - - variable *-<> access. - - self - variable: #access cardinality: #one container: true - access: #variables cardinality: #many container: false - -] - -{ #category : 'tests' } -FmxMBRelationsGenerationTest >> testManyToMany [ - - variable *-* access. - - self - variable: #accesses cardinality: #many container: false - access: #variables cardinality: #many container: false - -] - -{ #category : 'tests' } -FmxMBRelationsGenerationTest >> testManyToOne [ - - variable *- access. - - self - variable: #access cardinality: #one container: false - access: #variables cardinality: #many container: false - -] - -{ #category : 'tests' } -FmxMBRelationsGenerationTest >> testOneBelongsTo [ - - variable -<> access. - - self - variable: #access cardinality: #one container: true - access: #variable cardinality: #one container: false - -] - -{ #category : 'tests' } -FmxMBRelationsGenerationTest >> testOneToMany [ - - variable -* access. - - self - variable: #accesses cardinality: #many container: false - access: #variable cardinality: #one container: false - -] - -{ #category : 'tests' } -FmxMBRelationsGenerationTest >> testOneToOne [ - - variable - access. - - self - variable: #access cardinality: #one container: false - access: #variable cardinality: #one container: false - -] - -{ #category : 'tests' } -FmxMBRelationsGenerationTest >> variable: selector2 cardinality: cardinality2 container: container2 access: selector1 cardinality: cardinality1 container: container1 [ - - self generate. - - self slotNameinAccess: selector1 inVariable: selector2. - self slotCardinalityinAccess: cardinality1 inVariable: cardinality2. - container1 - ifTrue: [ self assertContainerInAccessMethod: selector1 ] - ifFalse: [ self denyContainerInAccessMethod: selector1 ]. - container2 - ifTrue: [ self assertContainerInVariableMethod: selector2 ] - ifFalse: [ self denyContainerInVarialbeMethod: selector2 ]. - -] diff --git a/src/Famix-MetamodelBuilder-Tests/FmxMBStubEnvironment.class.st b/src/Famix-MetamodelBuilder-Tests/FmxMBStubEnvironment.class.st deleted file mode 100644 index a40704d0f..000000000 --- a/src/Famix-MetamodelBuilder-Tests/FmxMBStubEnvironment.class.st +++ /dev/null @@ -1,22 +0,0 @@ -Class { - #name : 'FmxMBStubEnvironment', - #superclass : 'FmxMBRingEnvironment', - #category : 'Famix-MetamodelBuilder-Tests-Helpers', - #package : 'Famix-MetamodelBuilder-Tests', - #tag : 'Helpers' -} - -{ #category : 'accessing' } -FmxMBStubEnvironment >> apply [ - - "do nothing" -] - -{ #category : 'accessing' } -FmxMBStubEnvironment >> compile: aSource in: aClass classified: aProtocol package: aPackageName [ - - | selector | - - selector := aClass compile: aSource classified: aProtocol. - (aClass methodNamed: selector) package: (aClass environment ensurePackageNamed: aPackageName). -] diff --git a/src/Famix-MetamodelBuilder-Tests/FmxMBSuperclassesTests.class.st b/src/Famix-MetamodelBuilder-Tests/FmxMBSuperclassesTests.class.st new file mode 100644 index 000000000..6f3e87cbe --- /dev/null +++ b/src/Famix-MetamodelBuilder-Tests/FmxMBSuperclassesTests.class.st @@ -0,0 +1,58 @@ +Class { + #name : 'FmxMBSuperclassesTests', + #superclass : 'FmxMBTestCase', + #instVars : [ + 'named', + 'behavior', + 'class' + ], + #category : 'Famix-MetamodelBuilder-Tests-Tests', + #package : 'Famix-MetamodelBuilder-Tests', + #tag : 'Tests' +} + +{ #category : 'running' } +FmxMBSuperclassesTests >> checkHierarchy [ + + self assertEmpty: named allSuperclasses. + self assertCollection: behavior allSuperclasses hasSameElements: { named }. + self assertCollection: class allSuperclasses hasSameElements: { + named. + behavior } +] + +{ #category : 'running' } +FmxMBSuperclassesTests >> setUp [ + + super setUp. + + named := builder newClassNamed: #Named. + behavior := builder newClassNamed: #Behavior. + class := builder newClassNamed: #Class. + +] + +{ #category : 'tests' } +FmxMBSuperclassesTests >> testAllSuperclasses [ + + named <|-- behavior. + behavior <|-- class. + + self checkHierarchy. +] + +{ #category : 'tests' } +FmxMBSuperclassesTests >> testAllSuperclassesInChain [ + + named <|-- behavior <|-- class. + + self checkHierarchy. +] + +{ #category : 'tests' } +FmxMBSuperclassesTests >> testAllSuperclassesInChainInverted [ + + class --|> behavior --|> named. + + self checkHierarchy. +] diff --git a/src/Famix-MetamodelBuilder-Tests/FmxMBTestingMethodsTest.class.st b/src/Famix-MetamodelBuilder-Tests/FmxMBTestingMethodsTest.class.st deleted file mode 100644 index c362596ae..000000000 --- a/src/Famix-MetamodelBuilder-Tests/FmxMBTestingMethodsTest.class.st +++ /dev/null @@ -1,91 +0,0 @@ -Class { - #name : 'FmxMBTestingMethodsTest', - #superclass : 'FmxMBTestCase', - #instVars : [ - 'root1', - 'root2', - 'entity', - 'trait', - 'traited', - 'generatedEntity', - 'generatedTNamed', - 'generatedNamed', - 'traitedRoot', - 'generatedTraitedRoot' - ], - #category : 'Famix-MetamodelBuilder-Tests-Tests', - #package : 'Famix-MetamodelBuilder-Tests', - #tag : 'Tests' -} - -{ #category : 'running' } -FmxMBTestingMethodsTest >> setUp [ - - super setUp. - - root1 := builder newClassNamed: #Root1. - root2 := builder newClassNamed: #Root2. - entity := builder ensureClassNamed: #Entity. - trait := builder newTraitNamed: #TNamedEntity. - traited := builder newClassNamed: #Named. - traitedRoot := builder newTraitNamed: #TraitedRoot. - - root1 <|-- traited. - trait <|-- traited. - trait <|-- traitedRoot. - - entity withTesting. - trait withTesting. - - builder generate. - - generatedEntity := builder testingEnvironment ask classNamed: 'TstEntity'. - generatedTNamed := builder testingEnvironment ask classNamed: 'TstTNamedEntity'. - generatedNamed := builder testingEnvironment ask classNamed: 'TstNamed'. - generatedTraitedRoot := builder testingEnvironment ask classNamed: 'TstTraitedRoot'. - - - -] - -{ #category : 'tests' } -FmxMBTestingMethodsTest >> testEntity [ - - (generatedEntity methodNamed: #isEntity) sourceCode includesSubstring: '^ true'. - self assert: (generatedEntity methodNamed: #isNamed) isNil. -] - -{ #category : 'tests' } -FmxMBTestingMethodsTest >> testRoots [ - - "all roots should have testing messages with negative answer" - - (generatedEntity methodNamed: #isEntity) sourceCode includesSubstring: '^ false'. - (generatedEntity methodNamed: #isNamedEntity) sourceCode includesSubstring: '^ false'. - - (generatedEntity methodNamed: #isEntity) sourceCode includesSubstring: '^ false'. - (generatedEntity methodNamed: #isNamedEntity) sourceCode includesSubstring: '^ false'. -] - -{ #category : 'tests' } -FmxMBTestingMethodsTest >> testTrait [ - - "all roots should have testing messages with negative answer" - - (generatedTNamed methodNamed: #isNamedEntity) sourceCode includesSubstring: '^ true'. - self assert: (generatedTNamed methodNamed: #isEntity) isNil. -] - -{ #category : 'tests' } -FmxMBTestingMethodsTest >> testTraited [ - - self assert: (generatedNamed localMethodNamed: #isNamed ifAbsent: []) isNil. - self assert: (generatedNamed localMethodNamed: #isEntity ifAbsent: []) isNil. -] - -{ #category : 'tests' } -FmxMBTestingMethodsTest >> testTraitedRoot [ - "a testing method should not be generated if it is provided by a trait" - - self assert: (generatedTraitedRoot localMethodNamed: #isNamed ifAbsent: [ nil ]) isNil -] diff --git a/src/Famix-MetamodelBuilder-Tests/FmxMBTraitTest.class.st b/src/Famix-MetamodelBuilder-Tests/FmxMBTraitTest.class.st index a2d7baa58..128cb3afa 100644 --- a/src/Famix-MetamodelBuilder-Tests/FmxMBTraitTest.class.st +++ b/src/Famix-MetamodelBuilder-Tests/FmxMBTraitTest.class.st @@ -18,232 +18,6 @@ FmxMBTraitTest >> newEntityNamed: aString [ ^ builder newTraitNamed: aString ] -{ #category : 'tests' } -FmxMBTraitTest >> testAutogereatedContainsMany [ - - | access variable generatedTAccess generatedTVariable | - - access := builder newTraitNamed: #TAccess. - variable := builder newTraitNamed: #TVariable. - - (variable <>-* access). - - builder generate. - - generatedTAccess := builder testingEnvironment ask classNamed: 'TstTAccess'. - generatedTVariable := builder testingEnvironment ask classNamed: 'TstTVariable'. - - self assert: generatedTAccess slots first name equals: #variable. - self assert: generatedTAccess slots first expression equals: 'FMOne type: #TstTVariable opposite: #accesses'. - self assert: generatedTVariable slots first name equals: #accesses. - self assert: generatedTVariable slots first expression equals: 'FMMany type: #TstTAccess opposite: #variable'. - - self assert: ((generatedTAccess methodNamed: #variable) sourceCode includesSubstring: ''). -] - -{ #category : 'tests' } -FmxMBTraitTest >> testAutogereatedContainsOne [ - - | access variable generatedTAccess generatedTVariable | - - access := builder newTraitNamed: #TAccess. - variable := builder newTraitNamed: #TVariable. - - (variable <>- access). - - builder generate. - - generatedTAccess := builder testingEnvironment ask classNamed: 'TstTAccess'. - generatedTVariable := builder testingEnvironment ask classNamed: 'TstTVariable'. - - self assert: generatedTAccess slots first name equals: #variable. - self assert: generatedTAccess slots first expression equals: 'FMOne type: #TstTVariable opposite: #access'. - self assert: generatedTVariable slots first name equals: #access. - self assert: generatedTVariable slots first expression equals: 'FMOne type: #TstTAccess opposite: #variable'. - - self assert: ((generatedTAccess methodNamed: #variable) sourceCode includesSubstring: ''). - self deny: ((generatedTVariable methodNamed: #access) sourceCode includesSubstring: ''). -] - -{ #category : 'tests' } -FmxMBTraitTest >> testAutogereatedManyBelongTo [ - - | access variable generatedTAccess generatedTVariable | - - access := builder newTraitNamed: #TAccess. - variable := builder newTraitNamed: #TVariable. - - (access *-<> variable). - - builder generate. - - generatedTAccess := builder testingEnvironment ask classNamed: 'TstTAccess'. - generatedTVariable := builder testingEnvironment ask classNamed: 'TstTVariable'. - - self assert: generatedTAccess slots first name equals: #variable. - self assert: generatedTAccess slots first expression equals: 'FMOne type: #TstTVariable opposite: #accesses'. - self assert: generatedTVariable slots first name equals: #accesses. - self assert: generatedTVariable slots first expression equals: 'FMMany type: #TstTAccess opposite: #variable'. - - self assert: ((generatedTAccess methodNamed: #variable) sourceCode includesSubstring: ''). -] - -{ #category : 'tests' } -FmxMBTraitTest >> testAutogereatedManyToMany [ - - | access variable generatedTAccess generatedTVariable | - - access := builder newTraitNamed: #TAccess. - variable := builder newTraitNamed: #TVariable. - - (variable *-* access). - - builder generate. - - generatedTAccess := builder testingEnvironment ask classNamed: 'TstTAccess'. - generatedTVariable := builder testingEnvironment ask classNamed: 'TstTVariable'. - - self assert: generatedTAccess slots first name equals: #variables. - self assert: generatedTAccess slots first expression equals: 'FMMany type: #TstTVariable opposite: #accesses'. - self assert: generatedTVariable slots first name equals: #accesses. - self assert: generatedTVariable slots first expression equals: 'FMMany type: #TstTAccess opposite: #variables'. - - self deny: ((generatedTAccess methodNamed: #variables) sourceCode includesSubstring: ''). - self deny: ((generatedTVariable methodNamed: #accesses) sourceCode includesSubstring: ''). -] - -{ #category : 'tests' } -FmxMBTraitTest >> testAutogereatedManyToOne [ - - | access variable generatedTAccess generatedTVariable | - - access := builder newTraitNamed: #TAccess. - variable := builder newTraitNamed: #TVariable. - - (access *- variable). - - builder generate. - - generatedTAccess := builder testingEnvironment ask classNamed: 'TstTAccess'. - generatedTVariable := builder testingEnvironment ask classNamed: 'TstTVariable'. - - self assert: generatedTAccess slots first name equals: #variable. - self assert: generatedTAccess slots first expression equals: 'FMOne type: #TstTVariable opposite: #accesses'. - self assert: generatedTVariable slots first name equals: #accesses. - self assert: generatedTVariable slots first expression equals: 'FMMany type: #TstTAccess opposite: #variable'. - - self deny: ((generatedTAccess methodNamed: #variable) sourceCode includesSubstring: ''). -] - -{ #category : 'tests' } -FmxMBTraitTest >> testAutogereatedOneBelongsTo [ - - | access variable generatedTAccess generatedTVariable | - - access := builder newTraitNamed: #TAccess. - variable := builder newTraitNamed: #TVariable. - - (variable -<> access). - - builder generate. - - generatedTAccess := builder testingEnvironment ask classNamed: 'TstTAccess'. - generatedTVariable := builder testingEnvironment ask classNamed: 'TstTVariable'. - - self assert: generatedTAccess slots first name equals: #variable. - self assert: generatedTAccess slots first expression equals: 'FMOne type: #TstTVariable opposite: #access'. - self assert: generatedTVariable slots first name equals: #access. - self assert: generatedTVariable slots first expression equals: 'FMOne type: #TstTAccess opposite: #variable'. - - self deny: ((generatedTAccess methodNamed: #variable) sourceCode includesSubstring: ''). - self assert: ((generatedTVariable methodNamed: #access) sourceCode includesSubstring: ''). -] - -{ #category : 'tests' } -FmxMBTraitTest >> testAutogereatedOneToMany [ - - | access variable generatedTAccess generatedTVariable | - - access := builder newTraitNamed: #TAccess. - variable := builder newTraitNamed: #TVariable. - - (variable -* access). - - builder generate. - - generatedTAccess := builder testingEnvironment ask classNamed: 'TstTAccess'. - generatedTVariable := builder testingEnvironment ask classNamed: 'TstTVariable'. - - self assert: generatedTAccess slots first name equals: #variable. - self assert: generatedTAccess slots first expression equals: 'FMOne type: #TstTVariable opposite: #accesses'. - self assert: generatedTVariable slots first name equals: #accesses. - self assert: generatedTVariable slots first expression equals: 'FMMany type: #TstTAccess opposite: #variable'. - - self deny: ((generatedTAccess methodNamed: #variable) sourceCode includesSubstring: ''). -] - -{ #category : 'tests' } -FmxMBTraitTest >> testAutogereatedOneToOne [ - - | access variable generatedTAccess generatedTVariable | - - access := builder newTraitNamed: #TAccess. - variable := builder newTraitNamed: #TVariable. - - (variable - access). - - builder generate. - - generatedTAccess := builder testingEnvironment ask classNamed: 'TstTAccess'. - generatedTVariable := builder testingEnvironment ask classNamed: 'TstTVariable'. - - self assert: generatedTAccess slots first name equals: #variable. - self assert: generatedTAccess slots first expression equals: 'FMOne type: #TstTVariable opposite: #access'. - self assert: generatedTVariable slots first name equals: #access. - self assert: generatedTVariable slots first expression equals: 'FMOne type: #TstTAccess opposite: #variable'. - - self deny: ((generatedTAccess methodNamed: #variable) sourceCode includesSubstring: ''). - self deny: ((generatedTVariable methodNamed: #access) sourceCode includesSubstring: ''). -] - -{ #category : 'tests' } -FmxMBTraitTest >> testCustomPackageForUserClasses [ - | generated | - builder configuration packageName: 'Custom'. - builder newTraitNamed: #TComment. - builder generate. - generated := builder testingEnvironment ask classNamed: 'TstTComment'. - - self assert: generated package name equals: #Custom -] - -{ #category : 'tests' } -FmxMBTraitTest >> testCustomPackageForUserClassesChanged [ - | generated generatedAccess | - builder configuration packageName: 'Custom'. - builder newTraitNamed: #TComment. - - builder configuration packageName: 'Custom2'. - builder newTraitNamed: #TAccess. - - builder generate. - generated := builder testingEnvironment ask classNamed: 'TstTComment'. - generatedAccess := builder testingEnvironment ask classNamed: 'TstTAccess'. - - self assert: generated package name equals: #Custom. - self assert: generatedAccess package name equals: #Custom2 -] - -{ #category : 'tests' } -FmxMBTraitTest >> testDefaultPackageForUserClasses [ - | userClass | - builder newTraitNamed: #TComment. - builder generate. - userClass := builder testingEnvironment ask classNamed: 'TstTComment'. - - self assert: userClass package name equals: #Tst -] - { #category : 'tests' } FmxMBTraitTest >> testGenerateRemotesGeneratesRelations [ | traitA traitB classA classB instanceOfA instanceOfB | @@ -265,51 +39,6 @@ FmxMBTraitTest >> testGenerateRemotesGeneratesRelations [ self assert: instanceOfB relationToA equals: instanceOfA. ] -{ #category : 'tests' } -FmxMBTraitTest >> testMultipleTraits [ - - builder newTraitNamed: #TComment. - builder newTraitNamed: #TMethod. - builder newTraitNamed: #TPackage. - - builder generate. - builder testingEnvironment ask classNamed: 'TstTComment'. - builder testingEnvironment ask classNamed: 'TstTMethod'. - builder testingEnvironment ask classNamed: 'TstTPackage'. - -] - -{ #category : 'tests' } -FmxMBTraitTest >> testSimpleClassAnnotation [ - - | generated method | - - builder newTraitNamed: #TComment. - builder generate. - - generated := builder testingEnvironment ask classNamed: 'TstTComment'. - - method := generated classSide methodNamed: #annotation. - self assert: (method sourceCode includesSubstring: ''). - self assert: (method sourceCode includesSubstring: ''). - - -] - -{ #category : 'tests' } -FmxMBTraitTest >> testSimpleTrait [ - | generated | - builder newTraitNamed: #TComment. - builder generate. - generated := builder testingEnvironment ask classNamed: 'TstTComment'. - self assert: generated isNotNil. - self assert: generated isClass. - self assert: generated superclass name equals: 'Trait'. - self assertEmpty: generated slots. - self assertEmpty: generated instanceSide localSelectors. - self assertCollection: generated classSide localSelectors sorted equals: #(annotation) -] - { #category : 'tests' } FmxMBTraitTest >> testTestingMethods [ @@ -333,7 +62,7 @@ FmxMBTraitTest >> testTraitGeneralization [ aTrait := builder newTraitNamed: #TVariable. aClass := builder newClassNamed: #Variable. - self should: [aTrait --|> aClass] raise: FmxMBTraitsGeneralizationError + self should: [aTrait --|> aClass] raise: Error ] { #category : 'tests' } @@ -346,20 +75,3 @@ FmxMBTraitTest >> testTraitTestingSelectors [ simpleClass withTesting. self assertCollection: simpleClass testingSelectors hasSameElements: #(isComment) ] - -{ #category : 'tests' } -FmxMBTraitTest >> testUses [ - | behavior tBehavior generatedBehavior generatedTBehavior | - behavior := builder newClassNamed: #Behavior. - tBehavior := builder newTraitNamed: #TBehavior. - - behavior uses: tBehavior. - - builder generate. - - generatedBehavior := builder testingEnvironment ask classNamed: 'TstBehavior'. - generatedTBehavior := builder testingEnvironment ask classNamed: 'TstTBehavior'. - - self deny: generatedBehavior superclass equals: generatedTBehavior. - self assertCollection: generatedBehavior traits asArray equals: {generatedTBehavior} -] diff --git a/src/Famix-MetamodelBuilder-Tests/FmxMBTypedPropertyTest.class.st b/src/Famix-MetamodelBuilder-Tests/FmxMBTypedPropertyTest.class.st index 937c6f196..4e2005b91 100644 --- a/src/Famix-MetamodelBuilder-Tests/FmxMBTypedPropertyTest.class.st +++ b/src/Famix-MetamodelBuilder-Tests/FmxMBTypedPropertyTest.class.st @@ -6,27 +6,6 @@ Class { #tag : 'Tests' } -{ #category : 'tests' } -FmxMBTypedPropertyTest >> testDoubleQuotesInPropertyComment [ - - "test a case when the property comment contains doubled quotes" - - | simpleClass commentString generated | - - simpleClass := builder newClassNamed: #Comment. - commentString := 'operator''s symbol'. - - (simpleClass property: #operator type: #String) comment: commentString. - - simpleClass comment: commentString. - builder generate. - generated := builder testingEnvironment ask classNamed: 'TstComment'. - self assert: (generated selectors includesAll: #(operator operator:)) - - - -] - { #category : 'tests' } FmxMBTypedPropertyTest >> testMultivalued [ diff --git a/src/Famix-MetamodelGeneration/FamixGenerator.class.st b/src/Famix-MetamodelGeneration/FamixGenerator.class.st index 12606c1d1..708799b01 100644 --- a/src/Famix-MetamodelGeneration/FamixGenerator.class.st +++ b/src/Famix-MetamodelGeneration/FamixGenerator.class.st @@ -132,25 +132,12 @@ Class { #package : 'Famix-MetamodelGeneration' } -{ #category : 'additional tools' } -FamixGenerator class >> metamodelToolGenerators [ - - ^ { FamixVisitorGenerator } -] - { #category : 'accessing' } FamixGenerator class >> packageName [ ^ #'Famix-Traits' ] -{ #category : 'accessing' } -FamixGenerator class >> packageNameForVisitor [ - "Generate visitor in the entities package. Discussed with N. Anquetil" - - ^ self packageName -] - { #category : 'accessing' } FamixGenerator class >> prefix [ diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStAccess.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStAccess.class.st index ebd8ac479..bfb94d7a7 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStAccess.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStAccess.class.st @@ -44,5 +44,4 @@ FamixStAccess class >> annotation [ - ^ self ] diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStAnnotationInstance.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStAnnotationInstance.class.st index 9345d5408..9addf4892 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStAnnotationInstance.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStAnnotationInstance.class.st @@ -32,7 +32,6 @@ FamixStAnnotationInstance class >> annotation [ - ^ self ] { #category : 'accessing' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStAnnotationInstanceAttribute.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStAnnotationInstanceAttribute.class.st index c8aa560ca..edf0d0872 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStAnnotationInstanceAttribute.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStAnnotationInstanceAttribute.class.st @@ -37,7 +37,6 @@ FamixStAnnotationInstanceAttribute class >> annotation [ - ^ self ] { #category : 'accessing' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStAnnotationType.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStAnnotationType.class.st index 404c29b1f..d3c8e15fa 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStAnnotationType.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStAnnotationType.class.st @@ -37,7 +37,6 @@ FamixStAnnotationType class >> annotation [ - ^ self ] { #category : 'compatibility' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStAnnotationTypeAttribute.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStAnnotationTypeAttribute.class.st index fdcbfd445..f6c09e0af 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStAnnotationTypeAttribute.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStAnnotationTypeAttribute.class.st @@ -49,7 +49,6 @@ FamixStAnnotationTypeAttribute class >> annotation [ - ^ self ] { #category : 'accessing' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStAttribute.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStAttribute.class.st index 50ac30ed2..9ce14f6b7 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStAttribute.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStAttribute.class.st @@ -50,7 +50,6 @@ FamixStAttribute class >> annotation [ - ^ self ] { #category : 'properties' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStClass.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStClass.class.st index 97126ca2b..c2f4e835e 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStClass.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStClass.class.st @@ -60,7 +60,6 @@ FamixStClass class >> annotation [ - ^ self ] { #category : 'accessing' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStComment.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStComment.class.st index 69d411f9b..e64ddfe4e 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStComment.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStComment.class.st @@ -31,7 +31,6 @@ FamixStComment class >> annotation [ - ^ self ] { #category : 'accessing' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStEntity.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStEntity.class.st index 3fd608bb5..a336370fb 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStEntity.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStEntity.class.st @@ -13,7 +13,6 @@ FamixStEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStEntityTyping.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStEntityTyping.class.st index 82deed2af..c0ea1d527 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStEntityTyping.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStEntityTyping.class.st @@ -38,5 +38,4 @@ FamixStEntityTyping class >> annotation [ - ^ self ] diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStGlobalVariable.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStGlobalVariable.class.st index 24ccd8287..4722254bc 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStGlobalVariable.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStGlobalVariable.class.st @@ -49,5 +49,4 @@ FamixStGlobalVariable class >> annotation [ - ^ self ] diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStImplicitVariable.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStImplicitVariable.class.st index 2ae76d006..66b1247a1 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStImplicitVariable.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStImplicitVariable.class.st @@ -49,7 +49,6 @@ FamixStImplicitVariable class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStImportingContext.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStImportingContext.class.st index 41f9ebf9f..7935b998c 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStImportingContext.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStImportingContext.class.st @@ -1,6 +1,8 @@ " This class is used to choose the entities to be imported when loading a model from file. It is used by `MiImportingContextPresenter` in a `MiImportModelFromFileDialog` to import a FamixStModel. + + " Class { #name : 'FamixStImportingContext', diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStInheritance.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStInheritance.class.st index 45c4365c3..f4ae3b470 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStInheritance.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStInheritance.class.st @@ -38,5 +38,4 @@ FamixStInheritance class >> annotation [ - ^ self ] diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStInvocation.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStInvocation.class.st index 412377bb3..aa38e9985 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStInvocation.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStInvocation.class.st @@ -45,7 +45,6 @@ FamixStInvocation class >> annotation [ - ^ self ] { #category : 'initialization' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStLocalVariable.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStLocalVariable.class.st index 29ddda652..d5bb67376 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStLocalVariable.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStLocalVariable.class.st @@ -49,7 +49,6 @@ FamixStLocalVariable class >> annotation [ - ^ self ] { #category : 'printing' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStMethod.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStMethod.class.st index 725026dfb..2308cf3ed 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStMethod.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStMethod.class.st @@ -70,7 +70,6 @@ FamixStMethod class >> annotation [ - ^ self ] { #category : 'accessing' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStModel.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStModel.class.st index a82889d0f..c7e8305d4 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStModel.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStModel.class.st @@ -16,7 +16,8 @@ FamixStModel class >> allSubmetamodelsPackagesNames [ { #category : 'meta' } FamixStModel class >> annotation [ - + + ] diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStNamedEntity.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStNamedEntity.class.st index 2efb753c2..1e6bc4ea1 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStNamedEntity.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStNamedEntity.class.st @@ -33,7 +33,6 @@ FamixStNamedEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStNamespace.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStNamespace.class.st index 1549708b4..c6b2f8ac1 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStNamespace.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStNamespace.class.st @@ -40,7 +40,6 @@ FamixStNamespace class >> annotation [ - ^ self ] { #category : 'Famix-Extensions-metrics' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStPackage.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStPackage.class.st index 1b87e5b32..0d655d795 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStPackage.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStPackage.class.st @@ -40,7 +40,6 @@ FamixStPackage class >> annotation [ - ^ self ] { #category : 'Famix-Extensions-metrics' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStParameter.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStParameter.class.st index e416ead9a..61666f482 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStParameter.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStParameter.class.st @@ -49,7 +49,6 @@ FamixStParameter class >> annotation [ - ^ self ] { #category : 'printing' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStPharoEntitySourceAnchor.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStPharoEntitySourceAnchor.class.st index 808f9f454..c0321531c 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStPharoEntitySourceAnchor.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStPharoEntitySourceAnchor.class.st @@ -27,7 +27,6 @@ FamixStPharoEntitySourceAnchor class >> annotation [ - ^ self ] { #category : 'initialization' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStReference.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStReference.class.st index 5182fe0f0..96ccedccd 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStReference.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStReference.class.st @@ -38,5 +38,4 @@ FamixStReference class >> annotation [ - ^ self ] diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStSourceAnchor.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStSourceAnchor.class.st index df5f1dc74..245bbdb6a 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStSourceAnchor.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStSourceAnchor.class.st @@ -27,7 +27,6 @@ FamixStSourceAnchor class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStSourceLanguage.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStSourceLanguage.class.st index 3de445849..8412470d4 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStSourceLanguage.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStSourceLanguage.class.st @@ -26,7 +26,6 @@ FamixStSourceLanguage class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStSourceTextAnchor.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStSourceTextAnchor.class.st index 2106e8eaa..3bd4c476d 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStSourceTextAnchor.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStSourceTextAnchor.class.st @@ -32,5 +32,4 @@ FamixStSourceTextAnchor class >> annotation [ - ^ self ] diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStSourcedEntity.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStSourcedEntity.class.st index d0f9ac065..560ec00f9 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStSourcedEntity.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStSourcedEntity.class.st @@ -27,7 +27,6 @@ FamixStSourcedEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStTEntityCreator.trait.st b/src/Famix-PharoSmalltalk-Entities/FamixStTEntityCreator.trait.st index 8e3e687f1..1ea7bfee0 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStTEntityCreator.trait.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStTEntityCreator.trait.st @@ -17,7 +17,6 @@ FamixStTEntityCreator classSide >> annotation [ - ^ self ] { #category : 'entity creation' } diff --git a/src/Famix-PharoSmalltalk-Entities/FamixStUnknownVariable.class.st b/src/Famix-PharoSmalltalk-Entities/FamixStUnknownVariable.class.st index 49df84586..53ccd5082 100644 --- a/src/Famix-PharoSmalltalk-Entities/FamixStUnknownVariable.class.st +++ b/src/Famix-PharoSmalltalk-Entities/FamixStUnknownVariable.class.st @@ -44,5 +44,4 @@ FamixStUnknownVariable class >> annotation [ - ^ self ] diff --git a/src/Famix-Test1-Entities/FamixTest1Association.class.st b/src/Famix-Test1-Entities/FamixTest1Association.class.st index 455884c26..a2ff68447 100644 --- a/src/Famix-Test1-Entities/FamixTest1Association.class.st +++ b/src/Famix-Test1-Entities/FamixTest1Association.class.st @@ -28,7 +28,6 @@ FamixTest1Association class >> annotation [ - ^ self ] { #category : 'converting' } diff --git a/src/Famix-Test1-Entities/FamixTest1Attribute.class.st b/src/Famix-Test1-Entities/FamixTest1Attribute.class.st index 3e9874d4f..db9305a27 100644 --- a/src/Famix-Test1-Entities/FamixTest1Attribute.class.st +++ b/src/Famix-Test1-Entities/FamixTest1Attribute.class.st @@ -50,5 +50,4 @@ FamixTest1Attribute class >> annotation [ - ^ self ] diff --git a/src/Famix-Test1-Entities/FamixTest1BytesFileAnchor.class.st b/src/Famix-Test1-Entities/FamixTest1BytesFileAnchor.class.st index 35b755add..9dc449386 100644 --- a/src/Famix-Test1-Entities/FamixTest1BytesFileAnchor.class.st +++ b/src/Famix-Test1-Entities/FamixTest1BytesFileAnchor.class.st @@ -27,5 +27,4 @@ FamixTest1BytesFileAnchor class >> annotation [ - ^ self ] diff --git a/src/Famix-Test1-Entities/FamixTest1Class.class.st b/src/Famix-Test1-Entities/FamixTest1Class.class.st index 4b9024b94..be0220814 100644 --- a/src/Famix-Test1-Entities/FamixTest1Class.class.st +++ b/src/Famix-Test1-Entities/FamixTest1Class.class.st @@ -62,5 +62,4 @@ FamixTest1Class class >> annotation [ - ^ self ] diff --git a/src/Famix-Test1-Entities/FamixTest1Comment.class.st b/src/Famix-Test1-Entities/FamixTest1Comment.class.st index 83605eadd..399bf72ce 100644 --- a/src/Famix-Test1-Entities/FamixTest1Comment.class.st +++ b/src/Famix-Test1-Entities/FamixTest1Comment.class.st @@ -31,5 +31,4 @@ FamixTest1Comment class >> annotation [ - ^ self ] diff --git a/src/Famix-Test1-Entities/FamixTest1Entity.class.st b/src/Famix-Test1-Entities/FamixTest1Entity.class.st index 963190bcb..0b8ad4c7b 100644 --- a/src/Famix-Test1-Entities/FamixTest1Entity.class.st +++ b/src/Famix-Test1-Entities/FamixTest1Entity.class.st @@ -13,7 +13,6 @@ FamixTest1Entity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test1-Entities/FamixTest1File.class.st b/src/Famix-Test1-Entities/FamixTest1File.class.st index 7a5acf9c3..9abb59995 100644 --- a/src/Famix-Test1-Entities/FamixTest1File.class.st +++ b/src/Famix-Test1-Entities/FamixTest1File.class.st @@ -37,5 +37,4 @@ FamixTest1File class >> annotation [ - ^ self ] diff --git a/src/Famix-Test1-Entities/FamixTest1FileAnchor.class.st b/src/Famix-Test1-Entities/FamixTest1FileAnchor.class.st index 500c496ce..fffbc8b46 100644 --- a/src/Famix-Test1-Entities/FamixTest1FileAnchor.class.st +++ b/src/Famix-Test1-Entities/FamixTest1FileAnchor.class.st @@ -29,5 +29,4 @@ FamixTest1FileAnchor class >> annotation [ - ^ self ] diff --git a/src/Famix-Test1-Entities/FamixTest1Folder.class.st b/src/Famix-Test1-Entities/FamixTest1Folder.class.st index 8a19d9cd6..1ca2dc01d 100644 --- a/src/Famix-Test1-Entities/FamixTest1Folder.class.st +++ b/src/Famix-Test1-Entities/FamixTest1Folder.class.st @@ -37,5 +37,4 @@ FamixTest1Folder class >> annotation [ - ^ self ] diff --git a/src/Famix-Test1-Entities/FamixTest1ImportingContext.class.st b/src/Famix-Test1-Entities/FamixTest1ImportingContext.class.st index a58688d45..b94119762 100644 --- a/src/Famix-Test1-Entities/FamixTest1ImportingContext.class.st +++ b/src/Famix-Test1-Entities/FamixTest1ImportingContext.class.st @@ -1,6 +1,8 @@ " This class is used to choose the entities to be imported when loading a model from file. It is used by `MiImportingContextPresenter` in a `MiImportModelFromFileDialog` to import a FamixTest1Model. + + " Class { #name : 'FamixTest1ImportingContext', diff --git a/src/Famix-Test1-Entities/FamixTest1IndexedFileAnchor.class.st b/src/Famix-Test1-Entities/FamixTest1IndexedFileAnchor.class.st index b9f6856da..6c757af94 100644 --- a/src/Famix-Test1-Entities/FamixTest1IndexedFileAnchor.class.st +++ b/src/Famix-Test1-Entities/FamixTest1IndexedFileAnchor.class.st @@ -27,5 +27,4 @@ FamixTest1IndexedFileAnchor class >> annotation [ - ^ self ] diff --git a/src/Famix-Test1-Entities/FamixTest1Method.class.st b/src/Famix-Test1-Entities/FamixTest1Method.class.st index d80e50a71..bdb8a2800 100644 --- a/src/Famix-Test1-Entities/FamixTest1Method.class.st +++ b/src/Famix-Test1-Entities/FamixTest1Method.class.st @@ -63,7 +63,6 @@ FamixTest1Method class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test1-Entities/FamixTest1Model.class.st b/src/Famix-Test1-Entities/FamixTest1Model.class.st index bed658d0e..27940a8cf 100644 --- a/src/Famix-Test1-Entities/FamixTest1Model.class.st +++ b/src/Famix-Test1-Entities/FamixTest1Model.class.st @@ -30,7 +30,8 @@ FamixTest1Model class >> allSubmetamodelsPackagesNames [ { #category : 'meta' } FamixTest1Model class >> annotation [ - + + ] diff --git a/src/Famix-Test1-Entities/FamixTest1MultipleFileAnchor.class.st b/src/Famix-Test1-Entities/FamixTest1MultipleFileAnchor.class.st index 5172fa6ec..ff490970d 100644 --- a/src/Famix-Test1-Entities/FamixTest1MultipleFileAnchor.class.st +++ b/src/Famix-Test1-Entities/FamixTest1MultipleFileAnchor.class.st @@ -32,5 +32,4 @@ FamixTest1MultipleFileAnchor class >> annotation [ - ^ self ] diff --git a/src/Famix-Test1-Entities/FamixTest1NamedEntity.class.st b/src/Famix-Test1-Entities/FamixTest1NamedEntity.class.st index 671c62e12..e51071ed4 100644 --- a/src/Famix-Test1-Entities/FamixTest1NamedEntity.class.st +++ b/src/Famix-Test1-Entities/FamixTest1NamedEntity.class.st @@ -24,7 +24,6 @@ FamixTest1NamedEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test1-Entities/FamixTest1SourceAnchor.class.st b/src/Famix-Test1-Entities/FamixTest1SourceAnchor.class.st index 0ed277ec9..3498fbe1b 100644 --- a/src/Famix-Test1-Entities/FamixTest1SourceAnchor.class.st +++ b/src/Famix-Test1-Entities/FamixTest1SourceAnchor.class.st @@ -27,7 +27,6 @@ FamixTest1SourceAnchor class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test1-Entities/FamixTest1SourceLanguage.class.st b/src/Famix-Test1-Entities/FamixTest1SourceLanguage.class.st index 29788b9a5..2e62273f6 100644 --- a/src/Famix-Test1-Entities/FamixTest1SourceLanguage.class.st +++ b/src/Famix-Test1-Entities/FamixTest1SourceLanguage.class.st @@ -26,5 +26,4 @@ FamixTest1SourceLanguage class >> annotation [ - ^ self ] diff --git a/src/Famix-Test1-Entities/FamixTest1SourceTextAnchor.class.st b/src/Famix-Test1-Entities/FamixTest1SourceTextAnchor.class.st index ca4b4d9e2..dfb66d967 100644 --- a/src/Famix-Test1-Entities/FamixTest1SourceTextAnchor.class.st +++ b/src/Famix-Test1-Entities/FamixTest1SourceTextAnchor.class.st @@ -32,5 +32,4 @@ FamixTest1SourceTextAnchor class >> annotation [ - ^ self ] diff --git a/src/Famix-Test1-Entities/FamixTest1SourcedEntity.class.st b/src/Famix-Test1-Entities/FamixTest1SourcedEntity.class.st index b0ae9e8b2..4dce73a59 100644 --- a/src/Famix-Test1-Entities/FamixTest1SourcedEntity.class.st +++ b/src/Famix-Test1-Entities/FamixTest1SourcedEntity.class.st @@ -29,7 +29,6 @@ FamixTest1SourcedEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test1-Entities/FamixTest1TCanBeClassSide.trait.st b/src/Famix-Test1-Entities/FamixTest1TCanBeClassSide.trait.st index a7d438fe4..f72975f37 100644 --- a/src/Famix-Test1-Entities/FamixTest1TCanBeClassSide.trait.st +++ b/src/Famix-Test1-Entities/FamixTest1TCanBeClassSide.trait.st @@ -23,7 +23,6 @@ FamixTest1TCanBeClassSide classSide >> annotation [ - ^ self ] { #category : 'accessing' } diff --git a/src/Famix-Test1-Entities/FamixTest1TEntityCreator.trait.st b/src/Famix-Test1-Entities/FamixTest1TEntityCreator.trait.st index d4c18bfd2..9de33a199 100644 --- a/src/Famix-Test1-Entities/FamixTest1TEntityCreator.trait.st +++ b/src/Famix-Test1-Entities/FamixTest1TEntityCreator.trait.st @@ -17,7 +17,6 @@ FamixTest1TEntityCreator classSide >> annotation [ - ^ self ] { #category : 'entity creation' } diff --git a/src/Famix-Test2-Entities/FamixTest2Class.class.st b/src/Famix-Test2-Entities/FamixTest2Class.class.st index 6f322d9e2..27a9467c7 100644 --- a/src/Famix-Test2-Entities/FamixTest2Class.class.st +++ b/src/Famix-Test2-Entities/FamixTest2Class.class.st @@ -58,5 +58,4 @@ FamixTest2Class class >> annotation [ - ^ self ] diff --git a/src/Famix-Test2-Entities/FamixTest2Comment.class.st b/src/Famix-Test2-Entities/FamixTest2Comment.class.st index 0a4f911f2..6d923c856 100644 --- a/src/Famix-Test2-Entities/FamixTest2Comment.class.st +++ b/src/Famix-Test2-Entities/FamixTest2Comment.class.st @@ -31,5 +31,4 @@ FamixTest2Comment class >> annotation [ - ^ self ] diff --git a/src/Famix-Test2-Entities/FamixTest2Entity.class.st b/src/Famix-Test2-Entities/FamixTest2Entity.class.st index 965fea54c..109599331 100644 --- a/src/Famix-Test2-Entities/FamixTest2Entity.class.st +++ b/src/Famix-Test2-Entities/FamixTest2Entity.class.st @@ -13,7 +13,6 @@ FamixTest2Entity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test2-Entities/FamixTest2Inheritance.class.st b/src/Famix-Test2-Entities/FamixTest2Inheritance.class.st index 8f8cd3452..4d2a76d17 100644 --- a/src/Famix-Test2-Entities/FamixTest2Inheritance.class.st +++ b/src/Famix-Test2-Entities/FamixTest2Inheritance.class.st @@ -38,5 +38,4 @@ FamixTest2Inheritance class >> annotation [ - ^ self ] diff --git a/src/Famix-Test2-Entities/FamixTest2Model.class.st b/src/Famix-Test2-Entities/FamixTest2Model.class.st index b685f1dfa..73541cd43 100644 --- a/src/Famix-Test2-Entities/FamixTest2Model.class.st +++ b/src/Famix-Test2-Entities/FamixTest2Model.class.st @@ -16,7 +16,8 @@ FamixTest2Model class >> allSubmetamodelsPackagesNames [ { #category : 'meta' } FamixTest2Model class >> annotation [ - + + ] diff --git a/src/Famix-Test2-Entities/FamixTest2NamedEntity.class.st b/src/Famix-Test2-Entities/FamixTest2NamedEntity.class.st index 1e13a5cf7..2f0c54539 100644 --- a/src/Famix-Test2-Entities/FamixTest2NamedEntity.class.st +++ b/src/Famix-Test2-Entities/FamixTest2NamedEntity.class.st @@ -24,7 +24,6 @@ FamixTest2NamedEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test2-Entities/FamixTest2SourceAnchor.class.st b/src/Famix-Test2-Entities/FamixTest2SourceAnchor.class.st index cfaa5c6c2..f18e9230f 100644 --- a/src/Famix-Test2-Entities/FamixTest2SourceAnchor.class.st +++ b/src/Famix-Test2-Entities/FamixTest2SourceAnchor.class.st @@ -27,7 +27,6 @@ FamixTest2SourceAnchor class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test2-Entities/FamixTest2SourceLanguage.class.st b/src/Famix-Test2-Entities/FamixTest2SourceLanguage.class.st index af94d069a..95f0b31fe 100644 --- a/src/Famix-Test2-Entities/FamixTest2SourceLanguage.class.st +++ b/src/Famix-Test2-Entities/FamixTest2SourceLanguage.class.st @@ -26,5 +26,4 @@ FamixTest2SourceLanguage class >> annotation [ - ^ self ] diff --git a/src/Famix-Test2-Entities/FamixTest2SourceTextAnchor.class.st b/src/Famix-Test2-Entities/FamixTest2SourceTextAnchor.class.st index 7464a7db5..93b19973c 100644 --- a/src/Famix-Test2-Entities/FamixTest2SourceTextAnchor.class.st +++ b/src/Famix-Test2-Entities/FamixTest2SourceTextAnchor.class.st @@ -32,5 +32,4 @@ FamixTest2SourceTextAnchor class >> annotation [ - ^ self ] diff --git a/src/Famix-Test2-Entities/FamixTest2SourcedEntity.class.st b/src/Famix-Test2-Entities/FamixTest2SourcedEntity.class.st index 02b5bf2b4..e62ea604a 100644 --- a/src/Famix-Test2-Entities/FamixTest2SourcedEntity.class.st +++ b/src/Famix-Test2-Entities/FamixTest2SourcedEntity.class.st @@ -27,7 +27,6 @@ FamixTest2SourcedEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test2-Entities/FamixTest2TEntityCreator.trait.st b/src/Famix-Test2-Entities/FamixTest2TEntityCreator.trait.st index 6e6755490..40f88a0cb 100644 --- a/src/Famix-Test2-Entities/FamixTest2TEntityCreator.trait.st +++ b/src/Famix-Test2-Entities/FamixTest2TEntityCreator.trait.st @@ -17,7 +17,6 @@ FamixTest2TEntityCreator classSide >> annotation [ - ^ self ] { #category : 'entity creation' } diff --git a/src/Famix-Test3-Entities/FamixTest3Access.class.st b/src/Famix-Test3-Entities/FamixTest3Access.class.st index 38d233d68..63f8b71f3 100644 --- a/src/Famix-Test3-Entities/FamixTest3Access.class.st +++ b/src/Famix-Test3-Entities/FamixTest3Access.class.st @@ -44,5 +44,4 @@ FamixTest3Access class >> annotation [ - ^ self ] diff --git a/src/Famix-Test3-Entities/FamixTest3Attribute.class.st b/src/Famix-Test3-Entities/FamixTest3Attribute.class.st index 5900bfea7..d5fd89429 100644 --- a/src/Famix-Test3-Entities/FamixTest3Attribute.class.st +++ b/src/Famix-Test3-Entities/FamixTest3Attribute.class.st @@ -48,5 +48,4 @@ FamixTest3Attribute class >> annotation [ - ^ self ] diff --git a/src/Famix-Test3-Entities/FamixTest3Class.class.st b/src/Famix-Test3-Entities/FamixTest3Class.class.st index 4218f0d72..f117a3e8f 100644 --- a/src/Famix-Test3-Entities/FamixTest3Class.class.st +++ b/src/Famix-Test3-Entities/FamixTest3Class.class.st @@ -59,7 +59,6 @@ FamixTest3Class class >> annotation [ - ^ self ] { #category : 'groups' } diff --git a/src/Famix-Test3-Entities/FamixTest3ClassGroup.class.st b/src/Famix-Test3-Entities/FamixTest3ClassGroup.class.st index 03c699aa1..9bbf6f3d5 100644 --- a/src/Famix-Test3-Entities/FamixTest3ClassGroup.class.st +++ b/src/Famix-Test3-Entities/FamixTest3ClassGroup.class.st @@ -5,12 +5,3 @@ Class { #package : 'Famix-Test3-Entities', #tag : 'Entities' } - -{ #category : 'meta' } -FamixTest3ClassGroup class >> annotation [ - - - - - ^ self -] diff --git a/src/Famix-Test3-Entities/FamixTest3Comment.class.st b/src/Famix-Test3-Entities/FamixTest3Comment.class.st index ee4f4a332..3f1d68625 100644 --- a/src/Famix-Test3-Entities/FamixTest3Comment.class.st +++ b/src/Famix-Test3-Entities/FamixTest3Comment.class.st @@ -31,5 +31,4 @@ FamixTest3Comment class >> annotation [ - ^ self ] diff --git a/src/Famix-Test3-Entities/FamixTest3Entity.class.st b/src/Famix-Test3-Entities/FamixTest3Entity.class.st index eb804371a..f3748bcf7 100644 --- a/src/Famix-Test3-Entities/FamixTest3Entity.class.st +++ b/src/Famix-Test3-Entities/FamixTest3Entity.class.st @@ -13,7 +13,6 @@ FamixTest3Entity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test3-Entities/FamixTest3Invocation.class.st b/src/Famix-Test3-Entities/FamixTest3Invocation.class.st index f2ab3a498..5be0fb49a 100644 --- a/src/Famix-Test3-Entities/FamixTest3Invocation.class.st +++ b/src/Famix-Test3-Entities/FamixTest3Invocation.class.st @@ -45,5 +45,4 @@ FamixTest3Invocation class >> annotation [ - ^ self ] diff --git a/src/Famix-Test3-Entities/FamixTest3Method.class.st b/src/Famix-Test3-Entities/FamixTest3Method.class.st index 9a136e8ca..9023a180c 100644 --- a/src/Famix-Test3-Entities/FamixTest3Method.class.st +++ b/src/Famix-Test3-Entities/FamixTest3Method.class.st @@ -59,5 +59,4 @@ FamixTest3Method class >> annotation [ - ^ self ] diff --git a/src/Famix-Test3-Entities/FamixTest3Model.class.st b/src/Famix-Test3-Entities/FamixTest3Model.class.st index a35a8cc06..602d4cf48 100644 --- a/src/Famix-Test3-Entities/FamixTest3Model.class.st +++ b/src/Famix-Test3-Entities/FamixTest3Model.class.st @@ -16,7 +16,8 @@ FamixTest3Model class >> allSubmetamodelsPackagesNames [ { #category : 'meta' } FamixTest3Model class >> annotation [ - + + ] diff --git a/src/Famix-Test3-Entities/FamixTest3NamedEntity.class.st b/src/Famix-Test3-Entities/FamixTest3NamedEntity.class.st index 7559dc04f..caed9dc6e 100644 --- a/src/Famix-Test3-Entities/FamixTest3NamedEntity.class.st +++ b/src/Famix-Test3-Entities/FamixTest3NamedEntity.class.st @@ -24,7 +24,6 @@ FamixTest3NamedEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test3-Entities/FamixTest3Package.class.st b/src/Famix-Test3-Entities/FamixTest3Package.class.st index 5a3530556..13678a797 100644 --- a/src/Famix-Test3-Entities/FamixTest3Package.class.st +++ b/src/Famix-Test3-Entities/FamixTest3Package.class.st @@ -38,5 +38,4 @@ FamixTest3Package class >> annotation [ - ^ self ] diff --git a/src/Famix-Test3-Entities/FamixTest3ParametricClass.class.st b/src/Famix-Test3-Entities/FamixTest3ParametricClass.class.st index 5233839a2..f2bbcde50 100644 --- a/src/Famix-Test3-Entities/FamixTest3ParametricClass.class.st +++ b/src/Famix-Test3-Entities/FamixTest3ParametricClass.class.st @@ -26,5 +26,4 @@ FamixTest3ParametricClass class >> annotation [ - ^ self ] diff --git a/src/Famix-Test3-Entities/FamixTest3PrimitiveType.class.st b/src/Famix-Test3-Entities/FamixTest3PrimitiveType.class.st index eca2cbb9d..dff51289a 100644 --- a/src/Famix-Test3-Entities/FamixTest3PrimitiveType.class.st +++ b/src/Famix-Test3-Entities/FamixTest3PrimitiveType.class.st @@ -31,5 +31,4 @@ FamixTest3PrimitiveType class >> annotation [ - ^ self ] diff --git a/src/Famix-Test3-Entities/FamixTest3Reference.class.st b/src/Famix-Test3-Entities/FamixTest3Reference.class.st index 9a4fd2f28..984c413b1 100644 --- a/src/Famix-Test3-Entities/FamixTest3Reference.class.st +++ b/src/Famix-Test3-Entities/FamixTest3Reference.class.st @@ -38,5 +38,4 @@ FamixTest3Reference class >> annotation [ - ^ self ] diff --git a/src/Famix-Test3-Entities/FamixTest3SourceAnchor.class.st b/src/Famix-Test3-Entities/FamixTest3SourceAnchor.class.st index e63faa6a2..35e432813 100644 --- a/src/Famix-Test3-Entities/FamixTest3SourceAnchor.class.st +++ b/src/Famix-Test3-Entities/FamixTest3SourceAnchor.class.st @@ -27,7 +27,6 @@ FamixTest3SourceAnchor class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test3-Entities/FamixTest3SourceLanguage.class.st b/src/Famix-Test3-Entities/FamixTest3SourceLanguage.class.st index 98d7491f4..e77984e8d 100644 --- a/src/Famix-Test3-Entities/FamixTest3SourceLanguage.class.st +++ b/src/Famix-Test3-Entities/FamixTest3SourceLanguage.class.st @@ -26,5 +26,4 @@ FamixTest3SourceLanguage class >> annotation [ - ^ self ] diff --git a/src/Famix-Test3-Entities/FamixTest3SourceTextAnchor.class.st b/src/Famix-Test3-Entities/FamixTest3SourceTextAnchor.class.st index 719ec1757..937145844 100644 --- a/src/Famix-Test3-Entities/FamixTest3SourceTextAnchor.class.st +++ b/src/Famix-Test3-Entities/FamixTest3SourceTextAnchor.class.st @@ -32,5 +32,4 @@ FamixTest3SourceTextAnchor class >> annotation [ - ^ self ] diff --git a/src/Famix-Test3-Entities/FamixTest3SourcedEntity.class.st b/src/Famix-Test3-Entities/FamixTest3SourcedEntity.class.st index 62e1506fb..d9111af99 100644 --- a/src/Famix-Test3-Entities/FamixTest3SourcedEntity.class.st +++ b/src/Famix-Test3-Entities/FamixTest3SourcedEntity.class.st @@ -27,7 +27,6 @@ FamixTest3SourcedEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test3-Entities/FamixTest3TEntityCreator.trait.st b/src/Famix-Test3-Entities/FamixTest3TEntityCreator.trait.st index b0340db52..77bc90437 100644 --- a/src/Famix-Test3-Entities/FamixTest3TEntityCreator.trait.st +++ b/src/Famix-Test3-Entities/FamixTest3TEntityCreator.trait.st @@ -17,7 +17,6 @@ FamixTest3TEntityCreator classSide >> annotation [ - ^ self ] { #category : 'entity creation' } diff --git a/src/Famix-Test3-Entities/FamixTest3Type.class.st b/src/Famix-Test3-Entities/FamixTest3Type.class.st index 9e9ede04e..c121a58a3 100644 --- a/src/Famix-Test3-Entities/FamixTest3Type.class.st +++ b/src/Famix-Test3-Entities/FamixTest3Type.class.st @@ -44,7 +44,6 @@ FamixTest3Type class >> annotation [ - ^ self ] { #category : 'groups' } diff --git a/src/Famix-Test3-Entities/FamixTest3TypeGroup.class.st b/src/Famix-Test3-Entities/FamixTest3TypeGroup.class.st index c0097875e..b45598d3b 100644 --- a/src/Famix-Test3-Entities/FamixTest3TypeGroup.class.st +++ b/src/Famix-Test3-Entities/FamixTest3TypeGroup.class.st @@ -5,138 +5,3 @@ Class { #package : 'Famix-Test3-Entities', #tag : 'Entities' } - -{ #category : 'meta' } -FamixTest3TypeGroup class >> annotation [ - - - - - ^ self -] - -{ #category : 'meta' } -FamixTest3TypeGroup class >> metamodel [ - - - ^ FamixTest3Model metamodel -] - -{ #category : 'testing' } -FamixTest3TypeGroup >> canBeStub [ - - - ^ false -] - -{ #category : 'testing' } -FamixTest3TypeGroup >> hasImmediateSource [ - - - ^ false -] - -{ #category : 'testing' } -FamixTest3TypeGroup >> isAccess [ - - - ^ false -] - -{ #category : 'testing' } -FamixTest3TypeGroup >> isAssociation [ - - - ^ false -] - -{ #category : 'testing' } -FamixTest3TypeGroup >> isAttribute [ - - - ^ false -] - -{ #category : 'testing' } -FamixTest3TypeGroup >> isBehavioural [ - - - ^ false -] - -{ #category : 'testing' } -FamixTest3TypeGroup >> isClass [ - - - ^ false -] - -{ #category : 'testing' } -FamixTest3TypeGroup >> isComment [ - - - ^ false -] - -{ #category : 'testing' } -FamixTest3TypeGroup >> isInvocation [ - - - ^ false -] - -{ #category : 'testing' } -FamixTest3TypeGroup >> isMethod [ - - - ^ false -] - -{ #category : 'testing' } -FamixTest3TypeGroup >> isNamedEntity [ - - - ^ false -] - -{ #category : 'testing' } -FamixTest3TypeGroup >> isPackage [ - - - ^ false -] - -{ #category : 'testing' } -FamixTest3TypeGroup >> isParametricEntity [ - - - ^ false -] - -{ #category : 'testing' } -FamixTest3TypeGroup >> isQueryable [ - - - ^ false -] - -{ #category : 'testing' } -FamixTest3TypeGroup >> isReference [ - - - ^ false -] - -{ #category : 'testing' } -FamixTest3TypeGroup >> isStructuralEntity [ - - - ^ false -] - -{ #category : 'testing' } -FamixTest3TypeGroup >> isType [ - - - ^ false -] diff --git a/src/Famix-Test4-Entities/FamixTest4Book.class.st b/src/Famix-Test4-Entities/FamixTest4Book.class.st index 70bfad845..7bed564b9 100644 --- a/src/Famix-Test4-Entities/FamixTest4Book.class.st +++ b/src/Famix-Test4-Entities/FamixTest4Book.class.st @@ -34,7 +34,6 @@ FamixTest4Book class >> annotation [ - ^ self ] { #category : 'comparing' } diff --git a/src/Famix-Test4-Entities/FamixTest4Cafeteria.class.st b/src/Famix-Test4-Entities/FamixTest4Cafeteria.class.st index ea36943b2..fab2630e5 100644 --- a/src/Famix-Test4-Entities/FamixTest4Cafeteria.class.st +++ b/src/Famix-Test4-Entities/FamixTest4Cafeteria.class.st @@ -12,5 +12,4 @@ FamixTest4Cafeteria class >> annotation [ - ^ self ] diff --git a/src/Famix-Test4-Entities/FamixTest4Classroom.class.st b/src/Famix-Test4-Entities/FamixTest4Classroom.class.st index 0c9ee079a..4aca8f8e7 100644 --- a/src/Famix-Test4-Entities/FamixTest4Classroom.class.st +++ b/src/Famix-Test4-Entities/FamixTest4Classroom.class.st @@ -12,5 +12,4 @@ FamixTest4Classroom class >> annotation [ - ^ self ] diff --git a/src/Famix-Test4-Entities/FamixTest4Entity.class.st b/src/Famix-Test4-Entities/FamixTest4Entity.class.st index fde49bc9b..2e1a17036 100644 --- a/src/Famix-Test4-Entities/FamixTest4Entity.class.st +++ b/src/Famix-Test4-Entities/FamixTest4Entity.class.st @@ -25,7 +25,6 @@ FamixTest4Entity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test4-Entities/FamixTest4Model.class.st b/src/Famix-Test4-Entities/FamixTest4Model.class.st index b9dfe507a..11f96c8f0 100644 --- a/src/Famix-Test4-Entities/FamixTest4Model.class.st +++ b/src/Famix-Test4-Entities/FamixTest4Model.class.st @@ -10,7 +10,8 @@ Class { { #category : 'meta' } FamixTest4Model class >> annotation [ - + + ] diff --git a/src/Famix-Test4-Entities/FamixTest4Person.class.st b/src/Famix-Test4-Entities/FamixTest4Person.class.st index c8a41f6a5..213a8ad86 100644 --- a/src/Famix-Test4-Entities/FamixTest4Person.class.st +++ b/src/Famix-Test4-Entities/FamixTest4Person.class.st @@ -39,7 +39,6 @@ FamixTest4Person class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test4-Entities/FamixTest4Principal.class.st b/src/Famix-Test4-Entities/FamixTest4Principal.class.st index 93eb91a5f..3668b8f39 100644 --- a/src/Famix-Test4-Entities/FamixTest4Principal.class.st +++ b/src/Famix-Test4-Entities/FamixTest4Principal.class.st @@ -27,7 +27,6 @@ FamixTest4Principal class >> annotation [ - ^ self ] { #category : 'accessing' } diff --git a/src/Famix-Test4-Entities/FamixTest4Room.class.st b/src/Famix-Test4-Entities/FamixTest4Room.class.st index ea1910d82..86afa7bf4 100644 --- a/src/Famix-Test4-Entities/FamixTest4Room.class.st +++ b/src/Famix-Test4-Entities/FamixTest4Room.class.st @@ -27,7 +27,6 @@ FamixTest4Room class >> annotation [ - ^ self ] { #category : 'accessing' } diff --git a/src/Famix-Test4-Entities/FamixTest4School.class.st b/src/Famix-Test4-Entities/FamixTest4School.class.st index 462e81b78..743865a85 100644 --- a/src/Famix-Test4-Entities/FamixTest4School.class.st +++ b/src/Famix-Test4-Entities/FamixTest4School.class.st @@ -33,7 +33,6 @@ FamixTest4School class >> annotation [ - ^ self ] { #category : 'adding' } diff --git a/src/Famix-Test4-Entities/FamixTest4Student.class.st b/src/Famix-Test4-Entities/FamixTest4Student.class.st index 51a9b4c27..06545ac56 100644 --- a/src/Famix-Test4-Entities/FamixTest4Student.class.st +++ b/src/Famix-Test4-Entities/FamixTest4Student.class.st @@ -33,7 +33,6 @@ FamixTest4Student class >> annotation [ - ^ self ] { #category : 'adding' } diff --git a/src/Famix-Test4-Entities/FamixTest4TEntityCreator.trait.st b/src/Famix-Test4-Entities/FamixTest4TEntityCreator.trait.st index b7e207702..d471d6d99 100644 --- a/src/Famix-Test4-Entities/FamixTest4TEntityCreator.trait.st +++ b/src/Famix-Test4-Entities/FamixTest4TEntityCreator.trait.st @@ -17,7 +17,6 @@ FamixTest4TEntityCreator classSide >> annotation [ - ^ self ] { #category : 'entity creation' } diff --git a/src/Famix-Test4-Entities/FamixTest4Teacher.class.st b/src/Famix-Test4-Entities/FamixTest4Teacher.class.st index a02d116d3..197e2cc9d 100644 --- a/src/Famix-Test4-Entities/FamixTest4Teacher.class.st +++ b/src/Famix-Test4-Entities/FamixTest4Teacher.class.st @@ -33,7 +33,6 @@ FamixTest4Teacher class >> annotation [ - ^ self ] { #category : 'adding' } diff --git a/src/Famix-Test5-Entities/FamixTest5AnnotationType1.class.st b/src/Famix-Test5-Entities/FamixTest5AnnotationType1.class.st index a0d5f5a29..2b86fe9e2 100644 --- a/src/Famix-Test5-Entities/FamixTest5AnnotationType1.class.st +++ b/src/Famix-Test5-Entities/FamixTest5AnnotationType1.class.st @@ -31,5 +31,4 @@ FamixTest5AnnotationType1 class >> annotation [ - ^ self ] diff --git a/src/Famix-Test5-Entities/FamixTest5AnnotationType2.class.st b/src/Famix-Test5-Entities/FamixTest5AnnotationType2.class.st index 736df1a91..c6b91ae44 100644 --- a/src/Famix-Test5-Entities/FamixTest5AnnotationType2.class.st +++ b/src/Famix-Test5-Entities/FamixTest5AnnotationType2.class.st @@ -31,5 +31,4 @@ FamixTest5AnnotationType2 class >> annotation [ - ^ self ] diff --git a/src/Famix-Test5-Entities/FamixTest5Entity.class.st b/src/Famix-Test5-Entities/FamixTest5Entity.class.st index b22cb92cb..d83a1a2c7 100644 --- a/src/Famix-Test5-Entities/FamixTest5Entity.class.st +++ b/src/Famix-Test5-Entities/FamixTest5Entity.class.st @@ -15,7 +15,6 @@ FamixTest5Entity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test5-Entities/FamixTest5Model.class.st b/src/Famix-Test5-Entities/FamixTest5Model.class.st index a49a21006..87e2ce1b2 100644 --- a/src/Famix-Test5-Entities/FamixTest5Model.class.st +++ b/src/Famix-Test5-Entities/FamixTest5Model.class.st @@ -16,7 +16,8 @@ FamixTest5Model class >> allSubmetamodelsPackagesNames [ { #category : 'meta' } FamixTest5Model class >> annotation [ - + + ] diff --git a/src/Famix-Test5-Entities/FamixTest5TEntity.trait.st b/src/Famix-Test5-Entities/FamixTest5TEntity.trait.st index 3406efbcc..977a3d451 100644 --- a/src/Famix-Test5-Entities/FamixTest5TEntity.trait.st +++ b/src/Famix-Test5-Entities/FamixTest5TEntity.trait.st @@ -13,5 +13,4 @@ FamixTest5TEntity classSide >> annotation [ - ^ self ] diff --git a/src/Famix-Test5-Entities/FamixTest5TEntityCreator.trait.st b/src/Famix-Test5-Entities/FamixTest5TEntityCreator.trait.st index 416c3fdb2..5cf7e5be3 100644 --- a/src/Famix-Test5-Entities/FamixTest5TEntityCreator.trait.st +++ b/src/Famix-Test5-Entities/FamixTest5TEntityCreator.trait.st @@ -17,7 +17,6 @@ FamixTest5TEntityCreator classSide >> annotation [ - ^ self ] { #category : 'entity creation' } diff --git a/src/Famix-Test5-Entities/FamixTest5WithAnnotationType1.class.st b/src/Famix-Test5-Entities/FamixTest5WithAnnotationType1.class.st index 0296989eb..1e642220d 100644 --- a/src/Famix-Test5-Entities/FamixTest5WithAnnotationType1.class.st +++ b/src/Famix-Test5-Entities/FamixTest5WithAnnotationType1.class.st @@ -26,5 +26,4 @@ FamixTest5WithAnnotationType1 class >> annotation [ - ^ self ] diff --git a/src/Famix-Test5-Entities/FamixTest5WithAnnotationType2.class.st b/src/Famix-Test5-Entities/FamixTest5WithAnnotationType2.class.st index 56419001e..49523da66 100644 --- a/src/Famix-Test5-Entities/FamixTest5WithAnnotationType2.class.st +++ b/src/Famix-Test5-Entities/FamixTest5WithAnnotationType2.class.st @@ -26,5 +26,4 @@ FamixTest5WithAnnotationType2 class >> annotation [ - ^ self ] diff --git a/src/Famix-Test6-Entities/FamixTest6Bacon.class.st b/src/Famix-Test6-Entities/FamixTest6Bacon.class.st index 7ed0ab0bf..a416678dd 100644 --- a/src/Famix-Test6-Entities/FamixTest6Bacon.class.st +++ b/src/Famix-Test6-Entities/FamixTest6Bacon.class.st @@ -28,7 +28,6 @@ FamixTest6Bacon class >> annotation [ - ^ self ] { #category : 'accessing' } diff --git a/src/Famix-Test6-Entities/FamixTest6Comment.class.st b/src/Famix-Test6-Entities/FamixTest6Comment.class.st index 58e8e5a34..f409bb0cd 100644 --- a/src/Famix-Test6-Entities/FamixTest6Comment.class.st +++ b/src/Famix-Test6-Entities/FamixTest6Comment.class.st @@ -31,5 +31,4 @@ FamixTest6Comment class >> annotation [ - ^ self ] diff --git a/src/Famix-Test6-Entities/FamixTest6Entity.class.st b/src/Famix-Test6-Entities/FamixTest6Entity.class.st index 272b4bbca..5e840c28b 100644 --- a/src/Famix-Test6-Entities/FamixTest6Entity.class.st +++ b/src/Famix-Test6-Entities/FamixTest6Entity.class.st @@ -13,7 +13,6 @@ FamixTest6Entity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test6-Entities/FamixTest6Model.class.st b/src/Famix-Test6-Entities/FamixTest6Model.class.st index b1ee2118f..31580751b 100644 --- a/src/Famix-Test6-Entities/FamixTest6Model.class.st +++ b/src/Famix-Test6-Entities/FamixTest6Model.class.st @@ -16,7 +16,8 @@ FamixTest6Model class >> allSubmetamodelsPackagesNames [ { #category : 'meta' } FamixTest6Model class >> annotation [ - + + ] diff --git a/src/Famix-Test6-Entities/FamixTest6NamedEntity.class.st b/src/Famix-Test6-Entities/FamixTest6NamedEntity.class.st index 20b77821c..2120a9553 100644 --- a/src/Famix-Test6-Entities/FamixTest6NamedEntity.class.st +++ b/src/Famix-Test6-Entities/FamixTest6NamedEntity.class.st @@ -24,7 +24,6 @@ FamixTest6NamedEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test6-Entities/FamixTest6SourceAnchor.class.st b/src/Famix-Test6-Entities/FamixTest6SourceAnchor.class.st index 7e624a2c9..760333a39 100644 --- a/src/Famix-Test6-Entities/FamixTest6SourceAnchor.class.st +++ b/src/Famix-Test6-Entities/FamixTest6SourceAnchor.class.st @@ -27,7 +27,6 @@ FamixTest6SourceAnchor class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test6-Entities/FamixTest6SourceLanguage.class.st b/src/Famix-Test6-Entities/FamixTest6SourceLanguage.class.st index 87b6d1233..a0d62653e 100644 --- a/src/Famix-Test6-Entities/FamixTest6SourceLanguage.class.st +++ b/src/Famix-Test6-Entities/FamixTest6SourceLanguage.class.st @@ -26,5 +26,4 @@ FamixTest6SourceLanguage class >> annotation [ - ^ self ] diff --git a/src/Famix-Test6-Entities/FamixTest6SourceTextAnchor.class.st b/src/Famix-Test6-Entities/FamixTest6SourceTextAnchor.class.st index 887b710ee..6869c4abd 100644 --- a/src/Famix-Test6-Entities/FamixTest6SourceTextAnchor.class.st +++ b/src/Famix-Test6-Entities/FamixTest6SourceTextAnchor.class.st @@ -32,5 +32,4 @@ FamixTest6SourceTextAnchor class >> annotation [ - ^ self ] diff --git a/src/Famix-Test6-Entities/FamixTest6SourcedEntity.class.st b/src/Famix-Test6-Entities/FamixTest6SourcedEntity.class.st index 52340e1e7..a44803213 100644 --- a/src/Famix-Test6-Entities/FamixTest6SourcedEntity.class.st +++ b/src/Famix-Test6-Entities/FamixTest6SourcedEntity.class.st @@ -27,7 +27,6 @@ FamixTest6SourcedEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test6-Entities/FamixTest6Spam.class.st b/src/Famix-Test6-Entities/FamixTest6Spam.class.st index e6bf1c781..b3cecdbe4 100644 --- a/src/Famix-Test6-Entities/FamixTest6Spam.class.st +++ b/src/Famix-Test6-Entities/FamixTest6Spam.class.st @@ -24,7 +24,6 @@ FamixTest6Spam class >> annotation [ - ^ self ] { #category : 'accessing' } diff --git a/src/Famix-Test6-Entities/FamixTest6TEntityCreator.trait.st b/src/Famix-Test6-Entities/FamixTest6TEntityCreator.trait.st index 72e32fb48..7c2c84c36 100644 --- a/src/Famix-Test6-Entities/FamixTest6TEntityCreator.trait.st +++ b/src/Famix-Test6-Entities/FamixTest6TEntityCreator.trait.st @@ -17,7 +17,6 @@ FamixTest6TEntityCreator classSide >> annotation [ - ^ self ] { #category : 'entity creation' } diff --git a/src/Famix-Test7-Entities/FamixTest7Class.class.st b/src/Famix-Test7-Entities/FamixTest7Class.class.st index 93efbe84d..7fb90c5c7 100644 --- a/src/Famix-Test7-Entities/FamixTest7Class.class.st +++ b/src/Famix-Test7-Entities/FamixTest7Class.class.st @@ -58,5 +58,4 @@ FamixTest7Class class >> annotation [ - ^ self ] diff --git a/src/Famix-Test7-Entities/FamixTest7Comment.class.st b/src/Famix-Test7-Entities/FamixTest7Comment.class.st index 53e206bb4..4fd355192 100644 --- a/src/Famix-Test7-Entities/FamixTest7Comment.class.st +++ b/src/Famix-Test7-Entities/FamixTest7Comment.class.st @@ -31,5 +31,4 @@ FamixTest7Comment class >> annotation [ - ^ self ] diff --git a/src/Famix-Test7-Entities/FamixTest7Entity.class.st b/src/Famix-Test7-Entities/FamixTest7Entity.class.st index a45d2bab7..fe10ccb5f 100644 --- a/src/Famix-Test7-Entities/FamixTest7Entity.class.st +++ b/src/Famix-Test7-Entities/FamixTest7Entity.class.st @@ -13,7 +13,6 @@ FamixTest7Entity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test7-Entities/FamixTest7Inheritance.class.st b/src/Famix-Test7-Entities/FamixTest7Inheritance.class.st index d19ac5e7c..d504a54be 100644 --- a/src/Famix-Test7-Entities/FamixTest7Inheritance.class.st +++ b/src/Famix-Test7-Entities/FamixTest7Inheritance.class.st @@ -38,5 +38,4 @@ FamixTest7Inheritance class >> annotation [ - ^ self ] diff --git a/src/Famix-Test7-Entities/FamixTest7Method.class.st b/src/Famix-Test7-Entities/FamixTest7Method.class.st index d622723d5..0866f1bd0 100644 --- a/src/Famix-Test7-Entities/FamixTest7Method.class.st +++ b/src/Famix-Test7-Entities/FamixTest7Method.class.st @@ -59,5 +59,4 @@ FamixTest7Method class >> annotation [ - ^ self ] diff --git a/src/Famix-Test7-Entities/FamixTest7Model.class.st b/src/Famix-Test7-Entities/FamixTest7Model.class.st index 05811e11f..960e53143 100644 --- a/src/Famix-Test7-Entities/FamixTest7Model.class.st +++ b/src/Famix-Test7-Entities/FamixTest7Model.class.st @@ -16,7 +16,8 @@ FamixTest7Model class >> allSubmetamodelsPackagesNames [ { #category : 'meta' } FamixTest7Model class >> annotation [ - + + ] diff --git a/src/Famix-Test7-Entities/FamixTest7NamedEntity.class.st b/src/Famix-Test7-Entities/FamixTest7NamedEntity.class.st index c5fc9a407..e1438ebd6 100644 --- a/src/Famix-Test7-Entities/FamixTest7NamedEntity.class.st +++ b/src/Famix-Test7-Entities/FamixTest7NamedEntity.class.st @@ -24,7 +24,6 @@ FamixTest7NamedEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test7-Entities/FamixTest7SourceAnchor.class.st b/src/Famix-Test7-Entities/FamixTest7SourceAnchor.class.st index 08dc9b39d..c49404036 100644 --- a/src/Famix-Test7-Entities/FamixTest7SourceAnchor.class.st +++ b/src/Famix-Test7-Entities/FamixTest7SourceAnchor.class.st @@ -27,7 +27,6 @@ FamixTest7SourceAnchor class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test7-Entities/FamixTest7SourceLanguage.class.st b/src/Famix-Test7-Entities/FamixTest7SourceLanguage.class.st index 1054cd727..e79eed36d 100644 --- a/src/Famix-Test7-Entities/FamixTest7SourceLanguage.class.st +++ b/src/Famix-Test7-Entities/FamixTest7SourceLanguage.class.st @@ -26,5 +26,4 @@ FamixTest7SourceLanguage class >> annotation [ - ^ self ] diff --git a/src/Famix-Test7-Entities/FamixTest7SourceTextAnchor.class.st b/src/Famix-Test7-Entities/FamixTest7SourceTextAnchor.class.st index 66f33e21e..889419f6b 100644 --- a/src/Famix-Test7-Entities/FamixTest7SourceTextAnchor.class.st +++ b/src/Famix-Test7-Entities/FamixTest7SourceTextAnchor.class.st @@ -32,5 +32,4 @@ FamixTest7SourceTextAnchor class >> annotation [ - ^ self ] diff --git a/src/Famix-Test7-Entities/FamixTest7SourcedEntity.class.st b/src/Famix-Test7-Entities/FamixTest7SourcedEntity.class.st index 521e0b975..db30335e2 100644 --- a/src/Famix-Test7-Entities/FamixTest7SourcedEntity.class.st +++ b/src/Famix-Test7-Entities/FamixTest7SourcedEntity.class.st @@ -27,7 +27,6 @@ FamixTest7SourcedEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test7-Entities/FamixTest7TEntityCreator.trait.st b/src/Famix-Test7-Entities/FamixTest7TEntityCreator.trait.st index 523d2c635..6d15714f6 100644 --- a/src/Famix-Test7-Entities/FamixTest7TEntityCreator.trait.st +++ b/src/Famix-Test7-Entities/FamixTest7TEntityCreator.trait.st @@ -17,7 +17,6 @@ FamixTest7TEntityCreator classSide >> annotation [ - ^ self ] { #category : 'entity creation' } diff --git a/src/Famix-Test8-Entities/FamixTest8Animal.class.st b/src/Famix-Test8-Entities/FamixTest8Animal.class.st index 8674ad9b6..8c42d12de 100644 --- a/src/Famix-Test8-Entities/FamixTest8Animal.class.st +++ b/src/Famix-Test8-Entities/FamixTest8Animal.class.st @@ -26,5 +26,4 @@ FamixTest8Animal class >> annotation [ - ^ self ] diff --git a/src/Famix-Test8-Entities/FamixTest8Bacteria.class.st b/src/Famix-Test8-Entities/FamixTest8Bacteria.class.st index 3dbb9d9ab..eb8dd5531 100644 --- a/src/Famix-Test8-Entities/FamixTest8Bacteria.class.st +++ b/src/Famix-Test8-Entities/FamixTest8Bacteria.class.st @@ -32,5 +32,4 @@ FamixTest8Bacteria class >> annotation [ - ^ self ] diff --git a/src/Famix-Test8-Entities/FamixTest8Biotope.class.st b/src/Famix-Test8-Entities/FamixTest8Biotope.class.st index 308613e15..50e5b3c59 100644 --- a/src/Famix-Test8-Entities/FamixTest8Biotope.class.st +++ b/src/Famix-Test8-Entities/FamixTest8Biotope.class.st @@ -26,5 +26,4 @@ FamixTest8Biotope class >> annotation [ - ^ self ] diff --git a/src/Famix-Test8-Entities/FamixTest8Entity.class.st b/src/Famix-Test8-Entities/FamixTest8Entity.class.st index 392fc3765..fe061b782 100644 --- a/src/Famix-Test8-Entities/FamixTest8Entity.class.st +++ b/src/Famix-Test8-Entities/FamixTest8Entity.class.st @@ -13,7 +13,6 @@ FamixTest8Entity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-Test8-Entities/FamixTest8Infection.class.st b/src/Famix-Test8-Entities/FamixTest8Infection.class.st index 63cdc8724..ded51b700 100644 --- a/src/Famix-Test8-Entities/FamixTest8Infection.class.st +++ b/src/Famix-Test8-Entities/FamixTest8Infection.class.st @@ -49,7 +49,6 @@ FamixTest8Infection class >> annotation [ - ^ self ] { #category : 'accessing' } diff --git a/src/Famix-Test8-Entities/FamixTest8LivingBeing.class.st b/src/Famix-Test8-Entities/FamixTest8LivingBeing.class.st index 1bd598b1d..39fd93a1b 100644 --- a/src/Famix-Test8-Entities/FamixTest8LivingBeing.class.st +++ b/src/Famix-Test8-Entities/FamixTest8LivingBeing.class.st @@ -26,5 +26,4 @@ FamixTest8LivingBeing class >> annotation [ - ^ self ] diff --git a/src/Famix-Test8-Entities/FamixTest8Model.class.st b/src/Famix-Test8-Entities/FamixTest8Model.class.st index 499a4f4df..51750bbf5 100644 --- a/src/Famix-Test8-Entities/FamixTest8Model.class.st +++ b/src/Famix-Test8-Entities/FamixTest8Model.class.st @@ -16,7 +16,8 @@ FamixTest8Model class >> allSubmetamodelsPackagesNames [ { #category : 'meta' } FamixTest8Model class >> annotation [ - + + ] diff --git a/src/Famix-Test8-Entities/FamixTest8Plant.class.st b/src/Famix-Test8-Entities/FamixTest8Plant.class.st index e301dfcbc..b44eeca86 100644 --- a/src/Famix-Test8-Entities/FamixTest8Plant.class.st +++ b/src/Famix-Test8-Entities/FamixTest8Plant.class.st @@ -26,5 +26,4 @@ FamixTest8Plant class >> annotation [ - ^ self ] diff --git a/src/Famix-Test8-Entities/FamixTest8Residence.class.st b/src/Famix-Test8-Entities/FamixTest8Residence.class.st index d6fa23071..ad6a204d0 100644 --- a/src/Famix-Test8-Entities/FamixTest8Residence.class.st +++ b/src/Famix-Test8-Entities/FamixTest8Residence.class.st @@ -42,7 +42,6 @@ FamixTest8Residence class >> annotation [ - ^ self ] { #category : 'accessing' } diff --git a/src/Famix-Test8-Entities/FamixTest8TBiotope.trait.st b/src/Famix-Test8-Entities/FamixTest8TBiotope.trait.st index 37cb9a4fd..c2c7824f0 100644 --- a/src/Famix-Test8-Entities/FamixTest8TBiotope.trait.st +++ b/src/Famix-Test8-Entities/FamixTest8TBiotope.trait.st @@ -26,7 +26,6 @@ FamixTest8TBiotope classSide >> annotation [ - ^ self ] { #category : 'adding' } diff --git a/src/Famix-Test8-Entities/FamixTest8TEntityCreator.trait.st b/src/Famix-Test8-Entities/FamixTest8TEntityCreator.trait.st index fd8a093f0..d8bc35413 100644 --- a/src/Famix-Test8-Entities/FamixTest8TEntityCreator.trait.st +++ b/src/Famix-Test8-Entities/FamixTest8TEntityCreator.trait.st @@ -17,7 +17,6 @@ FamixTest8TEntityCreator classSide >> annotation [ - ^ self ] { #category : 'entity creation' } diff --git a/src/Famix-Test8-Entities/FamixTest8TInfectable.trait.st b/src/Famix-Test8-Entities/FamixTest8TInfectable.trait.st index eb986ee55..cd8577ebf 100644 --- a/src/Famix-Test8-Entities/FamixTest8TInfectable.trait.st +++ b/src/Famix-Test8-Entities/FamixTest8TInfectable.trait.st @@ -33,7 +33,6 @@ FamixTest8TInfectable classSide >> annotation [ - ^ self ] { #category : 'adding' } diff --git a/src/Famix-Test8-Entities/FamixTest8TInfectious.trait.st b/src/Famix-Test8-Entities/FamixTest8TInfectious.trait.st index da8b54375..34feaa03f 100644 --- a/src/Famix-Test8-Entities/FamixTest8TInfectious.trait.st +++ b/src/Famix-Test8-Entities/FamixTest8TInfectious.trait.st @@ -26,7 +26,6 @@ FamixTest8TInfectious classSide >> annotation [ - ^ self ] { #category : 'adding' } diff --git a/src/Famix-Test8-Entities/FamixTest8TResident.trait.st b/src/Famix-Test8-Entities/FamixTest8TResident.trait.st index a3054eab9..29c4a7aae 100644 --- a/src/Famix-Test8-Entities/FamixTest8TResident.trait.st +++ b/src/Famix-Test8-Entities/FamixTest8TResident.trait.st @@ -26,7 +26,6 @@ FamixTest8TResident classSide >> annotation [ - ^ self ] { #category : 'adding' } diff --git a/src/Famix-Test8-Entities/FamixTest8Virus.class.st b/src/Famix-Test8-Entities/FamixTest8Virus.class.st index 833bb2851..99b2e715f 100644 --- a/src/Famix-Test8-Entities/FamixTest8Virus.class.st +++ b/src/Famix-Test8-Entities/FamixTest8Virus.class.st @@ -32,5 +32,4 @@ FamixTest8Virus class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposed3Metamodel-Entities/FamixTestComposed3Model.class.st b/src/Famix-TestComposed3Metamodel-Entities/FamixTestComposed3Model.class.st index 72e4b9884..d7c0c3dbe 100644 --- a/src/Famix-TestComposed3Metamodel-Entities/FamixTestComposed3Model.class.st +++ b/src/Famix-TestComposed3Metamodel-Entities/FamixTestComposed3Model.class.st @@ -16,7 +16,8 @@ FamixTestComposed3Model class >> allSubmetamodelsPackagesNames [ { #category : 'meta' } FamixTestComposed3Model class >> annotation [ - + + ] diff --git a/src/Famix-TestComposed3Metamodel-Entities/FamixTestComposed3TEntityCreator.trait.st b/src/Famix-TestComposed3Metamodel-Entities/FamixTestComposed3TEntityCreator.trait.st index c89f1f251..7c8c53980 100644 --- a/src/Famix-TestComposed3Metamodel-Entities/FamixTestComposed3TEntityCreator.trait.st +++ b/src/Famix-TestComposed3Metamodel-Entities/FamixTestComposed3TEntityCreator.trait.st @@ -17,5 +17,4 @@ FamixTestComposed3TEntityCreator classSide >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedComposedMetamodel-Entities/FamixTestComposedComposedModel.class.st b/src/Famix-TestComposedComposedMetamodel-Entities/FamixTestComposedComposedModel.class.st index 15b56ee4b..379dc0a5e 100644 --- a/src/Famix-TestComposedComposedMetamodel-Entities/FamixTestComposedComposedModel.class.st +++ b/src/Famix-TestComposedComposedMetamodel-Entities/FamixTestComposedComposedModel.class.st @@ -16,7 +16,8 @@ FamixTestComposedComposedModel class >> allSubmetamodelsPackagesNames [ { #category : 'meta' } FamixTestComposedComposedModel class >> annotation [ - + + ] diff --git a/src/Famix-TestComposedComposedMetamodel-Entities/FamixTestComposedComposedTEntityCreator.trait.st b/src/Famix-TestComposedComposedMetamodel-Entities/FamixTestComposedComposedTEntityCreator.trait.st index 349787e82..83bf1fadc 100644 --- a/src/Famix-TestComposedComposedMetamodel-Entities/FamixTestComposedComposedTEntityCreator.trait.st +++ b/src/Famix-TestComposedComposedMetamodel-Entities/FamixTestComposedComposedTEntityCreator.trait.st @@ -17,5 +17,4 @@ FamixTestComposedComposedTEntityCreator classSide >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1CustomEntity1.extension.st b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1CustomEntity1.extension.st index bd8004f50..958f38251 100644 --- a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1CustomEntity1.extension.st +++ b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1CustomEntity1.extension.st @@ -1,6 +1,6 @@ Extension { #name : 'FamixTestComposed1CustomEntity1' } -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed1CustomEntity1 >> c21 [ "Relation named: #c21 type: #FamixTestComposed2CustomEntity1 opposite: #c11" @@ -10,10 +10,12 @@ FamixTestComposed1CustomEntity1 >> c21 [ ^ self attributeAt: #c21 ifAbsent: [ nil ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed1CustomEntity1 >> c21: anObject [ + + (self attributeAt: #c21 ifAbsentPut: [nil]) == anObject ifTrue: [ ^ anObject ]. anObject ifNil: [ | otherSide | otherSide := self c21. @@ -24,7 +26,7 @@ FamixTestComposed1CustomEntity1 >> c21: anObject [ anObject c11: self ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed1CustomEntity1 >> customEntity1 [ "Relation named: #customEntity1 type: #FamixTestComposedCustomEntity1 opposite: #customEntity1" @@ -36,10 +38,12 @@ FamixTestComposed1CustomEntity1 >> customEntity1 [ ^ self attributeAt: #customEntity1 ifAbsent: [ nil ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed1CustomEntity1 >> customEntity1: anObject [ + + (self attributeAt: #customEntity1 ifAbsentPut: [nil]) == anObject ifTrue: [ ^ anObject ]. anObject ifNil: [ | otherSide | otherSide := self customEntity1. diff --git a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1CustomEntity2.extension.st b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1CustomEntity2.extension.st index 7c3c94590..439768f6e 100644 --- a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1CustomEntity2.extension.st +++ b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1CustomEntity2.extension.st @@ -1,6 +1,6 @@ Extension { #name : 'FamixTestComposed1CustomEntity2' } -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed1CustomEntity2 >> c22s [ "Relation named: #c22s type: #FamixTestComposed2CustomEntity2 opposite: #c12" @@ -12,14 +12,16 @@ FamixTestComposed1CustomEntity2 >> c22s [ ^ self attributeAt: #c22s ifAbsentPut: [ FMMultivalueLink on: self opposite: #c12: ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed1CustomEntity2 >> c22s: anObject [ + + self c22s value: anObject ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed1CustomEntity2 >> customEntity2 [ "Relation named: #customEntity2 type: #FamixTestComposedCustomEntity2 opposite: #customEntities2" @@ -29,9 +31,11 @@ FamixTestComposed1CustomEntity2 >> customEntity2 [ ^ self attributeAt: #customEntity2 ifAbsent: [ nil ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed1CustomEntity2 >> customEntity2: anObject [ + + self attributeAt: #customEntity2 put: (FMMultivalueLink on: self update: #customEntities2 from: self customEntity2 to: anObject). ] diff --git a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1CustomEntity3.extension.st b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1CustomEntity3.extension.st index 17fbfa58b..d0b7f4c16 100644 --- a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1CustomEntity3.extension.st +++ b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1CustomEntity3.extension.st @@ -1,6 +1,6 @@ Extension { #name : 'FamixTestComposed1CustomEntity3' } -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed1CustomEntity3 >> c23 [ "Relation named: #c23 type: #FamixTestComposed2CustomEntity3 opposite: #c13s" @@ -10,14 +10,16 @@ FamixTestComposed1CustomEntity3 >> c23 [ ^ self attributeAt: #c23 ifAbsent: [ nil ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed1CustomEntity3 >> c23: anObject [ + + self attributeAt: #c23 put: (FMMultivalueLink on: self update: #c13s from: self c23 to: anObject). ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed1CustomEntity3 >> customEntities3 [ "Relation named: #customEntities3 type: #FamixTestComposedCustomEntity3 opposite: #customEntity3" @@ -29,9 +31,11 @@ FamixTestComposed1CustomEntity3 >> customEntities3 [ ^ self attributeAt: #customEntities3 ifAbsentPut: [ FMMultivalueLink on: self opposite: #customEntity3: ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed1CustomEntity3 >> customEntities3: anObject [ + + self customEntities3 value: anObject ] diff --git a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1CustomEntity4.extension.st b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1CustomEntity4.extension.st index 462af5540..32dc5c7ba 100644 --- a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1CustomEntity4.extension.st +++ b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1CustomEntity4.extension.st @@ -1,6 +1,6 @@ Extension { #name : 'FamixTestComposed1CustomEntity4' } -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed1CustomEntity4 >> c24s [ "Relation named: #c24s type: #FamixTestComposed2CustomEntity4 opposite: #c14s" @@ -12,14 +12,16 @@ FamixTestComposed1CustomEntity4 >> c24s [ ^ self attributeAt: #c24s ifAbsentPut: [ FMMultiMultivalueLink on: self opposite: #c14s ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed1CustomEntity4 >> c24s: anObject [ + + self c24s value: anObject ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed1CustomEntity4 >> customEntities4 [ "Relation named: #customEntities4 type: #FamixTestComposedCustomEntity4 opposite: #customEntities4" @@ -30,9 +32,11 @@ FamixTestComposed1CustomEntity4 >> customEntities4 [ ^ self attributeAt: #customEntities4 ifAbsentPut: [ FMMultiMultivalueLink on: self opposite: #customEntities4 ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed1CustomEntity4 >> customEntities4: anObject [ + + self customEntities4 value: anObject ] diff --git a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1CustomEntity5.extension.st b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1CustomEntity5.extension.st index eb14b2301..316a8c619 100644 --- a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1CustomEntity5.extension.st +++ b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1CustomEntity5.extension.st @@ -1,6 +1,6 @@ Extension { #name : 'FamixTestComposed1CustomEntity5' } -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed1CustomEntity5 >> associations [ "Relation named: #associations type: #FamixTestComposedAssociation opposite: #c15" @@ -12,9 +12,11 @@ FamixTestComposed1CustomEntity5 >> associations [ ^ self attributeAt: #associations ifAbsentPut: [ FMMultivalueLink on: self opposite: #c15: ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed1CustomEntity5 >> associations: anObject [ + + self associations value: anObject ] diff --git a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1Method.extension.st b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1Method.extension.st index f8c4de63c..8f23b95df 100644 --- a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1Method.extension.st +++ b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed1Method.extension.st @@ -1,6 +1,6 @@ Extension { #name : 'FamixTestComposed1Method' } -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed1Method >> standardEntity [ "Relation named: #standardEntity type: #FamixTestComposedStandardEntity opposite: #method" @@ -11,10 +11,12 @@ FamixTestComposed1Method >> standardEntity [ ^ self attributeAt: #standardEntity ifAbsent: [ nil ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed1Method >> standardEntity: anObject [ + + (self attributeAt: #standardEntity ifAbsentPut: [nil]) == anObject ifTrue: [ ^ anObject ]. anObject ifNil: [ | otherSide | otherSide := self standardEntity. diff --git a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed2CustomEntity1.extension.st b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed2CustomEntity1.extension.st index 0e2362e6b..b85ad4bb3 100644 --- a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed2CustomEntity1.extension.st +++ b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed2CustomEntity1.extension.st @@ -1,6 +1,6 @@ Extension { #name : 'FamixTestComposed2CustomEntity1' } -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed2CustomEntity1 >> c1 [ "Relation named: #c1 type: #FamixTestComposedCustomEntity1 opposite: #c21" @@ -11,7 +11,7 @@ FamixTestComposed2CustomEntity1 >> c1 [ ^ self attributeAt: #c1 ifAbsent: [ nil ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed2CustomEntity1 >> c11 [ "Relation named: #c11 type: #FamixTestComposed1CustomEntity1 opposite: #c21" @@ -22,10 +22,12 @@ FamixTestComposed2CustomEntity1 >> c11 [ ^ self attributeAt: #c11 ifAbsent: [ nil ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed2CustomEntity1 >> c11: anObject [ + + (self attributeAt: #c11 ifAbsentPut: [nil]) == anObject ifTrue: [ ^ anObject ]. anObject ifNil: [ | otherSide | otherSide := self c11. @@ -36,10 +38,12 @@ FamixTestComposed2CustomEntity1 >> c11: anObject [ anObject c21: self ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed2CustomEntity1 >> c1: anObject [ + + (self attributeAt: #c1 ifAbsentPut: [nil]) == anObject ifTrue: [ ^ anObject ]. anObject ifNil: [ | otherSide | otherSide := self c1. diff --git a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed2CustomEntity2.extension.st b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed2CustomEntity2.extension.st index 7f18156e7..4ca75f72f 100644 --- a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed2CustomEntity2.extension.st +++ b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed2CustomEntity2.extension.st @@ -1,6 +1,6 @@ Extension { #name : 'FamixTestComposed2CustomEntity2' } -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed2CustomEntity2 >> c12 [ "Relation named: #c12 type: #FamixTestComposed1CustomEntity2 opposite: #c22s" @@ -10,14 +10,16 @@ FamixTestComposed2CustomEntity2 >> c12 [ ^ self attributeAt: #c12 ifAbsent: [ nil ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed2CustomEntity2 >> c12: anObject [ + + self attributeAt: #c12 put: (FMMultivalueLink on: self update: #c22s from: self c12 to: anObject). ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed2CustomEntity2 >> c2 [ "Relation named: #c2 type: #FamixTestComposedCustomEntity2 opposite: #c22s" @@ -27,9 +29,11 @@ FamixTestComposed2CustomEntity2 >> c2 [ ^ self attributeAt: #c2 ifAbsent: [ nil ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed2CustomEntity2 >> c2: anObject [ + + self attributeAt: #c2 put: (FMMultivalueLink on: self update: #c22s from: self c2 to: anObject). ] diff --git a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed2CustomEntity3.extension.st b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed2CustomEntity3.extension.st index 9bd9b02ba..51533b5fd 100644 --- a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed2CustomEntity3.extension.st +++ b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed2CustomEntity3.extension.st @@ -1,6 +1,6 @@ Extension { #name : 'FamixTestComposed2CustomEntity3' } -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed2CustomEntity3 >> c13s [ "Relation named: #c13s type: #FamixTestComposed1CustomEntity3 opposite: #c23" @@ -12,14 +12,16 @@ FamixTestComposed2CustomEntity3 >> c13s [ ^ self attributeAt: #c13s ifAbsentPut: [ FMMultivalueLink on: self opposite: #c23: ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed2CustomEntity3 >> c13s: anObject [ + + self c13s value: anObject ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed2CustomEntity3 >> c3s [ "Relation named: #c3s type: #FamixTestComposedCustomEntity3 opposite: #c23" @@ -31,9 +33,11 @@ FamixTestComposed2CustomEntity3 >> c3s [ ^ self attributeAt: #c3s ifAbsentPut: [ FMMultivalueLink on: self opposite: #c23: ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed2CustomEntity3 >> c3s: anObject [ + + self c3s value: anObject ] diff --git a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed2CustomEntity4.extension.st b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed2CustomEntity4.extension.st index 413a97580..e85e49cfd 100644 --- a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed2CustomEntity4.extension.st +++ b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed2CustomEntity4.extension.st @@ -1,6 +1,6 @@ Extension { #name : 'FamixTestComposed2CustomEntity4' } -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed2CustomEntity4 >> c14s [ "Relation named: #c14s type: #FamixTestComposed1CustomEntity4 opposite: #c24s" @@ -11,14 +11,16 @@ FamixTestComposed2CustomEntity4 >> c14s [ ^ self attributeAt: #c14s ifAbsentPut: [ FMMultiMultivalueLink on: self opposite: #c24s ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed2CustomEntity4 >> c14s: anObject [ + + self c14s value: anObject ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed2CustomEntity4 >> c4s [ "Relation named: #c4s type: #FamixTestComposedCustomEntity4 opposite: #c24s" @@ -29,9 +31,11 @@ FamixTestComposed2CustomEntity4 >> c4s [ ^ self attributeAt: #c4s ifAbsentPut: [ FMMultiMultivalueLink on: self opposite: #c24s ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed2CustomEntity4 >> c4s: anObject [ + + self c4s value: anObject ] diff --git a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed2CustomEntity5.extension.st b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed2CustomEntity5.extension.st index 64ec798b1..9f59d7272 100644 --- a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed2CustomEntity5.extension.st +++ b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposed2CustomEntity5.extension.st @@ -1,6 +1,6 @@ Extension { #name : 'FamixTestComposed2CustomEntity5' } -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed2CustomEntity5 >> associations [ "Relation named: #associations type: #FamixTestComposedAssociation opposite: #c25" @@ -12,9 +12,11 @@ FamixTestComposed2CustomEntity5 >> associations [ ^ self attributeAt: #associations ifAbsentPut: [ FMMultivalueLink on: self opposite: #c25: ] ] -{ #category : '*Famix-TestComposedMetamodel-Entities-accessing' } +{ #category : '*Famix-TestComposedMetamodel-Entities' } FamixTestComposed2CustomEntity5 >> associations: anObject [ + + self associations value: anObject ] diff --git a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedAssociation.class.st b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedAssociation.class.st index 321cbe1ae..fc6890c32 100644 --- a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedAssociation.class.st +++ b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedAssociation.class.st @@ -38,7 +38,6 @@ FamixTestComposedAssociation class >> annotation [ - ^ self ] { #category : 'accessing' } diff --git a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedCustomEntity1.class.st b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedCustomEntity1.class.st index 0b520219c..64254cce2 100644 --- a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedCustomEntity1.class.st +++ b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedCustomEntity1.class.st @@ -29,7 +29,6 @@ FamixTestComposedCustomEntity1 class >> annotation [ - ^ self ] { #category : 'accessing' } diff --git a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedCustomEntity2.class.st b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedCustomEntity2.class.st index 7d0de1b97..59d5ff9cf 100644 --- a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedCustomEntity2.class.st +++ b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedCustomEntity2.class.st @@ -25,7 +25,6 @@ FamixTestComposedCustomEntity2 class >> annotation [ - ^ self ] { #category : 'adding' } diff --git a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedCustomEntity3.class.st b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedCustomEntity3.class.st index 5a5e79dee..449d70b8e 100644 --- a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedCustomEntity3.class.st +++ b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedCustomEntity3.class.st @@ -25,7 +25,6 @@ FamixTestComposedCustomEntity3 class >> annotation [ - ^ self ] { #category : 'accessing' } diff --git a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedCustomEntity4.class.st b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedCustomEntity4.class.st index 867397277..bb460237e 100644 --- a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedCustomEntity4.class.st +++ b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedCustomEntity4.class.st @@ -25,7 +25,6 @@ FamixTestComposedCustomEntity4 class >> annotation [ - ^ self ] { #category : 'adding' } diff --git a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedEntity.class.st b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedEntity.class.st index d4b85a9f2..111785291 100644 --- a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedEntity.class.st +++ b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedEntity.class.st @@ -13,7 +13,6 @@ FamixTestComposedEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedModel.class.st b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedModel.class.st index eaa19f71b..40f364840 100644 --- a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedModel.class.st +++ b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedModel.class.st @@ -16,7 +16,8 @@ FamixTestComposedModel class >> allSubmetamodelsPackagesNames [ { #category : 'meta' } FamixTestComposedModel class >> annotation [ - + + ] diff --git a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedStandardEntity.class.st b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedStandardEntity.class.st index d67d9ee73..7bd25317d 100644 --- a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedStandardEntity.class.st +++ b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedStandardEntity.class.st @@ -24,7 +24,6 @@ FamixTestComposedStandardEntity class >> annotation [ - ^ self ] { #category : 'accessing' } diff --git a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedTEntityCreator.trait.st b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedTEntityCreator.trait.st index 66b074201..c07303cb8 100644 --- a/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedTEntityCreator.trait.st +++ b/src/Famix-TestComposedMetamodel-Entities/FamixTestComposedTEntityCreator.trait.st @@ -17,7 +17,6 @@ FamixTestComposedTEntityCreator classSide >> annotation [ - ^ self ] { #category : 'entity creation' } diff --git a/src/Famix-TestComposedMetamodel/FamixTestComposedMetamodels.class.st b/src/Famix-TestComposedMetamodel/FamixTestComposedMetamodels.class.st index d5a040a72..953e0ebb0 100644 --- a/src/Famix-TestComposedMetamodel/FamixTestComposedMetamodels.class.st +++ b/src/Famix-TestComposedMetamodel/FamixTestComposedMetamodels.class.st @@ -56,18 +56,6 @@ FamixTestComposedMetamodels >> setUp [ ] -{ #category : 'tests' } -FamixTestComposedMetamodels >> testGenerationOfComposedMetamodel [ - | aGenerator env | - aGenerator := FamixTestComposedGenerator new beForTesting generate. - env := aGenerator builder environment ringEnvironment. - - self - assert: - (((env ask behaviorNamed: #FamixTestComposedCustomEntity1) methodNamed: #customEntity1) sourceCode - includesSubstring: '') -] - { #category : 'tests' } FamixTestComposedMetamodels >> testImplicitManyToManyRemote [ diff --git a/src/Famix-TestComposedMetamodel/FamixTestComposedMetamodelsBuilding.class.st b/src/Famix-TestComposedMetamodel/FamixTestComposedMetamodelsBuilding.class.st deleted file mode 100644 index 58042ea68..000000000 --- a/src/Famix-TestComposedMetamodel/FamixTestComposedMetamodelsBuilding.class.st +++ /dev/null @@ -1,105 +0,0 @@ -Class { - #name : 'FamixTestComposedMetamodelsBuilding', - #superclass : 'TestCase', - #instVars : [ - 'builder1', - 'builder2', - 'composedBuilder', - 'method', - 'methodNode', - 'binding', - 'env' - ], - #category : 'Famix-TestComposedMetamodel', - #package : 'Famix-TestComposedMetamodel' -} - -{ #category : 'running' } -FamixTestComposedMetamodelsBuilding >> setUp [ - super setUp. - - composedBuilder := FamixMetamodelBuilder new. - env := FmxMBStubEnvironment for: composedBuilder. - composedBuilder environment: env. - composedBuilder configuration - prefix: 'TstComposed'; - packageName: 'TstComposed'. - - builder1 := FamixMetamodelBuilder forTesting. - builder1 environment: env. - builder1 configuration - prefix: 'Tst1'; - packageName: 'Tst1'. - - builder2 := FamixMetamodelBuilder forTesting. - builder2 environment: env. - builder2 configuration - prefix: 'Tst2'; - packageName: 'Tst2'. - - method := builder1 newClassNamed: #Method. - methodNode := builder2 newClassNamed: #MethodNode. - binding := composedBuilder newClassNamed: #Binding. - - builder1 generate. - builder2 generate. - - "reuse the builders for keeping of remote elements" - builder1 parentBuilder: composedBuilder. - builder2 parentBuilder: composedBuilder. - method isRemote: true. - methodNode isRemote: true -] - -{ #category : 'tests' } -FamixTestComposedMetamodelsBuilding >> testOneRemoteToOneNonRemote [ - - | source generatedMethod | - - method - binding. - - composedBuilder generate. - builder1 generateRemotes. - builder2 generateRemotes. - - generatedMethod := ((env ringEnvironment ask classNamed: #Tst1Method) methodNamed: #binding). - - self assert: (generatedMethod sourceCode includesSubstring: ''). - self assert: (generatedMethod sourceCode includesSubstring: ''). - self assert: (generatedMethod sourceCode includesSubstring: 'attributeAt: #binding'). - self assert: generatedMethod package name equals: #TstComposed. - - source := ((env ringEnvironment ask classNamed: #TstComposedBinding) methodNamed: #method) sourceCode. - - self assert: (source includesSubstring: ''). - self assert: (source includesSubstring: ''). - self assert: (source includesSubstring: 'attributeAt: #method'). - self assert: generatedMethod package name equals: #TstComposed. -] - -{ #category : 'tests' } -FamixTestComposedMetamodelsBuilding >> testOneRemoteToOneRemote [ - - | source generatedMethod | - - method - methodNode. - - composedBuilder generate. - builder1 generateRemotes. - builder2 generateRemotes. - - generatedMethod := ((env ringEnvironment ask classNamed: #Tst1Method) methodNamed: #methodNode). - - self assert: (generatedMethod sourceCode includesSubstring: ''). - self assert: (generatedMethod sourceCode includesSubstring: ''). - self assert: (generatedMethod sourceCode includesSubstring: 'attributeAt: #methodNode'). - self assert: generatedMethod package name equals: #TstComposed. - - source := ((env ringEnvironment ask classNamed: #Tst2MethodNode) methodNamed: #method) sourceCode. - - self assert: (source includesSubstring: ''). - self assert: (source includesSubstring: ''). - self assert: (source includesSubstring: 'attributeAt: #method'). - self assert: generatedMethod package name equals: #TstComposed. - -] diff --git a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1Class.class.st b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1Class.class.st index dae6617d5..6c401e213 100644 --- a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1Class.class.st +++ b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1Class.class.st @@ -58,5 +58,4 @@ FamixTestComposed1Class class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1Comment.class.st b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1Comment.class.st index 107069009..2574ec3cf 100644 --- a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1Comment.class.st +++ b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1Comment.class.st @@ -31,5 +31,4 @@ FamixTestComposed1Comment class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1CustomEntity1.class.st b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1CustomEntity1.class.st index efa7020c2..3d3ac9531 100644 --- a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1CustomEntity1.class.st +++ b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1CustomEntity1.class.st @@ -12,5 +12,4 @@ FamixTestComposed1CustomEntity1 class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1CustomEntity2.class.st b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1CustomEntity2.class.st index 03f597022..c7a49d269 100644 --- a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1CustomEntity2.class.st +++ b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1CustomEntity2.class.st @@ -12,5 +12,4 @@ FamixTestComposed1CustomEntity2 class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1CustomEntity3.class.st b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1CustomEntity3.class.st index 49725ef55..24e0b2d97 100644 --- a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1CustomEntity3.class.st +++ b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1CustomEntity3.class.st @@ -12,5 +12,4 @@ FamixTestComposed1CustomEntity3 class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1CustomEntity4.class.st b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1CustomEntity4.class.st index f898723d6..67d4b93f0 100644 --- a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1CustomEntity4.class.st +++ b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1CustomEntity4.class.st @@ -12,5 +12,4 @@ FamixTestComposed1CustomEntity4 class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1CustomEntity5.class.st b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1CustomEntity5.class.st index 5109801cf..34c507283 100644 --- a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1CustomEntity5.class.st +++ b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1CustomEntity5.class.st @@ -14,5 +14,4 @@ FamixTestComposed1CustomEntity5 class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1Entity.class.st b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1Entity.class.st index bfef24ae5..4127abf1a 100644 --- a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1Entity.class.st +++ b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1Entity.class.st @@ -13,7 +13,6 @@ FamixTestComposed1Entity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1Method.class.st b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1Method.class.st index 012302016..e0db311fb 100644 --- a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1Method.class.st +++ b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1Method.class.st @@ -59,5 +59,4 @@ FamixTestComposed1Method class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1Model.class.st b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1Model.class.st index 3b5da9d6a..9eb7227d0 100644 --- a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1Model.class.st +++ b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1Model.class.st @@ -16,7 +16,8 @@ FamixTestComposed1Model class >> allSubmetamodelsPackagesNames [ { #category : 'meta' } FamixTestComposed1Model class >> annotation [ - + + ] diff --git a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1NamedEntity.class.st b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1NamedEntity.class.st index db7b56765..514b10742 100644 --- a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1NamedEntity.class.st +++ b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1NamedEntity.class.st @@ -24,7 +24,6 @@ FamixTestComposed1NamedEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1SourceAnchor.class.st b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1SourceAnchor.class.st index 2f7d37ab8..d480ea09c 100644 --- a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1SourceAnchor.class.st +++ b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1SourceAnchor.class.st @@ -27,7 +27,6 @@ FamixTestComposed1SourceAnchor class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1SourceLanguage.class.st b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1SourceLanguage.class.st index bd0c6c85b..59905adcc 100644 --- a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1SourceLanguage.class.st +++ b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1SourceLanguage.class.st @@ -26,5 +26,4 @@ FamixTestComposed1SourceLanguage class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1SourceTextAnchor.class.st b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1SourceTextAnchor.class.st index ac8903971..804d17cac 100644 --- a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1SourceTextAnchor.class.st +++ b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1SourceTextAnchor.class.st @@ -32,5 +32,4 @@ FamixTestComposed1SourceTextAnchor class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1SourcedEntity.class.st b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1SourcedEntity.class.st index 2b987c09e..b5d7c168d 100644 --- a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1SourcedEntity.class.st +++ b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1SourcedEntity.class.st @@ -27,7 +27,6 @@ FamixTestComposed1SourcedEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1TEntityCreator.trait.st b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1TEntityCreator.trait.st index ed2fa263e..ba4ecc480 100644 --- a/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1TEntityCreator.trait.st +++ b/src/Famix-TestComposedSubmetamodel1-Entities/FamixTestComposed1TEntityCreator.trait.st @@ -17,7 +17,6 @@ FamixTestComposed1TEntityCreator classSide >> annotation [ - ^ self ] { #category : 'entity creation' } diff --git a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2Class.class.st b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2Class.class.st index 2d0caa050..0c5a9eabb 100644 --- a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2Class.class.st +++ b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2Class.class.st @@ -58,5 +58,4 @@ FamixTestComposed2Class class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2Comment.class.st b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2Comment.class.st index 6c433411d..5c3ed5aab 100644 --- a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2Comment.class.st +++ b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2Comment.class.st @@ -31,5 +31,4 @@ FamixTestComposed2Comment class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2CustomEntity1.class.st b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2CustomEntity1.class.st index 0bc06afc8..33305ceb4 100644 --- a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2CustomEntity1.class.st +++ b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2CustomEntity1.class.st @@ -12,5 +12,4 @@ FamixTestComposed2CustomEntity1 class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2CustomEntity2.class.st b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2CustomEntity2.class.st index 9d4139cd2..ddc526d14 100644 --- a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2CustomEntity2.class.st +++ b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2CustomEntity2.class.st @@ -12,5 +12,4 @@ FamixTestComposed2CustomEntity2 class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2CustomEntity3.class.st b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2CustomEntity3.class.st index 0e0aabbf0..5284eeaa6 100644 --- a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2CustomEntity3.class.st +++ b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2CustomEntity3.class.st @@ -12,5 +12,4 @@ FamixTestComposed2CustomEntity3 class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2CustomEntity4.class.st b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2CustomEntity4.class.st index 4d7a6961d..f3d5ef2f3 100644 --- a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2CustomEntity4.class.st +++ b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2CustomEntity4.class.st @@ -12,5 +12,4 @@ FamixTestComposed2CustomEntity4 class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2CustomEntity5.class.st b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2CustomEntity5.class.st index dc2e97ee8..cb4d036ec 100644 --- a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2CustomEntity5.class.st +++ b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2CustomEntity5.class.st @@ -14,5 +14,4 @@ FamixTestComposed2CustomEntity5 class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2Entity.class.st b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2Entity.class.st index 335b3b210..8c898a35d 100644 --- a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2Entity.class.st +++ b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2Entity.class.st @@ -13,7 +13,6 @@ FamixTestComposed2Entity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2Method.class.st b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2Method.class.st index 26edd3262..a93262266 100644 --- a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2Method.class.st +++ b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2Method.class.st @@ -59,5 +59,4 @@ FamixTestComposed2Method class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2Model.class.st b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2Model.class.st index cdd1ce171..46486b88b 100644 --- a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2Model.class.st +++ b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2Model.class.st @@ -16,7 +16,8 @@ FamixTestComposed2Model class >> allSubmetamodelsPackagesNames [ { #category : 'meta' } FamixTestComposed2Model class >> annotation [ - + + ] diff --git a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2NamedEntity.class.st b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2NamedEntity.class.st index 72b6748ff..a0b8ffcde 100644 --- a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2NamedEntity.class.st +++ b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2NamedEntity.class.st @@ -24,7 +24,6 @@ FamixTestComposed2NamedEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2SourceAnchor.class.st b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2SourceAnchor.class.st index 35c54158e..65cbff17d 100644 --- a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2SourceAnchor.class.st +++ b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2SourceAnchor.class.st @@ -27,7 +27,6 @@ FamixTestComposed2SourceAnchor class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2SourceLanguage.class.st b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2SourceLanguage.class.st index bbbe94714..f692fa10d 100644 --- a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2SourceLanguage.class.st +++ b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2SourceLanguage.class.st @@ -26,5 +26,4 @@ FamixTestComposed2SourceLanguage class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2SourceTextAnchor.class.st b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2SourceTextAnchor.class.st index e7331fbce..40de8dacc 100644 --- a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2SourceTextAnchor.class.st +++ b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2SourceTextAnchor.class.st @@ -32,5 +32,4 @@ FamixTestComposed2SourceTextAnchor class >> annotation [ - ^ self ] diff --git a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2SourcedEntity.class.st b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2SourcedEntity.class.st index 4e5671d3e..1d646c30a 100644 --- a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2SourcedEntity.class.st +++ b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2SourcedEntity.class.st @@ -27,7 +27,6 @@ FamixTestComposed2SourcedEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2TEntityCreator.trait.st b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2TEntityCreator.trait.st index 5ff0910e8..b0ec53c64 100644 --- a/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2TEntityCreator.trait.st +++ b/src/Famix-TestComposedSubmetamodel2-Entities/FamixTestComposed2TEntityCreator.trait.st @@ -17,7 +17,6 @@ FamixTestComposed2TEntityCreator classSide >> annotation [ - ^ self ] { #category : 'entity creation' } diff --git a/src/Famix-Traits/FamixAnnotationInstanceGroup.class.st b/src/Famix-Traits/FamixAnnotationInstanceGroup.class.st index 29892bc37..0d08d5ff5 100644 --- a/src/Famix-Traits/FamixAnnotationInstanceGroup.class.st +++ b/src/Famix-Traits/FamixAnnotationInstanceGroup.class.st @@ -5,19 +5,3 @@ Class { #package : 'Famix-Traits', #tag : 'Groups' } - -{ #category : 'meta' } -FamixAnnotationInstanceGroup class >> annotation [ - - - - - ^ self -] - -{ #category : 'meta' } -FamixAnnotationInstanceGroup class >> metamodel [ - - - ^ FamixModel metamodel -] diff --git a/src/Famix-Traits/FamixAnnotationTypeGroup.class.st b/src/Famix-Traits/FamixAnnotationTypeGroup.class.st index c52928e49..cf143ea85 100644 --- a/src/Famix-Traits/FamixAnnotationTypeGroup.class.st +++ b/src/Famix-Traits/FamixAnnotationTypeGroup.class.st @@ -5,19 +5,3 @@ Class { #package : 'Famix-Traits', #tag : 'Groups' } - -{ #category : 'meta' } -FamixAnnotationTypeGroup class >> annotation [ - - - - - ^ self -] - -{ #category : 'meta' } -FamixAnnotationTypeGroup class >> metamodel [ - - - ^ FamixModel metamodel -] diff --git a/src/Famix-Traits/FamixClassGroup.class.st b/src/Famix-Traits/FamixClassGroup.class.st index dc3edab30..8b74000f7 100644 --- a/src/Famix-Traits/FamixClassGroup.class.st +++ b/src/Famix-Traits/FamixClassGroup.class.st @@ -5,12 +5,3 @@ Class { #package : 'Famix-Traits', #tag : 'Groups' } - -{ #category : 'meta' } -FamixClassGroup class >> annotation [ - - - - - ^ self -] diff --git a/src/Famix-Traits/FamixFileGroup.class.st b/src/Famix-Traits/FamixFileGroup.class.st index 9f6173ea8..b6bbe95f0 100644 --- a/src/Famix-Traits/FamixFileGroup.class.st +++ b/src/Famix-Traits/FamixFileGroup.class.st @@ -5,19 +5,3 @@ Class { #package : 'Famix-Traits', #tag : 'Groups' } - -{ #category : 'meta' } -FamixFileGroup class >> annotation [ - - - - - ^ self -] - -{ #category : 'meta' } -FamixFileGroup class >> metamodel [ - - - ^ FamixModel metamodel -] diff --git a/src/Famix-Traits/FamixFolderGroup.class.st b/src/Famix-Traits/FamixFolderGroup.class.st index 785ea6997..d89006910 100644 --- a/src/Famix-Traits/FamixFolderGroup.class.st +++ b/src/Famix-Traits/FamixFolderGroup.class.st @@ -6,22 +6,6 @@ Class { #tag : 'Groups' } -{ #category : 'meta' } -FamixFolderGroup class >> annotation [ - - - - - ^ self -] - -{ #category : 'meta' } -FamixFolderGroup class >> metamodel [ - - - ^ FamixModel metamodel -] - { #category : 'accessing - dynamic' } FamixFolderGroup >> allFiles [ | files | diff --git a/src/Famix-Traits/FamixGlobalVariableGroup.class.st b/src/Famix-Traits/FamixGlobalVariableGroup.class.st index f0f0b19b3..59199f5f2 100644 --- a/src/Famix-Traits/FamixGlobalVariableGroup.class.st +++ b/src/Famix-Traits/FamixGlobalVariableGroup.class.st @@ -6,22 +6,6 @@ Class { #tag : 'Groups' } -{ #category : 'meta' } -FamixGlobalVariableGroup class >> annotation [ - - - - - ^ self -] - -{ #category : 'meta' } -FamixGlobalVariableGroup class >> metamodel [ - - - ^ FamixModel metamodel -] - { #category : 'accessing' } FamixGlobalVariableGroup >> variableNamed: aVarName [ "Maybe mooseName should be used instead" diff --git a/src/Famix-Traits/FamixInvocationGroup.class.st b/src/Famix-Traits/FamixInvocationGroup.class.st index 9074b649f..7848f5330 100644 --- a/src/Famix-Traits/FamixInvocationGroup.class.st +++ b/src/Famix-Traits/FamixInvocationGroup.class.st @@ -5,19 +5,3 @@ Class { #package : 'Famix-Traits', #tag : 'Groups' } - -{ #category : 'meta' } -FamixInvocationGroup class >> annotation [ - - - - - ^ self -] - -{ #category : 'meta' } -FamixInvocationGroup class >> metamodel [ - - - ^ FamixModel metamodel -] diff --git a/src/Famix-Traits/FamixMethodGroup.class.st b/src/Famix-Traits/FamixMethodGroup.class.st index d9e31a194..4dca53112 100644 --- a/src/Famix-Traits/FamixMethodGroup.class.st +++ b/src/Famix-Traits/FamixMethodGroup.class.st @@ -6,22 +6,6 @@ Class { #tag : 'Groups' } -{ #category : 'meta' } -FamixMethodGroup class >> annotation [ - - - - - ^ self -] - -{ #category : 'meta' } -FamixMethodGroup class >> metamodel [ - - - ^ FamixModel metamodel -] - { #category : 'navigation' } FamixMethodGroup >> allClasses [ diff --git a/src/Famix-Traits/FamixNamespaceGroup.class.st b/src/Famix-Traits/FamixNamespaceGroup.class.st index 704ea5321..6fef8726f 100644 --- a/src/Famix-Traits/FamixNamespaceGroup.class.st +++ b/src/Famix-Traits/FamixNamespaceGroup.class.st @@ -5,19 +5,3 @@ Class { #package : 'Famix-Traits', #tag : 'Groups' } - -{ #category : 'meta' } -FamixNamespaceGroup class >> annotation [ - - - - - ^ self -] - -{ #category : 'meta' } -FamixNamespaceGroup class >> metamodel [ - - - ^ FamixModel metamodel -] diff --git a/src/Famix-Traits/FamixPackageGroup.class.st b/src/Famix-Traits/FamixPackageGroup.class.st index 1083e569d..577f582aa 100644 --- a/src/Famix-Traits/FamixPackageGroup.class.st +++ b/src/Famix-Traits/FamixPackageGroup.class.st @@ -6,22 +6,6 @@ Class { #tag : 'Groups' } -{ #category : 'meta' } -FamixPackageGroup class >> annotation [ - - - - - ^ self -] - -{ #category : 'meta' } -FamixPackageGroup class >> metamodel [ - - - ^ FamixModel metamodel -] - { #category : 'navigation' } FamixPackageGroup >> allClasses [ ^ self flatCollect: [ :p | p localClasses ] diff --git a/src/Famix-Traits/FamixTAccess.trait.st b/src/Famix-Traits/FamixTAccess.trait.st index 34480be0c..fedc0b6c1 100644 --- a/src/Famix-Traits/FamixTAccess.trait.st +++ b/src/Famix-Traits/FamixTAccess.trait.st @@ -61,14 +61,6 @@ FamixTAccess classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTAccess >> accept: aVisitor [ - - - ^ aVisitor visitFamixTAccess: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTAccessible.trait.st b/src/Famix-Traits/FamixTAccessible.trait.st index f7820b0b5..6c4931792 100644 --- a/src/Famix-Traits/FamixTAccessible.trait.st +++ b/src/Famix-Traits/FamixTAccessible.trait.st @@ -26,14 +26,6 @@ FamixTAccessible classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTAccessible >> accept: aVisitor [ - - - ^ aVisitor visitFamixTAccessible: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTAnnotationInstance.trait.st b/src/Famix-Traits/FamixTAnnotationInstance.trait.st index e69f43acf..d9735cb05 100644 --- a/src/Famix-Traits/FamixTAnnotationInstance.trait.st +++ b/src/Famix-Traits/FamixTAnnotationInstance.trait.st @@ -48,7 +48,6 @@ FamixTAnnotationInstance classSide >> annotation [ - ^ self ] { #category : 'groups' } @@ -58,13 +57,6 @@ FamixTAnnotationInstance classSide >> annotationFamixAnnotationInstanceGroup [ ^ FamixAnnotationInstanceGroup ] -{ #category : 'visitor' } -FamixTAnnotationInstance >> accept: aVisitor [ - - - ^ aVisitor visitFamixTAnnotationInstance: self -] - { #category : 'adding' } FamixTAnnotationInstance >> addAttribute: anObject [ diff --git a/src/Famix-Traits/FamixTAnnotationInstanceAttribute.trait.st b/src/Famix-Traits/FamixTAnnotationInstanceAttribute.trait.st index f8b346998..42b7308a5 100644 --- a/src/Famix-Traits/FamixTAnnotationInstanceAttribute.trait.st +++ b/src/Famix-Traits/FamixTAnnotationInstanceAttribute.trait.st @@ -51,14 +51,6 @@ FamixTAnnotationInstanceAttribute classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTAnnotationInstanceAttribute >> accept: aVisitor [ - - - ^ aVisitor visitFamixTAnnotationInstanceAttribute: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTAnnotationType.trait.st b/src/Famix-Traits/FamixTAnnotationType.trait.st index e69e9b308..8baacc34f 100644 --- a/src/Famix-Traits/FamixTAnnotationType.trait.st +++ b/src/Famix-Traits/FamixTAnnotationType.trait.st @@ -38,7 +38,6 @@ FamixTAnnotationType classSide >> annotation [ - ^ self ] { #category : 'groups' } @@ -48,13 +47,6 @@ FamixTAnnotationType classSide >> annotationFamixAnnotationTypeGroup [ ^ FamixAnnotationTypeGroup ] -{ #category : 'visitor' } -FamixTAnnotationType >> accept: aVisitor [ - - - ^ aVisitor visitFamixTAnnotationType: self -] - { #category : 'accessing' } FamixTAnnotationType >> addInstance: anObject [ diff --git a/src/Famix-Traits/FamixTAnnotationTypeAttribute.trait.st b/src/Famix-Traits/FamixTAnnotationTypeAttribute.trait.st index 4f4b720f0..47b047946 100644 --- a/src/Famix-Traits/FamixTAnnotationTypeAttribute.trait.st +++ b/src/Famix-Traits/FamixTAnnotationTypeAttribute.trait.st @@ -68,14 +68,6 @@ FamixTAnnotationTypeAttribute classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTAnnotationTypeAttribute >> accept: aVisitor [ - - - ^ aVisitor visitFamixTAnnotationTypeAttribute: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTAssociation.trait.st b/src/Famix-Traits/FamixTAssociation.trait.st index 5ace102cc..0c0746133 100644 --- a/src/Famix-Traits/FamixTAssociation.trait.st +++ b/src/Famix-Traits/FamixTAssociation.trait.st @@ -49,7 +49,6 @@ FamixTAssociation classSide >> annotation [ - ^ self ] { #category : 'instance creation' } @@ -67,13 +66,6 @@ FamixTAssociation classSide >> source: anEntity target: anotherEntity model: aMo yourself ] -{ #category : 'visitor' } -FamixTAssociation >> accept: aVisitor [ - - - ^ aVisitor visitFamixTAssociation: self -] - { #category : 'accessing' } FamixTAssociation >> allTargets [ "Since #target can return an entity or a collection, I ensure we always get a collection." diff --git a/src/Famix-Traits/FamixTAttribute.trait.st b/src/Famix-Traits/FamixTAttribute.trait.st index 909e8454b..2b974f4f7 100644 --- a/src/Famix-Traits/FamixTAttribute.trait.st +++ b/src/Famix-Traits/FamixTAttribute.trait.st @@ -53,14 +53,6 @@ FamixTAttribute classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTAttribute >> accept: aVisitor [ - - - ^ aVisitor visitFamixTAttribute: self ] { #category : 'private' } diff --git a/src/Famix-Traits/FamixTBytesFileAnchor.trait.st b/src/Famix-Traits/FamixTBytesFileAnchor.trait.st index 1401347b4..44d376c31 100644 --- a/src/Famix-Traits/FamixTBytesFileAnchor.trait.st +++ b/src/Famix-Traits/FamixTBytesFileAnchor.trait.st @@ -32,14 +32,6 @@ FamixTBytesFileAnchor classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTBytesFileAnchor >> accept: aVisitor [ - - - ^ aVisitor visitFamixTBytesFileAnchor: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTCanBeAbstract.trait.st b/src/Famix-Traits/FamixTCanBeAbstract.trait.st index 2c5f1df2b..9adab11a1 100644 --- a/src/Famix-Traits/FamixTCanBeAbstract.trait.st +++ b/src/Famix-Traits/FamixTCanBeAbstract.trait.st @@ -23,14 +23,6 @@ FamixTCanBeAbstract classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTCanBeAbstract >> accept: aVisitor [ - - - ^ aVisitor visitFamixTCanBeAbstract: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTCanBeClassSide.trait.st b/src/Famix-Traits/FamixTCanBeClassSide.trait.st index 52a66e33c..4659ea915 100644 --- a/src/Famix-Traits/FamixTCanBeClassSide.trait.st +++ b/src/Famix-Traits/FamixTCanBeClassSide.trait.st @@ -23,14 +23,6 @@ FamixTCanBeClassSide classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTCanBeClassSide >> accept: aVisitor [ - - - ^ aVisitor visitFamixTCanBeClassSide: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTCanBeFinal.trait.st b/src/Famix-Traits/FamixTCanBeFinal.trait.st index 924069161..04f6b826a 100644 --- a/src/Famix-Traits/FamixTCanBeFinal.trait.st +++ b/src/Famix-Traits/FamixTCanBeFinal.trait.st @@ -23,14 +23,6 @@ FamixTCanBeFinal classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTCanBeFinal >> accept: aVisitor [ - - - ^ aVisitor visitFamixTCanBeFinal: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTCanBeStub.trait.st b/src/Famix-Traits/FamixTCanBeStub.trait.st index 59335ac18..00d02e489 100644 --- a/src/Famix-Traits/FamixTCanBeStub.trait.st +++ b/src/Famix-Traits/FamixTCanBeStub.trait.st @@ -34,14 +34,6 @@ FamixTCanBeStub classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTCanBeStub >> accept: aVisitor [ - - - ^ aVisitor visitFamixTCanBeStub: self ] { #category : 'testing' } diff --git a/src/Famix-Traits/FamixTCanImplement.trait.st b/src/Famix-Traits/FamixTCanImplement.trait.st index c5d16c77b..80944abf2 100644 --- a/src/Famix-Traits/FamixTCanImplement.trait.st +++ b/src/Famix-Traits/FamixTCanImplement.trait.st @@ -28,14 +28,6 @@ FamixTCanImplement classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTCanImplement >> accept: aVisitor [ - - - ^ aVisitor visitFamixTCanImplement: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTClass.trait.st b/src/Famix-Traits/FamixTClass.trait.st index fb6cfbaf0..ed534dfd5 100644 --- a/src/Famix-Traits/FamixTClass.trait.st +++ b/src/Famix-Traits/FamixTClass.trait.st @@ -63,7 +63,6 @@ FamixTClass classSide >> annotation [ - ^ self ] { #category : 'groups' } @@ -73,13 +72,6 @@ FamixTClass classSide >> annotationFamixClassGroup [ ^ FamixClassGroup ] -{ #category : 'visitor' } -FamixTClass >> accept: aVisitor [ - - - ^ aVisitor visitFamixTClass: self -] - { #category : 'Famix-Extensions-metrics-support' } FamixTClass >> accessedAttributes [ diff --git a/src/Famix-Traits/FamixTClassMetrics.trait.st b/src/Famix-Traits/FamixTClassMetrics.trait.st index 149a3ba35..61543e2f9 100644 --- a/src/Famix-Traits/FamixTClassMetrics.trait.st +++ b/src/Famix-Traits/FamixTClassMetrics.trait.st @@ -11,14 +11,6 @@ FamixTClassMetrics classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTClassMetrics >> accept: aVisitor [ - - - ^ aVisitor visitFamixTClassMetrics: self ] { #category : 'metrics' } diff --git a/src/Famix-Traits/FamixTCohesionCouplingMetrics.trait.st b/src/Famix-Traits/FamixTCohesionCouplingMetrics.trait.st index 995ee5e70..83657b1d5 100644 --- a/src/Famix-Traits/FamixTCohesionCouplingMetrics.trait.st +++ b/src/Famix-Traits/FamixTCohesionCouplingMetrics.trait.st @@ -37,7 +37,6 @@ FamixTCohesionCouplingMetrics classSide >> annotation [ - ^ self ] { #category : 'metrics' } @@ -54,13 +53,6 @@ FamixTCohesionCouplingMetrics >> abstractness [ ^ (nsClasses select: [:c | c isAbstract]) size / (nsClasses size) ] -{ #category : 'visitor' } -FamixTCohesionCouplingMetrics >> accept: aVisitor [ - - - ^ aVisitor visitFamixTCohesionCouplingMetrics: self -] - { #category : 'metrics' } FamixTCohesionCouplingMetrics >> afferentCoupling [ diff --git a/src/Famix-Traits/FamixTComment.trait.st b/src/Famix-Traits/FamixTComment.trait.st index 9e3bdb2d4..9d542d2a2 100644 --- a/src/Famix-Traits/FamixTComment.trait.st +++ b/src/Famix-Traits/FamixTComment.trait.st @@ -35,14 +35,6 @@ FamixTComment classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTComment >> accept: aVisitor [ - - - ^ aVisitor visitFamixTComment: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTCompilationUnit.trait.st b/src/Famix-Traits/FamixTCompilationUnit.trait.st index 4db438d57..63fabbcd0 100644 --- a/src/Famix-Traits/FamixTCompilationUnit.trait.st +++ b/src/Famix-Traits/FamixTCompilationUnit.trait.st @@ -42,14 +42,6 @@ FamixTCompilationUnit classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTCompilationUnit >> accept: aVisitor [ - - - ^ aVisitor visitFamixTCompilationUnit: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTConcretization.trait.st b/src/Famix-Traits/FamixTConcretization.trait.st index 550f40562..0675829ee 100644 --- a/src/Famix-Traits/FamixTConcretization.trait.st +++ b/src/Famix-Traits/FamixTConcretization.trait.st @@ -46,14 +46,6 @@ FamixTConcretization classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTConcretization >> accept: aVisitor [ - - - ^ aVisitor visitFamixTConcretization: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTDefinedInModule.trait.st b/src/Famix-Traits/FamixTDefinedInModule.trait.st index bf9bdf12d..d64cfe7ed 100644 --- a/src/Famix-Traits/FamixTDefinedInModule.trait.st +++ b/src/Famix-Traits/FamixTDefinedInModule.trait.st @@ -26,14 +26,6 @@ FamixTDefinedInModule classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTDefinedInModule >> accept: aVisitor [ - - - ^ aVisitor visitFamixTDefinedInModule: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTDereferencedInvocation.trait.st b/src/Famix-Traits/FamixTDereferencedInvocation.trait.st index df05c018d..249220dc1 100644 --- a/src/Famix-Traits/FamixTDereferencedInvocation.trait.st +++ b/src/Famix-Traits/FamixTDereferencedInvocation.trait.st @@ -54,14 +54,6 @@ FamixTDereferencedInvocation classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTDereferencedInvocation >> accept: aVisitor [ - - - ^ aVisitor visitFamixTDereferencedInvocation: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTEntityTyping.trait.st b/src/Famix-Traits/FamixTEntityTyping.trait.st index fc1354e35..31e04073a 100644 --- a/src/Famix-Traits/FamixTEntityTyping.trait.st +++ b/src/Famix-Traits/FamixTEntityTyping.trait.st @@ -41,14 +41,6 @@ FamixTEntityTyping classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTEntityTyping >> accept: aVisitor [ - - - ^ aVisitor visitFamixTEntityTyping: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTEnum.trait.st b/src/Famix-Traits/FamixTEnum.trait.st index ef7cf8ae6..d07697637 100644 --- a/src/Famix-Traits/FamixTEnum.trait.st +++ b/src/Famix-Traits/FamixTEnum.trait.st @@ -60,12 +60,4 @@ FamixTEnum classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTEnum >> accept: aVisitor [ - - - ^ aVisitor visitFamixTEnum: self ] diff --git a/src/Famix-Traits/FamixTEnumValue.trait.st b/src/Famix-Traits/FamixTEnumValue.trait.st index 8fa1592f0..f4e572f29 100644 --- a/src/Famix-Traits/FamixTEnumValue.trait.st +++ b/src/Famix-Traits/FamixTEnumValue.trait.st @@ -62,14 +62,6 @@ FamixTEnumValue classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTEnumValue >> accept: aVisitor [ - - - ^ aVisitor visitFamixTEnumValue: self ] { #category : 'testing' } diff --git a/src/Famix-Traits/FamixTException.trait.st b/src/Famix-Traits/FamixTException.trait.st index 0d5f9192c..6a71280f2 100644 --- a/src/Famix-Traits/FamixTException.trait.st +++ b/src/Famix-Traits/FamixTException.trait.st @@ -62,14 +62,6 @@ FamixTException classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTException >> accept: aVisitor [ - - - ^ aVisitor visitFamixTException: self ] { #category : 'testing' } diff --git a/src/Famix-Traits/FamixTFile.trait.st b/src/Famix-Traits/FamixTFile.trait.st index b90892607..8efd5ba6d 100644 --- a/src/Famix-Traits/FamixTFile.trait.st +++ b/src/Famix-Traits/FamixTFile.trait.st @@ -41,7 +41,6 @@ FamixTFile classSide >> annotation [ - ^ self ] { #category : 'groups' } @@ -51,13 +50,6 @@ FamixTFile classSide >> annotationFamixFileGroup [ ^ FamixFileGroup ] -{ #category : 'visitor' } -FamixTFile >> accept: aVisitor [ - - - ^ aVisitor visitFamixTFile: self -] - { #category : 'accessing' } FamixTFile >> addEntity: famixEntity [ self entities add: famixEntity diff --git a/src/Famix-Traits/FamixTFileAnchor.trait.st b/src/Famix-Traits/FamixTFileAnchor.trait.st index f8687937e..3f6ab1054 100644 --- a/src/Famix-Traits/FamixTFileAnchor.trait.st +++ b/src/Famix-Traits/FamixTFileAnchor.trait.st @@ -29,14 +29,6 @@ FamixTFileAnchor classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTFileAnchor >> accept: aVisitor [ - - - ^ aVisitor visitFamixTFileAnchor: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTFileInclude.trait.st b/src/Famix-Traits/FamixTFileInclude.trait.st index ac727ed6f..99418ee17 100644 --- a/src/Famix-Traits/FamixTFileInclude.trait.st +++ b/src/Famix-Traits/FamixTFileInclude.trait.st @@ -33,14 +33,6 @@ FamixTFileInclude classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTFileInclude >> accept: aVisitor [ - - - ^ aVisitor visitFamixTFileInclude: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTFileNavigation.trait.st b/src/Famix-Traits/FamixTFileNavigation.trait.st index 10bcbe967..70e290078 100644 --- a/src/Famix-Traits/FamixTFileNavigation.trait.st +++ b/src/Famix-Traits/FamixTFileNavigation.trait.st @@ -34,7 +34,6 @@ FamixTFileNavigation classSide >> annotation [ - ^ self ] { #category : 'instance creation' } @@ -60,13 +59,6 @@ FamixTFileNavigation classSide >> fileName: aString startLine: anInteger startCo yourself ] -{ #category : 'visitor' } -FamixTFileNavigation >> accept: aVisitor [ - - - ^ aVisitor visitFamixTFileNavigation: self -] - { #category : 'accessing' } FamixTFileNavigation >> endColumn [ diff --git a/src/Famix-Traits/FamixTFileSystemEntity.trait.st b/src/Famix-Traits/FamixTFileSystemEntity.trait.st index c09317c80..f78417a6a 100644 --- a/src/Famix-Traits/FamixTFileSystemEntity.trait.st +++ b/src/Famix-Traits/FamixTFileSystemEntity.trait.st @@ -34,7 +34,6 @@ FamixTFileSystemEntity classSide >> annotation [ - ^ self ] { #category : 'constants' } @@ -55,13 +54,6 @@ FamixTFileSystemEntity classSide >> systemFolderSeparatorString [ ^ DiskStore delimiter asString ] -{ #category : 'visitor' } -FamixTFileSystemEntity >> accept: aVisitor [ - - - ^ aVisitor visitFamixTFileSystemEntity: self -] - { #category : 'accessing' } FamixTFileSystemEntity >> fileReference [ ^ FileSystem disk referenceTo: (self mooseName copyReplaceAll: self class famixFolderSeparatorString with: FileSystem disk delimiter asString) diff --git a/src/Famix-Traits/FamixTFolder.trait.st b/src/Famix-Traits/FamixTFolder.trait.st index da0300891..29f6567fb 100644 --- a/src/Famix-Traits/FamixTFolder.trait.st +++ b/src/Famix-Traits/FamixTFolder.trait.st @@ -41,7 +41,6 @@ FamixTFolder classSide >> annotation [ - ^ self ] { #category : 'groups' } @@ -51,13 +50,6 @@ FamixTFolder classSide >> annotationFamixFolderGroup [ ^ FamixFolderGroup ] -{ #category : 'visitor' } -FamixTFolder >> accept: aVisitor [ - - - ^ aVisitor visitFamixTFolder: self -] - { #category : 'adding' } FamixTFolder >> addChildFileSystemEntity: aFileOrFolder [ self childrenFileSystemEntities add: aFileOrFolder diff --git a/src/Famix-Traits/FamixTFunction.trait.st b/src/Famix-Traits/FamixTFunction.trait.st index 3d98b5c36..d9ae88b6a 100644 --- a/src/Famix-Traits/FamixTFunction.trait.st +++ b/src/Famix-Traits/FamixTFunction.trait.st @@ -62,14 +62,6 @@ FamixTFunction classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTFunction >> accept: aVisitor [ - - - ^ aVisitor visitFamixTFunction: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTGlobalVariable.trait.st b/src/Famix-Traits/FamixTGlobalVariable.trait.st index db8f29af1..93bc2bacf 100644 --- a/src/Famix-Traits/FamixTGlobalVariable.trait.st +++ b/src/Famix-Traits/FamixTGlobalVariable.trait.st @@ -53,7 +53,6 @@ FamixTGlobalVariable classSide >> annotation [ - ^ self ] { #category : 'groups' } @@ -63,13 +62,6 @@ FamixTGlobalVariable classSide >> annotationFamixGlobalVariableGroup [ ^ FamixGlobalVariableGroup ] -{ #category : 'visitor' } -FamixTGlobalVariable >> accept: aVisitor [ - - - ^ aVisitor visitFamixTGlobalVariable: self -] - { #category : 'testing' } FamixTGlobalVariable >> isGlobalVariable [ diff --git a/src/Famix-Traits/FamixTHasImmediateSource.trait.st b/src/Famix-Traits/FamixTHasImmediateSource.trait.st index 2a76d8c81..115802cfb 100644 --- a/src/Famix-Traits/FamixTHasImmediateSource.trait.st +++ b/src/Famix-Traits/FamixTHasImmediateSource.trait.st @@ -36,7 +36,6 @@ FamixTHasImmediateSource classSide >> annotation [ - ^ self ] { #category : 'instance creation' } @@ -53,13 +52,6 @@ FamixTHasImmediateSource classSide >> source: aString model: aMooseModel [ yourself ] -{ #category : 'visitor' } -FamixTHasImmediateSource >> accept: aVisitor [ - - - ^ aVisitor visitFamixTHasImmediateSource: self -] - { #category : 'testing' } FamixTHasImmediateSource >> hasImmediateSource [ diff --git a/src/Famix-Traits/FamixTHasKind.trait.st b/src/Famix-Traits/FamixTHasKind.trait.st index 10ea0fc40..e9f849715 100644 --- a/src/Famix-Traits/FamixTHasKind.trait.st +++ b/src/Famix-Traits/FamixTHasKind.trait.st @@ -25,14 +25,6 @@ FamixTHasKind classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTHasKind >> accept: aVisitor [ - - - ^ aVisitor visitFamixTHasKind: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTHasSignature.trait.st b/src/Famix-Traits/FamixTHasSignature.trait.st index 73c8b8384..b3ddd1bec 100644 --- a/src/Famix-Traits/FamixTHasSignature.trait.st +++ b/src/Famix-Traits/FamixTHasSignature.trait.st @@ -25,14 +25,6 @@ FamixTHasSignature classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTHasSignature >> accept: aVisitor [ - - - ^ aVisitor visitFamixTHasSignature: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTHasVisibility.trait.st b/src/Famix-Traits/FamixTHasVisibility.trait.st index 7f9991eae..23f29af94 100644 --- a/src/Famix-Traits/FamixTHasVisibility.trait.st +++ b/src/Famix-Traits/FamixTHasVisibility.trait.st @@ -23,14 +23,6 @@ FamixTHasVisibility classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTHasVisibility >> accept: aVisitor [ - - - ^ aVisitor visitFamixTHasVisibility: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTImplementable.trait.st b/src/Famix-Traits/FamixTImplementable.trait.st index 3ab75ee6a..4bb75f1c3 100644 --- a/src/Famix-Traits/FamixTImplementable.trait.st +++ b/src/Famix-Traits/FamixTImplementable.trait.st @@ -28,14 +28,6 @@ FamixTImplementable classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTImplementable >> accept: aVisitor [ - - - ^ aVisitor visitFamixTImplementable: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTImplementation.trait.st b/src/Famix-Traits/FamixTImplementation.trait.st index 10b27ca12..2da541dd6 100644 --- a/src/Famix-Traits/FamixTImplementation.trait.st +++ b/src/Famix-Traits/FamixTImplementation.trait.st @@ -41,14 +41,6 @@ FamixTImplementation classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTImplementation >> accept: aVisitor [ - - - ^ aVisitor visitFamixTImplementation: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTImplicitVariable.trait.st b/src/Famix-Traits/FamixTImplicitVariable.trait.st index c97402d44..ec77c5dcc 100644 --- a/src/Famix-Traits/FamixTImplicitVariable.trait.st +++ b/src/Famix-Traits/FamixTImplicitVariable.trait.st @@ -52,14 +52,6 @@ FamixTImplicitVariable classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTImplicitVariable >> accept: aVisitor [ - - - ^ aVisitor visitFamixTImplicitVariable: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTImport.trait.st b/src/Famix-Traits/FamixTImport.trait.st index af0fa0799..4be6954de 100644 --- a/src/Famix-Traits/FamixTImport.trait.st +++ b/src/Famix-Traits/FamixTImport.trait.st @@ -41,14 +41,6 @@ FamixTImport classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTImport >> accept: aVisitor [ - - - ^ aVisitor visitFamixTImport: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTImportable.trait.st b/src/Famix-Traits/FamixTImportable.trait.st index a64bdc82a..2ba6b8703 100644 --- a/src/Famix-Traits/FamixTImportable.trait.st +++ b/src/Famix-Traits/FamixTImportable.trait.st @@ -26,14 +26,6 @@ FamixTImportable classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTImportable >> accept: aVisitor [ - - - ^ aVisitor visitFamixTImportable: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTIndexedFileNavigation.trait.st b/src/Famix-Traits/FamixTIndexedFileNavigation.trait.st index 322846485..0112cf37d 100644 --- a/src/Famix-Traits/FamixTIndexedFileNavigation.trait.st +++ b/src/Famix-Traits/FamixTIndexedFileNavigation.trait.st @@ -30,7 +30,6 @@ FamixTIndexedFileNavigation classSide >> annotation [ - ^ self ] { #category : 'instance creation' } @@ -52,13 +51,6 @@ FamixTIndexedFileNavigation classSide >> fileName: aString startPos: anInteger e yourself ] -{ #category : 'visitor' } -FamixTIndexedFileNavigation >> accept: aVisitor [ - - - ^ aVisitor visitFamixTIndexedFileNavigation: self -] - { #category : 'matching' } FamixTIndexedFileNavigation >> beginsWith: aString [ "I return true if the source text I represent begins with the string as parameter.\ diff --git a/src/Famix-Traits/FamixTInheritance.trait.st b/src/Famix-Traits/FamixTInheritance.trait.st index dc6afde5e..aa46f601f 100644 --- a/src/Famix-Traits/FamixTInheritance.trait.st +++ b/src/Famix-Traits/FamixTInheritance.trait.st @@ -41,14 +41,6 @@ FamixTInheritance classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTInheritance >> accept: aVisitor [ - - - ^ aVisitor visitFamixTInheritance: self ] { #category : 'printing' } diff --git a/src/Famix-Traits/FamixTInvocable.trait.st b/src/Famix-Traits/FamixTInvocable.trait.st index 913d8665a..58f38fcf4 100644 --- a/src/Famix-Traits/FamixTInvocable.trait.st +++ b/src/Famix-Traits/FamixTInvocable.trait.st @@ -26,14 +26,6 @@ FamixTInvocable classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTInvocable >> accept: aVisitor [ - - - ^ aVisitor visitFamixTInvocable: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTInvocation.trait.st b/src/Famix-Traits/FamixTInvocation.trait.st index ced68bad7..38f751a13 100644 --- a/src/Famix-Traits/FamixTInvocation.trait.st +++ b/src/Famix-Traits/FamixTInvocation.trait.st @@ -60,7 +60,6 @@ FamixTInvocation classSide >> annotation [ - ^ self ] { #category : 'groups' } @@ -70,13 +69,6 @@ FamixTInvocation classSide >> annotationFamixInvocationGroup [ ^ FamixInvocationGroup ] -{ #category : 'visitor' } -FamixTInvocation >> accept: aVisitor [ - - - ^ aVisitor visitFamixTInvocation: self -] - { #category : 'adding' } FamixTInvocation >> addCandidate: aBehaviouralEntity [ candidates add: aBehaviouralEntity diff --git a/src/Famix-Traits/FamixTInvocationsReceiver.trait.st b/src/Famix-Traits/FamixTInvocationsReceiver.trait.st index 9b802722f..84c2437d7 100644 --- a/src/Famix-Traits/FamixTInvocationsReceiver.trait.st +++ b/src/Famix-Traits/FamixTInvocationsReceiver.trait.st @@ -26,14 +26,6 @@ FamixTInvocationsReceiver classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTInvocationsReceiver >> accept: aVisitor [ - - - ^ aVisitor visitFamixTInvocationsReceiver: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTLCOMMetrics.trait.st b/src/Famix-Traits/FamixTLCOMMetrics.trait.st index e2af27e0f..8115e1633 100644 --- a/src/Famix-Traits/FamixTLCOMMetrics.trait.st +++ b/src/Famix-Traits/FamixTLCOMMetrics.trait.st @@ -11,14 +11,6 @@ FamixTLCOMMetrics classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTLCOMMetrics >> accept: aVisitor [ - - - ^ aVisitor visitFamixTLCOMMetrics: self ] { #category : 'Famix-Extensions-metrics-support' } diff --git a/src/Famix-Traits/FamixTLambda.trait.st b/src/Famix-Traits/FamixTLambda.trait.st index 92ed7ccf0..182e3a1a8 100644 --- a/src/Famix-Traits/FamixTLambda.trait.st +++ b/src/Famix-Traits/FamixTLambda.trait.st @@ -60,14 +60,6 @@ FamixTLambda classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTLambda >> accept: aVisitor [ - - - ^ aVisitor visitFamixTLambda: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTLocalVariable.trait.st b/src/Famix-Traits/FamixTLocalVariable.trait.st index 0e1909860..a2d334d2c 100644 --- a/src/Famix-Traits/FamixTLocalVariable.trait.st +++ b/src/Famix-Traits/FamixTLocalVariable.trait.st @@ -52,14 +52,6 @@ FamixTLocalVariable classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTLocalVariable >> accept: aVisitor [ - - - ^ aVisitor visitFamixTLocalVariable: self ] { #category : 'printing' } diff --git a/src/Famix-Traits/FamixTMethod.trait.st b/src/Famix-Traits/FamixTMethod.trait.st index 43b66023b..cf18f6abe 100644 --- a/src/Famix-Traits/FamixTMethod.trait.st +++ b/src/Famix-Traits/FamixTMethod.trait.st @@ -65,7 +65,6 @@ FamixTMethod classSide >> annotation [ - ^ self ] { #category : 'groups' } @@ -75,13 +74,6 @@ FamixTMethod classSide >> annotationFamixMethodGroup [ ^ FamixMethodGroup ] -{ #category : 'visitor' } -FamixTMethod >> accept: aVisitor [ - - - ^ aVisitor visitFamixTMethod: self -] - { #category : 'Famix-Extensions-metrics-support' } FamixTMethod >> accessedAttributes [ "Returns the set of attributes of my class accessed by me (method). diff --git a/src/Famix-Traits/FamixTMethodMetrics.trait.st b/src/Famix-Traits/FamixTMethodMetrics.trait.st index 6ef2501e4..769227922 100644 --- a/src/Famix-Traits/FamixTMethodMetrics.trait.st +++ b/src/Famix-Traits/FamixTMethodMetrics.trait.st @@ -11,14 +11,6 @@ FamixTMethodMetrics classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTMethodMetrics >> accept: aVisitor [ - - - ^ aVisitor visitFamixTMethodMetrics: self ] { #category : 'metrics' } diff --git a/src/Famix-Traits/FamixTModule.trait.st b/src/Famix-Traits/FamixTModule.trait.st index 153618150..140164b59 100644 --- a/src/Famix-Traits/FamixTModule.trait.st +++ b/src/Famix-Traits/FamixTModule.trait.st @@ -29,14 +29,6 @@ FamixTModule classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTModule >> accept: aVisitor [ - - - ^ aVisitor visitFamixTModule: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTMultipleFileAnchor.trait.st b/src/Famix-Traits/FamixTMultipleFileAnchor.trait.st index bc9830e17..8e0938b69 100644 --- a/src/Famix-Traits/FamixTMultipleFileAnchor.trait.st +++ b/src/Famix-Traits/FamixTMultipleFileAnchor.trait.st @@ -34,14 +34,6 @@ FamixTMultipleFileAnchor classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTMultipleFileAnchor >> accept: aVisitor [ - - - ^ aVisitor visitFamixTMultipleFileAnchor: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTNamedEntity.trait.st b/src/Famix-Traits/FamixTNamedEntity.trait.st index df560cd70..3a9e07178 100644 --- a/src/Famix-Traits/FamixTNamedEntity.trait.st +++ b/src/Famix-Traits/FamixTNamedEntity.trait.st @@ -23,7 +23,6 @@ FamixTNamedEntity classSide >> annotation [ - ^ self ] { #category : 'instance creation' } @@ -41,13 +40,6 @@ FamixTNamedEntity classSide >> named: aString model: aMooseModel [ yourself ] -{ #category : 'visitor' } -FamixTNamedEntity >> accept: aVisitor [ - - - ^ aVisitor visitFamixTNamedEntity: self -] - { #category : 'printing' } FamixTNamedEntity >> displayStringOn: aStream [ diff --git a/src/Famix-Traits/FamixTNamespace.trait.st b/src/Famix-Traits/FamixTNamespace.trait.st index 4cece3442..449f85039 100644 --- a/src/Famix-Traits/FamixTNamespace.trait.st +++ b/src/Famix-Traits/FamixTNamespace.trait.st @@ -38,7 +38,6 @@ FamixTNamespace classSide >> annotation [ - ^ self ] { #category : 'groups' } @@ -48,13 +47,6 @@ FamixTNamespace classSide >> annotationFamixNamespaceGroup [ ^ FamixNamespaceGroup ] -{ #category : 'visitor' } -FamixTNamespace >> accept: aVisitor [ - - - ^ aVisitor visitFamixTNamespace: self -] - { #category : 'testing' } FamixTNamespace >> isNamespace [ diff --git a/src/Famix-Traits/FamixTPackage.trait.st b/src/Famix-Traits/FamixTPackage.trait.st index 3f72a5298..4736d76bc 100644 --- a/src/Famix-Traits/FamixTPackage.trait.st +++ b/src/Famix-Traits/FamixTPackage.trait.st @@ -44,7 +44,6 @@ FamixTPackage classSide >> annotation [ - ^ self ] { #category : 'groups' } @@ -54,13 +53,6 @@ FamixTPackage classSide >> annotationFamixPackageGroup [ ^ FamixPackageGroup ] -{ #category : 'visitor' } -FamixTPackage >> accept: aVisitor [ - - - ^ aVisitor visitFamixTPackage: self -] - { #category : 'accessing' } FamixTPackage >> addChildEntity: anObject [ childEntities add: anObject diff --git a/src/Famix-Traits/FamixTPackageable.trait.st b/src/Famix-Traits/FamixTPackageable.trait.st index 65643449b..19fa21ac0 100644 --- a/src/Famix-Traits/FamixTPackageable.trait.st +++ b/src/Famix-Traits/FamixTPackageable.trait.st @@ -26,14 +26,6 @@ FamixTPackageable classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTPackageable >> accept: aVisitor [ - - - ^ aVisitor visitFamixTPackageable: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTParameter.trait.st b/src/Famix-Traits/FamixTParameter.trait.st index 6bc2ba7b6..5947a32e6 100644 --- a/src/Famix-Traits/FamixTParameter.trait.st +++ b/src/Famix-Traits/FamixTParameter.trait.st @@ -62,14 +62,6 @@ FamixTParameter classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTParameter >> accept: aVisitor [ - - - ^ aVisitor visitFamixTParameter: self ] { #category : 'printing' } diff --git a/src/Famix-Traits/FamixTParametricAssociation.trait.st b/src/Famix-Traits/FamixTParametricAssociation.trait.st index 03c141937..031c9d2be 100644 --- a/src/Famix-Traits/FamixTParametricAssociation.trait.st +++ b/src/Famix-Traits/FamixTParametricAssociation.trait.st @@ -28,14 +28,6 @@ FamixTParametricAssociation classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTParametricAssociation >> accept: aVisitor [ - - - ^ aVisitor visitFamixTParametricAssociation: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTParametricEntity.trait.st b/src/Famix-Traits/FamixTParametricEntity.trait.st index cb5371f3a..bbac7d188 100644 --- a/src/Famix-Traits/FamixTParametricEntity.trait.st +++ b/src/Famix-Traits/FamixTParametricEntity.trait.st @@ -35,14 +35,6 @@ FamixTParametricEntity classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTParametricEntity >> accept: aVisitor [ - - - ^ aVisitor visitFamixTParametricEntity: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTPrimitiveType.trait.st b/src/Famix-Traits/FamixTPrimitiveType.trait.st index c7dfe92cd..103efd7e7 100644 --- a/src/Famix-Traits/FamixTPrimitiveType.trait.st +++ b/src/Famix-Traits/FamixTPrimitiveType.trait.st @@ -43,14 +43,6 @@ FamixTPrimitiveType classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTPrimitiveType >> accept: aVisitor [ - - - ^ aVisitor visitFamixTPrimitiveType: self ] { #category : 'testing' } diff --git a/src/Famix-Traits/FamixTReference.trait.st b/src/Famix-Traits/FamixTReference.trait.st index 62aaa604f..befa8bfe4 100644 --- a/src/Famix-Traits/FamixTReference.trait.st +++ b/src/Famix-Traits/FamixTReference.trait.st @@ -54,7 +54,6 @@ FamixTReference classSide >> annotation [ - ^ self ] { #category : 'instance creation' } @@ -62,13 +61,6 @@ FamixTReference classSide >> source: source target: target [ ^ self new source: source; target: target ] -{ #category : 'visitor' } -FamixTReference >> accept: aVisitor [ - - - ^ aVisitor visitFamixTReference: self -] - { #category : 'testing' } FamixTReference >> isReference [ diff --git a/src/Famix-Traits/FamixTReferenceable.trait.st b/src/Famix-Traits/FamixTReferenceable.trait.st index 62af657ce..e667895d5 100644 --- a/src/Famix-Traits/FamixTReferenceable.trait.st +++ b/src/Famix-Traits/FamixTReferenceable.trait.st @@ -38,14 +38,6 @@ FamixTReferenceable classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTReferenceable >> accept: aVisitor [ - - - ^ aVisitor visitFamixTReferenceable: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTRelativeSourceAnchor.trait.st b/src/Famix-Traits/FamixTRelativeSourceAnchor.trait.st index 3d86d7dd1..c5be778df 100644 --- a/src/Famix-Traits/FamixTRelativeSourceAnchor.trait.st +++ b/src/Famix-Traits/FamixTRelativeSourceAnchor.trait.st @@ -54,14 +54,6 @@ FamixTRelativeSourceAnchor classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTRelativeSourceAnchor >> accept: aVisitor [ - - - ^ aVisitor visitFamixTRelativeSourceAnchor: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTShadowable.trait.st b/src/Famix-Traits/FamixTShadowable.trait.st index 8e856b447..b0da5eac5 100644 --- a/src/Famix-Traits/FamixTShadowable.trait.st +++ b/src/Famix-Traits/FamixTShadowable.trait.st @@ -51,14 +51,6 @@ FamixTShadowable classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTShadowable >> accept: aVisitor [ - - - ^ aVisitor visitFamixTShadowable: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTShadower.trait.st b/src/Famix-Traits/FamixTShadower.trait.st index c97c9f858..83f4e2ac2 100644 --- a/src/Famix-Traits/FamixTShadower.trait.st +++ b/src/Famix-Traits/FamixTShadower.trait.st @@ -51,14 +51,6 @@ FamixTShadower classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTShadower >> accept: aVisitor [ - - - ^ aVisitor visitFamixTShadower: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTSourceAnchor.trait.st b/src/Famix-Traits/FamixTSourceAnchor.trait.st index 5b6c5e19e..cc6e9e136 100644 --- a/src/Famix-Traits/FamixTSourceAnchor.trait.st +++ b/src/Famix-Traits/FamixTSourceAnchor.trait.st @@ -28,14 +28,6 @@ FamixTSourceAnchor classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTSourceAnchor >> accept: aVisitor [ - - - ^ aVisitor visitFamixTSourceAnchor: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTSourceEntity.trait.st b/src/Famix-Traits/FamixTSourceEntity.trait.st index 8e7797919..ac8ce8fe7 100644 --- a/src/Famix-Traits/FamixTSourceEntity.trait.st +++ b/src/Famix-Traits/FamixTSourceEntity.trait.st @@ -28,14 +28,6 @@ FamixTSourceEntity classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTSourceEntity >> accept: aVisitor [ - - - ^ aVisitor visitFamixTSourceEntity: self ] { #category : 'accessing' } @@ -82,17 +74,6 @@ FamixTSourceEntity >> hasSourceAnchor [ ^ self sourceAnchor isNotNil ] -{ #category : 'inspector' } -FamixTSourceEntity >> inspectionSource: aBuilder [ - - - ^ aBuilder newCode - withoutSyntaxHighlight; - withLineNumbers; - text: self sourceText; - beNotEditable -] - { #category : 'inspector' } FamixTSourceEntity >> inspectionSourceContext: aContext [ diff --git a/src/Famix-Traits/FamixTSourceLanguage.trait.st b/src/Famix-Traits/FamixTSourceLanguage.trait.st index e62c41d7a..a3bc1696f 100644 --- a/src/Famix-Traits/FamixTSourceLanguage.trait.st +++ b/src/Famix-Traits/FamixTSourceLanguage.trait.st @@ -31,14 +31,6 @@ FamixTSourceLanguage classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTSourceLanguage >> accept: aVisitor [ - - - ^ aVisitor visitFamixTSourceLanguage: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTStructuralEntity.trait.st b/src/Famix-Traits/FamixTStructuralEntity.trait.st index 0249b21b9..04b6c7e1a 100644 --- a/src/Famix-Traits/FamixTStructuralEntity.trait.st +++ b/src/Famix-Traits/FamixTStructuralEntity.trait.st @@ -44,14 +44,6 @@ FamixTStructuralEntity classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTStructuralEntity >> accept: aVisitor [ - - - ^ aVisitor visitFamixTStructuralEntity: self ] { #category : 'testing' } diff --git a/src/Famix-Traits/FamixTTemplate.trait.st b/src/Famix-Traits/FamixTTemplate.trait.st index 709923a14..54f77bc1a 100644 --- a/src/Famix-Traits/FamixTTemplate.trait.st +++ b/src/Famix-Traits/FamixTTemplate.trait.st @@ -32,14 +32,6 @@ FamixTTemplate classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTTemplate >> accept: aVisitor [ - - - ^ aVisitor visitFamixTTemplate: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTTemplateUser.trait.st b/src/Famix-Traits/FamixTTemplateUser.trait.st index 9269a4a15..21b2c47ab 100644 --- a/src/Famix-Traits/FamixTTemplateUser.trait.st +++ b/src/Famix-Traits/FamixTTemplateUser.trait.st @@ -26,14 +26,6 @@ FamixTTemplateUser classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTTemplateUser >> accept: aVisitor [ - - - ^ aVisitor visitFamixTTemplateUser: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTThrowable.trait.st b/src/Famix-Traits/FamixTThrowable.trait.st index 1348309b1..7224b7735 100644 --- a/src/Famix-Traits/FamixTThrowable.trait.st +++ b/src/Famix-Traits/FamixTThrowable.trait.st @@ -32,14 +32,6 @@ FamixTThrowable classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTThrowable >> accept: aVisitor [ - - - ^ aVisitor visitFamixTThrowable: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTTrait.trait.st b/src/Famix-Traits/FamixTTrait.trait.st index 150b8f97f..a11e0dbb5 100644 --- a/src/Famix-Traits/FamixTTrait.trait.st +++ b/src/Famix-Traits/FamixTTrait.trait.st @@ -34,14 +34,6 @@ FamixTTrait classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTTrait >> accept: aVisitor [ - - - ^ aVisitor visitFamixTTrait: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTTraitUsage.trait.st b/src/Famix-Traits/FamixTTraitUsage.trait.st index e91d79ff7..179f22dc1 100644 --- a/src/Famix-Traits/FamixTTraitUsage.trait.st +++ b/src/Famix-Traits/FamixTTraitUsage.trait.st @@ -41,14 +41,6 @@ FamixTTraitUsage classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTTraitUsage >> accept: aVisitor [ - - - ^ aVisitor visitFamixTTraitUsage: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTTraitUser.trait.st b/src/Famix-Traits/FamixTTraitUser.trait.st index 9deae974e..45e87d806 100644 --- a/src/Famix-Traits/FamixTTraitUser.trait.st +++ b/src/Famix-Traits/FamixTTraitUser.trait.st @@ -26,14 +26,6 @@ FamixTTraitUser classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTTraitUser >> accept: aVisitor [ - - - ^ aVisitor visitFamixTTraitUser: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTType.trait.st b/src/Famix-Traits/FamixTType.trait.st index e8f2262f1..c7d988633 100644 --- a/src/Famix-Traits/FamixTType.trait.st +++ b/src/Famix-Traits/FamixTType.trait.st @@ -53,7 +53,6 @@ FamixTType classSide >> annotation [ - ^ self ] { #category : 'groups' } @@ -63,13 +62,6 @@ FamixTType classSide >> annotationFamixTypeGroup [ ^ FamixTypeGroup ] -{ #category : 'visitor' } -FamixTType >> accept: aVisitor [ - - - ^ aVisitor visitFamixTType: self -] - { #category : 'adding' } FamixTType >> addIncomingTyping: anObject [ diff --git a/src/Famix-Traits/FamixTTypeAlias.trait.st b/src/Famix-Traits/FamixTTypeAlias.trait.st index 8da85e2ae..2ae2d5820 100644 --- a/src/Famix-Traits/FamixTTypeAlias.trait.st +++ b/src/Famix-Traits/FamixTTypeAlias.trait.st @@ -31,14 +31,6 @@ FamixTTypeAlias classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTTypeAlias >> accept: aVisitor [ - - - ^ aVisitor visitFamixTTypeAlias: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTTypeArgument.trait.st b/src/Famix-Traits/FamixTTypeArgument.trait.st index bb6bcb13c..f05f7107c 100644 --- a/src/Famix-Traits/FamixTTypeArgument.trait.st +++ b/src/Famix-Traits/FamixTTypeArgument.trait.st @@ -28,14 +28,6 @@ FamixTTypeArgument classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTTypeArgument >> accept: aVisitor [ - - - ^ aVisitor visitFamixTTypeArgument: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTTypeParameter.trait.st b/src/Famix-Traits/FamixTTypeParameter.trait.st index 3e5e24b6b..6d5c5eeb8 100644 --- a/src/Famix-Traits/FamixTTypeParameter.trait.st +++ b/src/Famix-Traits/FamixTTypeParameter.trait.st @@ -34,14 +34,6 @@ FamixTTypeParameter classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTTypeParameter >> accept: aVisitor [ - - - ^ aVisitor visitFamixTTypeParameter: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTTypedEntity.trait.st b/src/Famix-Traits/FamixTTypedEntity.trait.st index 85a89c713..352103c17 100644 --- a/src/Famix-Traits/FamixTTypedEntity.trait.st +++ b/src/Famix-Traits/FamixTTypedEntity.trait.st @@ -26,14 +26,6 @@ FamixTTypedEntity classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTTypedEntity >> accept: aVisitor [ - - - ^ aVisitor visitFamixTTypedEntity: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTUnknownVariable.trait.st b/src/Famix-Traits/FamixTUnknownVariable.trait.st index 21dde3847..bff6bfa52 100644 --- a/src/Famix-Traits/FamixTUnknownVariable.trait.st +++ b/src/Famix-Traits/FamixTUnknownVariable.trait.st @@ -42,12 +42,4 @@ FamixTUnknownVariable classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTUnknownVariable >> accept: aVisitor [ - - - ^ aVisitor visitFamixTUnknownVariable: self ] diff --git a/src/Famix-Traits/FamixTVisitor.trait.st b/src/Famix-Traits/FamixTVisitor.trait.st deleted file mode 100644 index 981659ae0..000000000 --- a/src/Famix-Traits/FamixTVisitor.trait.st +++ /dev/null @@ -1,961 +0,0 @@ -" -I am a visitor for FamixEntities. -I am generated with the metamodel. -" -Trait { - #name : 'FamixTVisitor', - #category : 'Famix-Traits-Visitor', - #package : 'Famix-Traits', - #tag : 'Visitor' -} - -{ #category : 'meta' } -FamixTVisitor classSide >> annotation [ - - - - - ^ self -] - -{ #category : 'visiting' } -FamixTVisitor >> visitCollection: aCollection [ - - - ^ aCollection collect: [ :each | each accept: self ] -] - -{ #category : 'visiting' } -FamixTVisitor >> visitEntity: aFamixEntity [ - - - ^ aFamixEntity ifNotNil: [ aFamixEntity accept: self ] -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTAccess: aFamixTAccess [ - - - self visitFamixTAssociation: aFamixTAccess. - - self visitEntity: aFamixTAccess accessor. - self visitCollection: aFamixTAccess candidates -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTAccessible: aFamixTAccessible [ - - - self visitCollection: aFamixTAccessible incomingAccesses -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTAnnotationInstance: aFamixTAnnotationInstance [ - - - self visitTEntityMetaLevelDependency: aFamixTAnnotationInstance. - - self visitEntity: aFamixTAnnotationInstance annotatedEntity. - self visitCollection: aFamixTAnnotationInstance attributes. - self visitEntity: aFamixTAnnotationInstance annotationType -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTAnnotationInstanceAttribute: aFamixTAnnotationInstanceAttribute [ - - - self visitTEntityMetaLevelDependency: aFamixTAnnotationInstanceAttribute. - - self visitEntity: aFamixTAnnotationInstanceAttribute annotationTypeAttribute -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTAnnotationType: aFamixTAnnotationType [ - - - self visitCollection: aFamixTAnnotationType instances -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTAnnotationTypeAttribute: aFamixTAnnotationTypeAttribute [ - - - self visitFamixTAttribute: aFamixTAnnotationTypeAttribute. - - self visitCollection: aFamixTAnnotationTypeAttribute annotationAttributeInstances -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTAssociation: aFamixTAssociation [ - - - self visitFamixTSourceEntity: aFamixTAssociation. - self visitTAssociationMetaLevelDependency: aFamixTAssociation. - - self visitEntity: aFamixTAssociation previous. - self visitEntity: aFamixTAssociation next -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTAttribute: aFamixTAttribute [ - - - self visitFamixTStructuralEntity: aFamixTAttribute. - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTBytesFileAnchor: aFamixTBytesFileAnchor [ - - - self visitFamixTFileAnchor: aFamixTBytesFileAnchor -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTCanBeAbstract: aFamixTCanBeAbstract [ - - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTCanBeClassSide: aFamixTCanBeClassSide [ - - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTCanBeFinal: aFamixTCanBeFinal [ - - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTCanBeStub: aFamixTCanBeStub [ - - - self visitFamixTSourceEntity: aFamixTCanBeStub -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTCanImplement: aFamixTCanImplement [ - - - self visitCollection: aFamixTCanImplement interfaceImplementations -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTClass: aFamixTClass [ - - - self visitFamixTInvocationsReceiver: aFamixTClass. - self visitFamixTType: aFamixTClass. - self visitFamixTWithAttributes: aFamixTClass. - self visitFamixTWithComments: aFamixTClass. - self visitFamixTWithInheritances: aFamixTClass. - self visitFamixTWithMethods: aFamixTClass -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTClassMetrics: aFamixTClassMetrics [ - - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTCohesionCouplingMetrics: aFamixTCohesionCouplingMetrics [ - - - self visitFamixTPackage: aFamixTCohesionCouplingMetrics -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTComment: aFamixTComment [ - - - self visitFamixTSourceEntity: aFamixTComment. - self visitTEntityMetaLevelDependency: aFamixTComment. - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTCompilationUnit: aFamixTCompilationUnit [ - - - self visitFamixTFile: aFamixTCompilationUnit. - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTConcretization: aFamixTConcretization [ - - - self visitFamixTAssociation: aFamixTConcretization. - - self visitEntity: aFamixTConcretization triggeringAssociation. - self visitEntity: aFamixTConcretization typeArgument. - self visitEntity: aFamixTConcretization typeParameter -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTDefinedInModule: aFamixTDefinedInModule [ - - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTDereferencedInvocation: aFamixTDereferencedInvocation [ - - - self visitFamixTInvocation: aFamixTDereferencedInvocation. - - self visitEntity: aFamixTDereferencedInvocation referencer -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTEntityTyping: aFamixTEntityTyping [ - - - self visitFamixTAssociation: aFamixTEntityTyping. - - self visitEntity: aFamixTEntityTyping typedEntity. - self visitEntity: aFamixTEntityTyping declaredType -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTEnum: aFamixTEnum [ - - - self visitFamixTType: aFamixTEnum. - self visitFamixTWithEnumValues: aFamixTEnum -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTEnumValue: aFamixTEnumValue [ - - - self visitFamixTStructuralEntity: aFamixTEnumValue. - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTException: aFamixTException [ - - - self visitFamixTClass: aFamixTException. - self visitFamixTThrowable: aFamixTException -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTFile: aFamixTFile [ - - - self visitFamixTFileSystemEntity: aFamixTFile. - - self visitCollection: aFamixTFile entities -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTFileAnchor: aFamixTFileAnchor [ - - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTFileInclude: aFamixTFileInclude [ - - - self visitFamixTAssociation: aFamixTFileInclude. - - self visitEntity: aFamixTFileInclude source. - self visitEntity: aFamixTFileInclude target -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTFileNavigation: aFamixTFileNavigation [ - - - self visitFamixTFileAnchor: aFamixTFileNavigation -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTFileSystemEntity: aFamixTFileSystemEntity [ - - - self visitFamixTNamedEntity: aFamixTFileSystemEntity. - self visitTEntityMetaLevelDependency: aFamixTFileSystemEntity. - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTFolder: aFamixTFolder [ - - - self visitFamixTFileSystemEntity: aFamixTFolder. - - self visitCollection: aFamixTFolder childrenFileSystemEntities -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTFunction: aFamixTFunction [ - - - self visitFamixTHasSignature: aFamixTFunction. - self visitFamixTInvocable: aFamixTFunction. - self visitFamixTNamedEntity: aFamixTFunction. - self visitFamixTTypedEntity: aFamixTFunction. - self visitFamixTWithLocalVariables: aFamixTFunction. - self visitFamixTWithParameters: aFamixTFunction. - self visitFamixTWithStatements: aFamixTFunction. - self visitTEntityMetaLevelDependency: aFamixTFunction. - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTGlobalVariable: aFamixTGlobalVariable [ - - - self visitFamixTStructuralEntity: aFamixTGlobalVariable. - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTHasImmediateSource: aFamixTHasImmediateSource [ - - - self visitFamixTSourceAnchor: aFamixTHasImmediateSource -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTHasKind: aFamixTHasKind [ - - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTHasSignature: aFamixTHasSignature [ - - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTHasVisibility: aFamixTHasVisibility [ - - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTImplementable: aFamixTImplementable [ - - - self visitCollection: aFamixTImplementable implementations -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTImplementation: aFamixTImplementation [ - - - self visitFamixTAssociation: aFamixTImplementation. - - self visitEntity: aFamixTImplementation implementingClass. - self visitEntity: aFamixTImplementation interface -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTImplicitVariable: aFamixTImplicitVariable [ - - - self visitFamixTStructuralEntity: aFamixTImplicitVariable. - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTImport: aFamixTImport [ - - - self visitFamixTAssociation: aFamixTImport. - - self visitEntity: aFamixTImport importingEntity. - self visitEntity: aFamixTImport importedEntity -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTImportable: aFamixTImportable [ - - - self visitCollection: aFamixTImportable incomingImports -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTIndexedFileNavigation: aFamixTIndexedFileNavigation [ - - - self visitFamixTFileAnchor: aFamixTIndexedFileNavigation -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTInheritance: aFamixTInheritance [ - - - self visitFamixTAssociation: aFamixTInheritance. - - self visitEntity: aFamixTInheritance subclass. - self visitEntity: aFamixTInheritance superclass -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTInvocable: aFamixTInvocable [ - - - self visitCollection: aFamixTInvocable incomingInvocations -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTInvocation: aFamixTInvocation [ - - - self visitFamixTAssociation: aFamixTInvocation. - self visitFamixTHasSignature: aFamixTInvocation. - - self visitCollection: aFamixTInvocation candidates. - self visitEntity: aFamixTInvocation sender. - self visitEntity: aFamixTInvocation receiver -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTInvocationsReceiver: aFamixTInvocationsReceiver [ - - - self visitCollection: aFamixTInvocationsReceiver receivingInvocations -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTLCOMMetrics: aFamixTLCOMMetrics [ - - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTLambda: aFamixTLambda [ - - - self visitFamixTHasSignature: aFamixTLambda. - self visitFamixTInvocable: aFamixTLambda. - self visitFamixTWithLocalVariables: aFamixTLambda. - self visitFamixTWithParameters: aFamixTLambda. - self visitFamixTWithStatements: aFamixTLambda. - self visitTEntityMetaLevelDependency: aFamixTLambda. - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTLocalVariable: aFamixTLocalVariable [ - - - self visitFamixTStructuralEntity: aFamixTLocalVariable. - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTMethod: aFamixTMethod [ - - - self visitFamixTHasSignature: aFamixTMethod. - self visitFamixTInvocable: aFamixTMethod. - self visitFamixTMethodMetrics: aFamixTMethod. - self visitFamixTNamedEntity: aFamixTMethod. - self visitFamixTTypedEntity: aFamixTMethod. - self visitFamixTWithImplicitVariables: aFamixTMethod. - self visitFamixTWithLocalVariables: aFamixTMethod. - self visitFamixTWithParameters: aFamixTMethod. - self visitFamixTWithStatements: aFamixTMethod. - self visitTEntityMetaLevelDependency: aFamixTMethod. - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTMethodMetrics: aFamixTMethodMetrics [ - - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTModule: aFamixTModule [ - - - self visitCollection: aFamixTModule moduleEntities -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTMultipleFileAnchor: aFamixTMultipleFileAnchor [ - - - self visitFamixTSourceAnchor: aFamixTMultipleFileAnchor -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTNamedEntity: aFamixTNamedEntity [ - - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTNamespace: aFamixTNamespace [ - - - self visitFamixTCanBeStub: aFamixTNamespace. - self visitFamixTNamedEntity: aFamixTNamespace. - self visitTEntityMetaLevelDependency: aFamixTNamespace -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTPackage: aFamixTPackage [ - - - self visitFamixTCanBeStub: aFamixTPackage. - self visitFamixTNamedEntity: aFamixTPackage. - self visitTEntityMetaLevelDependency: aFamixTPackage. - - self visitCollection: aFamixTPackage childEntities -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTPackageable: aFamixTPackageable [ - - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTParameter: aFamixTParameter [ - - - self visitFamixTStructuralEntity: aFamixTParameter. - - -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTParametricAssociation: aFamixTParametricAssociation [ - - - self visitCollection: aFamixTParametricAssociation concretizations -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTParametricEntity: aFamixTParametricEntity [ - - - self visitCollection: aFamixTParametricEntity typeParameters -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTPrimitiveType: aFamixTPrimitiveType [ - - - self visitFamixTType: aFamixTPrimitiveType -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTReference: aFamixTReference [ - - - self visitFamixTAssociation: aFamixTReference. - - self visitEntity: aFamixTReference referencer. - self visitEntity: aFamixTReference referredEntity -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTReferenceable: aFamixTReferenceable [ - - - self visitCollection: aFamixTReferenceable incomingReferences -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTRelativeSourceAnchor: aFamixTRelativeSourceAnchor [ - - - self visitFamixTSourceAnchor: aFamixTRelativeSourceAnchor -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTShadowable: aFamixTShadowable [ - - - self visitCollection: aFamixTShadowable shadowingEntities -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTShadower: aFamixTShadower [ - - - self visitEntity: aFamixTShadower shadowedEntity -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTSourceAnchor: aFamixTSourceAnchor [ - - - self visitEntity: aFamixTSourceAnchor element -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTSourceEntity: aFamixTSourceEntity [ - - - self visitEntity: aFamixTSourceEntity sourceAnchor -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTSourceLanguage: aFamixTSourceLanguage [ - - - self visitCollection: aFamixTSourceLanguage sourcedEntities -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTStructuralEntity: aFamixTStructuralEntity [ - - - self visitFamixTAccessible: aFamixTStructuralEntity. - self visitFamixTCanBeStub: aFamixTStructuralEntity. - self visitFamixTNamedEntity: aFamixTStructuralEntity. - self visitFamixTTypedEntity: aFamixTStructuralEntity. - self visitTEntityMetaLevelDependency: aFamixTStructuralEntity -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTTemplate: aFamixTTemplate [ - - - self visitCollection: aFamixTTemplate templateUsers -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTTemplateUser: aFamixTTemplateUser [ - - - self visitEntity: aFamixTTemplateUser template -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTThrowable: aFamixTThrowable [ - - - self visitCollection: aFamixTThrowable catchingEntities. - self visitCollection: aFamixTThrowable declaringEntities. - self visitCollection: aFamixTThrowable throwingEntities -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTTrait: aFamixTTrait [ - - - self visitCollection: aFamixTTrait incomingTraitUsages -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTTraitUsage: aFamixTTraitUsage [ - - - self visitFamixTAssociation: aFamixTTraitUsage. - - self visitEntity: aFamixTTraitUsage trait. - self visitEntity: aFamixTTraitUsage user -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTTraitUser: aFamixTTraitUser [ - - - self visitCollection: aFamixTTraitUser traitUsages -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTType: aFamixTType [ - - - self visitFamixTCanBeStub: aFamixTType. - self visitFamixTNamedEntity: aFamixTType. - self visitFamixTReferenceable: aFamixTType. - self visitTEntityMetaLevelDependency: aFamixTType. - - self visitCollection: aFamixTType incomingTypings -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTTypeAlias: aFamixTTypeAlias [ - - - self visitEntity: aFamixTTypeAlias aliasedType -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTTypeArgument: aFamixTTypeArgument [ - - - self visitCollection: aFamixTTypeArgument outgoingConcretizations -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTTypeParameter: aFamixTTypeParameter [ - - - self visitCollection: aFamixTTypeParameter concretizations. - self visitEntity: aFamixTTypeParameter genericEntity -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTTypedEntity: aFamixTTypedEntity [ - - - self visitEntity: aFamixTTypedEntity typing -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTUnknownVariable: aFamixTUnknownVariable [ - - - self visitFamixTStructuralEntity: aFamixTUnknownVariable -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithAccesses: aFamixTWithAccesses [ - - - self visitCollection: aFamixTWithAccesses accesses -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithAnnotationInstances: aFamixTWithAnnotationInstances [ - - - self visitCollection: aFamixTWithAnnotationInstances annotationInstances -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithAnnotationTypes: aFamixTWithAnnotationTypes [ - - - self visitCollection: aFamixTWithAnnotationTypes definedAnnotationTypes -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithAttributes: aFamixTWithAttributes [ - - - self visitCollection: aFamixTWithAttributes attributes -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithClasses: aFamixTWithClasses [ - - - self visitFamixTWithTypes: aFamixTWithClasses -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithComments: aFamixTWithComments [ - - - self visitCollection: aFamixTWithComments comments -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithCompilationUnits: aFamixTWithCompilationUnits [ - - - self visitEntity: aFamixTWithCompilationUnits compilationUnit -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithDereferencedInvocations: aFamixTWithDereferencedInvocations [ - - - self visitCollection: aFamixTWithDereferencedInvocations dereferencedInvocations -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithEnumValues: aFamixTWithEnumValues [ - - - self visitCollection: aFamixTWithEnumValues enumValues -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithExceptions: aFamixTWithExceptions [ - - - self visitCollection: aFamixTWithExceptions caughtExceptions. - self visitCollection: aFamixTWithExceptions declaredExceptions. - self visitCollection: aFamixTWithExceptions thrownExceptions -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithFileIncludes: aFamixTWithFileIncludes [ - - - self visitCollection: aFamixTWithFileIncludes outgoingIncludeRelations. - self visitCollection: aFamixTWithFileIncludes incomingIncludeRelations -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithFiles: aFamixTWithFiles [ - - - self visitCollection: aFamixTWithFiles containerFiles -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithFunctions: aFamixTWithFunctions [ - - - self visitCollection: aFamixTWithFunctions functions -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithGlobalVariables: aFamixTWithGlobalVariables [ - - - self visitCollection: aFamixTWithGlobalVariables globalVariables -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithImplicitVariables: aFamixTWithImplicitVariables [ - - - self visitCollection: aFamixTWithImplicitVariables implicitVariables -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithImports: aFamixTWithImports [ - - - self visitCollection: aFamixTWithImports imports -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithInheritances: aFamixTWithInheritances [ - - - self visitCollection: aFamixTWithInheritances superInheritances. - self visitCollection: aFamixTWithInheritances subInheritances -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithInvocations: aFamixTWithInvocations [ - - - self visitCollection: aFamixTWithInvocations outgoingInvocations -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithLambdas: aFamixTWithLambdas [ - - - self visitCollection: aFamixTWithLambdas lambdas -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithLocalVariables: aFamixTWithLocalVariables [ - - - self visitCollection: aFamixTWithLocalVariables localVariables -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithMethods: aFamixTWithMethods [ - - - self visitCollection: aFamixTWithMethods methods -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithParameters: aFamixTWithParameters [ - - - self visitCollection: aFamixTWithParameters parameters -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithReferences: aFamixTWithReferences [ - - - self visitCollection: aFamixTWithReferences outgoingReferences -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithSourceLanguages: aFamixTWithSourceLanguages [ - - - self visitEntity: aFamixTWithSourceLanguages declaredSourceLanguage -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithStatements: aFamixTWithStatements [ - - - self visitFamixTCanBeStub: aFamixTWithStatements. - self visitFamixTWithAccesses: aFamixTWithStatements. - self visitFamixTWithInvocations: aFamixTWithStatements. - self visitFamixTWithReferences: aFamixTWithStatements -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithTemplates: aFamixTWithTemplates [ - - - self visitCollection: aFamixTWithTemplates templates -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithTraits: aFamixTWithTraits [ - - - self visitCollection: aFamixTWithTraits traits -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithTypeAliases: aFamixTWithTypeAliases [ - - - self visitCollection: aFamixTWithTypeAliases typeAliases -] - -{ #category : 'visiting' } -FamixTVisitor >> visitFamixTWithTypes: aFamixTWithTypes [ - - - self visitCollection: aFamixTWithTypes types -] - -{ #category : 'visiting' } -FamixTVisitor >> visitTEntityMetaLevelDependency: aFamixEntity [ - "This method is not generated to avoid complexify the visitor generation" - - -] diff --git a/src/Famix-Traits/FamixTWithAccesses.trait.st b/src/Famix-Traits/FamixTWithAccesses.trait.st index 764a850f8..be48be28f 100644 --- a/src/Famix-Traits/FamixTWithAccesses.trait.st +++ b/src/Famix-Traits/FamixTWithAccesses.trait.st @@ -26,14 +26,6 @@ FamixTWithAccesses classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithAccesses >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithAccesses: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTWithAnnotationInstances.trait.st b/src/Famix-Traits/FamixTWithAnnotationInstances.trait.st index a7aaeb0b6..0dde1c84f 100644 --- a/src/Famix-Traits/FamixTWithAnnotationInstances.trait.st +++ b/src/Famix-Traits/FamixTWithAnnotationInstances.trait.st @@ -26,14 +26,6 @@ FamixTWithAnnotationInstances classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithAnnotationInstances >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithAnnotationInstances: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTWithAnnotationTypes.trait.st b/src/Famix-Traits/FamixTWithAnnotationTypes.trait.st index 1a3af62d8..232e67f51 100644 --- a/src/Famix-Traits/FamixTWithAnnotationTypes.trait.st +++ b/src/Famix-Traits/FamixTWithAnnotationTypes.trait.st @@ -26,14 +26,6 @@ FamixTWithAnnotationTypes classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithAnnotationTypes >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithAnnotationTypes: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTWithAttributes.trait.st b/src/Famix-Traits/FamixTWithAttributes.trait.st index 30b080617..e93dd1568 100644 --- a/src/Famix-Traits/FamixTWithAttributes.trait.st +++ b/src/Famix-Traits/FamixTWithAttributes.trait.st @@ -26,14 +26,6 @@ FamixTWithAttributes classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithAttributes >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithAttributes: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTWithClasses.trait.st b/src/Famix-Traits/FamixTWithClasses.trait.st index b12bbba34..2bc544a81 100644 --- a/src/Famix-Traits/FamixTWithClasses.trait.st +++ b/src/Famix-Traits/FamixTWithClasses.trait.st @@ -25,14 +25,6 @@ FamixTWithClasses classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithClasses >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithClasses: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTWithComments.trait.st b/src/Famix-Traits/FamixTWithComments.trait.st index ca3f820bb..8ef6e1cb1 100644 --- a/src/Famix-Traits/FamixTWithComments.trait.st +++ b/src/Famix-Traits/FamixTWithComments.trait.st @@ -26,14 +26,6 @@ FamixTWithComments classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithComments >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithComments: self ] { #category : 'removing' } diff --git a/src/Famix-Traits/FamixTWithCompilationUnits.trait.st b/src/Famix-Traits/FamixTWithCompilationUnits.trait.st index f0ec82b0f..f3b496f12 100644 --- a/src/Famix-Traits/FamixTWithCompilationUnits.trait.st +++ b/src/Famix-Traits/FamixTWithCompilationUnits.trait.st @@ -26,14 +26,6 @@ FamixTWithCompilationUnits classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithCompilationUnits >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithCompilationUnits: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTWithDereferencedInvocations.trait.st b/src/Famix-Traits/FamixTWithDereferencedInvocations.trait.st index 277b1bde5..8f2df994d 100644 --- a/src/Famix-Traits/FamixTWithDereferencedInvocations.trait.st +++ b/src/Famix-Traits/FamixTWithDereferencedInvocations.trait.st @@ -26,14 +26,6 @@ FamixTWithDereferencedInvocations classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithDereferencedInvocations >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithDereferencedInvocations: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTWithEnumValues.trait.st b/src/Famix-Traits/FamixTWithEnumValues.trait.st index 6b371344b..4698991af 100644 --- a/src/Famix-Traits/FamixTWithEnumValues.trait.st +++ b/src/Famix-Traits/FamixTWithEnumValues.trait.st @@ -26,14 +26,6 @@ FamixTWithEnumValues classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithEnumValues >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithEnumValues: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTWithExceptions.trait.st b/src/Famix-Traits/FamixTWithExceptions.trait.st index ef40305d4..6b6235508 100644 --- a/src/Famix-Traits/FamixTWithExceptions.trait.st +++ b/src/Famix-Traits/FamixTWithExceptions.trait.st @@ -30,14 +30,6 @@ FamixTWithExceptions classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithExceptions >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithExceptions: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTWithFileIncludes.trait.st b/src/Famix-Traits/FamixTWithFileIncludes.trait.st index 64b788c9d..36f7d1fca 100644 --- a/src/Famix-Traits/FamixTWithFileIncludes.trait.st +++ b/src/Famix-Traits/FamixTWithFileIncludes.trait.st @@ -28,14 +28,6 @@ FamixTWithFileIncludes classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithFileIncludes >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithFileIncludes: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTWithFiles.trait.st b/src/Famix-Traits/FamixTWithFiles.trait.st index 34428d391..9d462182a 100644 --- a/src/Famix-Traits/FamixTWithFiles.trait.st +++ b/src/Famix-Traits/FamixTWithFiles.trait.st @@ -26,14 +26,6 @@ FamixTWithFiles classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithFiles >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithFiles: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTWithFunctions.trait.st b/src/Famix-Traits/FamixTWithFunctions.trait.st index 713fa6a6f..c458877bc 100644 --- a/src/Famix-Traits/FamixTWithFunctions.trait.st +++ b/src/Famix-Traits/FamixTWithFunctions.trait.st @@ -26,14 +26,6 @@ FamixTWithFunctions classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithFunctions >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithFunctions: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTWithGlobalVariables.trait.st b/src/Famix-Traits/FamixTWithGlobalVariables.trait.st index 6ecab75f7..a0199aac5 100644 --- a/src/Famix-Traits/FamixTWithGlobalVariables.trait.st +++ b/src/Famix-Traits/FamixTWithGlobalVariables.trait.st @@ -28,14 +28,6 @@ FamixTWithGlobalVariables classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithGlobalVariables >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithGlobalVariables: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTWithImplicitVariables.trait.st b/src/Famix-Traits/FamixTWithImplicitVariables.trait.st index 2b52c065e..80a9b470a 100644 --- a/src/Famix-Traits/FamixTWithImplicitVariables.trait.st +++ b/src/Famix-Traits/FamixTWithImplicitVariables.trait.st @@ -26,14 +26,6 @@ FamixTWithImplicitVariables classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithImplicitVariables >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithImplicitVariables: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTWithImports.trait.st b/src/Famix-Traits/FamixTWithImports.trait.st index 6eaeda6d9..7e0178c5c 100644 --- a/src/Famix-Traits/FamixTWithImports.trait.st +++ b/src/Famix-Traits/FamixTWithImports.trait.st @@ -26,14 +26,6 @@ FamixTWithImports classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithImports >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithImports: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTWithInheritances.trait.st b/src/Famix-Traits/FamixTWithInheritances.trait.st index 9d978700a..dbd33f5bb 100644 --- a/src/Famix-Traits/FamixTWithInheritances.trait.st +++ b/src/Famix-Traits/FamixTWithInheritances.trait.st @@ -32,14 +32,6 @@ FamixTWithInheritances classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithInheritances >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithInheritances: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTWithInvocations.trait.st b/src/Famix-Traits/FamixTWithInvocations.trait.st index 824fe631a..637e56b1e 100644 --- a/src/Famix-Traits/FamixTWithInvocations.trait.st +++ b/src/Famix-Traits/FamixTWithInvocations.trait.st @@ -26,14 +26,6 @@ FamixTWithInvocations classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithInvocations >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithInvocations: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTWithLambdas.trait.st b/src/Famix-Traits/FamixTWithLambdas.trait.st index d258de250..3cc4aeff7 100644 --- a/src/Famix-Traits/FamixTWithLambdas.trait.st +++ b/src/Famix-Traits/FamixTWithLambdas.trait.st @@ -28,14 +28,6 @@ FamixTWithLambdas classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithLambdas >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithLambdas: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTWithLocalVariables.trait.st b/src/Famix-Traits/FamixTWithLocalVariables.trait.st index 85eccfb1b..c97e22611 100644 --- a/src/Famix-Traits/FamixTWithLocalVariables.trait.st +++ b/src/Famix-Traits/FamixTWithLocalVariables.trait.st @@ -26,14 +26,6 @@ FamixTWithLocalVariables classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithLocalVariables >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithLocalVariables: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTWithMethods.trait.st b/src/Famix-Traits/FamixTWithMethods.trait.st index 3628ba8d6..b8f0d26a6 100644 --- a/src/Famix-Traits/FamixTWithMethods.trait.st +++ b/src/Famix-Traits/FamixTWithMethods.trait.st @@ -26,14 +26,6 @@ FamixTWithMethods classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithMethods >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithMethods: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTWithParameters.trait.st b/src/Famix-Traits/FamixTWithParameters.trait.st index 9c65add2a..23b5e7aa9 100644 --- a/src/Famix-Traits/FamixTWithParameters.trait.st +++ b/src/Famix-Traits/FamixTWithParameters.trait.st @@ -26,14 +26,6 @@ FamixTWithParameters classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithParameters >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithParameters: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTWithReferences.trait.st b/src/Famix-Traits/FamixTWithReferences.trait.st index 82df88be5..96579ff67 100644 --- a/src/Famix-Traits/FamixTWithReferences.trait.st +++ b/src/Famix-Traits/FamixTWithReferences.trait.st @@ -26,14 +26,6 @@ FamixTWithReferences classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithReferences >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithReferences: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTWithSourceLanguages.trait.st b/src/Famix-Traits/FamixTWithSourceLanguages.trait.st index 7511311ca..28b8ee1d7 100644 --- a/src/Famix-Traits/FamixTWithSourceLanguages.trait.st +++ b/src/Famix-Traits/FamixTWithSourceLanguages.trait.st @@ -26,14 +26,6 @@ FamixTWithSourceLanguages classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithSourceLanguages >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithSourceLanguages: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTWithStatements.trait.st b/src/Famix-Traits/FamixTWithStatements.trait.st index 4a33a1994..aacd6b05e 100644 --- a/src/Famix-Traits/FamixTWithStatements.trait.st +++ b/src/Famix-Traits/FamixTWithStatements.trait.st @@ -38,14 +38,6 @@ FamixTWithStatements classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithStatements >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithStatements: self ] { #category : 'metrics' } diff --git a/src/Famix-Traits/FamixTWithTemplates.trait.st b/src/Famix-Traits/FamixTWithTemplates.trait.st index 355acc79d..dd7aa3383 100644 --- a/src/Famix-Traits/FamixTWithTemplates.trait.st +++ b/src/Famix-Traits/FamixTWithTemplates.trait.st @@ -26,14 +26,6 @@ FamixTWithTemplates classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithTemplates >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithTemplates: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTWithTraits.trait.st b/src/Famix-Traits/FamixTWithTraits.trait.st index 4412e9997..11448ea21 100644 --- a/src/Famix-Traits/FamixTWithTraits.trait.st +++ b/src/Famix-Traits/FamixTWithTraits.trait.st @@ -26,14 +26,6 @@ FamixTWithTraits classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithTraits >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithTraits: self ] { #category : 'accessing' } diff --git a/src/Famix-Traits/FamixTWithTypeAliases.trait.st b/src/Famix-Traits/FamixTWithTypeAliases.trait.st index f24304fdb..c6f81ad3f 100644 --- a/src/Famix-Traits/FamixTWithTypeAliases.trait.st +++ b/src/Famix-Traits/FamixTWithTypeAliases.trait.st @@ -26,14 +26,6 @@ FamixTWithTypeAliases classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithTypeAliases >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithTypeAliases: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTWithTypes.trait.st b/src/Famix-Traits/FamixTWithTypes.trait.st index 0e1f1c90b..a2d521d90 100644 --- a/src/Famix-Traits/FamixTWithTypes.trait.st +++ b/src/Famix-Traits/FamixTWithTypes.trait.st @@ -26,14 +26,6 @@ FamixTWithTypes classSide >> annotation [ - ^ self -] - -{ #category : 'visitor' } -FamixTWithTypes >> accept: aVisitor [ - - - ^ aVisitor visitFamixTWithTypes: self ] { #category : 'adding' } diff --git a/src/Famix-Traits/FamixTypeGroup.class.st b/src/Famix-Traits/FamixTypeGroup.class.st index 8def856e7..a42db424b 100644 --- a/src/Famix-Traits/FamixTypeGroup.class.st +++ b/src/Famix-Traits/FamixTypeGroup.class.st @@ -6,22 +6,6 @@ Class { #tag : 'Groups' } -{ #category : 'meta' } -FamixTypeGroup class >> annotation [ - - - - - ^ self -] - -{ #category : 'meta' } -FamixTypeGroup class >> metamodel [ - - - ^ FamixModel metamodel -] - { #category : 'metrics' } FamixTypeGroup >> abstractness [ "Abstractness is the ratio between the number of abstract classes and the total number of classes in a package, in the range [0, 1]. 0 means the package is fully concrete, 1 it is fully abstract." diff --git a/src/Famix-Visitor-Generation/FamixMetamodelBuilder.extension.st b/src/Famix-Visitor-Generation/FamixMetamodelBuilder.extension.st index 66cdebb66..99deb2d5c 100644 --- a/src/Famix-Visitor-Generation/FamixMetamodelBuilder.extension.st +++ b/src/Famix-Visitor-Generation/FamixMetamodelBuilder.extension.st @@ -13,6 +13,6 @@ FamixMetamodelBuilder >> newVisitorTrait [ visitorTrait builder: self. visitorTrait prefix: self configuration prefix. - extensionBehaviors add: visitorTrait. + self traits add: visitorTrait. ^ visitorTrait ] diff --git a/src/Famix-Visitor-Generation/FamixMetamodelGenerator.extension.st b/src/Famix-Visitor-Generation/FamixMetamodelGenerator.extension.st index 08cda3e96..f840705cb 100644 --- a/src/Famix-Visitor-Generation/FamixMetamodelGenerator.extension.st +++ b/src/Famix-Visitor-Generation/FamixMetamodelGenerator.extension.st @@ -6,7 +6,7 @@ FamixMetamodelGenerator class >> packageNameForVisitor [ Examples: see overriding methods " - self shouldBeImplemented + ^ self packageName ] { #category : '*Famix-Visitor-Generation' } diff --git a/src/Famix-Visitor-Generation/FamixVisitorGenerator.class.st b/src/Famix-Visitor-Generation/FamixVisitorGenerator.class.st index 110c71ae6..c9d6ce87d 100644 --- a/src/Famix-Visitor-Generation/FamixVisitorGenerator.class.st +++ b/src/Famix-Visitor-Generation/FamixVisitorGenerator.class.st @@ -53,12 +53,7 @@ FamixVisitorGenerator >> configureForGenerator: aFamixMetamodelGenerator [ { #category : 'generating' } FamixVisitorGenerator >> define [ - | visitorTrait | - visitorTrait := builder newVisitorTrait. - visitorTrait packageName: packageName. - - builder allSubBuilders do: [ :subBuilder | - subBuilder extensionBehaviors - detect: [ :each | each isVisitorTrait ] - ifFound: [ :famixTVistior | visitorTrait --|> famixTVistior ] ] + builder newVisitorTrait + packageName: packageName; + yourself ] diff --git a/src/Famix-Visitor-Generation/FmxMBChangesBuilderVisitor.extension.st b/src/Famix-Visitor-Generation/FmxMBChangesBuilderVisitor.extension.st new file mode 100644 index 000000000..ca21b8fb7 --- /dev/null +++ b/src/Famix-Visitor-Generation/FmxMBChangesBuilderVisitor.extension.st @@ -0,0 +1,26 @@ +Extension { #name : 'FmxMBChangesBuilderVisitor' } + +{ #category : '*Famix-Visitor-Generation' } +FmxMBChangesBuilderVisitor >> generateVisitMethodsIn: aTrait [ + + | localBehaviorsToVisit remoteTraits | + localBehaviorsToVisit := (builder classes select: #isClassEntity) , (builder traits select: #isTraitEntity). + + localBehaviorsToVisit do: [ :fmxMBBehavior | self addMethod: (self methodFactory visitBehavioral: fmxMBBehavior builder: builder) protocol: #visiting ]. + + remoteTraits := (localBehaviorsToVisit flatCollect: [ :class | class allTransitiveTraits ] as: Set) \ localBehaviorsToVisit. + + remoteTraits do: [ :fmxMBBehavior | self addMethod: (self methodFactory visitBehavioral: fmxMBBehavior builder: builder) protocol: #visiting ] +] + +{ #category : '*Famix-Visitor-Generation' } +FmxMBChangesBuilderVisitor >> visitVisitor: aTrait [ + + super visitVisitor: aTrait. + + aTrait allLocalTraits ifEmpty: [ + self addMethod: self methodFactory visitEntity protocol: #visiting. + self addMethod: self methodFactory visitCollection protocol: #visiting ]. + + self generateVisitMethodsIn: aTrait +] diff --git a/src/Famix-Visitor-Generation/FmxMBClass.extension.st b/src/Famix-Visitor-Generation/FmxMBClass.extension.st index b0b93c098..3e85e732f 100644 --- a/src/Famix-Visitor-Generation/FmxMBClass.extension.st +++ b/src/Famix-Visitor-Generation/FmxMBClass.extension.st @@ -5,7 +5,7 @@ FmxMBClass >> addTraitsFromGeneralizationsIn: aCollection [ super addTraitsFromGeneralizationsIn: aCollection. - self classGeneralization ifNotNil: [ :superclass | + self superclass ifNotNil: [ :superclass | superclass addTraitsFromGeneralizationsIn: aCollection ]. ^ aCollection @@ -18,7 +18,7 @@ FmxMBClass >> behaviorsToVisit [ behaviorsToVisit := super behaviorsToVisit. "Visit superclass if it is not #FamixXYZEntity" - self classGeneralization ifNotNil: [ :superclass | + self superclass ifNotNil: [ :superclass | superclass name = #Entity ifFalse: [ behaviorsToVisit add: superclass ] ]. @@ -31,7 +31,7 @@ FmxMBClass >> traitsFromGeneralizations [ | traitsFromGeneralizations | traitsFromGeneralizations := super traitsFromGeneralizations. - self classGeneralization ifNotNil: [ :superclass | + self superclass ifNotNil: [ :superclass | superclass addTraitsFromGeneralizationsIn: traitsFromGeneralizations ]. ^ traitsFromGeneralizations diff --git a/src/Famix-Visitor-Generation/FmxMBMethodsFactory.extension.st b/src/Famix-Visitor-Generation/FmxMBMethodsFactory.extension.st new file mode 100644 index 000000000..5b1dd1a75 --- /dev/null +++ b/src/Famix-Visitor-Generation/FmxMBMethodsFactory.extension.st @@ -0,0 +1,107 @@ +Extension { #name : 'FmxMBMethodsFactory' } + +{ #category : '*Famix-Visitor-Generation' } +FmxMBMethodsFactory class >> acceptFor: aName [ + + ^ 'accept: aVisitor + + + ^ aVisitor visit{1}: self' format: { aName } +] + +{ #category : '*Famix-Visitor-Generation' } +FmxMBMethodsFactory class >> visitBehavioral: aBehavioral builder: aBuilder [ + + ^ String streamContents: [ :aStream | + | parameter | + parameter := (aBehavioral name first isVowel + ifTrue: [ 'an' ] + ifFalse: [ 'a' ]) , aBehavioral name capitalized. + aStream << ('visit{1}: {2} + + +' format: { + aBehavioral fullName. + parameter }). + + aBehavioral behaviorsToVisit + do: [ :behavior | "In case we generate the behaviors to visit of a trait, we might reject the visit for some implementors because their superclasses might already visit those behaviors." + aBehavioral isTraitEntity + ifTrue: [ + | concreteUsers | + concreteUsers := aBuilder concreteClasses select: [ :class | class allTransitiveTraits includes: aBehavioral ]. + (concreteUsers select: [ :user | (user allSuperclasses flatCollectAsSet: #allTransitiveTraits) includes: behavior ]) + ifEmpty: [ + aStream << (' self visit{1}: {2}' format: { + behavior fullName. + parameter }) ] + ifNotEmpty: [ :usersToReject | + concreteUsers size = usersToReject size + ifTrue: [ + aStream + nextPutAll: ' "We should visit '; + nextPutAll: behavior fullName; + nextPutAll: ' but all its users in this language already visit it in their superclasses so we skip the call here."' ] + ifFalse: [ + aStream + tab; + nextPutAll: + '"We do not visit all behaviorals because some classes already visit it in their superclasses in this language implementation. Visiting them here also would cause a double visit of this trait."'; + cr; + tab; + nextPutAll: '({ '. + usersToReject do: [ :user | aStream nextPutAll: user fullName ] separatedBy: [ aStream nextPutAll: ' . ' ]. + aStream + nextPutAll: ' } includes: '; + nextPutAll: parameter; + nextPutAll: ' class) + ifFalse: [ self visit'; + nextPutAll: behavior fullName; + nextPutAll: ': '; + nextPutAll: parameter; + nextPutAll: ' ]' ] ] ] + ifFalse: [ + aStream << (' self visit{1}: {2}' format: { + behavior fullName. + parameter }) ] ] + separatedBy: [ + aStream + << '.'; + cr ]; + ifNotEmpty: [ + aBehavioral relations ifNotEmpty: [ + aStream + << $.; + cr; + cr ] ]. + (aBehavioral relations reject: #isContainer) + do: [ :relation | + aStream << (' self visit{1}: {2} {3}' format: { + (relation isOne + ifTrue: [ 'Entity' ] + ifFalse: [ 'Collection' ]). + parameter. + relation name }) ] + separatedBy: [ + aStream + << $.; + cr ] ] +] + +{ #category : '*Famix-Visitor-Generation' } +FmxMBMethodsFactory class >> visitCollection [ + + ^ 'visitCollection: aCollection + + + ^ aCollection collect: [ :each | each accept: self ]' +] + +{ #category : '*Famix-Visitor-Generation' } +FmxMBMethodsFactory class >> visitEntity [ + + ^ 'visitEntity: aFamixEntity + + + ^ aFamixEntity ifNotNil: [ aFamixEntity accept: self ]' +] diff --git a/src/Famix-Visitor-Generation/FmxMBVisitor.extension.st b/src/Famix-Visitor-Generation/FmxMBVisitor.extension.st new file mode 100644 index 000000000..e387c0d84 --- /dev/null +++ b/src/Famix-Visitor-Generation/FmxMBVisitor.extension.st @@ -0,0 +1,7 @@ +Extension { #name : 'FmxMBVisitor' } + +{ #category : '*Famix-Visitor-Generation' } +FmxMBVisitor >> visitVisitor: aTrait [ + + self visitTrait: aTrait +] diff --git a/src/Famix-Visitor-Generation/FmxMBVisitorTrait.class.st b/src/Famix-Visitor-Generation/FmxMBVisitorTrait.class.st index fc9b27130..7a32e70a8 100644 --- a/src/Famix-Visitor-Generation/FmxMBVisitorTrait.class.st +++ b/src/Famix-Visitor-Generation/FmxMBVisitorTrait.class.st @@ -13,12 +13,11 @@ Class { #tag : 'MetamodelBuilder' } -{ #category : 'generating' } -FmxMBVisitorTrait >> acceptMethodProtocol [ +{ #category : 'visitor' } +FmxMBVisitorTrait >> acceptVisitor: aVisitor [ - ^ self packageName == self builder configuration packageName - ifTrue: [ #visitor ] - ifFalse: [ '*' , self packageName ] + + ^ aVisitor visitVisitor: self ] { #category : 'accessing' } @@ -28,94 +27,6 @@ FmxMBVisitorTrait >> comment [ I am generated with the metamodel.' format: { self prefix } ] -{ #category : 'generating' } -FmxMBVisitorTrait >> generate [ - - | aTrait | - self willGenerate ifFalse: [ ^ self ]. - - self builder environment registerPackage: self packageName. - - aTrait := self builder environment - createTraitNamed: self fullName asSymbol - uses: self allTraitNames - slots: self slotDefinitions - in: self packageName - tag: self tag - comment: self comment. - - self realClass: aTrait. - - self generateAnnotationIn: aTrait. - self generateCommonMethodsIfNecessary. - self generateVisitAndAcceptMethods -] - -{ #category : 'generating' } -FmxMBVisitorTrait >> generateAcceptMethodIn: aFmxMBBehavior [ - - self builder environment - compile: ('accept: aVisitor - - - ^ aVisitor visit{1}: self' format: { aFmxMBBehavior fullName }) - in: aFmxMBBehavior realClass - classified: self acceptMethodProtocol -] - -{ #category : 'generation - common' } -FmxMBVisitorTrait >> generateCommonMethodsIfNecessary [ - - self allLocalTraits ifNotEmpty: [ ^ self ]. - - self generateVisitEntityMethod. - self generateVisitCollectionMethod -] - -{ #category : 'generating' } -FmxMBVisitorTrait >> generateVisitAndAcceptMethods [ - - (builder classes reject: [ :fmxMBClass | - fmxMBClass isModelClass or: [ fmxMBClass isMetamodelClassGroup ] ]) - , (builder traits select: [ :fmxTrait | - fmxTrait isMetamodelTrait and: [ fmxTrait isVisitorTrait not ] ]) - do: [ :fmxMBBehavior | - self generateVisitMethodFor: fmxMBBehavior. - self generateAcceptMethodIn: fmxMBBehavior ] -] - -{ #category : 'generation - common' } -FmxMBVisitorTrait >> generateVisitCollectionMethod [ - - self realClass - compile: 'visitCollection: aCollection - - - ^ aCollection collect: [ :each | each accept: self ]' - classified: #visiting -] - -{ #category : 'generation - common' } -FmxMBVisitorTrait >> generateVisitEntityMethod [ - - self realClass - compile: 'visitEntity: aFamixEntity - - - ^ aFamixEntity ifNotNil: [ aFamixEntity accept: self ]' - classified: #visiting -] - -{ #category : 'generation - visit' } -FmxMBVisitorTrait >> generateVisitMethodFor: aFmxMBBehavior [ - - self builder environment - compile: (String streamContents: [ :s | - self writeVisitMethodFor: aFmxMBBehavior on: s ]) - in: self realClass - classified: #visiting -] - { #category : 'initialization' } FmxMBVisitorTrait >> initialize [ @@ -129,62 +40,3 @@ FmxMBVisitorTrait >> isVisitorTrait [ ^ true ] - -{ #category : 'generation - visit' } -FmxMBVisitorTrait >> writeTransitionFor: aFmxMBBehavior on: aStream [ - - aFmxMBBehavior relations ifNotEmpty: [ - aStream - << $.; - cr; - cr ] -] - -{ #category : 'generation - visit' } -FmxMBVisitorTrait >> writeVisitMethodFor: aFmxMBBehavior on: aStream [ - - self writeVisitMethodHeaderFor: aFmxMBBehavior on: aStream. - self writeVisitTraitsAndSuperclassFor: aFmxMBBehavior on: aStream. - self writeVisitRelationsFor: aFmxMBBehavior on: aStream -] - -{ #category : 'generation - visit' } -FmxMBVisitorTrait >> writeVisitMethodHeaderFor: aFmxMBBehavior on: aStream [ - - aStream <<('visit{1}: a{1} - - -' format: { aFmxMBBehavior fullName }) -] - -{ #category : 'generation - visit' } -FmxMBVisitorTrait >> writeVisitRelationsFor: aFmxMBBehavior on: aStream [ - - (aFmxMBBehavior relations reject: [ :relation | relation side isContainer ]) - do: [ :relation | - aStream << (' self visit{1}: a{2} {3}' format: { - (relation side isOne - ifTrue: [ 'Entity' ] - ifFalse: [ 'Collection' ]). - aFmxMBBehavior fullName. - relation side name }) ] - separatedBy: [ - aStream - << $.; - cr ] -] - -{ #category : 'generation - visit' } -FmxMBVisitorTrait >> writeVisitTraitsAndSuperclassFor: aFmxMBBehavior on: aStream [ - - aFmxMBBehavior behaviorsToVisit - do: [ :behavior | - aStream << (' self visit{1}: a{2}' format: { - behavior fullName. - aFmxMBBehavior fullName }) ] - separatedBy: [ - aStream - << '.'; - cr ]; - ifNotEmpty: [ self writeTransitionFor: aFmxMBBehavior on: aStream ] -] diff --git a/src/Famix-Visitor-Generation/MooseObject.extension.st b/src/Famix-Visitor-Generation/MooseObject.extension.st new file mode 100644 index 000000000..674d5061d --- /dev/null +++ b/src/Famix-Visitor-Generation/MooseObject.extension.st @@ -0,0 +1,7 @@ +Extension { #name : 'MooseObject' } + +{ #category : '*Famix-Visitor-Generation' } +MooseObject >> accept: aVisitor [ + + ^ aVisitor perform: ('visit' , self class name , ':') asSymbol with: self +] diff --git a/src/FamixDocumentor-TestMetaModel/FDClass1.class.st b/src/FamixDocumentor-TestMetaModel/FDClass1.class.st index a36ef3c2b..c74fac833 100644 --- a/src/FamixDocumentor-TestMetaModel/FDClass1.class.st +++ b/src/FamixDocumentor-TestMetaModel/FDClass1.class.st @@ -29,7 +29,6 @@ FDClass1 class >> annotation [ - ^ self ] { #category : 'accessing' } diff --git a/src/FamixDocumentor-TestMetaModel/FDClass2.class.st b/src/FamixDocumentor-TestMetaModel/FDClass2.class.st index 3d209e81a..1cdf986f1 100644 --- a/src/FamixDocumentor-TestMetaModel/FDClass2.class.st +++ b/src/FamixDocumentor-TestMetaModel/FDClass2.class.st @@ -12,5 +12,4 @@ FDClass2 class >> annotation [ - ^ self ] diff --git a/src/FamixDocumentor-TestMetaModel/FDEntity.class.st b/src/FamixDocumentor-TestMetaModel/FDEntity.class.st index 485f57c72..a9007cd70 100644 --- a/src/FamixDocumentor-TestMetaModel/FDEntity.class.st +++ b/src/FamixDocumentor-TestMetaModel/FDEntity.class.st @@ -13,7 +13,6 @@ FDEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/FamixDocumentor-TestMetaModel/FDModel.class.st b/src/FamixDocumentor-TestMetaModel/FDModel.class.st index 85f87d786..1fb5ab7ee 100644 --- a/src/FamixDocumentor-TestMetaModel/FDModel.class.st +++ b/src/FamixDocumentor-TestMetaModel/FDModel.class.st @@ -10,7 +10,8 @@ Class { { #category : 'meta' } FDModel class >> annotation [ - + + ] diff --git a/src/FamixDocumentor-TestMetaModel/FDTEntityCreator.trait.st b/src/FamixDocumentor-TestMetaModel/FDTEntityCreator.trait.st index ef66fb375..472208146 100644 --- a/src/FamixDocumentor-TestMetaModel/FDTEntityCreator.trait.st +++ b/src/FamixDocumentor-TestMetaModel/FDTEntityCreator.trait.st @@ -17,7 +17,6 @@ FDTEntityCreator classSide >> annotation [ - ^ self ] { #category : 'entity creation' } diff --git a/src/FamixDocumentor-TestMetaModel/FDTrait1.trait.st b/src/FamixDocumentor-TestMetaModel/FDTrait1.trait.st index dded8fa1c..d48f3dabe 100644 --- a/src/FamixDocumentor-TestMetaModel/FDTrait1.trait.st +++ b/src/FamixDocumentor-TestMetaModel/FDTrait1.trait.st @@ -11,5 +11,4 @@ FDTrait1 classSide >> annotation [ - ^ self ] diff --git a/src/FamixDocumentor-TestMetaModel/FDTrait2.trait.st b/src/FamixDocumentor-TestMetaModel/FDTrait2.trait.st index e2e59cb7b..aeabfbac0 100644 --- a/src/FamixDocumentor-TestMetaModel/FDTrait2.trait.st +++ b/src/FamixDocumentor-TestMetaModel/FDTrait2.trait.st @@ -13,5 +13,4 @@ FDTrait2 classSide >> annotation [ - ^ self ] diff --git a/src/FamixDocumentor-TestMetaModel/FDTrait3.trait.st b/src/FamixDocumentor-TestMetaModel/FDTrait3.trait.st index 5c19e34e3..1391cf264 100644 --- a/src/FamixDocumentor-TestMetaModel/FDTrait3.trait.st +++ b/src/FamixDocumentor-TestMetaModel/FDTrait3.trait.st @@ -13,5 +13,4 @@ FDTrait3 classSide >> annotation [ - ^ self ] diff --git a/src/FamixDocumentor-TestMetaModel/FDTrait4.trait.st b/src/FamixDocumentor-TestMetaModel/FDTrait4.trait.st index 2c4b04bb5..a57b091b9 100644 --- a/src/FamixDocumentor-TestMetaModel/FDTrait4.trait.st +++ b/src/FamixDocumentor-TestMetaModel/FDTrait4.trait.st @@ -37,7 +37,6 @@ FDTrait4 classSide >> annotation [ - ^ self ] { #category : 'adding' } diff --git a/src/Moose-Core-Generator/MooseModelGenerator.class.st b/src/Moose-Core-Generator/MooseModelGenerator.class.st index 71d8903b2..3dec7f64d 100644 --- a/src/Moose-Core-Generator/MooseModelGenerator.class.st +++ b/src/Moose-Core-Generator/MooseModelGenerator.class.st @@ -33,13 +33,11 @@ MooseModelGenerator >> defineClasses [ super defineClasses. obj := builder newClassNamed: #Object. - obj classGeneralization: Object. abstractGroup := builder newClassNamed: #AbstractGroup. group := builder newClassNamed: #Group. specializedGroup := builder newClassNamed: #SpecializedGroup. model := builder newClassNamed: #Model. entity := builder newClassNamed: #Entity - ] { #category : 'definition' } diff --git a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestAttribute.class.st b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestAttribute.class.st index c65263a8e..4adacbe7c 100644 --- a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestAttribute.class.st +++ b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestAttribute.class.st @@ -48,5 +48,4 @@ MooseMSEImporterTestAttribute class >> annotation [ - ^ self ] diff --git a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestClass.class.st b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestClass.class.st index 37754d611..8d6fcfb0e 100644 --- a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestClass.class.st +++ b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestClass.class.st @@ -58,7 +58,6 @@ MooseMSEImporterTestClass class >> annotation [ - ^ self ] { #category : 'printing' } diff --git a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestComment.class.st b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestComment.class.st index 810c12e02..6122eae3e 100644 --- a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestComment.class.st +++ b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestComment.class.st @@ -31,5 +31,4 @@ MooseMSEImporterTestComment class >> annotation [ - ^ self ] diff --git a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestEntity.class.st b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestEntity.class.st index 169988b9d..8d1caff1b 100644 --- a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestEntity.class.st +++ b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestEntity.class.st @@ -13,7 +13,6 @@ MooseMSEImporterTestEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestEntityTyping.class.st b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestEntityTyping.class.st index 8c19fee20..71d707419 100644 --- a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestEntityTyping.class.st +++ b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestEntityTyping.class.st @@ -38,5 +38,4 @@ MooseMSEImporterTestEntityTyping class >> annotation [ - ^ self ] diff --git a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestInheritance.class.st b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestInheritance.class.st index fea6861ce..3897b8e12 100644 --- a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestInheritance.class.st +++ b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestInheritance.class.st @@ -38,5 +38,4 @@ MooseMSEImporterTestInheritance class >> annotation [ - ^ self ] diff --git a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestMethod.class.st b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestMethod.class.st index efbc15fa7..aacc0a2c1 100644 --- a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestMethod.class.st +++ b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestMethod.class.st @@ -59,5 +59,4 @@ MooseMSEImporterTestMethod class >> annotation [ - ^ self ] diff --git a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestModel.class.st b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestModel.class.st index 3f5bbd6e1..1c6a6f3bc 100644 --- a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestModel.class.st +++ b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestModel.class.st @@ -16,7 +16,8 @@ MooseMSEImporterTestModel class >> allSubmetamodelsPackagesNames [ { #category : 'meta' } MooseMSEImporterTestModel class >> annotation [ - + + ] diff --git a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestNamedEntity.class.st b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestNamedEntity.class.st index bda41aaf3..561d19366 100644 --- a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestNamedEntity.class.st +++ b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestNamedEntity.class.st @@ -24,7 +24,6 @@ MooseMSEImporterTestNamedEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestNamespace.class.st b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestNamespace.class.st index 2015d13b2..a79e2e1fc 100644 --- a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestNamespace.class.st +++ b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestNamespace.class.st @@ -38,5 +38,4 @@ MooseMSEImporterTestNamespace class >> annotation [ - ^ self ] diff --git a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestPackage.class.st b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestPackage.class.st index 930877efc..0a1383a5d 100644 --- a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestPackage.class.st +++ b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestPackage.class.st @@ -44,5 +44,4 @@ MooseMSEImporterTestPackage class >> annotation [ - ^ self ] diff --git a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestPrimitiveType.class.st b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestPrimitiveType.class.st index 97da9a215..574501c64 100644 --- a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestPrimitiveType.class.st +++ b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestPrimitiveType.class.st @@ -44,5 +44,4 @@ MooseMSEImporterTestPrimitiveType class >> annotation [ - ^ self ] diff --git a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestSourceAnchor.class.st b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestSourceAnchor.class.st index a4fe4c712..217d2f5e3 100644 --- a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestSourceAnchor.class.st +++ b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestSourceAnchor.class.st @@ -27,7 +27,6 @@ MooseMSEImporterTestSourceAnchor class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestSourceLanguage.class.st b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestSourceLanguage.class.st index 0cd9a885a..4a1805eed 100644 --- a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestSourceLanguage.class.st +++ b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestSourceLanguage.class.st @@ -26,5 +26,4 @@ MooseMSEImporterTestSourceLanguage class >> annotation [ - ^ self ] diff --git a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestSourceTextAnchor.class.st b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestSourceTextAnchor.class.st index 310a7456b..ea6200a56 100644 --- a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestSourceTextAnchor.class.st +++ b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestSourceTextAnchor.class.st @@ -32,5 +32,4 @@ MooseMSEImporterTestSourceTextAnchor class >> annotation [ - ^ self ] diff --git a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestSourcedEntity.class.st b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestSourcedEntity.class.st index 01c7d7eb9..c2742f607 100644 --- a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestSourcedEntity.class.st +++ b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestSourcedEntity.class.st @@ -27,7 +27,6 @@ MooseMSEImporterTestSourcedEntity class >> annotation [ - ^ self ] { #category : 'testing' } diff --git a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestTEntityCreator.trait.st b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestTEntityCreator.trait.st index 44402a4fe..172553808 100644 --- a/src/Moose-Core-Tests-Entities/MooseMSEImporterTestTEntityCreator.trait.st +++ b/src/Moose-Core-Tests-Entities/MooseMSEImporterTestTEntityCreator.trait.st @@ -17,7 +17,6 @@ MooseMSEImporterTestTEntityCreator classSide >> annotation [ - ^ self ] { #category : 'entity creation' } diff --git a/src/Moose-Core/FamixImportingContext.class.st b/src/Moose-Core/FamixImportingContext.class.st index 9cf5c1bf6..84cfa6540 100644 --- a/src/Moose-Core/FamixImportingContext.class.st +++ b/src/Moose-Core/FamixImportingContext.class.st @@ -32,6 +32,13 @@ FamixImportingContext class >> allMetamodelConcreteEntities [ fm3Trait name = #TAssociation ] ] ] ] ] +{ #category : 'testing' } +FamixImportingContext class >> canBeGenerated [ + "My subclasses are generated." + + ^ self ~= FamixImportingContext +] + { #category : 'accessing' } FamixImportingContext class >> fm3ClassNamed: aName [ diff --git a/src/Moose-Core/MooseAbstractGroup.class.st b/src/Moose-Core/MooseAbstractGroup.class.st index 342fef91d..5c05ba895 100644 --- a/src/Moose-Core/MooseAbstractGroup.class.st +++ b/src/Moose-Core/MooseAbstractGroup.class.st @@ -8,8 +8,6 @@ It stores the contained entities in a storage variable that points to a MooseGro Class { #name : 'MooseAbstractGroup', #superclass : 'MooseObject', - #traits : 'TMooseGroupDependencyQueries', - #classTraits : 'TMooseGroupDependencyQueries classTrait', #instVars : [ 'storage' ], @@ -684,6 +682,42 @@ MooseAbstractGroup >> printOn: aStream [ aStream nextPut: $) ] +{ #category : 'querying' } +MooseAbstractGroup >> queryAllIncoming [ + + ^ MooseIncomingQueryResult on: self withAll: (self entities flatCollect: [ :m | m queryAllIncoming ]) +] + +{ #category : 'querying' } +MooseAbstractGroup >> queryAllOutgoing [ + + ^ MooseOutgoingQueryResult on: self withAll: (self entities flatCollect: [ :m | m queryAllOutgoing ]) +] + +{ #category : 'querying' } +MooseAbstractGroup >> queryIncoming: aFAMIXClassAssociation [ + + ^ MooseIncomingQueryResult on: self withAll: (self entities flatCollect: [ :m | m queryIncoming: aFAMIXClassAssociation ]) +] + +{ #category : 'querying' } +MooseAbstractGroup >> queryLocalIncoming: aFAMIXClassAssociation [ + + ^ MooseIncomingQueryResult on: self withAll: (self entities flatCollect: [ :m | m queryLocalIncoming: aFAMIXClassAssociation ]) +] + +{ #category : 'querying' } +MooseAbstractGroup >> queryLocalOutgoing: aFAMIXClassAssociation [ + + ^ MooseOutgoingQueryResult on: self withAll: (self entities flatCollect: [ :m | m queryLocalOutgoing: aFAMIXClassAssociation ]) +] + +{ #category : 'querying' } +MooseAbstractGroup >> queryOutgoing: aFAMIXClassAssociation [ + + ^ MooseOutgoingQueryResult on: self withAll: (self entities flatCollect: [ :m | m queryOutgoing: aFAMIXClassAssociation ]) +] + { #category : 'groups' } MooseAbstractGroup >> rawAllUsing: aTrait [ "This is an optimization of #allUsing: when we do not need to manipulate a MooseGroup as result." diff --git a/src/Moose-Core/MooseModel.class.st b/src/Moose-Core/MooseModel.class.st index f24d325cd..7e2f7d106 100644 --- a/src/Moose-Core/MooseModel.class.st +++ b/src/Moose-Core/MooseModel.class.st @@ -30,6 +30,13 @@ MooseModel class >> annotation [ ] +{ #category : 'testing' } +MooseModel class >> canBeGenerated [ + "Models are generated." + + ^ true +] + { #category : 'testing' } MooseModel class >> canBeImportedFromFile [ diff --git a/src/Moose-Query/TAssociationMetaLevelDependency.trait.st b/src/Moose-Query/TAssociationMetaLevelDependency.trait.st index b77b400ae..468b68848 100644 --- a/src/Moose-Query/TAssociationMetaLevelDependency.trait.st +++ b/src/Moose-Query/TAssociationMetaLevelDependency.trait.st @@ -16,7 +16,6 @@ TAssociationMetaLevelDependency classSide >> annotation [ - ^ self ] { #category : 'accessing' } diff --git a/src/Moose-Query/TEntityMetaLevelDependency.trait.st b/src/Moose-Query/TEntityMetaLevelDependency.trait.st index 40f9cc568..94353216d 100644 --- a/src/Moose-Query/TEntityMetaLevelDependency.trait.st +++ b/src/Moose-Query/TEntityMetaLevelDependency.trait.st @@ -94,7 +94,6 @@ TEntityMetaLevelDependency classSide >> annotation [ - ^ self ] { #category : 'accessing' }