From d314ccc9239ba478fb898174859de04a1f9a8d99 Mon Sep 17 00:00:00 2001 From: CyrilFerlicot Date: Tue, 11 Nov 2025 20:04:52 +0100 Subject: [PATCH 1/9] Ignore mac files --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 178d87a..779b537 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,5 @@ SqueakDebug.log # Metacello-github cache /github-cache github-*.zip + +**/.DS_Store From 291b777e1cf82515f5ffa0c9a325a5ed226b19f4 Mon Sep 17 00:00:00 2001 From: CyrilFerlicot Date: Tue, 11 Nov 2025 20:06:34 +0100 Subject: [PATCH 2/9] Enable CI for more recent Pharo versions --- .github/workflows/continuous.yml | 4 ++-- README.md | 20 ++++++++++++-------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/.github/workflows/continuous.yml b/.github/workflows/continuous.yml index 4181530..70eac6c 100644 --- a/.github/workflows/continuous.yml +++ b/.github/workflows/continuous.yml @@ -9,10 +9,10 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} strategy: matrix: - smalltalk: [ Pharo64-7.0, Pharo64-8.0, Pharo64-9.0, Pharo64-10, Pharo64-11 ] + smalltalk: [ Pharo64-7.0, Pharo64-8.0, Pharo64-9.0, Pharo64-10, Pharo64-11, Pharo64-12, Pharo64-13, Pharo64-14 ] name: ${{ matrix.smalltalk }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: hpi-swa/setup-smalltalkCI@v1 with: smalltalk-image: ${{ matrix.smalltalk }} diff --git a/README.md b/README.md index 6196d2b..9137cce 100644 --- a/README.md +++ b/README.md @@ -7,15 +7,19 @@ [![Pharo version](https://img.shields.io/badge/Pharo-9.0-%23aac9ff.svg)](https://pharo.org/download) [![Pharo version](https://img.shields.io/badge/Pharo-10-%23aac9ff.svg)](https://pharo.org/download) [![Pharo version](https://img.shields.io/badge/Pharo-11-%23aac9ff.svg)](https://pharo.org/download) +[![Pharo version](https://img.shields.io/badge/Pharo-12-%23aac9ff.svg)](https://pharo.org/download) +[![Pharo version](https://img.shields.io/badge/Pharo-13-%23aac9ff.svg)](https://pharo.org/download) +[![Pharo version](https://img.shields.io/badge/Pharo-14-%23aac9ff.svg)](https://pharo.org/download) Chanel is a code cleaner for Pharo. -- [Installation](#installation) -- [Quick start](#quick-start) -- [Documentation](#documentation) -- [Version management](#version-management) -- [Smalltalk versions compatibility](#smalltalk-versions-compatibility) -- [Contact](#contact) +- [Chanel ](#chanel-) + - [Installation](#installation) + - [Quick start](#quick-start) + - [Documentation](#documentation) + - [Version management](#version-management) + - [Smalltalk versions compatibility](#smalltalk-versions-compatibility) + - [Contact](#contact) ## Installation @@ -91,8 +95,8 @@ Thus, it should be safe to depend on a fixed major version and moving minor vers | Version | Compatible Pharo versions | |------------- |--------------------------- | -| 1.x.x | Pharo 70, 80, 90, 10, 11 | +| 1.x.x | Pharo 70, 80, 90, 10, 11, 12, 13, 14 | ## Contact -If you have any questions or problems do not hesitate to open an issue or contact cyril (a) ferlicot.me +If you have any questions or problems do not hesitate to open an issue or contact cyril (a) ferlicot.fr From 43e84567ed8a101a8f4fc772e330da5f2fb686f7 Mon Sep 17 00:00:00 2001 From: CyrilFerlicot Date: Tue, 11 Nov 2025 21:16:09 +0100 Subject: [PATCH 3/9] Update RenameClassRefctoring class name for P12+ --- src/Chanel/ChanelTestCaseNameCleaner.class.st | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Chanel/ChanelTestCaseNameCleaner.class.st b/src/Chanel/ChanelTestCaseNameCleaner.class.st index cb51c70..f9b3c97 100644 --- a/src/Chanel/ChanelTestCaseNameCleaner.class.st +++ b/src/Chanel/ChanelTestCaseNameCleaner.class.st @@ -20,7 +20,14 @@ ChanelTestCaseNameCleaner >> clean [ { #category : #cleaning } ChanelTestCaseNameCleaner >> rename: class as: aString [ + + | refactoringClass parameter | ('Renaming ' , class name , ' to ' , aString) record. self flag: #pharo10. - (RBRenameClassRefactoring rename: (SystemVersion current major < 10 ifTrue: [ class ] ifFalse: [ class name ]) to: aString) execute + self flag: #pharo11. + parameter := SystemVersion current major < 10 + ifTrue: [ class ] + ifFalse: [ class name ]. + refactoringClass := self class environment at: #RBRenameClassRefactoring ifAbsent: [ self class environment at: #ReRenameClassRefactoring ]. + (refactoringClass rename: parameter to: aString) execute ] From ac8348e1c04b6bd67d63b2887af8ac58d0059670 Mon Sep 17 00:00:00 2001 From: CyrilFerlicot Date: Tue, 11 Nov 2025 21:36:05 +0100 Subject: [PATCH 4/9] Fix P12 tests --- .../ChanelAbstractCleanerTest.class.st | 47 +++++----- src/Chanel-Tests/ChanelAbstractTest.class.st | 13 +-- ...ifyUnclassifiedMethodsCleanerTest.class.st | 21 ++--- .../ChanelCleanersOrderTest.class.st | 51 +++++------ ...CutConditionalBranchesCleanerTest.class.st | 63 +++++++------- ...licatedMethodFromTraitCleanerTest.class.st | 25 +++--- ...yConditionalSimplifierCleanerTest.class.st | 57 +++++++------ ...nelEnsureSuperIsCalledCleanerTest.class.st | 49 +++++------ ...tAssignationsFromConditionalsTest.class.st | 69 ++++++++------- ...tReturnFromAllBranchesCleanerTest.class.st | 51 +++++------ .../ChanelMethodAliasesCleanerTest.class.st | 31 +++---- .../ChanelMethodRewriterCleanerTest.class.st | 29 ++++--- ...ethodsOnlyCallingSuperCleanerTest.class.st | 31 +++---- ...ssignationInInitializeCleanerTest.class.st | 27 +++--- ...lConditionalSimplifierCleanerTest.class.st | 33 +++---- ...lNilEqualitySimplifierCleanerTest.class.st | 23 ++--- .../ChanelProtocolsCleanerTest.class.st | 45 +++++----- ...AssigmentWithoutEffectCleanerTest.class.st | 25 +++--- ...EquivalentInSuperClassCleanerTest.class.st | 25 +++--- ...anelRemoveUnecesaryNotCleanerTest.class.st | 85 ++++++++++--------- ...moveUnusedNodesFromASTCleanerTest.class.st | 66 +++++++------- src/Chanel-Tests/ChanelTest.class.st | 9 +- .../ChanelTestCaseNameCleanerTest.class.st | 21 ++--- ...nelTestEmptyAssertionsCleanerTest.class.st | 33 +++---- .../ChanelTestEqualityCleanerTest.class.st | 67 ++++++++------- .../ChanelUnreadTemporaryCleanerTest.class.st | 29 ++++--- src/Chanel-Tests/package.st | 2 +- 27 files changed, 532 insertions(+), 495 deletions(-) diff --git a/src/Chanel-Tests/ChanelAbstractCleanerTest.class.st b/src/Chanel-Tests/ChanelAbstractCleanerTest.class.st index 6e5473a..96cfa92 100644 --- a/src/Chanel-Tests/ChanelAbstractCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelAbstractCleanerTest.class.st @@ -11,35 +11,36 @@ List of special cases to take into account when writing a new cleaner (add tests - Be careful of methods with pragmas which can be special cases. (for example, do not remove empty methods with a pragma) " Class { - #name : #ChanelAbstractCleanerTest, - #superclass : #ChanelAbstractTest, + #name : 'ChanelAbstractCleanerTest', + #superclass : 'ChanelAbstractTest', #instVars : [ 'previousFormater', 'package', 'class', 'extensionPackage' ], - #category : #'Chanel-Tests' + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #testing } +{ #category : 'testing' } ChanelAbstractCleanerTest class >> isAbstract [ ^ self = ChanelAbstractCleanerTest ] -{ #category : #accessing } +{ #category : 'accessing' } ChanelAbstractCleanerTest >> actualClass [ ^ self class environment at: (self class name withoutSuffix: 'Test') asSymbol ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelAbstractCleanerTest >> assert: original isRewrittenAs: expected [ class ifNil: [ self error: 'To use this method you need to setup the class variable' ]. self assert: original isRewrittenAs: expected in: class ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelAbstractCleanerTest >> assert: original isRewrittenAs: expected in: aClass [ aClass compile: (self methodBodyFor: original). @@ -48,27 +49,27 @@ ChanelAbstractCleanerTest >> assert: original isRewrittenAs: expected in: aClass self assert: (aClass >> self selector) sourceCode equals: (self methodBodyFor: expected) ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelAbstractCleanerTest >> createClassNamed: aSymbol [ ^ self createSubclassOf: Object named: aSymbol ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelAbstractCleanerTest >> createDefaultClass [ ^ self createClassNamed: self defaultClassName ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelAbstractCleanerTest >> createDefaultTestClass [ ^ self createTestCaseNamed: self defaultClassName ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelAbstractCleanerTest >> createDefaultTrait [ ^ self createTraitNamed: self defaultTraitName ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelAbstractCleanerTest >> createSubclassOf: aClass named: aSymbol [ ^ aClass subclass: aSymbol @@ -77,27 +78,27 @@ ChanelAbstractCleanerTest >> createSubclassOf: aClass named: aSymbol [ package: package name ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelAbstractCleanerTest >> createTestCaseNamed: aSymbol [ ^ self createSubclassOf: TestCase named: aSymbol ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelAbstractCleanerTest >> createTraitNamed: aSymbol [ ^ Trait named: aSymbol uses: {} package: package name ] -{ #category : #accessing } +{ #category : 'accessing' } ChanelAbstractCleanerTest >> defaultClassName [ ^ (self class name , 'Fake') asSymbol ] -{ #category : #accessing } +{ #category : 'accessing' } ChanelAbstractCleanerTest >> defaultTraitName [ ^ ('T' , self defaultClassName) asSymbol ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelAbstractCleanerTest >> denyIsRewritten: aString [ | oldMethod | class ifNil: [ self error: 'To use this method you need to setup the class variable' ]. @@ -112,28 +113,28 @@ ChanelAbstractCleanerTest >> denyIsRewritten: aString [ self assert: class >> self selector identicalTo: oldMethod ] -{ #category : #running } +{ #category : 'running' } ChanelAbstractCleanerTest >> extensionProtocolName [ ^ '*' , extensionPackage name ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelAbstractCleanerTest >> methodBodyFor: aString [ ^ '{1} {2}' format: {self selector . aString} ] -{ #category : #running } +{ #category : 'running' } ChanelAbstractCleanerTest >> runCleaner [ Chanel perfume: {package} using: {self actualClass} ] -{ #category : #running } +{ #category : 'running' } ChanelAbstractCleanerTest >> runCleanerForPharo: anInteger [ Chanel perfume: {package} using: {self actualClass} forPharo: anInteger ] -{ #category : #running } +{ #category : 'running' } ChanelAbstractCleanerTest >> setUp [ super setUp. @@ -149,7 +150,7 @@ ChanelAbstractCleanerTest >> setUp [ RBProgramNode formatterClass: RBSimpleFormatter ] -{ #category : #running } +{ #category : 'running' } ChanelAbstractCleanerTest >> tearDown [ "I do not use the #package variable because sometime the tear down fail and I want to relaunch one test to clean the system." diff --git a/src/Chanel-Tests/ChanelAbstractTest.class.st b/src/Chanel-Tests/ChanelAbstractTest.class.st index 8838b58..9cf2160 100644 --- a/src/Chanel-Tests/ChanelAbstractTest.class.st +++ b/src/Chanel-Tests/ChanelAbstractTest.class.st @@ -1,20 +1,21 @@ Class { - #name : #ChanelAbstractTest, - #superclass : #TestCase, - #category : #'Chanel-Tests' + #name : 'ChanelAbstractTest', + #superclass : 'TestCase', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #testing } +{ #category : 'testing' } ChanelAbstractTest class >> isAbstract [ ^ self = ChanelAbstractTest ] -{ #category : #testing } +{ #category : 'testing' } ChanelAbstractTest class >> shouldInheritSelectors [ ^ true ] -{ #category : #running } +{ #category : 'running' } ChanelAbstractTest >> runCase [ EpMonitor disableDuring: [ super runCase ] ] diff --git a/src/Chanel-Tests/ChanelClassifyUnclassifiedMethodsCleanerTest.class.st b/src/Chanel-Tests/ChanelClassifyUnclassifiedMethodsCleanerTest.class.st index 7b3155e..c45c5cb 100644 --- a/src/Chanel-Tests/ChanelClassifyUnclassifiedMethodsCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelClassifyUnclassifiedMethodsCleanerTest.class.st @@ -2,18 +2,19 @@ A ChanelClassifyUnclassifiedMethodsCleanerTest is a test class for testing the behavior of ChanelClassifyUnclassifiedMethodsCleaner " Class { - #name : #ChanelClassifyUnclassifiedMethodsCleanerTest, - #superclass : #ChanelAbstractCleanerTest, - #category : #'Chanel-Tests' + #name : 'ChanelClassifyUnclassifiedMethodsCleanerTest', + #superclass : 'ChanelAbstractCleanerTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #running } +{ #category : 'running' } ChanelClassifyUnclassifiedMethodsCleanerTest >> setUp [ super setUp. class := self createDefaultClass ] -{ #category : #tests } +{ #category : 'tests' } ChanelClassifyUnclassifiedMethodsCleanerTest >> testCannotCategorizeUncategorizedMethodNotPresentInProtocolOrganizer [ class compile: 'badetitou'. @@ -24,7 +25,7 @@ ChanelClassifyUnclassifiedMethodsCleanerTest >> testCannotCategorizeUncategorize self assert: (class >> #badetitou) protocolName equals: 'as yet unclassified' ] -{ #category : #tests } +{ #category : 'tests' } ChanelClassifyUnclassifiedMethodsCleanerTest >> testCategorizeUncategorizedClassMethod [ class class compile: 'initialize'. @@ -35,7 +36,7 @@ ChanelClassifyUnclassifiedMethodsCleanerTest >> testCategorizeUncategorizedClass self deny: (class class >> #initialize) protocolName equals: 'as yet unclassified' ] -{ #category : #tests } +{ #category : 'tests' } ChanelClassifyUnclassifiedMethodsCleanerTest >> testCategorizeUncategorizedMethod [ class compile: 'initialize'. @@ -46,7 +47,7 @@ ChanelClassifyUnclassifiedMethodsCleanerTest >> testCategorizeUncategorizedMetho self deny: (class >> #initialize) protocolName equals: 'as yet unclassified' ] -{ #category : #tests } +{ #category : 'tests' } ChanelClassifyUnclassifiedMethodsCleanerTest >> testCategorizeUncategorizedMethodFromTrait [ class := self createDefaultTrait. @@ -59,7 +60,7 @@ ChanelClassifyUnclassifiedMethodsCleanerTest >> testCategorizeUncategorizedMetho self deny: (class >> #initialize) protocolName equals: 'as yet unclassified' ] -{ #category : #tests } +{ #category : 'tests' } ChanelClassifyUnclassifiedMethodsCleanerTest >> testDontCategorizeCategorizedMethod [ class compile: 'initialize' classified: 'peacock'. @@ -68,7 +69,7 @@ ChanelClassifyUnclassifiedMethodsCleanerTest >> testDontCategorizeCategorizedMet self assert: (class >> #initialize) protocolName equals: 'peacock' ] -{ #category : #tests } +{ #category : 'tests' } ChanelClassifyUnclassifiedMethodsCleanerTest >> testDontCategorizeExtensionMethods [ class compile: 'initialize' classified: self extensionProtocolName. diff --git a/src/Chanel-Tests/ChanelCleanersOrderTest.class.st b/src/Chanel-Tests/ChanelCleanersOrderTest.class.st index 8210dfd..321e5eb 100644 --- a/src/Chanel-Tests/ChanelCleanersOrderTest.class.st +++ b/src/Chanel-Tests/ChanelCleanersOrderTest.class.st @@ -1,10 +1,11 @@ Class { - #name : #ChanelCleanersOrderTest, - #superclass : #ChanelAbstractCleanerTest, - #category : #'Chanel-Tests' + #name : 'ChanelCleanersOrderTest', + #superclass : 'ChanelAbstractCleanerTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> assert: original isRewrittenAs: expected using: cleaners [ class compile: (self methodBodyFor: original). @@ -13,13 +14,13 @@ ChanelCleanersOrderTest >> assert: original isRewrittenAs: expected using: clean self assert: (class >> self selector) sourceCode equals: (self methodBodyFor: expected) ] -{ #category : #running } +{ #category : 'running' } ChanelCleanersOrderTest >> setUp [ super setUp. class := self createDefaultClass ] -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> testAliasAndExtractAssignationBeforeNilConditionalsBeforeCutConditionalBranches [ self assert: 'self patate notNil ifFalse: [ test := nil ] ifTrue: [ test := 3 ].' @@ -29,7 +30,7 @@ ChanelCleanersOrderTest >> testAliasAndExtractAssignationBeforeNilConditionalsBe ChanelMethodAliasesCleaner} ] -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> testAliasAndExtractReturnBeforeNilConditionalsBeforeCutConditionalBranches [ self assert: 'self patate notNil ifFalse: [ ^ nil ] ifTrue: [ ^ 3 ].' @@ -39,7 +40,7 @@ ChanelCleanersOrderTest >> testAliasAndExtractReturnBeforeNilConditionalsBeforeC ChanelMethodAliasesCleaner} ] -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> testAliasBeforeEmptyAssertions [ "The alias cleaner needs to run before the empty assertions cleaner." @@ -48,35 +49,35 @@ ChanelCleanersOrderTest >> testAliasBeforeEmptyAssertions [ self assert: 'self assert: #() notEmpty' isRewrittenAs: 'self denyEmpty: #()' using: {ChanelTestEmptyAssertionsCleaner . ChanelMethodAliasesCleaner} ] -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> testAliasBeforeEmptyConditionals [ "The alias cleaner needs to run before the empty conditionals cleaner." self assert: '#() notEmpty ifTrue: [ 1 ]' isRewrittenAs: '#() ifNotEmpty: [ 1 ]' using: {ChanelEmptyConditionalSimplifierCleaner . ChanelMethodAliasesCleaner} ] -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> testAliasBeforeNilConditionals [ "The alias cleaner needs to run before the nil conditionals cleaner." self assert: '10 notNil ifTrue: [ 1 ]' isRewrittenAs: '10 ifNotNil: [ 1 ]' using: {ChanelNilConditionalSimplifierCleaner . ChanelMethodAliasesCleaner} ] -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> testAliasBeforeNilConditionalsBeforeCutConditionalBranches [ "The alias cleaner needs to run before the nil conditionals cleaner which need to run before the cut conditional branches." self assert: '10 notNil ifFalse: [ nil ]' isRewrittenAs: '10' using: {ChanelNilConditionalSimplifierCleaner . ChanelCutConditionalBranchesCleaner . ChanelMethodAliasesCleaner} ] -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> testAliasBeforeNilConditionalsBeforeCutConditionalBranches2 [ "The alias cleaner needs to run before the nil conditionals cleaner which need to run before the cut conditional branches." self assert: '10 notNil ifFalse: nil' isRewrittenAs: '10' using: {ChanelNilConditionalSimplifierCleaner . ChanelCutConditionalBranchesCleaner . ChanelMethodAliasesCleaner} ] -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> testAliasBeforeNilConditionalsBeforeCutConditionalBranchesBeforeUnreadTemporaries [ "The alias cleaner needs to run before the nil conditionals cleaner which need to run before the cut conditional branches which needs to run before the remove unused temporaries." @@ -92,38 +93,38 @@ ChanelCleanersOrderTest >> testAliasBeforeNilConditionalsBeforeCutConditionalBra using: {ChanelNilConditionalSimplifierCleaner . ChanelUnreadTemporaryCleaner . ChanelCutConditionalBranchesCleaner . ChanelMethodAliasesCleaner} ] -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> testAliasBeforeNilConditionalsBeforeCutConditionalsBeforeRemoveUselessAsignment [ self assert: 'test := test notNil ifTrue: [ test ]' isRewrittenAs: '' using: { ChanelCutConditionalBranchesCleaner . ChanelMethodAliasesCleaner . ChanelNilConditionalSimplifierCleaner . ChanelRemoveAssigmentWithoutEffectCleaner } ] -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> testAliasBeforeUnecessaryNot [ self assert: 'self toto notEmpty not' isRewrittenAs: 'self toto isEmpty' using: {ChanelRemoveUnecesaryNotCleaner . ChanelMethodAliasesCleaner} ] -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> testAliasBeforeUnecessaryNotBeforeEmptyAssertions [ class := self createDefaultTestClass. self assert: 'self assert: #() notEmpty not' isRewrittenAs: 'self assertEmpty: #()' using: {ChanelRemoveUnecesaryNotCleaner . ChanelMethodAliasesCleaner. ChanelTestEmptyAssertionsCleaner} ] -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> testAliasBeforeUnecessaryNotBeforeEmptySimplifier [ self assert: 'self toto notEmpty not ifTrue: [ 1 ]' isRewrittenAs: 'self toto ifEmpty: [ 1 ]' using: {ChanelRemoveUnecesaryNotCleaner . ChanelMethodAliasesCleaner . ChanelEmptyConditionalSimplifierCleaner} ] -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> testAliasBeforeUnecessaryNotBeforeNilSimplifier [ self assert: 'self toto notNil not ifTrue: [ 1 ]' isRewrittenAs: 'self toto ifNil: [ 1 ]' using: {ChanelRemoveUnecesaryNotCleaner . ChanelMethodAliasesCleaner . ChanelNilConditionalSimplifierCleaner} ] -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> testCutConditionalsBeforeRemoveUselessAssignment [ self assert: 'test := test ifNotNil: [ test ]' isRewrittenAs: '' using: { ChanelCutConditionalBranchesCleaner . ChanelRemoveAssigmentWithoutEffectCleaner } ] -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> testExtractReturnBeforeCutConditionals [ self assert: 'self toto ifNil: [ ^ 1 ] ifNotNil: [ :e | ^ e ]' @@ -131,7 +132,7 @@ ChanelCleanersOrderTest >> testExtractReturnBeforeCutConditionals [ using: {ChanelCutConditionalBranchesCleaner . ChanelExtractReturnFromAllBranchesCleaner} ] -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> testExtractassignationBeforeCutConditionals [ self assert: 'self toto ifNil: [ test := 1 ] ifNotNil: [ :e | test := e ]' @@ -139,27 +140,27 @@ ChanelCleanersOrderTest >> testExtractassignationBeforeCutConditionals [ using: {ChanelCutConditionalBranchesCleaner . ChanelExtractAssignationsFromConditionals} ] -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> testNilEqualityBeforeNilConditionals [ "The alias cleaner needs to run before the nil conditionals cleaner." self assert: '(10 ~= nil) ifTrue: [ 1 ]' isRewrittenAs: '10 ifNotNil: [ 1 ]' using: {ChanelNilConditionalSimplifierCleaner . ChanelNilEqualitySimplifierCleaner} ] -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> testNilEqualityBeforeNilConditionalsBeforeCutConditionalBranches [ "The nil equality cleaner needs to run before the nil conditionals cleaner which need to run before the cut conditional branches." self assert: '(10 ~= nil) ifFalse: [ nil ]' isRewrittenAs: '10' using: {ChanelNilConditionalSimplifierCleaner . ChanelCutConditionalBranchesCleaner . ChanelNilEqualitySimplifierCleaner} ] -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> testUnecessaryNotBeforeTestEquality [ class := self createDefaultTestClass. self assert: 'self assert: x equals: true not' isRewrittenAs: 'self deny: x' using: {ChanelRemoveUnecesaryNotCleaner . ChanelTestEqualityCleaner } ] -{ #category : #tests } +{ #category : 'tests' } ChanelCleanersOrderTest >> testUnreadTemporariesBeforeUselessASTNodes [ "The cleaner removing the useless AST nodes need to run after the cleaner removing unread temporaries because it will remove more nodes that way." diff --git a/src/Chanel-Tests/ChanelCutConditionalBranchesCleanerTest.class.st b/src/Chanel-Tests/ChanelCutConditionalBranchesCleanerTest.class.st index 350aea0..afda924 100644 --- a/src/Chanel-Tests/ChanelCutConditionalBranchesCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelCutConditionalBranchesCleanerTest.class.st @@ -2,53 +2,54 @@ A ChanelCutConditionalBranchesCleanerTest is a test class for testing the behavior of ChanelCutConditionalBranchesCleaner " Class { - #name : #ChanelCutConditionalBranchesCleanerTest, - #superclass : #ChanelMethodRewriterCleanerTest, - #category : #'Chanel-Tests' + #name : 'ChanelCutConditionalBranchesCleanerTest', + #superclass : 'ChanelMethodRewriterCleanerTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #helpers } +{ #category : 'helpers' } ChanelCutConditionalBranchesCleanerTest >> expressionWithNoReplacement [ ^ '10 ifNotNil: [ false ]' ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelCutConditionalBranchesCleanerTest >> replacementPair [ ^ '10 ifNil: [ nil ]' -> '10' ] -{ #category : #running } +{ #category : 'running' } ChanelCutConditionalBranchesCleanerTest >> setUp [ super setUp. class := self createDefaultClass ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testAtIfPresentIfAbsent [ self assert: 'self toto at: 2 ifPresent: [ :e | e ] ifAbsent: [ 3 ]' isRewrittenAs: 'self toto at: 2 ifAbsent: [ 3 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testAtIfPresentIfAbsent2 [ self assert: 'self toto at: 2 ifPresent: [ :e | self toto at: 2 ] ifAbsent: [ 3 ]' isRewrittenAs: 'self toto at: 2 ifAbsent: [ 3 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testAtIfPresentIfAbsent3 [ self assert: 'self toto at: 2 ifPresent: [ self toto at: 2 ] ifAbsent: [ 3 ]' isRewrittenAs: 'self toto at: 2 ifAbsent: [ 3 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testDetectIfFoundIfNone [ self assert: '#() detect: #odd ifFound: [ :e | e ] ifNone: [ self toto ]' isRewrittenAs: '#() detect: #odd ifNone: [ self toto ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testDetectIfFoundIfNoneNotReplacedIfThereIsAReturn [ self denyIsRewritten: '#() detect: #odd ifFound: [ :e | ^ e ] ifNone: [ self toto ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testDoesNotReplaceIfItIntroduceAnInfinitLoop [ | oldMethod | class @@ -69,97 +70,97 @@ ChanelCutConditionalBranchesCleanerTest >> testDoesNotReplaceIfItIntroduceAnInfi self assert: class >> #ifNotNil: identicalTo: oldMethod ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testIfEmptyIfNotEmpty [ self assert: 'self toto ifEmpty: [ false ] ifNotEmpty: [ self toto ]' isRewrittenAs: 'self toto ifEmpty: [ false ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testIfEmptyIfNotEmpty2 [ self assert: 'self toto ifEmpty: [ false ] ifNotEmpty: [ :e | e ]' isRewrittenAs: 'self toto ifEmpty: [ false ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testIfFalseIfTrue [ self assert: 'true ifFalse: [ false ] ifTrue: [ true ]' isRewrittenAs: 'true' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testIfFalseIfTrue2 [ self assert: 'true ifFalse: [ true ] ifTrue: [ false ]' isRewrittenAs: 'true not' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testIfNil [ self assert: '10 ifNil: [ nil ]' isRewrittenAs: '10' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testIfNil2 [ self assert: '10 ifNil: nil' isRewrittenAs: '10' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testIfNilIfNotNil [ self assert: '10 ifNil: [ nil ] ifNotNil: #even' isRewrittenAs: '10 ifNotNil: #even' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testIfNilIfNotNil2 [ self assert: '10 ifNil: nil ifNotNil: #even' isRewrittenAs: '10 ifNotNil: #even' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testIfNilIfNotNilReturningReceiver [ self assert: 'self toto ifNil: [ self tata ] ifNotNil: [ self toto ]' isRewrittenAs: 'self toto ifNil: [ self tata ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testIfNilIfNotNilReturningReceiver2 [ self assert: 'self toto ifNil: [ self tata ] ifNotNil: [ :e | e ]' isRewrittenAs: 'self toto ifNil: [ self tata ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testIfNotEmptyIfEmpty [ self assert: 'self toto ifNotEmpty: [ self toto ] ifEmpty: [ false ]' isRewrittenAs: 'self toto ifEmpty: [ false ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testIfNotEmptyIfEmpty2 [ self assert: 'self toto ifNotEmpty: [ :e | e ] ifEmpty: [ false ]' isRewrittenAs: 'self toto ifEmpty: [ false ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testIfNotNilIfNil [ self assert: '10 ifNotNil: #even ifNil: [ nil ]' isRewrittenAs: '10 ifNotNil: #even' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testIfNotNilIfNil2 [ self assert: '10 ifNotNil: #even ifNil: nil' isRewrittenAs: '10 ifNotNil: #even' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testIfNotNilIfNilReturningReceiver [ self assert: 'self toto ifNotNil: [ self toto ] ifNil: [ self tata ]' isRewrittenAs: 'self toto ifNil: [ self tata ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testIfNotNilIfNilReturningReceiver2 [ self assert: 'self toto ifNotNil: [ :e | e ] ifNil: [ self tata ]' isRewrittenAs: 'self toto ifNil: [ self tata ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testIfNotNilReturningReceiver [ self assert: 'self toto ifNotNil: [ self toto ]' isRewrittenAs: 'self toto' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testIfTrueIfFalse [ self assert: 'true ifTrue: [ true ] ifFalse: [ false ]' isRewrittenAs: 'true' ] -{ #category : #tests } +{ #category : 'tests' } ChanelCutConditionalBranchesCleanerTest >> testIfTrueIfFalse2 [ self assert: 'true ifTrue: [ false ] ifFalse: [ true ]' isRewrittenAs: 'true not' ] diff --git a/src/Chanel-Tests/ChanelDuplicatedMethodFromTraitCleanerTest.class.st b/src/Chanel-Tests/ChanelDuplicatedMethodFromTraitCleanerTest.class.st index 071faae..3f2cf81 100644 --- a/src/Chanel-Tests/ChanelDuplicatedMethodFromTraitCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelDuplicatedMethodFromTraitCleanerTest.class.st @@ -2,22 +2,23 @@ A ChanelDuplicatedMethodFromTraitCleanerTest is a test class for testing the behavior of ChanelDuplicatedMethodFromTraitCleaner " Class { - #name : #ChanelDuplicatedMethodFromTraitCleanerTest, - #superclass : #ChanelAbstractCleanerTest, + #name : 'ChanelDuplicatedMethodFromTraitCleanerTest', + #superclass : 'ChanelAbstractCleanerTest', #instVars : [ 'trait' ], - #category : #'Chanel-Tests' + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #running } +{ #category : 'running' } ChanelDuplicatedMethodFromTraitCleanerTest >> setUp [ super setUp. class := self createDefaultClass. trait := self createDefaultTrait ] -{ #category : #tests } +{ #category : 'tests' } ChanelDuplicatedMethodFromTraitCleanerTest >> testDoesNotRemoveDuplicatedMethodFromTraitIfASTDifferent [ class setTraitComposition: trait. @@ -37,7 +38,7 @@ ChanelDuplicatedMethodFromTraitCleanerTest >> testDoesNotRemoveDuplicatedMethodF self assert: (class localSelectors includes: #one) ] -{ #category : #tests } +{ #category : 'tests' } ChanelDuplicatedMethodFromTraitCleanerTest >> testDoesNotRemoveDuplicatedMethodFromTraitIfEquivalentIsInSuperclasse [ | subClass | subClass := self createSubclassOf: class named: #ChanelDuplicatedMethodFromTraitFake. @@ -62,7 +63,7 @@ ChanelDuplicatedMethodFromTraitCleanerTest >> testDoesNotRemoveDuplicatedMethodF self deny: (subClass localSelectors includes: #one) ] -{ #category : #tests } +{ #category : 'tests' } ChanelDuplicatedMethodFromTraitCleanerTest >> testDoesNotRemoveDuplicatedMethodFromTraitIfPragmaIsPresent [ class setTraitComposition: trait. @@ -83,7 +84,7 @@ ChanelDuplicatedMethodFromTraitCleanerTest >> testDoesNotRemoveDuplicatedMethodF self assert: (class localSelectors includes: #one) ] -{ #category : #tests } +{ #category : 'tests' } ChanelDuplicatedMethodFromTraitCleanerTest >> testDoesNothingToClassWithoutTraitComposition [ trait compile: @@ -101,7 +102,7 @@ ChanelDuplicatedMethodFromTraitCleanerTest >> testDoesNothingToClassWithoutTrait self assert: (class localSelectors includes: #one) ] -{ #category : #tests } +{ #category : 'tests' } ChanelDuplicatedMethodFromTraitCleanerTest >> testRemoveDuplicatedMethodFromTrait [ class setTraitComposition: trait. @@ -121,7 +122,7 @@ ChanelDuplicatedMethodFromTraitCleanerTest >> testRemoveDuplicatedMethodFromTrai self deny: (class localSelectors includes: #one) ] -{ #category : #tests } +{ #category : 'tests' } ChanelDuplicatedMethodFromTraitCleanerTest >> testRemoveDuplicatedMethodFromTraitIfFormattingDifferent [ class setTraitComposition: trait. @@ -142,7 +143,7 @@ ChanelDuplicatedMethodFromTraitCleanerTest >> testRemoveDuplicatedMethodFromTrai self deny: (class localSelectors includes: #one) ] -{ #category : #tests } +{ #category : 'tests' } ChanelDuplicatedMethodFromTraitCleanerTest >> testRemoveDuplicatedMethodFromTraitOnClassSide [ class setTraitComposition: trait. @@ -162,7 +163,7 @@ ChanelDuplicatedMethodFromTraitCleanerTest >> testRemoveDuplicatedMethodFromTrai self deny: (class class localSelectors includes: #one) ] -{ #category : #tests } +{ #category : 'tests' } ChanelDuplicatedMethodFromTraitCleanerTest >> testRemoveDuplicatedMethodFromTraitUsingTrait [ | trait2 | trait2 := self createTraitNamed: 'SecondTrait'. diff --git a/src/Chanel-Tests/ChanelEmptyConditionalSimplifierCleanerTest.class.st b/src/Chanel-Tests/ChanelEmptyConditionalSimplifierCleanerTest.class.st index c18a232..b209d41 100644 --- a/src/Chanel-Tests/ChanelEmptyConditionalSimplifierCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelEmptyConditionalSimplifierCleanerTest.class.st @@ -2,28 +2,29 @@ A ChanelEmptyConditionalSimplifierCleanerTest is a test class for testing the behavior of ChanelEmptyConditionalSimplifierCleaner " Class { - #name : #ChanelEmptyConditionalSimplifierCleanerTest, - #superclass : #ChanelMethodRewriterCleanerTest, - #category : #'Chanel-Tests' + #name : 'ChanelEmptyConditionalSimplifierCleanerTest', + #superclass : 'ChanelMethodRewriterCleanerTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #helpers } +{ #category : 'helpers' } ChanelEmptyConditionalSimplifierCleanerTest >> expressionWithNoReplacement [ ^ '#() ifEmpty: [ false ]' ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelEmptyConditionalSimplifierCleanerTest >> replacementPair [ ^ '#() isEmpty ifTrue: [ false ]' -> '#() ifEmpty: [ false ]' ] -{ #category : #running } +{ #category : 'running' } ChanelEmptyConditionalSimplifierCleanerTest >> setUp [ super setUp. class := self createDefaultClass ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testDoesNotReplaceIfItIntroduceAnInfinitLoop [ | oldMethod | class @@ -44,7 +45,7 @@ ChanelEmptyConditionalSimplifierCleanerTest >> testDoesNotReplaceIfItIntroduceAn self assert: class >> #ifEmpty: identicalTo: oldMethod ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testDoesNotReplaceIfItIntroduceAnInfinitLoop2 [ | oldMethod | class @@ -65,102 +66,102 @@ ChanelEmptyConditionalSimplifierCleanerTest >> testDoesNotReplaceIfItIntroduceAn self assert: class >> #ifEmpty: identicalTo: oldMethod ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testIfEmptyIfNotEmpty [ self assert: '#() ifEmpty: [ true ] ifNotEmpty: [ false ]' isRewrittenAs: '#() isEmpty' ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testIfEmptyIfNotEmpty2 [ self assert: '#() ifEmpty: [ false ] ifNotEmpty: [ true ]' isRewrittenAs: '#() isNotEmpty' ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testIfNotEmptyIfEmpty [ self assert: '#() ifNotEmpty: [ false ] ifEmpty: [ true ]' isRewrittenAs: '#() isEmpty' ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testIfNotEmptyIfEmpty2 [ self assert: '#() ifNotEmpty: [ true ] ifEmpty: [ false ]' isRewrittenAs: '#() isNotEmpty' ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testIsEmptyIfFalse [ self assert: '#() isEmpty ifFalse: [ 2 ]' isRewrittenAs: '#() ifNotEmpty: [ 2 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testIsEmptyIfFalseIfTrue [ self assert: '#() isEmpty ifFalse: [ 2 ] ifTrue: [ 1 ]' isRewrittenAs: '#() ifEmpty: [ 1 ] ifNotEmpty: [ 2 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testIsEmptyIfFalseIfTrue2 [ self assert: '#() isEmpty ifFalse: [ false ] ifTrue: [ true ]' isRewrittenAs: '#() isEmpty' ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testIsEmptyIfFalseIfTrue3 [ self assert: '#() isEmpty ifFalse: [ true ] ifTrue: [ false ]' isRewrittenAs: '#() isNotEmpty' ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testIsEmptyIfTrue [ self assert: '#() isEmpty ifTrue: [ 2 ]' isRewrittenAs: '#() ifEmpty: [ 2 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testIsEmptyIfTrueIfFalse [ self assert: '#() isEmpty ifTrue: [ 1 ] ifFalse: [ 2 ]' isRewrittenAs: '#() ifEmpty: [ 1 ] ifNotEmpty: [ 2 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testIsEmptyIfTrueIfFalse2 [ self assert: '#() isEmpty ifTrue: [ true ] ifFalse: [ false ]' isRewrittenAs: '#() isEmpty' ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testIsEmptyIfTrueIfFalse3 [ self assert: '#() isEmpty ifTrue: [ false ] ifFalse: [ true ]' isRewrittenAs: '#() isNotEmpty' ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testIsNotEmptyIfFalse [ self assert: '#() isNotEmpty ifFalse: [ 2 ]' isRewrittenAs: '#() ifEmpty: [ 2 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testIsNotEmptyIfFalseIfTrue [ self assert: '#() isNotEmpty ifFalse: [ 1 ] ifTrue: [ 2 ]' isRewrittenAs: '#() ifEmpty: [ 1 ] ifNotEmpty: [ 2 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testIsNotEmptyIfFalseIfTrue2 [ self assert: '#() isNotEmpty ifFalse: [ true ] ifTrue: [ false ]' isRewrittenAs: '#() isEmpty' ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testIsNotEmptyIfFalseIfTrue3 [ self assert: '#() isNotEmpty ifFalse: [ false ] ifTrue: [ true ]' isRewrittenAs: '#() isNotEmpty' ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testIsNotEmptyIfTrue [ self assert: '#() isNotEmpty ifTrue: [ 2 ]' isRewrittenAs: '#() ifNotEmpty: [ 2 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testIsNotEmptyIfTrueIfFalse [ self assert: '#() isNotEmpty ifTrue: [ 2 ] ifFalse: [ 1 ]' isRewrittenAs: '#() ifEmpty: [ 1 ] ifNotEmpty: [ 2 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testIsNotEmptyIfTrueIfFalse2 [ self assert: '#() isNotEmpty ifTrue: [ false ] ifFalse: [ true ]' isRewrittenAs: '#() isEmpty' ] -{ #category : #tests } +{ #category : 'tests' } ChanelEmptyConditionalSimplifierCleanerTest >> testIsNotEmptyIfTrueIfFalse3 [ self assert: '#() isNotEmpty ifTrue: [ true ] ifFalse: [ false ]' isRewrittenAs: '#() isNotEmpty' ] diff --git a/src/Chanel-Tests/ChanelEnsureSuperIsCalledCleanerTest.class.st b/src/Chanel-Tests/ChanelEnsureSuperIsCalledCleanerTest.class.st index aa2311a..80c3699 100644 --- a/src/Chanel-Tests/ChanelEnsureSuperIsCalledCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelEnsureSuperIsCalledCleanerTest.class.st @@ -2,21 +2,22 @@ A ChanelEnsureSuperIsCalledCleanerTest is a test class for testing the behavior of ChanelEnsureSuperIsCalledCleaner " Class { - #name : #ChanelEnsureSuperIsCalledCleanerTest, - #superclass : #ChanelAbstractCleanerTest, + #name : 'ChanelEnsureSuperIsCalledCleanerTest', + #superclass : 'ChanelAbstractCleanerTest', #instVars : [ 'oldMethod' ], - #category : #'Chanel-Tests' + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #running } +{ #category : 'running' } ChanelEnsureSuperIsCalledCleanerTest >> setUp [ super setUp. class := self createDefaultTestClass ] -{ #category : #'tests - initialize' } +{ #category : 'tests - initialize' } ChanelEnsureSuperIsCalledCleanerTest >> testAddSuperInitialize [ class compile: 'initialize self assert: true'. @@ -35,7 +36,7 @@ ChanelEnsureSuperIsCalledCleanerTest >> testAddSuperInitialize [ self deny: oldMethod identicalTo: class >> #initialize ] -{ #category : #'tests - initialize' } +{ #category : 'tests - initialize' } ChanelEnsureSuperIsCalledCleanerTest >> testAddSuperInitializeInTrait [ | trait | trait := self createDefaultTrait. @@ -62,7 +63,7 @@ ChanelEnsureSuperIsCalledCleanerTest >> testAddSuperInitializeInTrait [ self deny: (class localSelectors includes: #initialize) ] -{ #category : #'tests - setup' } +{ #category : 'tests - setup' } ChanelEnsureSuperIsCalledCleanerTest >> testAddSuperSetUp [ class compile: 'setUp self assert: true'. @@ -81,7 +82,7 @@ ChanelEnsureSuperIsCalledCleanerTest >> testAddSuperSetUp [ self deny: oldMethod identicalTo: class >> #setUp ] -{ #category : #'tests - teardown' } +{ #category : 'tests - teardown' } ChanelEnsureSuperIsCalledCleanerTest >> testAddSuperTearDown [ class compile: 'tearDown self assert: true'. @@ -100,7 +101,7 @@ ChanelEnsureSuperIsCalledCleanerTest >> testAddSuperTearDown [ self deny: oldMethod identicalTo: class >> #tearDown ] -{ #category : #'tests - initialize' } +{ #category : 'tests - initialize' } ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperInitializeOnClassSide [ class class compile: 'initialize self assert: true'. @@ -119,7 +120,7 @@ ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperInitializeOnClassSide self assert: oldMethod identicalTo: class class >> #initialize ] -{ #category : #'tests - initialize' } +{ #category : 'tests - initialize' } ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperInitializeWhenAlreadyThere [ class compile: 'initialize super initialize. @@ -139,7 +140,7 @@ ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperInitializeWhenAlready self assert: oldMethod identicalTo: class >> #initialize ] -{ #category : #'tests - setup' } +{ #category : 'tests - setup' } ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperSetUpIfClassIsNotATestCase [ class := self createDefaultClass. @@ -160,7 +161,7 @@ ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperSetUpIfClassIsNotATes self assert: oldMethod identicalTo: class >> #setUp ] -{ #category : #'tests - setup' } +{ #category : 'tests - setup' } ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperSetUpIfEmptyMethod [ class compile: 'setUp '. @@ -179,7 +180,7 @@ ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperSetUpIfEmptyMethod [ self assert: oldMethod identicalTo: class >> #setUp ] -{ #category : #'tests - setup' } +{ #category : 'tests - setup' } ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperSetUpInTrait [ | trait | trait := self createDefaultTrait. @@ -202,7 +203,7 @@ ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperSetUpInTrait [ self deny: (class localSelectors includes: #setUp) ] -{ #category : #'tests - setup' } +{ #category : 'tests - setup' } ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperSetUpOnClassSide [ class class compile: 'setUp self assert: true'. @@ -220,7 +221,7 @@ ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperSetUpOnClassSide [ self assert: oldMethod identicalTo: class class>> #setUp ] -{ #category : #'tests - setup' } +{ #category : 'tests - setup' } ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperSetUpWhenAlreadyThere [ class compile: 'setUp super setUp. @@ -240,7 +241,7 @@ ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperSetUpWhenAlreadyThere self assert: oldMethod identicalTo: class >> #setUp ] -{ #category : #'tests - teardown' } +{ #category : 'tests - teardown' } ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperTearDownIfClassIsNotATestCase [ class := self createDefaultClass. @@ -261,7 +262,7 @@ ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperTearDownIfClassIsNotA self assert: oldMethod identicalTo: class >> #tearDown ] -{ #category : #'tests - teardown' } +{ #category : 'tests - teardown' } ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperTearDownIfEmptyMethod [ class compile: 'tearDown '. @@ -280,7 +281,7 @@ ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperTearDownIfEmptyMethod self assert: oldMethod identicalTo: class >> #tearDown ] -{ #category : #'tests - teardown' } +{ #category : 'tests - teardown' } ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperTearDownInTrait [ | trait | trait := self createDefaultTrait. @@ -303,7 +304,7 @@ ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperTearDownInTrait [ self deny: (class localSelectors includes: #tearDown) ] -{ #category : #'tests - teardown' } +{ #category : 'tests - teardown' } ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperTearDownOnClassSide [ class class compile: 'tearDown self assert: true'. @@ -321,7 +322,7 @@ ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperTearDownOnClassSide [ self assert: oldMethod identicalTo: class class>> #tearDown ] -{ #category : #'tests - teardown' } +{ #category : 'tests - teardown' } ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperTearDownWhenAlreadyThere [ class compile: 'tearDown self assert: true. @@ -341,7 +342,7 @@ ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotAddSuperTearDownWhenAlreadyTh self assert: oldMethod identicalTo: class >> #tearDown ] -{ #category : #'tests - initialize' } +{ #category : 'tests - initialize' } ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotCreateSuperInitializeInEmptyMethod [ class compile: 'initialize '. @@ -360,7 +361,7 @@ ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotCreateSuperInitializeInEmptyM self assert: oldMethod identicalTo: class >> #initialize ] -{ #category : #'tests - initialize' } +{ #category : 'tests - initialize' } ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotMoveSuperInitializeIfNotTheFirstStatement [ class compile: 'initialize self assert: true. @@ -381,7 +382,7 @@ ChanelEnsureSuperIsCalledCleanerTest >> testDoesNotMoveSuperInitializeIfNotTheFi self assert: oldMethod identicalTo: class >> #initialize ] -{ #category : #'tests - setup' } +{ #category : 'tests - setup' } ChanelEnsureSuperIsCalledCleanerTest >> testMoveSuperSetUpIfNotFirstStatement [ class compile: 'setUp self assert: true. @@ -402,7 +403,7 @@ ChanelEnsureSuperIsCalledCleanerTest >> testMoveSuperSetUpIfNotFirstStatement [ self deny: oldMethod identicalTo: class >> #setUp ] -{ #category : #'tests - teardown' } +{ #category : 'tests - teardown' } ChanelEnsureSuperIsCalledCleanerTest >> testMoveSuperTearDownIfNotLastStatement [ class compile: 'tearDown super tearDown. diff --git a/src/Chanel-Tests/ChanelExtractAssignationsFromConditionalsTest.class.st b/src/Chanel-Tests/ChanelExtractAssignationsFromConditionalsTest.class.st index eeebe5e..2f038ab 100644 --- a/src/Chanel-Tests/ChanelExtractAssignationsFromConditionalsTest.class.st +++ b/src/Chanel-Tests/ChanelExtractAssignationsFromConditionalsTest.class.st @@ -2,60 +2,67 @@ A ChanelExtractAssignationsFromConditionalsTest is a test class for testing the behavior of ChanelExtractAssignationsFromConditionals " Class { - #name : #ChanelExtractAssignationsFromConditionalsTest, - #superclass : #ChanelAbstractCleanerTest, - #category : #'Chanel-Tests' + #name : 'ChanelExtractAssignationsFromConditionalsTest', + #superclass : 'ChanelAbstractCleanerTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #running } +{ #category : 'running' } ChanelExtractAssignationsFromConditionalsTest >> setUp [ super setUp. class := self createDefaultClass ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testDoesNotExtractAssignationIfABranchIsASymbol [ - self denyIsRewritten: 'self toto ifNil: [ test := 1 ] ifNotNil: #yourself' + self denyIsRewritten: '| test | +self toto ifNil: [ test := 1 ] ifNotNil: #yourself' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testDoesNotExtractAssignationIfAlreadyOutside [ - self denyIsRewritten: 'test := self toto ifTrue: [ 1 ] ifFalse: [ 2 ]' + self denyIsRewritten: '| test | +test := self toto ifTrue: [ 1 ] ifFalse: [ 2 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testDoesNotExtractAssignationIfAssignationIsNotTheLastStatement [ - self denyIsRewritten: 'self toto ifTrue: [ test := 1 ] ifFalse: [ self foo ifTrue: [ test := 2 ] ]' + self denyIsRewritten: '| test | +self toto ifTrue: [ test := 1 ] ifFalse: [ self foo ifTrue: [ test := 2 ] ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testDoesNotExtractAssignationIfInACascade [ - self denyIsRewritten: 'self toto ifTrue: [ test := 1 ] ifFalse: [ test := 2 ]; bar' + self denyIsRewritten: '| test | +self toto ifTrue: [ test := 1 ] ifFalse: [ test := 2 ]; bar' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testDoesNotExtractAssignationIfOnBranchDoesNotHaveOne [ - self denyIsRewritten: 'self toto ifTrue: [ test := 1 ] ifFalse: [ 2 ]' + self denyIsRewritten: '| test | +self toto ifTrue: [ test := 1 ] ifFalse: [ 2 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testDoesNotFailIfWeHaveEmptyBlocks [ - self denyIsRewritten: 'self toto ifNil: [ ] ifNotNil: [ toto := 1 ]' + self denyIsRewritten: '| toto | +self toto ifNil: [ ] ifNotNil: [ toto := 1 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testExtractAssignationDoesNotFailForConditonsInConditions [ self assert: 'self toto1 ifTrue: [ self toto2 ifTrue: [ test := 1 ] ifFalse: [ test := 2 ] ] ifFalse: [ 3 ]' isRewrittenAs: 'self toto1 ifTrue: [ test := self toto2 ifTrue: [ 1 ] ifFalse: [ 2 ] ] ifFalse: [ 3 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testExtractAssignationDoesNotFailIfThereIsAlreadyAAssignation [ self assert: 'test := self toto ifTrue: [ test := 1 ] ifFalse: [ test := 2 ]' isRewrittenAs: 'test := self toto ifTrue: [ 1 ] ifFalse: [ 2 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testExtractAssignationEvenIfMessageIsNotTheLastStatement [ self assert: @@ -66,48 +73,48 @@ ChanelExtractAssignationsFromConditionalsTest >> testExtractAssignationEvenIfMes self bar' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testExtractAssignationFromIfEmptyIfNotEmpty [ self assert: 'self toto ifEmpty: [ test := 2 ] ifNotEmpty: [ test := 1 ]' isRewrittenAs: 'test := self toto ifEmpty: [ 2 ] ifNotEmpty: [ 1 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testExtractAssignationFromIfExistsIfAbsent [ self assert: 'self toto ifExists: [ test := 2 ] ifAbsent: [ test := 1 ]' isRewrittenAs: 'test := self toto ifExists: [ 2 ] ifAbsent: [ 1 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testExtractAssignationFromIfFalseIfTrue [ self assert: 'self toto ifFalse: [ test := 2 ] ifTrue: [ test := 1 ]' isRewrittenAs: 'test := self toto ifFalse: [ 2 ] ifTrue: [ 1 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testExtractAssignationFromIfNilIfNotNil [ self assert: 'self toto ifNil: [ test := 2 ] ifNotNil: [ test := 1 ]' isRewrittenAs: 'test := self toto ifNil: [ 2 ] ifNotNil: [ 1 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testExtractAssignationFromIfNotEmptyIfEmpty [ self assert: 'self toto ifNotEmpty: [ test := 2 ] ifEmpty: [ test := 1 ]' isRewrittenAs: 'test := self toto ifNotEmpty: [ 2 ] ifEmpty: [ 1 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testExtractAssignationFromIfNotNilIfNil [ self assert: 'self toto ifNotNil: [ test := 2 ] ifNil: [ test := 1 ]' isRewrittenAs: 'test := self toto ifNotNil: [ 2 ] ifNil: [ 1 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testExtractAssignationFromIfTrueIfFalse [ self assert: 'self toto ifTrue: [ test := 1 ] ifFalse: [ test := 2 ]' isRewrittenAs: 'test := self toto ifTrue: [ 1 ] ifFalse: [ 2 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testExtractAssignationFromIfTrueIfFalseWithOtherStatements [ self assert: 'self toto ifTrue: [ self foo. test := 1 ] ifFalse: [ test := self bar ]' isRewrittenAs: 'test := self toto ifTrue: [ self foo. 1 ] ifFalse: [ self bar ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testExtractAssignationIfTheLastStatementOfABlock [ self assert: @@ -118,14 +125,14 @@ ChanelExtractAssignationsFromConditionalsTest >> testExtractAssignationIfTheLast self bar' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testExtractAssignationInNestedConditions [ self assert: 'self toto1 ifTrue: [ self toto2 ifTrue: [ test := 1 ] ifFalse: [ test := 2 ] ] ifFalse: [ test := 3 ]' isRewrittenAs: 'test := self toto1 ifTrue: [ self toto2 ifTrue: [ 1 ] ifFalse: [ 2 ] ] ifFalse: [ 3 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testExtractAssignationInTrait [ | trait | trait := self createDefaultTrait. @@ -149,7 +156,7 @@ ChanelExtractAssignationsFromConditionalsTest >> testExtractAssignationInTrait [ self deny: (class localSelectors includes: #method) ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractAssignationsFromConditionalsTest >> testExtractAssignationOnClassSide [ self assert: 'self toto ifTrue: [ test := 1 ] ifFalse: [ test := 2 ]' isRewrittenAs: 'test := self toto ifTrue: [ 1 ] ifFalse: [ 2 ]' in: class class ] diff --git a/src/Chanel-Tests/ChanelExtractReturnFromAllBranchesCleanerTest.class.st b/src/Chanel-Tests/ChanelExtractReturnFromAllBranchesCleanerTest.class.st index 000303d..3a7ea51 100644 --- a/src/Chanel-Tests/ChanelExtractReturnFromAllBranchesCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelExtractReturnFromAllBranchesCleanerTest.class.st @@ -2,107 +2,108 @@ A ChanelExtractReturnFromAllBranchesCleanerTest is a test class for testing the behavior of ChanelExtractReturnFromAllBranchesCleaner " Class { - #name : #ChanelExtractReturnFromAllBranchesCleanerTest, - #superclass : #ChanelAbstractCleanerTest, - #category : #'Chanel-Tests' + #name : 'ChanelExtractReturnFromAllBranchesCleanerTest', + #superclass : 'ChanelAbstractCleanerTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #running } +{ #category : 'running' } ChanelExtractReturnFromAllBranchesCleanerTest >> setUp [ super setUp. class := self createDefaultClass ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testDoesNotExtractReturnIfABranchIsASymbol [ self denyIsRewritten: 'self toto ifNil: [ ^ 1 ] ifNotNil: #yourself' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testDoesNotExtractReturnIfAlreadyOutside [ self denyIsRewritten: '^ self toto ifTrue: [ 1 ] ifFalse: [ 2 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testDoesNotExtractReturnIfInACascade [ self denyIsRewritten: 'self toto ifTrue: [ ^ 1 ] ifFalse: [ ^ 2 ]; bar' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testDoesNotExtractReturnIfMessageIsNotTheLastStatement [ self denyIsRewritten: 'self toto ifTrue: [ ^ 1 ] ifFalse: [ ^ 2 ]. self bar' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testDoesNotExtractReturnIfOnBranchDoesNotHaveOne [ self denyIsRewritten: 'self toto ifTrue: [ ^ 1 ] ifFalse: [ 2 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testDoesNotExtractReturnIfReturnIsNotTheLastStatement [ self denyIsRewritten: 'self toto ifTrue: [ ^ 1 ] ifFalse: [ self foo ifTrue: [ ^ 2 ] ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testDoesNotFailIfWeHaveEmptyBlocks [ self denyIsRewritten: 'self toto ifNil: [ ] ifNotNil: [ ^ 1 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testExtractReturnDoesNotFailForConditonsInConditions [ self assert: 'self toto1 ifTrue: [ self toto2 ifTrue: [ ^ 1 ] ifFalse: [ ^ 2 ] ] ifFalse: [ 3 ]' isRewrittenAs: 'self toto1 ifTrue: [ ^self toto2 ifTrue: [ 1 ] ifFalse: [ 2 ] ] ifFalse: [ 3 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testExtractReturnDoesNotFailIfThereIsAlreadyAReturn [ self assert: '^self toto ifTrue: [ ^ 1 ] ifFalse: [ ^ 2 ]' isRewrittenAs: '^self toto ifTrue: [ 1 ] ifFalse: [ 2 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testExtractReturnFromIfEmptyIfNotEmpty [ self assert: 'self toto ifEmpty: [ ^ 2 ] ifNotEmpty: [ ^ 1 ]' isRewrittenAs: '^self toto ifEmpty: [ 2 ] ifNotEmpty: [ 1 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testExtractReturnFromIfExistsIfAbsent [ self assert: 'self toto ifExists: [ ^ 2 ] ifAbsent: [ ^ 1 ]' isRewrittenAs: '^self toto ifExists: [ 2 ] ifAbsent: [ 1 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testExtractReturnFromIfFalseIfTrue [ self assert: 'self toto ifFalse: [ ^ 2 ] ifTrue: [ ^ 1 ]' isRewrittenAs: '^self toto ifFalse: [ 2 ] ifTrue: [ 1 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testExtractReturnFromIfNilIfNotNil [ self assert: 'self toto ifNil: [ ^ 2 ] ifNotNil: [ ^ 1 ]' isRewrittenAs: '^self toto ifNil: [ 2 ] ifNotNil: [ 1 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testExtractReturnFromIfNotEmptyIfEmpty [ self assert: 'self toto ifNotEmpty: [ ^ 2 ] ifEmpty: [ ^ 1 ]' isRewrittenAs: '^self toto ifNotEmpty: [ 2 ] ifEmpty: [ 1 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testExtractReturnFromIfNotNilIfNil [ self assert: 'self toto ifNotNil: [ ^ 2 ] ifNil: [ ^ 1 ]' isRewrittenAs: '^self toto ifNotNil: [ 2 ] ifNil: [ 1 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testExtractReturnFromIfTrueIfFalse [ self assert: 'self toto ifTrue: [ ^ 1 ] ifFalse: [ ^ 2 ]' isRewrittenAs: '^self toto ifTrue: [ 1 ] ifFalse: [ 2 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testExtractReturnFromIfTrueIfFalseWithOtherStatements [ self assert: 'self toto ifTrue: [ self foo. ^ 1 ] ifFalse: [ ^ self bar ]' isRewrittenAs: '^self toto ifTrue: [ self foo. 1 ] ifFalse: [ self bar ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testExtractReturnIfTheLastStatementOfABlock [ self assert: @@ -113,14 +114,14 @@ ChanelExtractReturnFromAllBranchesCleanerTest >> testExtractReturnIfTheLastState self bar' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testExtractReturnInNestedConditions [ self assert: 'self toto1 ifTrue: [ self toto2 ifTrue: [ ^1 ] ifFalse: [ ^2 ] ] ifFalse: [ ^3 ]' isRewrittenAs: '^self toto1 ifTrue: [ self toto2 ifTrue: [ 1 ] ifFalse: [ 2 ] ] ifFalse: [ 3 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testExtractReturnInTrait [ | trait | trait := self createDefaultTrait. @@ -144,7 +145,7 @@ ChanelExtractReturnFromAllBranchesCleanerTest >> testExtractReturnInTrait [ self deny: (class localSelectors includes: #method) ] -{ #category : #tests } +{ #category : 'tests' } ChanelExtractReturnFromAllBranchesCleanerTest >> testExtractReturnOnClassSide [ self assert: 'self toto ifTrue: [ ^ 1 ] ifFalse: [ ^ 2 ]' isRewrittenAs: '^self toto ifTrue: [ 1 ] ifFalse: [ 2 ]' in: class class ] diff --git a/src/Chanel-Tests/ChanelMethodAliasesCleanerTest.class.st b/src/Chanel-Tests/ChanelMethodAliasesCleanerTest.class.st index 7206790..e084e3d 100644 --- a/src/Chanel-Tests/ChanelMethodAliasesCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelMethodAliasesCleanerTest.class.st @@ -1,26 +1,27 @@ Class { - #name : #ChanelMethodAliasesCleanerTest, - #superclass : #ChanelMethodRewriterCleanerTest, - #category : #'Chanel-Tests' + #name : 'ChanelMethodAliasesCleanerTest', + #superclass : 'ChanelMethodRewriterCleanerTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #helpers } +{ #category : 'helpers' } ChanelMethodAliasesCleanerTest >> expressionWithNoReplacement [ ^ '#() isNotEmpty' ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelMethodAliasesCleanerTest >> replacementPair [ ^ '#() notEmpty' -> '#() isNotEmpty' ] -{ #category : #running } +{ #category : 'running' } ChanelMethodAliasesCleanerTest >> setUp [ super setUp. class := self createDefaultClass ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodAliasesCleanerTest >> testDoesNotReplaceIfItIntroduceAnInfinitLoop [ | oldMethod | class @@ -41,7 +42,7 @@ ChanelMethodAliasesCleanerTest >> testDoesNotReplaceIfItIntroduceAnInfinitLoop [ self assert: class >> #isNotEmpty identicalTo: oldMethod ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodAliasesCleanerTest >> testDoesNotReplaceIfItIntroduceAnInfinitLoop2 [ | oldMethod | class @@ -62,37 +63,37 @@ ChanelMethodAliasesCleanerTest >> testDoesNotReplaceIfItIntroduceAnInfinitLoop2 self assert: class >> #isNotEmpty identicalTo: oldMethod ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodAliasesCleanerTest >> testIfNilIfNotNilDo [ self assert: 'nil ifNil: [ false ] ifNotNilDo: [ true ]' isRewrittenAs: 'nil ifNil: [ false ] ifNotNil: [ true ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodAliasesCleanerTest >> testIfNotNilDo [ self assert: 'nil ifNotNilDo: [ true ]' isRewrittenAs: 'nil ifNotNil: [ true ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodAliasesCleanerTest >> testIfNotNilDoIfNil [ self assert: 'nil ifNotNilDo: [ true ] ifNil: [ false ]' isRewrittenAs: 'nil ifNotNil: [ true ] ifNil: [ false ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodAliasesCleanerTest >> testNotEmpty [ self assert: '#() notEmpty' isRewrittenAs: '#() isNotEmpty' ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodAliasesCleanerTest >> testNotNil [ self assert: 'nil notNil' isRewrittenAs: 'nil isNotNil' ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodAliasesCleanerTest >> testincludesAllOf [ self assert: '#() includesAllOf: #()' isRewrittenAs: '#() includesAll: #()' ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodAliasesCleanerTest >> testincludesAnyOf [ self assert: '#() includesAnyOf: #()' isRewrittenAs: '#() includesAny: #()' ] diff --git a/src/Chanel-Tests/ChanelMethodRewriterCleanerTest.class.st b/src/Chanel-Tests/ChanelMethodRewriterCleanerTest.class.st index 803639f..d8205cd 100644 --- a/src/Chanel-Tests/ChanelMethodRewriterCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelMethodRewriterCleanerTest.class.st @@ -2,17 +2,18 @@ A ChanelMethodRewriterCleanerTest is a test class for testing the behavior of ChanelMethodRewriterCleaner " Class { - #name : #ChanelMethodRewriterCleanerTest, - #superclass : #ChanelAbstractCleanerTest, - #category : #'Chanel-Tests' + #name : 'ChanelMethodRewriterCleanerTest', + #superclass : 'ChanelAbstractCleanerTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #testing } +{ #category : 'testing' } ChanelMethodRewriterCleanerTest class >> isAbstract [ ^ self = ChanelMethodRewriterCleanerTest ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodRewriterCleanerTest >> assertReplacementWasDoneIn: trait [ self assert: (trait >> self selector) sourceCode equals: (self methodBodyFor: self replacementPair value). @@ -20,7 +21,7 @@ ChanelMethodRewriterCleanerTest >> assertReplacementWasDoneIn: trait [ self deny: (class localSelectors includes: self selector) ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelMethodRewriterCleanerTest >> deny: original isRewrittenForPharo: anInteger [ | oldMethod | class ifNil: [ self error: 'To use this method you need to setup the class variable' ]. @@ -34,7 +35,7 @@ ChanelMethodRewriterCleanerTest >> deny: original isRewrittenForPharo: anInteger self assert: class >> self selector identicalTo: oldMethod ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodRewriterCleanerTest >> denyReplacementWasDoneIn: trait [ self assert: (trait >> self selector) sourceCode equals: (self methodBodyFor: self replacementPair key). @@ -42,26 +43,26 @@ ChanelMethodRewriterCleanerTest >> denyReplacementWasDoneIn: trait [ self deny: (class localSelectors includes: self selector) ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelMethodRewriterCleanerTest >> expressionWithNoReplacement [ ^ self subclassResponsibility ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelMethodRewriterCleanerTest >> replaceInTraits [ "Override and return false if the cleaner should not do the replacements in traits." ^ true ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelMethodRewriterCleanerTest >> replacementPair [ "Should return an association of a replacement the cleaner should be able to do." ^ self subclassResponsibility ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodRewriterCleanerTest >> testReplacementDoesNotRemoveExtensions [ class compile: (self methodBodyFor: self replacementPair key) classified: self extensionProtocolName. @@ -72,7 +73,7 @@ ChanelMethodRewriterCleanerTest >> testReplacementDoesNotRemoveExtensions [ self assert: (class >> self selector) protocolName equals: self extensionProtocolName ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodRewriterCleanerTest >> testReplacementInTraits [ | trait | trait := self createDefaultTrait. @@ -88,14 +89,14 @@ ChanelMethodRewriterCleanerTest >> testReplacementInTraits [ ifFalse: [ self denyReplacementWasDoneIn: trait ] ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodRewriterCleanerTest >> testReplacementOnClassSide [ class ifNil: [ self error: 'To use this method you need to setup the class variable' ]. self assert: self replacementPair key isRewrittenAs: self replacementPair value in: class class ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodRewriterCleanerTest >> testWithNothingToReplace [ self denyIsRewritten: self expressionWithNoReplacement ] diff --git a/src/Chanel-Tests/ChanelMethodsOnlyCallingSuperCleanerTest.class.st b/src/Chanel-Tests/ChanelMethodsOnlyCallingSuperCleanerTest.class.st index f355dfa..f902769 100644 --- a/src/Chanel-Tests/ChanelMethodsOnlyCallingSuperCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelMethodsOnlyCallingSuperCleanerTest.class.st @@ -2,18 +2,19 @@ A ChanelMethodsOnlyCallingSuperCleanerTest is a test class for testing the behavior of ChanelMethodsOnlyCallingSuperCleaner " Class { - #name : #ChanelMethodsOnlyCallingSuperCleanerTest, - #superclass : #ChanelAbstractCleanerTest, - #category : #'Chanel-Tests' + #name : 'ChanelMethodsOnlyCallingSuperCleanerTest', + #superclass : 'ChanelAbstractCleanerTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #running } +{ #category : 'running' } ChanelMethodsOnlyCallingSuperCleanerTest >> setUp [ super setUp. class := self createDefaultClass ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodsOnlyCallingSuperCleanerTest >> testDoesNotFailOnEmptyMethods [ | oldMethod | class compile: 'initialize'. @@ -27,7 +28,7 @@ ChanelMethodsOnlyCallingSuperCleanerTest >> testDoesNotFailOnEmptyMethods [ self assert: class >> #initialize identicalTo: oldMethod ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodsOnlyCallingSuperCleanerTest >> testDoesNotRemoveMethodCallingOtherSuper [ | oldMethod | class @@ -44,7 +45,7 @@ ChanelMethodsOnlyCallingSuperCleanerTest >> testDoesNotRemoveMethodCallingOtherS self assert: (class >> #new) identicalTo: oldMethod ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodsOnlyCallingSuperCleanerTest >> testDoesNotRemoveMethodWithOtherStatements [ | oldMethod | class @@ -62,7 +63,7 @@ ChanelMethodsOnlyCallingSuperCleanerTest >> testDoesNotRemoveMethodWithOtherStat self assert: (class >> #initialize) identicalTo: oldMethod ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodsOnlyCallingSuperCleanerTest >> testDoesNotRemoveMethodWithPragma [ | oldMethod | class @@ -80,7 +81,7 @@ ChanelMethodsOnlyCallingSuperCleanerTest >> testDoesNotRemoveMethodWithPragma [ self assert: (class >> #initialize) identicalTo: oldMethod ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodsOnlyCallingSuperCleanerTest >> testRemoveBinaryMethodOnlyCallingSuper [ class compile: @@ -92,7 +93,7 @@ ChanelMethodsOnlyCallingSuperCleanerTest >> testRemoveBinaryMethodOnlyCallingSup self deny: (class localSelectors includes: #=) ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodsOnlyCallingSuperCleanerTest >> testRemoveKeywordMethodOnlyCallingSuper [ class compile: @@ -104,7 +105,7 @@ ChanelMethodsOnlyCallingSuperCleanerTest >> testRemoveKeywordMethodOnlyCallingSu self deny: (class localSelectors includes: #initialize:) ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodsOnlyCallingSuperCleanerTest >> testRemoveMethodOnlyCallingSuper [ class compile: @@ -116,7 +117,7 @@ ChanelMethodsOnlyCallingSuperCleanerTest >> testRemoveMethodOnlyCallingSuper [ self deny: (class localSelectors includes: #initialize) ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodsOnlyCallingSuperCleanerTest >> testRemoveMethodOnlyCallingSuper2 [ class compile: @@ -129,7 +130,7 @@ ChanelMethodsOnlyCallingSuperCleanerTest >> testRemoveMethodOnlyCallingSuper2 [ self deny: (class localSelectors includes: #initialize) ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodsOnlyCallingSuperCleanerTest >> testRemoveMethodOnlyCallingSuperEvenIfThereIsAReturn [ class compile: @@ -141,7 +142,7 @@ ChanelMethodsOnlyCallingSuperCleanerTest >> testRemoveMethodOnlyCallingSuperEven self deny: (class localSelectors includes: #initialize) ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodsOnlyCallingSuperCleanerTest >> testRemoveMethodOnlyCallingSuperInTrait [ | trait | trait := self createDefaultTrait. @@ -159,7 +160,7 @@ ChanelMethodsOnlyCallingSuperCleanerTest >> testRemoveMethodOnlyCallingSuperInTr self deny: (trait localSelectors includes: #initialize) ] -{ #category : #tests } +{ #category : 'tests' } ChanelMethodsOnlyCallingSuperCleanerTest >> testRemoveMethodOnlyCallingSuperOnClassSide [ class class compile: diff --git a/src/Chanel-Tests/ChanelNilAssignationInInitializeCleanerTest.class.st b/src/Chanel-Tests/ChanelNilAssignationInInitializeCleanerTest.class.st index 833ec19..244dd21 100644 --- a/src/Chanel-Tests/ChanelNilAssignationInInitializeCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelNilAssignationInInitializeCleanerTest.class.st @@ -2,23 +2,25 @@ A ChanelNilAssignationInInitializeCleanerTest is a test class for testing the behavior of ChanelNilAssignationInInitializeCleaner " Class { - #name : #ChanelNilAssignationInInitializeCleanerTest, - #superclass : #ChanelAbstractCleanerTest, - #category : #'Chanel-Tests' + #name : 'ChanelNilAssignationInInitializeCleanerTest', + #superclass : 'ChanelAbstractCleanerTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #running } +{ #category : 'running' } ChanelNilAssignationInInitializeCleanerTest >> setUp [ super setUp. class := self createDefaultClass ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilAssignationInInitializeCleanerTest >> testDoesNothingIfNoNilAssigment [ | oldMethod | class compile: 'initialize + | test | super initialize. test := 1'. @@ -30,6 +32,7 @@ ChanelNilAssignationInInitializeCleanerTest >> testDoesNothingIfNoNilAssigment [ assert: (class >> #initialize) sourceCode equals: 'initialize + | test | super initialize. test := 1'. @@ -37,7 +40,7 @@ ChanelNilAssignationInInitializeCleanerTest >> testDoesNothingIfNoNilAssigment [ self assert: (class >> #initialize) identicalTo: oldMethod ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilAssignationInInitializeCleanerTest >> testDoesNothingOnEmptyMethod [ | oldMethod | class compile: 'initialize'. @@ -52,7 +55,7 @@ ChanelNilAssignationInInitializeCleanerTest >> testDoesNothingOnEmptyMethod [ self assert: class >> #initialize identicalTo: oldMethod ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilAssignationInInitializeCleanerTest >> testRemoveNilAssigment [ class compile: @@ -69,7 +72,7 @@ ChanelNilAssignationInInitializeCleanerTest >> testRemoveNilAssigment [ super initialize' ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilAssignationInInitializeCleanerTest >> testRemoveNilAssigmentInTrait [ | trait | trait := self createDefaultTrait. @@ -94,7 +97,7 @@ ChanelNilAssignationInInitializeCleanerTest >> testRemoveNilAssigmentInTrait [ self assert: (trait localSelectors includes: #initialize) ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilAssignationInInitializeCleanerTest >> testRemoveNilAssigmentOnClassSide [ class class compile: @@ -107,7 +110,7 @@ ChanelNilAssignationInInitializeCleanerTest >> testRemoveNilAssigmentOnClassSide ' ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilAssignationInInitializeCleanerTest >> testRemoveNilAssigments [ class compile: @@ -125,7 +128,7 @@ ChanelNilAssignationInInitializeCleanerTest >> testRemoveNilAssigments [ super initialize' ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilAssignationInInitializeCleanerTest >> testRemoveNilAssigmentsAroundRealAssigments [ class compile: @@ -145,7 +148,7 @@ ChanelNilAssignationInInitializeCleanerTest >> testRemoveNilAssigmentsAroundReal notTest := 1' ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilAssignationInInitializeCleanerTest >> testRemoveNilChainedAssigments [ class compile: diff --git a/src/Chanel-Tests/ChanelNilConditionalSimplifierCleanerTest.class.st b/src/Chanel-Tests/ChanelNilConditionalSimplifierCleanerTest.class.st index 32e3799..a01753b 100644 --- a/src/Chanel-Tests/ChanelNilConditionalSimplifierCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelNilConditionalSimplifierCleanerTest.class.st @@ -2,28 +2,29 @@ A ChanelConditionalSimplifierCleanerTest is a test class for testing the behavior of ChanelConditionalSimplifierCleaner " Class { - #name : #ChanelNilConditionalSimplifierCleanerTest, - #superclass : #ChanelMethodRewriterCleanerTest, - #category : #'Chanel-Tests' + #name : 'ChanelNilConditionalSimplifierCleanerTest', + #superclass : 'ChanelMethodRewriterCleanerTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #helpers } +{ #category : 'helpers' } ChanelNilConditionalSimplifierCleanerTest >> expressionWithNoReplacement [ ^ '10 ifNotNil: [ false ]' ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelNilConditionalSimplifierCleanerTest >> replacementPair [ ^ '10 isNil ifFalse: [ false ]' -> '10 ifNotNil: [ false ]' ] -{ #category : #running } +{ #category : 'running' } ChanelNilConditionalSimplifierCleanerTest >> setUp [ super setUp. class := self createDefaultClass ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilConditionalSimplifierCleanerTest >> testDoesNotReplaceIfItIntroduceAnInfinitLoop [ | oldMethod | class @@ -44,7 +45,7 @@ ChanelNilConditionalSimplifierCleanerTest >> testDoesNotReplaceIfItIntroduceAnIn self assert: class >> #ifNotNil: identicalTo: oldMethod ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilConditionalSimplifierCleanerTest >> testDoesNotReplaceIfItIntroduceAnInfinitLoop2 [ | oldMethod | class @@ -65,42 +66,42 @@ ChanelNilConditionalSimplifierCleanerTest >> testDoesNotReplaceIfItIntroduceAnIn self assert: class >> #ifNotNil: identicalTo: oldMethod ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilConditionalSimplifierCleanerTest >> testIsNilIfFalse [ self assert: '10 isNil ifFalse: [ false ]' isRewrittenAs: '10 ifNotNil: [ false ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilConditionalSimplifierCleanerTest >> testIsNilIfFalseIfTrue [ self assert: '10 isNil ifFalse: [ false ] ifTrue: [ true ]' isRewrittenAs: '10 ifNil: [ true ] ifNotNil: [ false ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilConditionalSimplifierCleanerTest >> testIsNilIfTrue [ self assert: '10 isNil ifTrue: [ false ]' isRewrittenAs: '10 ifNil: [ false ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilConditionalSimplifierCleanerTest >> testIsNilIfTrueIfFalse [ self assert: '10 isNil ifTrue: [ false ] ifFalse: [ true ]' isRewrittenAs: '10 ifNil: [ false ] ifNotNil: [ true ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilConditionalSimplifierCleanerTest >> testIsNotNilIfFalse [ self assert: '10 isNotNil ifFalse: [ false ]' isRewrittenAs: '10 ifNil: [ false ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilConditionalSimplifierCleanerTest >> testIsNotNilIfFalseIfTrue [ self assert: '10 isNotNil ifFalse: [ false ] ifTrue: [ true ]' isRewrittenAs: '10 ifNil: [ false ] ifNotNil: [ true ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilConditionalSimplifierCleanerTest >> testIsNotNilIfTrue [ self assert: '10 isNotNil ifTrue: [ false ]' isRewrittenAs: '10 ifNotNil: [ false ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilConditionalSimplifierCleanerTest >> testIsNotNilIfTrueIfFalse [ self assert: '10 isNotNil ifTrue: [ false ] ifFalse: [ true ]' isRewrittenAs: '10 ifNil: [ true ] ifNotNil: [ false ]' ] diff --git a/src/Chanel-Tests/ChanelNilEqualitySimplifierCleanerTest.class.st b/src/Chanel-Tests/ChanelNilEqualitySimplifierCleanerTest.class.st index 03f77d9..456a5af 100644 --- a/src/Chanel-Tests/ChanelNilEqualitySimplifierCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelNilEqualitySimplifierCleanerTest.class.st @@ -2,28 +2,29 @@ A ChanelNilEqualitySimplifierCleanerTest is a test class for testing the behavior of ChanelNilEqualitySimplifierCleaner " Class { - #name : #ChanelNilEqualitySimplifierCleanerTest, - #superclass : #ChanelMethodRewriterCleanerTest, - #category : #'Chanel-Tests' + #name : 'ChanelNilEqualitySimplifierCleanerTest', + #superclass : 'ChanelMethodRewriterCleanerTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #helpers } +{ #category : 'helpers' } ChanelNilEqualitySimplifierCleanerTest >> expressionWithNoReplacement [ ^ '10 isNil' ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelNilEqualitySimplifierCleanerTest >> replacementPair [ ^ '10 = nil' -> '10 isNil' ] -{ #category : #running } +{ #category : 'running' } ChanelNilEqualitySimplifierCleanerTest >> setUp [ super setUp. class := self createDefaultClass ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilEqualitySimplifierCleanerTest >> testDoesNotReplaceIfItIntroduceAnInfinitLoop [ | oldMethod | class @@ -44,22 +45,22 @@ ChanelNilEqualitySimplifierCleanerTest >> testDoesNotReplaceIfItIntroduceAnInfin self assert: class >> #isNil identicalTo: oldMethod ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilEqualitySimplifierCleanerTest >> testEqualsNil [ self assert: '10 = nil' isRewrittenAs: '10 isNil' ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilEqualitySimplifierCleanerTest >> testIdenticalToNil [ self assert: '10 == nil' isRewrittenAs: '10 isNil' ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilEqualitySimplifierCleanerTest >> testNotEqualsNil [ self assert: '10 ~= nil' isRewrittenAs: '10 isNotNil' ] -{ #category : #tests } +{ #category : 'tests' } ChanelNilEqualitySimplifierCleanerTest >> testNotIdenticalToNil [ self assert: '10 ~~ nil' isRewrittenAs: '10 isNotNil' ] diff --git a/src/Chanel-Tests/ChanelProtocolsCleanerTest.class.st b/src/Chanel-Tests/ChanelProtocolsCleanerTest.class.st index 71b7e3a..fd6d7a2 100644 --- a/src/Chanel-Tests/ChanelProtocolsCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelProtocolsCleanerTest.class.st @@ -2,18 +2,19 @@ A ChanelProtocolsCleanerTest is a test class for testing the behavior of ChanelProtocolsCleaner " Class { - #name : #ChanelProtocolsCleanerTest, - #superclass : #ChanelAbstractCleanerTest, - #category : #'Chanel-Tests' + #name : 'ChanelProtocolsCleanerTest', + #superclass : 'ChanelAbstractCleanerTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #running } +{ #category : 'running' } ChanelProtocolsCleanerTest >> setUp [ super setUp. class := self createDefaultClass ] -{ #category : #tests } +{ #category : 'tests' } ChanelProtocolsCleanerTest >> testDoesNotUpdateCloseProtocolIfAlreadyRight [ class compile: 'method' classified: 'instance creation'. @@ -22,7 +23,7 @@ ChanelProtocolsCleanerTest >> testDoesNotUpdateCloseProtocolIfAlreadyRight [ self assert: (class >> #method) protocolName equals: 'instance creation' ] -{ #category : #tests } +{ #category : 'tests' } ChanelProtocolsCleanerTest >> testMethodInSpecificProtocol [ class compile: 'initialize' classified: 'random'. @@ -31,7 +32,7 @@ ChanelProtocolsCleanerTest >> testMethodInSpecificProtocol [ self assert: (class >> #initialize) protocolName equals: 'initialization' ] -{ #category : #tests } +{ #category : 'tests' } ChanelProtocolsCleanerTest >> testMethodInSpecificProtocolInTrait [ | trait | trait := self createDefaultTrait. @@ -46,7 +47,7 @@ ChanelProtocolsCleanerTest >> testMethodInSpecificProtocolInTrait [ self assert: (trait localSelectors includes: #initialize) ] -{ #category : #tests } +{ #category : 'tests' } ChanelProtocolsCleanerTest >> testMethodInSpecificProtocolNotUpdateIfExtension [ class compile: 'initialize' classified: self extensionProtocolName. @@ -55,7 +56,7 @@ ChanelProtocolsCleanerTest >> testMethodInSpecificProtocolNotUpdateIfExtension [ self assert: (class >> #initialize) protocolName equals: self extensionProtocolName ] -{ #category : #tests } +{ #category : 'tests' } ChanelProtocolsCleanerTest >> testMethodInSpecificProtocolNotUpdateIfNotInTheList [ class compile: 'initialize2' classified: 'random'. @@ -64,7 +65,7 @@ ChanelProtocolsCleanerTest >> testMethodInSpecificProtocolNotUpdateIfNotInTheLis self assert: (class >> #initialize2) protocolName equals: 'random' ] -{ #category : #tests } +{ #category : 'tests' } ChanelProtocolsCleanerTest >> testMethodInSpecificProtocolOnClassSide [ class class compile: 'initialize' classified: 'random'. @@ -73,7 +74,7 @@ ChanelProtocolsCleanerTest >> testMethodInSpecificProtocolOnClassSide [ self assert: (class class>> #initialize) protocolName equals: 'initialization' ] -{ #category : #tests } +{ #category : 'tests' } ChanelProtocolsCleanerTest >> testTestMethodInSpecificProtocol [ class := self createDefaultTestClass. class compile: 'setUp' classified: 'random'. @@ -83,7 +84,7 @@ ChanelProtocolsCleanerTest >> testTestMethodInSpecificProtocol [ self assert: (class >> #setUp) protocolName equals: 'running' ] -{ #category : #tests } +{ #category : 'tests' } ChanelProtocolsCleanerTest >> testTestMethodInSpecificProtocolNotUpdatedIfExtension [ class := self createDefaultTestClass. class compile: 'setUp' classified: self extensionProtocolName. @@ -93,7 +94,7 @@ ChanelProtocolsCleanerTest >> testTestMethodInSpecificProtocolNotUpdatedIfExtens self assert: (class >> #setUp) protocolName equals: self extensionProtocolName ] -{ #category : #tests } +{ #category : 'tests' } ChanelProtocolsCleanerTest >> testTestMethodInSpecificProtocolNotUpdatedIfNotInTestCase [ class compile: 'setUp' classified: 'random'. @@ -102,7 +103,7 @@ ChanelProtocolsCleanerTest >> testTestMethodInSpecificProtocolNotUpdatedIfNotInT self assert: (class >> #setUp) protocolName equals: 'random' ] -{ #category : #tests } +{ #category : 'tests' } ChanelProtocolsCleanerTest >> testTestMethodInSpecificProtocolNotUpdatedIfNotInTheList [ class := self createDefaultTestClass. class compile: 'toto' classified: 'random'. @@ -112,7 +113,7 @@ ChanelProtocolsCleanerTest >> testTestMethodInSpecificProtocolNotUpdatedIfNotInT self assert: (class >> #toto) protocolName equals: 'random' ] -{ #category : #tests } +{ #category : 'tests' } ChanelProtocolsCleanerTest >> testTestMethodInSpecificProtocolNotUpdatedInTrait [ | trait | trait := self createDefaultTrait. @@ -130,7 +131,7 @@ ChanelProtocolsCleanerTest >> testTestMethodInSpecificProtocolNotUpdatedInTrait self assert: (trait localSelectors includes: #setUp) ] -{ #category : #tests } +{ #category : 'tests' } ChanelProtocolsCleanerTest >> testTestMethodsAreInRightProtocol [ class := self createDefaultTestClass. class compile: 'testMethod' classified: 'not a test'. @@ -140,7 +141,7 @@ ChanelProtocolsCleanerTest >> testTestMethodsAreInRightProtocol [ self assert: (class >> #testMethod) protocolName equals: 'tests' ] -{ #category : #tests } +{ #category : 'tests' } ChanelProtocolsCleanerTest >> testTestMethodsProtocolAreNotUpdateIfExtension [ class := self createDefaultTestClass. class compile: 'testMethod' classified: self extensionProtocolName. @@ -150,7 +151,7 @@ ChanelProtocolsCleanerTest >> testTestMethodsProtocolAreNotUpdateIfExtension [ self assert: (class >> #testMethod) protocolName equals: self extensionProtocolName ] -{ #category : #tests } +{ #category : 'tests' } ChanelProtocolsCleanerTest >> testTestMethodsProtocolAreNotUpdateIfNotInTestCase [ class compile: 'testMethod' classified: 'not a test'. @@ -159,7 +160,7 @@ ChanelProtocolsCleanerTest >> testTestMethodsProtocolAreNotUpdateIfNotInTestCase self assert: (class >> #testMethod) protocolName equals: 'not a test' ] -{ #category : #tests } +{ #category : 'tests' } ChanelProtocolsCleanerTest >> testTestMethodsProtocolAreNotUpdateIfStartingByTest [ class := self createDefaultTestClass. class compile: 'testMethod' classified: 'test - protocols'. @@ -169,7 +170,7 @@ ChanelProtocolsCleanerTest >> testTestMethodsProtocolAreNotUpdateIfStartingByTes self assert: (class >> #testMethod) protocolName equals: 'test - protocols' ] -{ #category : #tests } +{ #category : 'tests' } ChanelProtocolsCleanerTest >> testUpdateCloseProtocol [ class compile: 'method' classified: 'instance-creation'. @@ -178,7 +179,7 @@ ChanelProtocolsCleanerTest >> testUpdateCloseProtocol [ self assert: (class >> #method) protocolName equals: 'instance creation' ] -{ #category : #tests } +{ #category : 'tests' } ChanelProtocolsCleanerTest >> testUpdateCloseProtocolInTrait [ | trait | trait := self createDefaultTrait. @@ -195,7 +196,7 @@ ChanelProtocolsCleanerTest >> testUpdateCloseProtocolInTrait [ self assert: (trait localSelectors includes: #method) ] -{ #category : #tests } +{ #category : 'tests' } ChanelProtocolsCleanerTest >> testUpdateCloseProtocolOnClassSide [ class class compile: 'method' classified: 'instance-creation'. diff --git a/src/Chanel-Tests/ChanelRemoveAssigmentWithoutEffectCleanerTest.class.st b/src/Chanel-Tests/ChanelRemoveAssigmentWithoutEffectCleanerTest.class.st index b68afef..d117e79 100644 --- a/src/Chanel-Tests/ChanelRemoveAssigmentWithoutEffectCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelRemoveAssigmentWithoutEffectCleanerTest.class.st @@ -2,38 +2,41 @@ A ChanelRemoveAssigmentWithoutEffectCleanerTest is a test class for testing the behavior of ChanelRemoveAssigmentWithoutEffectCleaner " Class { - #name : #ChanelRemoveAssigmentWithoutEffectCleanerTest, - #superclass : #ChanelMethodRewriterCleanerTest, - #category : #'Chanel-Tests' + #name : 'ChanelRemoveAssigmentWithoutEffectCleanerTest', + #superclass : 'ChanelMethodRewriterCleanerTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #helpers } +{ #category : 'helpers' } ChanelRemoveAssigmentWithoutEffectCleanerTest >> expressionWithNoReplacement [ - ^ 'test := test foo' + ^ '| test | +test := test foo' ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelRemoveAssigmentWithoutEffectCleanerTest >> replacementPair [ ^ 'test := test' -> '' ] -{ #category : #running } +{ #category : 'running' } ChanelRemoveAssigmentWithoutEffectCleanerTest >> setUp [ super setUp. class := self createDefaultClass ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveAssigmentWithoutEffectCleanerTest >> testRemoveUnecessaryAssigment [ self assert: 'test := test' isRewrittenAs: '' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveAssigmentWithoutEffectCleanerTest >> testRemoveUnecessaryAssigmentInDeeperScope [ self assert: 'true ifTrue: [ test := test ]' isRewrittenAs: 'true ifTrue: [ ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveAssigmentWithoutEffectCleanerTest >> testWithNothingToReplace2 [ - self denyIsRewritten: 'test := 3' + self denyIsRewritten: '| test | +test := 3' ] diff --git a/src/Chanel-Tests/ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest.class.st b/src/Chanel-Tests/ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest.class.st index 223cb49..920997c 100644 --- a/src/Chanel-Tests/ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest.class.st @@ -2,22 +2,23 @@ A ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest is a test class for testing the behavior of ChanelRemoveMethodsWithEquivalentInSuperClassCleaner " Class { - #name : #ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest, - #superclass : #ChanelAbstractCleanerTest, + #name : 'ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest', + #superclass : 'ChanelAbstractCleanerTest', #instVars : [ 'superClass' ], - #category : #'Chanel-Tests' + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #running } +{ #category : 'running' } ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest >> setUp [ super setUp. superClass := self createDefaultClass. class := self createSubclassOf: superClass named: #ChanelRemoveMethodssWithSuperEquavalentSubClassFake ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest >> testClassRemoveMethodWithEquivalentInSuperClass [ superClass class compile: 'methodTest ^2'. @@ -31,7 +32,7 @@ ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest >> testClassRemoveMetho self deny: (class class localSelectors includes: #methodTest) ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest >> testDoesNotRemoveMethodIfNotPresentInSuperClass [ class compile: 'method ^3'. @@ -42,7 +43,7 @@ ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest >> testDoesNotRemoveMet self assert: (class localSelectors includes: #method) ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest >> testDoesNotRemoveMethodsFromTrait [ | trait | trait := self createDefaultTrait. @@ -62,7 +63,7 @@ ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest >> testDoesNotRemoveMet self assert: (trait localSelectors includes: #method) ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest >> testDoesNotRemoveNotEquivalentMethod [ superClass compile: 'method ^2'. @@ -76,7 +77,7 @@ ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest >> testDoesNotRemoveNot self assert: (class localSelectors includes: #method) ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest >> testDoesNotRemoveNotEquivalentMethodWithPragma [ superClass compile: 'method ^2'. @@ -91,7 +92,7 @@ ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest >> testDoesNotRemoveNot self assert: (class localSelectors includes: #method) ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest >> testRemoveMethodWithEquivalentInSuperClass [ superClass compile: 'method ^2'. @@ -105,7 +106,7 @@ ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest >> testRemoveMethodWith self deny: (class localSelectors includes: #method) ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest >> testRemoveMethodWithEquivalentInSuperClassWithComment [ superClass compile: 'method ^2'. @@ -120,7 +121,7 @@ ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest >> testRemoveMethodWith self deny: (class localSelectors includes: #method) ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveMethodsWithEquivalentInSuperClassCleanerTest >> testRemoveMethodWithEquivalentInSuperClassWithJustCommentDifference [ superClass compile: 'method ^2'. diff --git a/src/Chanel-Tests/ChanelRemoveUnecesaryNotCleanerTest.class.st b/src/Chanel-Tests/ChanelRemoveUnecesaryNotCleanerTest.class.st index 37e7620..a24a277 100644 --- a/src/Chanel-Tests/ChanelRemoveUnecesaryNotCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelRemoveUnecesaryNotCleanerTest.class.st @@ -2,78 +2,79 @@ A ChanelRemoveUnecesaryNotCleanerTest is a test class for testing the behavior of ChanelRemoveUnecesaryNotCleaner " Class { - #name : #ChanelRemoveUnecesaryNotCleanerTest, - #superclass : #ChanelMethodRewriterCleanerTest, - #category : #'Chanel-Tests' + #name : 'ChanelRemoveUnecesaryNotCleanerTest', + #superclass : 'ChanelMethodRewriterCleanerTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #helpers } +{ #category : 'helpers' } ChanelRemoveUnecesaryNotCleanerTest >> expressionWithNoReplacement [ ^ 'self toto not' ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelRemoveUnecesaryNotCleanerTest >> replacementPair [ ^ 'true not' -> 'false' ] -{ #category : #running } +{ #category : 'running' } ChanelRemoveUnecesaryNotCleanerTest >> setUp [ super setUp. class := self createDefaultClass ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testAssertEquals2NotNotReplacedForPharo6 [ self deny: 'self assert: self toto not equals: self tata' isRewrittenForPharo: 6 ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testAssertEqualsNot [ self assert: 'self assert: self toto equals: self tata not' isRewrittenAs: 'self deny: self toto equals: self tata' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testAssertEqualsNot2 [ self assert: 'self assert: self toto not equals: self tata' isRewrittenAs: 'self deny: self toto equals: self tata' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testAssertEqualsNotNotReplacedForPharo6 [ self deny: 'self assert: self toto equals: self tata not' isRewrittenForPharo: 6 ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testAssertNot [ self assert: 'self assert: self toto not' isRewrittenAs: 'self deny: self toto' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testDenyEqualsNot [ self assert: 'self deny: self toto equals: self tata not' isRewrittenAs: 'self assert: self toto equals: self tata' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testDenyEqualsNot2 [ self assert: 'self deny: self toto not equals: self tata' isRewrittenAs: 'self assert: self toto equals: self tata' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testDenyNot [ self assert: 'self deny: self toto not' isRewrittenAs: 'self assert: self toto' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testDifferent2Not [ self assert: '(self toto ~~ self tata) not' isRewrittenAs: 'self toto == self tata' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testDifferentNot [ self assert: '(self toto ~= self tata) not' isRewrittenAs: 'self toto = self tata' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testDoesNotReplaceIfItIntroduceAnInfinitLoop [ | oldMethod | class @@ -94,77 +95,77 @@ ChanelRemoveUnecesaryNotCleanerTest >> testDoesNotReplaceIfItIntroduceAnInfinitL self assert: class >> #>= identicalTo: oldMethod ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testEqualNot [ self assert: '(self toto = self tata) not' isRewrittenAs: 'self toto ~= self tata' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testFalseNot [ self assert: 'false not' isRewrittenAs: 'true' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testIdenticalNot [ self assert: '(self toto == self tata) not' isRewrittenAs: 'self toto ~~ self tata' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testInferiorNot [ self assert: '(self toto < self tata) not' isRewrittenAs: 'self toto >= self tata' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testInferiorOrEqualNot [ self assert: '(self toto <= self tata) not' isRewrittenAs: 'self toto > self tata' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testIsEmptyNot [ self assert: '#() isEmpty not' isRewrittenAs: '#() isNotEmpty' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testIsNilNot [ self assert: 'nil isNil not' isRewrittenAs: 'nil isNotNil' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testIsNotEmptyNot [ self assert: '#() isNotEmpty not' isRewrittenAs: '#() isEmpty' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testIsNotNilNot [ self assert: 'nil isNotNil not' isRewrittenAs: 'nil isNil' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testNotIfFalse [ self assert: 'self test not ifFalse: [ 1 ]' isRewrittenAs: 'self test ifTrue: [ 1 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testNotIfFalseIfTrue [ self assert: 'self test not ifFalse: [ 1 ] ifTrue: [ 2 ]' isRewrittenAs: 'self test ifTrue: [ 1 ] ifFalse: [ 2 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testNotIfTrue [ self assert: 'self test not ifTrue: [ 1 ]' isRewrittenAs: 'self test ifFalse: [ 1 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testNotIfTrueIfFalse [ self assert: 'self test not ifTrue: [ 2 ] ifFalse: [ 1 ]' isRewrittenAs: 'self test ifTrue: [ 1 ] ifFalse: [ 2 ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testNotNot [ self assert: 'self test not not' isRewrittenAs: 'self test' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testRegression1 [ self denyIsRewritten: '| rewriter | rewriter := self rewriter. @@ -172,12 +173,12 @@ ChanelRemoveUnecesaryNotCleanerTest >> testRegression1 [ do: [ :method | (rewriter executeTree: method ast) ifTrue: [ method installAST ] ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testRejectNot [ self assert: '#() reject: [:e | e odd not ]' isRewrittenAs: '#() select: [:e | e odd ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testRejectNotDoesNotRemoveIntermediateStatementsAndTemporaries [ self assert: @@ -190,42 +191,42 @@ ChanelRemoveUnecesaryNotCleanerTest >> testRejectNotDoesNotRemoveIntermediateSta e odd ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testSelectNot [ self assert: '#() select: [:e | e odd not ]' isRewrittenAs: '#() reject: [:e | e odd ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testSuperiorNot [ self assert: '(self toto > self tata) not' isRewrittenAs: 'self toto <= self tata' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testSuperiorOrEqualNot [ self assert: '(self toto >= self tata) not' isRewrittenAs: 'self toto < self tata' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testTrueNot [ self assert: 'true not' isRewrittenAs: 'false' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testWhileFalseNot [ self assert: '[ self toto not ] whileFalse: [ self tata ]' isRewrittenAs: '[ self toto ] whileTrue: [ self tata ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testWhileFalseNot2 [ self assert: '[ self toto not ] whileFalse' isRewrittenAs: '[ self toto ] whileTrue' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testWhileTrueNot [ self assert: '[ self toto not ] whileTrue: [ self tata ]' isRewrittenAs: '[ self toto ] whileFalse: [ self tata ]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnecesaryNotCleanerTest >> testWhileTrueNot2 [ self assert: '[ self toto not ] whileTrue' isRewrittenAs: '[ self toto ] whileFalse' ] diff --git a/src/Chanel-Tests/ChanelRemoveUnusedNodesFromASTCleanerTest.class.st b/src/Chanel-Tests/ChanelRemoveUnusedNodesFromASTCleanerTest.class.st index 03a1c51..a5c3e5d 100644 --- a/src/Chanel-Tests/ChanelRemoveUnusedNodesFromASTCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelRemoveUnusedNodesFromASTCleanerTest.class.st @@ -2,53 +2,55 @@ A ChanelRemoveUnusedNodesFromASTCleanerTest is a test class for testing the behavior of ChanelRemoveUnusedNodesFromASTCleaner " Class { - #name : #ChanelRemoveUnusedNodesFromASTCleanerTest, - #superclass : #ChanelAbstractCleanerTest, - #category : #'Chanel-Tests' + #name : 'ChanelRemoveUnusedNodesFromASTCleanerTest', + #superclass : 'ChanelAbstractCleanerTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #running } +{ #category : 'running' } ChanelRemoveUnusedNodesFromASTCleanerTest >> setUp [ super setUp. class := self createDefaultClass ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testDoesNotRemoveNodesInAssignation [ - self denyIsRewritten: 'test := 1' + self denyIsRewritten: '|test| + test := 1' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testDoesNotRemoveNodesInByteArray [ self denyIsRewritten: '^#[1]' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testDoesNotRemoveNodesInDynamicArray [ self denyIsRewritten: '^{ 1 }' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testDoesNotRemoveNodesInLiteralArray [ self denyIsRewritten: '^#(1)' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testDoesNotRemoveNodesInPragma [ self denyIsRewritten: '' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testDoesNotRemoveNodesInReturn [ self denyIsRewritten: '^1' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testDoesNotRemoveNodesReceivingMessages [ self denyIsRewritten: '1 asString' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemove2UselessNodes [ self assert: @@ -58,7 +60,7 @@ ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemove2UselessNodes [ isRewrittenAs: '^1' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessArgumentRead [ self assert: @@ -67,7 +69,7 @@ ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessArgumentRead [ isRewrittenAs: '^test' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessBlock [ self assert: @@ -76,7 +78,7 @@ ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessBlock [ isRewrittenAs: '^1' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessBoolean [ self assert: @@ -85,7 +87,7 @@ ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessBoolean [ isRewrittenAs: '^1' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessByteArray [ self assert: @@ -94,7 +96,7 @@ ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessByteArray [ isRewrittenAs: '^1' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessDynamicArray [ self assert: @@ -103,7 +105,7 @@ ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessDynamicArray [ isRewrittenAs: '^1' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessGlobal [ self assert: @@ -112,7 +114,7 @@ ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessGlobal [ isRewrittenAs: '^1' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessInstanceVariableRead [ self assert: @@ -121,7 +123,7 @@ ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessInstanceVariableRe isRewrittenAs: '^1' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessLiteralArray [ self assert: @@ -130,7 +132,7 @@ ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessLiteralArray [ isRewrittenAs: '^1' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessNil [ self assert: @@ -139,7 +141,7 @@ ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessNil [ isRewrittenAs: '^1' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessNodeInAnUnselessNode [ self assert: @@ -148,7 +150,7 @@ ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessNodeInAnUnselessNo isRewrittenAs: '^1' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessNodeInTrait [ | trait | trait := self createDefaultTrait. @@ -167,7 +169,7 @@ ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessNodeInTrait [ self deny: (class localSelectors includes: #method) ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessNodeOnClassSide [ self assert: @@ -177,7 +179,7 @@ ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessNodeOnClassSide [ in: class class ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessNumber [ self assert: @@ -186,7 +188,7 @@ ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessNumber [ isRewrittenAs: '^1' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessSelf [ self assert: @@ -195,7 +197,7 @@ ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessSelf [ isRewrittenAs: '^1' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessString [ self assert: @@ -204,7 +206,7 @@ ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessString [ isRewrittenAs: '^1' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessSuper [ self assert: @@ -213,7 +215,7 @@ ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessSuper [ isRewrittenAs: '^1' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessSymbol [ self assert: @@ -222,7 +224,7 @@ ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessSymbol [ isRewrittenAs: '^1' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessTemporaryRead [ self assert: @@ -236,7 +238,7 @@ ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessTemporaryRead [ ^test' ] -{ #category : #tests } +{ #category : 'tests' } ChanelRemoveUnusedNodesFromASTCleanerTest >> testRemoveUselessThisContext [ self assert: diff --git a/src/Chanel-Tests/ChanelTest.class.st b/src/Chanel-Tests/ChanelTest.class.st index b1adadb..cbb2a4e 100644 --- a/src/Chanel-Tests/ChanelTest.class.st +++ b/src/Chanel-Tests/ChanelTest.class.st @@ -2,12 +2,13 @@ A ChanelTest is a test class for testing the behavior of Chanel " Class { - #name : #ChanelTest, - #superclass : #ChanelAbstractTest, - #category : #'Chanel-Tests' + #name : 'ChanelTest', + #superclass : 'ChanelAbstractTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #tests } +{ #category : 'tests' } ChanelTest >> testSmokeTest [ self shouldnt: [ Chanel perfume: (#('Chanel-Tests' 'BaselineOfChanel' 'Chanel') collect: #asPackage) ] raise: Error ] diff --git a/src/Chanel-Tests/ChanelTestCaseNameCleanerTest.class.st b/src/Chanel-Tests/ChanelTestCaseNameCleanerTest.class.st index 515861c..af41b63 100644 --- a/src/Chanel-Tests/ChanelTestCaseNameCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelTestCaseNameCleanerTest.class.st @@ -2,12 +2,13 @@ A ChanelTestCaseNameCleanerTest is a test class for testing the behavior of ChanelTestCaseNameCleaner " Class { - #name : #ChanelTestCaseNameCleanerTest, - #superclass : #ChanelAbstractCleanerTest, - #category : #'Chanel-Tests' + #name : 'ChanelTestCaseNameCleanerTest', + #superclass : 'ChanelAbstractCleanerTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #tests } +{ #category : 'tests' } ChanelTestCaseNameCleanerTest >> testRenameTestCaseEndingWithTests [ "/!\ /!\ We use #asSymbol instead of writing symbols because the renaming will update the references in the image, thus, it will rename the symbols in the test. /!\ /!\ " @@ -19,7 +20,7 @@ ChanelTestCaseNameCleanerTest >> testRenameTestCaseEndingWithTests [ self class environment at: 'ChanelMockTest' asSymbol ifAbsent: [ self fail ] ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestCaseNameCleanerTest >> testRenameTestCaseEndingWithTestsUpdateReferences [ "/!\ /!\ We use #asSymbol instead of writing symbols because the renaming will update the references in the image, thus, it will rename the symbols in the test. /!\ /!\ " @@ -52,7 +53,7 @@ ChanelTestCaseNameCleanerTest >> testRenameTestCaseEndingWithTestsUpdateReferenc ifAbsent: [ self fail ] ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestCaseNameCleanerTest >> testShouldNotRenameIfTheNewClassNameAlreadyExistsInTheSystem [ "/!\ /!\ We use #asSymbol instead of writing symbols because the renaming will update the references in the image, thus, it will rename the symbols in the test. /!\ /!\ " @@ -67,7 +68,7 @@ ChanelTestCaseNameCleanerTest >> testShouldNotRenameIfTheNewClassNameAlreadyExis self class environment at: 'ChanelMockTests' asSymbol ifAbsent: [ self fail ] ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestCaseNameCleanerTest >> testShouldNotRenameNonTestCaseEndingWithTest [ "/!\ /!\ We use #asSymbol instead of writing symbols because the renaming will update the references in the image, thus, it will rename the symbols in the test. /!\ /!\ " @@ -79,7 +80,7 @@ ChanelTestCaseNameCleanerTest >> testShouldNotRenameNonTestCaseEndingWithTest [ self class environment at: 'ChanelMockTest' asSymbol ifAbsent: [ self fail ] ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestCaseNameCleanerTest >> testShouldNotRenameNonTestCaseEndingWithTests [ "/!\ /!\ We use #asSymbol instead of writing symbols because the renaming will update the references in the image, thus, it will rename the symbols in the test. /!\ /!\ " @@ -92,7 +93,7 @@ ChanelTestCaseNameCleanerTest >> testShouldNotRenameNonTestCaseEndingWithTests [ self class environment at: 'ChanelMockTest' asSymbol ifPresent: [ :c | self fail ] ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestCaseNameCleanerTest >> testShouldNotRenameNonTraitEndingWithTests [ "/!\ /!\ We use #asSymbol instead of writing symbols because the renaming will update the references in the image, thus, it will rename the symbols in the test. /!\ /!\ " @@ -105,7 +106,7 @@ ChanelTestCaseNameCleanerTest >> testShouldNotRenameNonTraitEndingWithTests [ self class environment at: 'TChanelMockTest' asSymbol ifPresent: [ :c | self fail ] ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestCaseNameCleanerTest >> testShouldNotRenameTestCaseEndingWithTest [ "/!\ /!\ We use #asSymbol instead of writing symbols because the renaming will update the references in the image, thus, it will rename the symbols in the test. /!\ /!\ " diff --git a/src/Chanel-Tests/ChanelTestEmptyAssertionsCleanerTest.class.st b/src/Chanel-Tests/ChanelTestEmptyAssertionsCleanerTest.class.st index 09f3b07..4cd39cb 100644 --- a/src/Chanel-Tests/ChanelTestEmptyAssertionsCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelTestEmptyAssertionsCleanerTest.class.st @@ -2,73 +2,74 @@ A ChanelTestEmptyAssertionsCleanerTest is a test class for testing the behavior of ChanelTestEmptyAssertionsCleaner " Class { - #name : #ChanelTestEmptyAssertionsCleanerTest, - #superclass : #ChanelMethodRewriterCleanerTest, - #category : #'Chanel-Tests' + #name : 'ChanelTestEmptyAssertionsCleanerTest', + #superclass : 'ChanelMethodRewriterCleanerTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #helpers } +{ #category : 'helpers' } ChanelTestEmptyAssertionsCleanerTest >> expressionWithNoReplacement [ ^ 'self assert: 3 equals: 2' ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelTestEmptyAssertionsCleanerTest >> replaceInTraits [ ^ false ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelTestEmptyAssertionsCleanerTest >> replacementPair [ ^ 'self assert: #() isEmpty' -> 'self assertEmpty: #()' ] -{ #category : #running } +{ #category : 'running' } ChanelTestEmptyAssertionsCleanerTest >> setUp [ super setUp. class := self createDefaultTestClass ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEmptyAssertionsCleanerTest >> testAssertEmpty [ self assert: 'self assert: #() isEmpty' isRewrittenAs: 'self assertEmpty: #()' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEmptyAssertionsCleanerTest >> testAssertEmpty2 [ self assert: 'self deny: #() isNotEmpty' isRewrittenAs: 'self assertEmpty: #()' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEmptyAssertionsCleanerTest >> testAssertEmpty2NotReplacedForPharo7 [ self deny: 'self deny: #() isNotEmpty' isRewrittenForPharo: 7 ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEmptyAssertionsCleanerTest >> testAssertEmptyNotReplacedForPharo7 [ self deny: 'self assert: #() isEmpty' isRewrittenForPharo: 7 ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEmptyAssertionsCleanerTest >> testDenyEmpty [ self assert: 'self deny: #() isEmpty' isRewrittenAs: 'self denyEmpty: #()' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEmptyAssertionsCleanerTest >> testDenyEmpty2 [ self assert: 'self assert: #() isNotEmpty' isRewrittenAs: 'self denyEmpty: #()' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEmptyAssertionsCleanerTest >> testDenyEmpty2NotReplacedForPharo7 [ self deny: 'self assert: #() isNotEmpty' isRewrittenForPharo: 7 ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEmptyAssertionsCleanerTest >> testDenyEmptyNotReplacedForPharo7 [ self deny: 'self deny: #() isEmpty' isRewrittenForPharo: 7 ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEmptyAssertionsCleanerTest >> testShouldNotReplaceIfNotATestCase [ "We only replace the assertion of TestCase because other objects are much poorer in term of assertions." diff --git a/src/Chanel-Tests/ChanelTestEqualityCleanerTest.class.st b/src/Chanel-Tests/ChanelTestEqualityCleanerTest.class.st index b99965d..1e4b7bc 100644 --- a/src/Chanel-Tests/ChanelTestEqualityCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelTestEqualityCleanerTest.class.st @@ -2,158 +2,159 @@ A ChanelTestEqualityCleanerTest is a test class for testing the behavior of ChanelTestEqualityCleaner " Class { - #name : #ChanelTestEqualityCleanerTest, - #superclass : #ChanelMethodRewriterCleanerTest, - #category : #'Chanel-Tests' + #name : 'ChanelTestEqualityCleanerTest', + #superclass : 'ChanelMethodRewriterCleanerTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #helpers } +{ #category : 'helpers' } ChanelTestEqualityCleanerTest >> expressionWithNoReplacement [ ^ 'self assert: 3 equals: 2' ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelTestEqualityCleanerTest >> replaceInTraits [ ^ false ] -{ #category : #helpers } +{ #category : 'helpers' } ChanelTestEqualityCleanerTest >> replacementPair [ ^ 'self assert: 3 = 2' -> 'self assert: 3 equals: 2' ] -{ #category : #running } +{ #category : 'running' } ChanelTestEqualityCleanerTest >> setUp [ super setUp. class := self createDefaultTestClass ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testAssertCloseTo [ self assert: 'self assert: (3 closeTo: 2)' isRewrittenAs: 'self assert: 3 closeTo: 2' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testAssertEquals [ self assert: 'self assert: 3 = 2' isRewrittenAs: 'self assert: 3 equals: 2' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testAssertEqualsFalse [ self assert: 'self assert: 3 = false' isRewrittenAs: 'self deny: 3' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testAssertEqualsFalse2 [ self assert: 'self assert: 3 equals: false' isRewrittenAs: 'self deny: 3' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testAssertEqualsTrue [ self assert: 'self assert: 3 = true' isRewrittenAs: 'self assert: 3' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testAssertEqualsTrue2 [ self assert: 'self assert: 3 equals: true' isRewrittenAs: 'self assert: 3' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testAssertIdenticalTo [ self assert: 'self assert: 3 == 2' isRewrittenAs: 'self assert: 3 identicalTo: 2' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testAssertIdenticalToFalse [ self assert: 'self assert: 3 == false' isRewrittenAs: 'self deny: 3' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testAssertIdenticalToFalse2 [ self assert: 'self assert: 3 identicalTo: false' isRewrittenAs: 'self deny: 3' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testAssertIdenticalToNotReplacedForPharo6 [ self deny: 'self assert: 3 == 2' isRewrittenForPharo: 6 ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testAssertIdenticalToTrue [ self assert: 'self assert: 3 == true' isRewrittenAs: 'self assert: 3' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testAssertIdenticalToTrue2 [ self assert: 'self assert: 3 identicalTo: true' isRewrittenAs: 'self assert: 3' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testDenyCloseTo [ self assert: 'self deny: (3 closeTo: 2)' isRewrittenAs: 'self deny: 3 closeTo: 2' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testDenyEquals [ self assert: 'self deny: 3 = 2' isRewrittenAs: 'self deny: 3 equals: 2' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testDenyEqualsFalse [ self assert: 'self deny: 3 = false' isRewrittenAs: 'self assert: 3' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testDenyEqualsFalse2 [ self assert: 'self deny: 3 equals: false' isRewrittenAs: 'self assert: 3' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testDenyEqualsNotReplacedForPharo6 [ self deny: 'self deny: 3 = 2' isRewrittenForPharo: 6 ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testDenyEqualsTrue [ self assert: 'self deny: 3 = true' isRewrittenAs: 'self deny: 3' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testDenyEqualsTrue2 [ self assert: 'self deny: 3 equals: true' isRewrittenAs: 'self deny: 3' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testDenyIdenticalTo [ self assert: 'self deny: 3 == 2' isRewrittenAs: 'self deny: 3 identicalTo: 2' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testDenyIdenticalToFalse [ self assert: 'self deny: 3 == false' isRewrittenAs: 'self assert: 3' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testDenyIdenticalToFalse2 [ self assert: 'self deny: 3 identicalTo: false' isRewrittenAs: 'self assert: 3' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testDenyIdenticalToNotReplacedForPharo6 [ self deny: 'self deny: 3 == 2' isRewrittenForPharo: 6 ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testDenyIdenticalToTrue [ self assert: 'self deny: 3 == true' isRewrittenAs: 'self deny: 3' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testDenyIdenticalToTrue2 [ self assert: 'self deny: 3 identicalTo: true' isRewrittenAs: 'self deny: 3' ] -{ #category : #tests } +{ #category : 'tests' } ChanelTestEqualityCleanerTest >> testShouldNotReplaceIfNotATestCase [ "We only replace the assertion of TestCase because other objects are much poorer in term of assertions." diff --git a/src/Chanel-Tests/ChanelUnreadTemporaryCleanerTest.class.st b/src/Chanel-Tests/ChanelUnreadTemporaryCleanerTest.class.st index 6d9460b..5b34ccf 100644 --- a/src/Chanel-Tests/ChanelUnreadTemporaryCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelUnreadTemporaryCleanerTest.class.st @@ -2,18 +2,19 @@ A ChanelUnreadTemporaryCleanerTest is a test class for testing the behavior of ChanelUnreadTemporaryCleaner " Class { - #name : #ChanelUnreadTemporaryCleanerTest, - #superclass : #ChanelAbstractCleanerTest, - #category : #'Chanel-Tests' + #name : 'ChanelUnreadTemporaryCleanerTest', + #superclass : 'ChanelAbstractCleanerTest', + #category : 'Chanel-Tests', + #package : 'Chanel-Tests' } -{ #category : #running } +{ #category : 'running' } ChanelUnreadTemporaryCleanerTest >> setUp [ super setUp. class := self createDefaultClass ] -{ #category : #tests } +{ #category : 'tests' } ChanelUnreadTemporaryCleanerTest >> testDoesNotRemoveTemporaryReadFromDeeperScope [ self denyIsRewritten: 'true ifTrue: [ | test | test := self toto. @@ -21,14 +22,14 @@ ChanelUnreadTemporaryCleanerTest >> testDoesNotRemoveTemporaryReadFromDeeperScop ^#one' ] -{ #category : #tests } +{ #category : 'tests' } ChanelUnreadTemporaryCleanerTest >> testDontRemoveTemporaryRead [ self denyIsRewritten: '| test | test := self toto. ^test' ] -{ #category : #tests } +{ #category : 'tests' } ChanelUnreadTemporaryCleanerTest >> testRemoveTemporaries [ self assert: @@ -42,7 +43,7 @@ ChanelUnreadTemporaryCleanerTest >> testRemoveTemporaries [ ^#one' ] -{ #category : #tests } +{ #category : 'tests' } ChanelUnreadTemporaryCleanerTest >> testRemoveTemporariesOnClassSide [ self assert: @@ -56,7 +57,7 @@ ChanelUnreadTemporaryCleanerTest >> testRemoveTemporariesOnClassSide [ ^#one' ] -{ #category : #tests } +{ #category : 'tests' } ChanelUnreadTemporaryCleanerTest >> testRemoveTemporary [ self assert: @@ -68,7 +69,7 @@ ChanelUnreadTemporaryCleanerTest >> testRemoveTemporary [ ^#one' ] -{ #category : #tests } +{ #category : 'tests' } ChanelUnreadTemporaryCleanerTest >> testRemoveTemporary2 [ self assert: @@ -81,7 +82,7 @@ ChanelUnreadTemporaryCleanerTest >> testRemoveTemporary2 [ ^#one' ] -{ #category : #tests } +{ #category : 'tests' } ChanelUnreadTemporaryCleanerTest >> testRemoveTemporaryFromDeeperScope [ self assert: @@ -94,7 +95,7 @@ ChanelUnreadTemporaryCleanerTest >> testRemoveTemporaryFromDeeperScope [ ^#one' ] -{ #category : #tests } +{ #category : 'tests' } ChanelUnreadTemporaryCleanerTest >> testRemoveTemporaryFromDeeperScopes [ self assert: @@ -109,7 +110,7 @@ ChanelUnreadTemporaryCleanerTest >> testRemoveTemporaryFromDeeperScopes [ ^#one' ] -{ #category : #tests } +{ #category : 'tests' } ChanelUnreadTemporaryCleanerTest >> testRemoveTemporaryFromDeeperScopesWithOneRead [ self assert: @@ -126,7 +127,7 @@ ChanelUnreadTemporaryCleanerTest >> testRemoveTemporaryFromDeeperScopesWithOneRe ^#one' ] -{ #category : #tests } +{ #category : 'tests' } ChanelUnreadTemporaryCleanerTest >> testRemoveTemporaryInTrait [ | trait | trait := self createDefaultTrait. diff --git a/src/Chanel-Tests/package.st b/src/Chanel-Tests/package.st index 4acce08..603fb36 100644 --- a/src/Chanel-Tests/package.st +++ b/src/Chanel-Tests/package.st @@ -1 +1 @@ -Package { #name : #'Chanel-Tests' } +Package { #name : 'Chanel-Tests' } From c859b61155ecbdcdebc7c4102467790903406191 Mon Sep 17 00:00:00 2001 From: CyrilFerlicot Date: Tue, 11 Nov 2025 21:36:54 +0100 Subject: [PATCH 5/9] Fix only for P12 for now --- .github/workflows/continuous.yml | 2 +- README.md | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/continuous.yml b/.github/workflows/continuous.yml index 70eac6c..c4fdef2 100644 --- a/.github/workflows/continuous.yml +++ b/.github/workflows/continuous.yml @@ -9,7 +9,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} strategy: matrix: - smalltalk: [ Pharo64-7.0, Pharo64-8.0, Pharo64-9.0, Pharo64-10, Pharo64-11, Pharo64-12, Pharo64-13, Pharo64-14 ] + smalltalk: [ Pharo64-7.0, Pharo64-8.0, Pharo64-9.0, Pharo64-10, Pharo64-11, Pharo64-12 ] name: ${{ matrix.smalltalk }} steps: - uses: actions/checkout@v4 diff --git a/README.md b/README.md index 9137cce..fa47d8a 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,6 @@ [![Pharo version](https://img.shields.io/badge/Pharo-10-%23aac9ff.svg)](https://pharo.org/download) [![Pharo version](https://img.shields.io/badge/Pharo-11-%23aac9ff.svg)](https://pharo.org/download) [![Pharo version](https://img.shields.io/badge/Pharo-12-%23aac9ff.svg)](https://pharo.org/download) -[![Pharo version](https://img.shields.io/badge/Pharo-13-%23aac9ff.svg)](https://pharo.org/download) -[![Pharo version](https://img.shields.io/badge/Pharo-14-%23aac9ff.svg)](https://pharo.org/download) Chanel is a code cleaner for Pharo. @@ -95,7 +93,7 @@ Thus, it should be safe to depend on a fixed major version and moving minor vers | Version | Compatible Pharo versions | |------------- |--------------------------- | -| 1.x.x | Pharo 70, 80, 90, 10, 11, 12, 13, 14 | +| 1.x.x | Pharo 70, 80, 90, 10, 11, 12 | ## Contact From 39b8de81ac2dc8641cd7b7d5002322108ebf8fc3 Mon Sep 17 00:00:00 2001 From: CyrilFerlicot Date: Tue, 11 Nov 2025 21:41:20 +0100 Subject: [PATCH 6/9] Remove use of deprecated API --- src/Chanel-Tests/ChanelAbstractCleanerTest.class.st | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Chanel-Tests/ChanelAbstractCleanerTest.class.st b/src/Chanel-Tests/ChanelAbstractCleanerTest.class.st index 96cfa92..b0f0ad1 100644 --- a/src/Chanel-Tests/ChanelAbstractCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelAbstractCleanerTest.class.st @@ -138,8 +138,8 @@ ChanelAbstractCleanerTest >> runCleanerForPharo: anInteger [ ChanelAbstractCleanerTest >> setUp [ super setUp. - package := RPackageOrganizer default createPackageNamed: 'Package-Test-For-Chanel'. - extensionPackage := RPackageOrganizer default createPackageNamed: 'ExtensionPackage-Test-For-Chanel'. + package := self class packageOrganizer default ensurePackage: 'Package-Test-For-Chanel'. + extensionPackage := self class packageOrganizer default ensurePackage: 'ExtensionPackage-Test-For-Chanel'. "We only save the formatter if it is not the one used in the tests. The reason is that, while debugging a test, if it fails and is rerun, the set up is runned twice and the formatter used in tests will be saved in `previousFormatter`. From 5abf4e6ed0540aa87c4952d98597d288fce8934a Mon Sep 17 00:00:00 2001 From: CyrilFerlicot Date: Tue, 11 Nov 2025 21:43:11 +0100 Subject: [PATCH 7/9] Further simplifications --- src/Chanel-Tests/ChanelAbstractCleanerTest.class.st | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Chanel-Tests/ChanelAbstractCleanerTest.class.st b/src/Chanel-Tests/ChanelAbstractCleanerTest.class.st index b0f0ad1..295cab0 100644 --- a/src/Chanel-Tests/ChanelAbstractCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelAbstractCleanerTest.class.st @@ -138,8 +138,8 @@ ChanelAbstractCleanerTest >> runCleanerForPharo: anInteger [ ChanelAbstractCleanerTest >> setUp [ super setUp. - package := self class packageOrganizer default ensurePackage: 'Package-Test-For-Chanel'. - extensionPackage := self class packageOrganizer default ensurePackage: 'ExtensionPackage-Test-For-Chanel'. + package := self class packageOrganizer ensurePackage: 'Package-Test-For-Chanel'. + extensionPackage := self class packageOrganizer ensurePackage: 'ExtensionPackage-Test-For-Chanel'. "We only save the formatter if it is not the one used in the tests. The reason is that, while debugging a test, if it fails and is rerun, the set up is runned twice and the formatter used in tests will be saved in `previousFormatter`. From 520de8238cb99a544644c4a775ca1857d2f36e01 Mon Sep 17 00:00:00 2001 From: CyrilFerlicot Date: Tue, 11 Nov 2025 21:49:09 +0100 Subject: [PATCH 8/9] Use new class definition API --- .../ChanelAbstractCleanerTest.class.st | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Chanel-Tests/ChanelAbstractCleanerTest.class.st b/src/Chanel-Tests/ChanelAbstractCleanerTest.class.st index 295cab0..14dc795 100644 --- a/src/Chanel-Tests/ChanelAbstractCleanerTest.class.st +++ b/src/Chanel-Tests/ChanelAbstractCleanerTest.class.st @@ -71,11 +71,12 @@ ChanelAbstractCleanerTest >> createDefaultTrait [ { #category : 'helpers' } ChanelAbstractCleanerTest >> createSubclassOf: aClass named: aSymbol [ - ^ aClass - subclass: aSymbol - instanceVariableNames: '' - classVariableNames: '' - package: package name + + ^ aClass classInstaller make: [ :builder | + builder + superclass: aClass; + name: aSymbol; + package: package name ] ] { #category : 'helpers' } @@ -85,7 +86,12 @@ ChanelAbstractCleanerTest >> createTestCaseNamed: aSymbol [ { #category : 'helpers' } ChanelAbstractCleanerTest >> createTraitNamed: aSymbol [ - ^ Trait named: aSymbol uses: {} package: package name + + ^ Trait classInstaller make: [ :builder | + builder + beTrait; + name: aSymbol; + package: package name ] ] { #category : 'accessing' } From 3b5e18986f1d7143fdd9b72ce546d9762b944f2c Mon Sep 17 00:00:00 2001 From: CyrilFerlicot Date: Tue, 11 Nov 2025 21:52:55 +0100 Subject: [PATCH 9/9] Drop P7 compatibility --- .github/workflows/continuous.yml | 2 +- README.md | 4 +- .../BaselineOfChanel.class.st | 27 +- src/BaselineOfChanel/package.st | 2 +- src/Chanel-Pharo7/RBSimpleFormatter.class.st | 564 ------------------ src/Chanel-Pharo7/package.st | 1 - 6 files changed, 17 insertions(+), 583 deletions(-) delete mode 100644 src/Chanel-Pharo7/RBSimpleFormatter.class.st delete mode 100644 src/Chanel-Pharo7/package.st diff --git a/.github/workflows/continuous.yml b/.github/workflows/continuous.yml index c4fdef2..15acfc7 100644 --- a/.github/workflows/continuous.yml +++ b/.github/workflows/continuous.yml @@ -9,7 +9,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} strategy: matrix: - smalltalk: [ Pharo64-7.0, Pharo64-8.0, Pharo64-9.0, Pharo64-10, Pharo64-11, Pharo64-12 ] + smalltalk: [ Pharo64-8.0, Pharo64-9.0, Pharo64-10, Pharo64-11, Pharo64-12 ] name: ${{ matrix.smalltalk }} steps: - uses: actions/checkout@v4 diff --git a/README.md b/README.md index fa47d8a..b80cebb 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ [![CI](https://github.com/jecisc/Chanel/actions/workflows/continuous.yml/badge.svg)](https://github.com/jecisc/Chanel/actions/workflows/continuous.yml) [![Coverage Status](https://coveralls.io/repos/github/jecisc/Chanel/badge.svg?branch=master)](https://coveralls.io/github/jecisc/Chanel?branch=master) -[![Pharo version](https://img.shields.io/badge/Pharo-7.0-%23aac9ff.svg)](https://pharo.org/download) [![Pharo version](https://img.shields.io/badge/Pharo-8.0-%23aac9ff.svg)](https://pharo.org/download) [![Pharo version](https://img.shields.io/badge/Pharo-9.0-%23aac9ff.svg)](https://pharo.org/download) [![Pharo version](https://img.shields.io/badge/Pharo-10-%23aac9ff.svg)](https://pharo.org/download) @@ -93,7 +92,8 @@ Thus, it should be safe to depend on a fixed major version and moving minor vers | Version | Compatible Pharo versions | |------------- |--------------------------- | -| 1.x.x | Pharo 70, 80, 90, 10, 11, 12 | +| 1.x.x | Pharo 70, 80, 90, 10, 11 | +| 2.x.x | Pharo 80, 90, 10, 11, 12 | ## Contact diff --git a/src/BaselineOfChanel/BaselineOfChanel.class.st b/src/BaselineOfChanel/BaselineOfChanel.class.st index d20c945..1434812 100644 --- a/src/BaselineOfChanel/BaselineOfChanel.class.st +++ b/src/BaselineOfChanel/BaselineOfChanel.class.st @@ -2,12 +2,13 @@ I am a baseline to define the structure and dependencies of the Chanel project. " Class { - #name : #BaselineOfChanel, - #superclass : #BaselineOf, - #category : #BaselineOfChanel + #name : 'BaselineOfChanel', + #superclass : 'BaselineOf', + #category : 'BaselineOfChanel', + #package : 'BaselineOfChanel' } -{ #category : #baselines } +{ #category : 'baselines' } BaselineOfChanel >> baseline: spec [ @@ -34,24 +35,22 @@ BaselineOfChanel >> baseline: spec [ group: 'Core' with: #( 'Chanel-Pharo11Plus' ); group: 'Tests' with: #( 'Chanel-Pharo11Plus-Tests' ) ]. - spec for: #( #'pharo7.x' ) do: [ spec package: 'Chanel-Pharo7' ]. - - spec for: #( #'pharo7.x' #'pharo8.x' ) do: [ + spec for: #'pharo8.x' do: [ spec package: 'Chanel-Pharo8'; package: 'Chanel' with: [ spec requires: #( 'Chanel-Pharo8' ) ] ]. - spec for: #( #'pharo7.x' #'pharo8.x' #'pharo9.x' ) do: [ + spec for: #( #'pharo8.x' #'pharo9.x' ) do: [ spec package: 'Chanel-Pharo9'; package: 'Chanel' with: [ spec requires: #( 'Chanel-Pharo9' ) ] ]. - spec for: #( #'pharo7.x' #'pharo8.x' #'pharo9.x' #'pharo10.x' #'pharo11.x' ) do: [ + spec for: #( #'pharo8.x' #'pharo9.x' #'pharo10.x' #'pharo11.x' ) do: [ self pharoBackwardCompatibility: spec. spec package: 'Chanel' with: [ spec requires: #( 'PharoBackwardCompatibility')] ] ] -{ #category : #dependencies } +{ #category : 'dependencies' } BaselineOfChanel >> iterators: spec [ spec baseline: 'Iterators' @@ -60,24 +59,24 @@ BaselineOfChanel >> iterators: spec [ repository: 'github://juliendelplanque/Iterators:v1.x.x/src' ] ] -{ #category : #dependencies } +{ #category : 'dependencies' } BaselineOfChanel >> pharoBackwardCompatibility: spec [ spec baseline: 'PharoBackwardCompatibility' with: [ spec repository: 'github://jecisc/PharoBackwardCompatibility:v1.x.x/src' ] ] -{ #category : #baselines } +{ #category : 'baselines' } BaselineOfChanel >> pharoVersionsFrom: aVersion [ ^ (aVersion to: SystemVersion current major) collect: [ :v | ('pharo' , v asString , '.x') asSymbol ] ] -{ #category : #accessing } +{ #category : 'accessing' } BaselineOfChanel >> projectClass [ ^ MetacelloCypressBaselineProject ] -{ #category : #dependencies } +{ #category : 'dependencies' } BaselineOfChanel >> tinyLogger: spec [ spec baseline: 'TinyLogger' diff --git a/src/BaselineOfChanel/package.st b/src/BaselineOfChanel/package.st index 89739df..7f07897 100644 --- a/src/BaselineOfChanel/package.st +++ b/src/BaselineOfChanel/package.st @@ -1 +1 @@ -Package { #name : #BaselineOfChanel } +Package { #name : 'BaselineOfChanel' } diff --git a/src/Chanel-Pharo7/RBSimpleFormatter.class.st b/src/Chanel-Pharo7/RBSimpleFormatter.class.st deleted file mode 100644 index 2221d80..0000000 --- a/src/Chanel-Pharo7/RBSimpleFormatter.class.st +++ /dev/null @@ -1,564 +0,0 @@ -" -I'm a simple formatter that prints nodes (without using source code). - I'm useful when AST are programmatically assembled. -I could be improved, but the goal is to get the information is a more or less ok form. - -" -Class { - #name : #RBSimpleFormatter, - #superclass : #RBProgramNodeVisitor, - #instVars : [ - 'codeStream', - 'indent', - 'lookaheadCode', - 'originalSource', - 'lineStart' - ], - #classVars : [ - 'FormatAsYouReadPolicy' - ], - #category : #'Chanel-Pharo7' -} - -{ #category : #public } -RBSimpleFormatter class >> format: aParseTree [ - ^self format: aParseTree withIndents: 0 -] - -{ #category : #public } -RBSimpleFormatter class >> format: aParseTree withIndents: anInteger [ - ^ self new - indent: anInteger; - format: aParseTree -] - -{ #category : #accessing } -RBSimpleFormatter class >> formatAsYouReadPolicy [ - ^ FormatAsYouReadPolicy -] - -{ #category : #accessing } -RBSimpleFormatter class >> formatAsYouReadPolicy: anObject [ - FormatAsYouReadPolicy := anObject -] - -{ #category : #'class initialization' } -RBSimpleFormatter class >> initialize [ - "self initialize" - FormatAsYouReadPolicy := false. - -] - -{ #category : #private } -RBSimpleFormatter >> addSpaceIfNeededForLastArgument: aPragmaNode [ - aPragmaNode isUnary - ifTrue: [ ^ self ]. - (self pragmaArgumentNeedsSeparator: aPragmaNode arguments last) - ifTrue: [ self space ] -] - -{ #category : #private } -RBSimpleFormatter >> basicFormatCommentFor: aComment [ - - codeStream nextPutAll: (originalSource copyFrom: aComment start to: aComment stop) -] - -{ #category : #private } -RBSimpleFormatter >> bracketWith: bracketString around: aBlock [ - bracketString isEmpty - ifTrue: [ ^ aBlock value ]. - codeStream nextPut: bracketString first. - ^ aBlock - ensure: [ codeStream nextPut: bracketString last ] -] - -{ #category : #accessing } -RBSimpleFormatter >> codeStream [ - ^ codeStream -] - -{ #category : #accessing } -RBSimpleFormatter >> codeStream: anObject [ - codeStream := anObject -] - -{ #category : #'public interface' } -RBSimpleFormatter >> format: aParseTree [ - originalSource := aParseTree source. - self visitNode: aParseTree. - ^ codeStream contents -] - -{ #category : #'private-formatting' } -RBSimpleFormatter >> formatArray: anArrayNode [ - anArrayNode statements - do: [ :each | - self visitNode: each ] - separatedBy: - [ codeStream nextPutAll: ' . '. - self newLine ] -] - -{ #category : #'private-formatting' } -RBSimpleFormatter >> formatBlock: aBlockNode [ - self - formatBlockArgumentsFor: aBlockNode; - space; - visitNode: aBlockNode body; - space - - -] - -{ #category : #'private-formatting' } -RBSimpleFormatter >> formatBlockArgumentsFor: aBlockNode [ - aBlockNode arguments isEmpty - ifTrue: [ ^ self ]. - aBlockNode arguments - do: [ :each | - codeStream nextPut: $:. - self - visitNode: each; - formatCommentsFor: each; - space ]. - codeStream nextPutAll: '| ' -] - -{ #category : #'private-formatting' } -RBSimpleFormatter >> formatCommentsFor: aNode [ - - originalSource ifNil: [ ^ self ]. - aNode comments - do: [ :each | - self - basicFormatCommentFor: each; - newLine - ] -] - -{ #category : #'private-formatting' } -RBSimpleFormatter >> formatMethodBodyFor: aMethodNode [ - self - indentAround: [ - self - newLine; - formatMethodCommentFor: aMethodNode; - formatPragmasFor: aMethodNode; - visitNode: aMethodNode body ] -] - -{ #category : #'private-formatting' } -RBSimpleFormatter >> formatMethodCommentFor: aNode [ - - originalSource ifNil: [ ^ self ]. - aNode comments - do: [ :each | - self - basicFormatCommentFor: each; - newLine - ] -] - -{ #category : #'private-formatting' } -RBSimpleFormatter >> formatMethodPatternFor: aMethodNode [ - aMethodNode arguments isEmpty - ifTrue: [ codeStream nextPutAll: aMethodNode selector ] - ifFalse: [ self privateFormatMethodPatternMonoLineFor: aMethodNode ] -] - -{ #category : #'private-formatting' } -RBSimpleFormatter >> formatPragmasFor: aMethodNode [ - aMethodNode pragmas do: [:each | self visitNode: each; newLine ] -] - -{ #category : #'private-formatting' } -RBSimpleFormatter >> formatSelectorAndArguments: aMessageNode [ - - self - indent: 2 - around: [ - self - formatSelectorAndArguments: aMessageNode - firstSeparator: [ self space ] - restSeparator: [ self space ] ] -] - -{ #category : #'private-formatting' } -RBSimpleFormatter >> formatSelectorAndArguments: aMessageNode firstSeparator: firstBlock restSeparator: restBlock [ - aMessageNode isUnary - ifTrue: [ - self space. - codeStream nextPutAll: aMessageNode selector ] - ifFalse: [ - aMessageNode selectorParts - with: aMessageNode arguments - do: [ :selector :argument | - self space. - self - indentAround: [ - codeStream nextPutAll: selector. - self handleLineForArgument: argument ] ] ] -] - -{ #category : #'private-formatting' } -RBSimpleFormatter >> formatSequenceNodeStatementsFor: aSequenceNode [ - | statements | - statements := aSequenceNode statements. - statements isEmpty - ifTrue: [ ^ self ]. - - statements doWithIndex: [ :el :i | - self visitNode: (statements at: i). - i < statements size - ifTrue: [ codeStream nextPut: $.. - self newLine]. - self formatStatementCommentsFor: el. - i < statements size - ifTrue: [ ] ] -] - -{ #category : #'private-formatting' } -RBSimpleFormatter >> formatStatementCommentsFor: aStatementNode [ - - originalSource ifNil: [ ^ self ]. - aStatementNode statementComments - do: [ :each | - self - newLine; - basicFormatCommentFor: each - ] -] - -{ #category : #private } -RBSimpleFormatter >> formatTemporariesFor: aSequenceNode [ - aSequenceNode temporaries isEmpty - ifTrue: [ ^ self ]. - self - bracketWith: '|' - around: [ - self space. - aSequenceNode temporaries - do: - [ :each | - self - visitNode: each; - formatStatementCommentsFor: each; - space ]]. - self newLine. -] - -{ #category : #private } -RBSimpleFormatter >> formattedSourceFor: aNode [ - ^ lookaheadCode - at: aNode - ifAbsentPut: [ - self class new - indent: 1; - format: aNode ] -] - -{ #category : #private } -RBSimpleFormatter >> handleLineForArgument: anArgument [ - - self - space; - visitNode: anArgument -] - -{ #category : #accessing } -RBSimpleFormatter >> indent [ - ^ indent -] - -{ #category : #accessing } -RBSimpleFormatter >> indent: anInteger [ - - indent := anInteger -] - -{ #category : #private } -RBSimpleFormatter >> indent: anInteger around: aBlock [ - self indent: self indent + anInteger. - ^ aBlock - ensure: [ self indent: self indent - anInteger ] -] - -{ #category : #private } -RBSimpleFormatter >> indentAround: aBlock [ - self indent: 1 around: aBlock -] - -{ #category : #accessing } -RBSimpleFormatter >> indentString [ - ^ ' ' -] - -{ #category : #initialization } -RBSimpleFormatter >> initialize [ - super initialize. - lineStart := 0. - self indent: 0. - lookaheadCode := IdentityDictionary new. - codeStream := (String new: 256) writeStream - -] - -{ #category : #accessing } -RBSimpleFormatter >> lineStart [ - ^ lineStart -] - -{ #category : #accessing } -RBSimpleFormatter >> lineStart: anObject [ - lineStart := anObject -] - -{ #category : #private } -RBSimpleFormatter >> needsParenthesisFor: aNode [ - | parent | - aNode ifNil: [ ^ false ]. - aNode isValue - ifFalse: [ ^ false ]. - aNode isParseError - ifTrue: [ ^false ]. - parent := aNode parent ifNil: [ ^ false ]. - aNode precedence < parent precedence - ifTrue: [ ^ false ]. - (aNode isAssignment and: [ parent isAssignment ]) - ifTrue: [ ^ false ]. - (aNode isAssignment and: [ aNode isCascade ]) - ifTrue: [ ^ true ]. - aNode precedence = 0 - ifTrue: [ ^ false ]. - aNode isMessage - ifFalse: [ ^ true ]. - aNode isUnary - ifTrue: [ ^ false ]. - aNode isKeyword - ifTrue: [ ^ true ]. - (parent isMessage and: [ parent receiver == aNode ]) - ifFalse: [ ^ true ]. - aNode precedence = parent precedence - ifFalse: [ ^ true ]. - ^ self precedenceOf: parent selector greaterThan: aNode selector -] - -{ #category : #private } -RBSimpleFormatter >> newLine [ - self newLines: 1 -] - -{ #category : #private } -RBSimpleFormatter >> newLines: anInteger [ - anInteger + self indentString size = 0 - ifTrue: - [ codeStream space ]. - anInteger - timesRepeat: - [ codeStream cr ]. - lineStart := codeStream position. - self - indent - timesRepeat: - [ codeStream nextPutAll: self indentString ] -] - -{ #category : #private } -RBSimpleFormatter >> pragmaArgumentNeedsSeparator: anArgumentNode [ - ^ anArgumentNode value isSymbol and: [ anArgumentNode value isBinary ] -] - -{ #category : #private } -RBSimpleFormatter >> precedenceOf: parentSelector greaterThan: childSelector [ - "Put parenthesis around things that are preceived to have 'lower' precedence. For example, 'a + b * c' - -> '(a + b) * c' but 'a * b + c' -> 'a * b + c'" - | childIndex parentIndex | - childIndex := 0. - parentIndex := 0. - 1 to: self traditionalBinaryPrecedenceArray size do: [:i | ((self traditionalBinaryPrecedenceArray at: i) includes: parentSelector first) ifTrue: [ parentIndex := i ]. - ((self traditionalBinaryPrecedenceArray at: i) includes: childSelector first) ifTrue: [ childIndex := i ] ]. - ^childIndex < parentIndex -] - -{ #category : #private } -RBSimpleFormatter >> privateFormatMethodPatternMonoLineFor: aMethodNode [ - self - with: aMethodNode selectorParts - and: aMethodNode arguments - do: [:key :arg | - codeStream nextPutAll: key. - self space. - self visitNode: arg ] - separatedBy: [ self space ] -] - -{ #category : #private } -RBSimpleFormatter >> space [ - codeStream space -] - -{ #category : #accessing } -RBSimpleFormatter >> traditionalBinaryPrecedenceArray [ - ^ #(#($| $& $?) #($= $~ $< $>) #($- $+) #($* $/ $% $\) #($@)) -] - -{ #category : #visiting } -RBSimpleFormatter >> visitArrayNode: anArrayNode [ - self bracketWith: '{}' around: [ self formatArray: anArrayNode ] -] - -{ #category : #visiting } -RBSimpleFormatter >> visitAssignmentNode: anAssignmentNode [ - self visitNode: anAssignmentNode variable. - codeStream space; nextPutAll: anAssignmentNode assignmentOperator; space. - self visitNode: anAssignmentNode value -] - -{ #category : #visiting } -RBSimpleFormatter >> visitBlockNode: aBlockNode [ - self - bracketWith: '[]' - around: [ self formatBlock: aBlockNode ] - -] - -{ #category : #visiting } -RBSimpleFormatter >> visitCascadeNode: aCascadeNode [ - self visitNode: aCascadeNode receiver. - self - indentAround: [ self newLine. - aCascadeNode messages - do: [ :each | - self - indentAround: [ self - formatSelectorAndArguments: each - firstSeparator: [ ] - restSeparator: [ self space ] ] ] - separatedBy: [ codeStream nextPut: $;. - self newLine ] ] -] - -{ #category : #visiting } -RBSimpleFormatter >> visitLiteralArrayNode: aRBArrayLiteralNode [ - | brackets | - codeStream nextPut: $#. - brackets := aRBArrayLiteralNode isForByteArray - ifTrue: [ '[]' ] - ifFalse: [ '()' ]. - self - bracketWith: brackets - around: [ aRBArrayLiteralNode contents - do: [ :each | self visitNode: each ] - separatedBy: [ self space ] ] -] - -{ #category : #visiting } -RBSimpleFormatter >> visitLiteralNode: aLiteralNode [ - self - writeString: - (aLiteralNode value isLiteral - ifFalse: [ '''''' ] - ifTrue: [ aLiteralNode sourceText ]) -] - -{ #category : #visiting } -RBSimpleFormatter >> visitMessageNode: aMessageNode [ - self - visitNode: aMessageNode receiver; - formatSelectorAndArguments: aMessageNode -] - -{ #category : #visiting } -RBSimpleFormatter >> visitMethodNode: aMethodNode [ - self - formatMethodPatternFor: aMethodNode; - formatMethodBodyFor: aMethodNode -] - -{ #category : #visiting } -RBSimpleFormatter >> visitNode: aNode [ - | needsParenthesis | - (lookaheadCode includesKey: aNode) - ifTrue: [ ^ self writeString: (lookaheadCode at: aNode) ]. - needsParenthesis := self needsParenthesisFor: aNode. - self - bracketWith: - (needsParenthesis - ifTrue: [ '()' ] - ifFalse: [ '' ]) - around: [ super visitNode: aNode ] -] - -{ #category : #visiting } -RBSimpleFormatter >> visitParseErrorNode: aNode [ - self writeString: aNode value -] - -{ #category : #visiting } -RBSimpleFormatter >> visitPatternBlockNode: aRBPatternBlockNode [ - codeStream nextPut: $`. - self - bracketWith: '{}' - around: [ self formatBlock: aRBPatternBlockNode ] -] - -{ #category : #visiting } -RBSimpleFormatter >> visitPatternWrapperBlockNode: aRBPatternWrapperBlockNode [ - self visitNode: aRBPatternWrapperBlockNode wrappedNode. - codeStream nextPut: $`. - self - bracketWith: '{}' - around: [ self formatBlock: aRBPatternWrapperBlockNode ] -] - -{ #category : #visiting } -RBSimpleFormatter >> visitPragmaNode: aPragmaNode [ - codeStream nextPut: $<. - self - formatSelectorAndArguments: aPragmaNode - firstSeparator: [ - aPragmaNode selector isInfix - ifTrue: [ self space ] ] - restSeparator: [ self space ]. - self addSpaceIfNeededForLastArgument: aPragmaNode. - codeStream nextPut: $> -] - -{ #category : #visiting } -RBSimpleFormatter >> visitReturnNode: aReturnNode [ - codeStream nextPut: $^. - self visitNode: aReturnNode value -] - -{ #category : #visiting } -RBSimpleFormatter >> visitSequenceNode: aSequenceNode [ - - self - formatTemporariesFor: aSequenceNode; - formatCommentsFor: aSequenceNode; - formatSequenceNodeStatementsFor: aSequenceNode -] - -{ #category : #visiting } -RBSimpleFormatter >> visitVariableNode: aVariableNode [ - codeStream nextPutAll: aVariableNode name -] - -{ #category : #utilities } -RBSimpleFormatter >> with: firstCollection and: secondCollection do: aBlock separatedBy: separatorBlock [ - firstCollection isEmpty - ifTrue: [ ^ self ]. - aBlock value: firstCollection first value: secondCollection first. - 2 to: firstCollection size do: [ :i | - separatorBlock value. - aBlock value: (firstCollection at: i) value: (secondCollection at: i) ] -] - -{ #category : #private } -RBSimpleFormatter >> writeString: aString [ - | index | - index := aString lastIndexOf: Character cr ifAbsent: [ 0 ]. - codeStream nextPutAll: aString . - index > 0 - ifTrue: [ lineStart := codeStream position - (aString size - index) ] -] diff --git a/src/Chanel-Pharo7/package.st b/src/Chanel-Pharo7/package.st deleted file mode 100644 index 8d8d1a3..0000000 --- a/src/Chanel-Pharo7/package.st +++ /dev/null @@ -1 +0,0 @@ -Package { #name : #'Chanel-Pharo7' }