From eef74789f6487c90fe0f97cd9d8791e5c6e2791c Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Mon, 11 Sep 2023 18:59:24 +0200 Subject: [PATCH 01/44] GREmptyStatementRule is superseded in Pharo by ReMultiplePeriodsTerminatingStatementRule --- .../GREmptyStatementsRule.class/README.md | 0 .../instance/checkMethod..st | 12 ------------ .../GREmptyStatementsRule.class/instance/group.st | 3 --- .../GREmptyStatementsRule.class/instance/name.st | 3 --- .../instance/rationale.st | 3 --- .../instance/resetResult.st | 4 ---- .../GREmptyStatementsRule.class/properties.json | 11 ----------- 7 files changed, 36 deletions(-) delete mode 100644 repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/README.md delete mode 100644 repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/instance/checkMethod..st delete mode 100644 repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/instance/group.st delete mode 100644 repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/instance/name.st delete mode 100644 repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/instance/rationale.st delete mode 100644 repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/instance/resetResult.st delete mode 100644 repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/properties.json diff --git a/repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/README.md b/repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/README.md deleted file mode 100644 index e69de29b..00000000 diff --git a/repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/instance/checkMethod..st b/repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/instance/checkMethod..st deleted file mode 100644 index a2a96832..00000000 --- a/repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/instance/checkMethod..st +++ /dev/null @@ -1,12 +0,0 @@ -running -checkMethod: aContext - | periods position | - aContext parseTree nodesDo: [ :node | - (node isSequence and: [ node periods notEmpty ]) ifTrue: [ - periods := OrderedCollection withAll: node periods. - 1 to: node statements size - 1 do: [ :index | - position := periods removeFirst. - ((node statements at: index) stop < position and: [ position < (node statements at: index + 1) start ]) - ifFalse: [ ^ result addClass: aContext methodClass selector: aContext selector ] ]. - (periods isEmpty or: [ periods size = 1 and: [ node statements notEmpty and: [ node statements last stop < periods first ] ] ]) - ifFalse: [ ^ result addClass: aContext methodClass selector: aContext selector ] ] ] \ No newline at end of file diff --git a/repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/instance/group.st b/repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/instance/group.st deleted file mode 100644 index 7e52dd3b..00000000 --- a/repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/instance/group.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -group - ^ 'Grease Portability' \ No newline at end of file diff --git a/repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/instance/name.st b/repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/instance/name.st deleted file mode 100644 index 3f4db678..00000000 --- a/repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/instance/name.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -name - ^ 'Empty Statements' \ No newline at end of file diff --git a/repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/instance/rationale.st b/repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/instance/rationale.st deleted file mode 100644 index 252dd280..00000000 --- a/repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/instance/rationale.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -rationale - ^ 'Empty statements are not supported by most Smalltalk implementations.' \ No newline at end of file diff --git a/repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/instance/resetResult.st b/repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/instance/resetResult.st deleted file mode 100644 index 5b87472b..00000000 --- a/repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/instance/resetResult.st +++ /dev/null @@ -1,4 +0,0 @@ -running -resetResult - super resetResult. - result addSearchString: '..'; addSearchString: '.' \ No newline at end of file diff --git a/repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/properties.json b/repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/properties.json deleted file mode 100644 index c03ba912..00000000 --- a/repository/Grease-Pharo90-Slime.package/GREmptyStatementsRule.class/properties.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "commentStamp" : "", - "super" : "GRSlimeBlockLintRule", - "category" : "Grease-Pharo90-Slime", - "classinstvars" : [ ], - "pools" : [ ], - "classvars" : [ ], - "instvars" : [ ], - "name" : "GREmptyStatementsRule", - "type" : "normal" -} \ No newline at end of file From 8bd356e50b3da69b5ca3ccec796fbc576ba72631 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Mon, 11 Sep 2023 19:07:12 +0200 Subject: [PATCH 02/44] Literal byte arrays are accepted in Pharo, GemStone and VAST --- .../GRUsesLiteralByteArraysRule.class/README.md | 0 .../instance/group.st | 3 --- .../instance/initialize.st | 6 ------ .../instance/name.st | 3 --- .../instance/rationale.st | 3 --- .../GRUsesLiteralByteArraysRule.class/properties.json | 11 ----------- 6 files changed, 26 deletions(-) delete mode 100644 repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/README.md delete mode 100644 repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/instance/group.st delete mode 100644 repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/instance/initialize.st delete mode 100644 repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/instance/name.st delete mode 100644 repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/instance/rationale.st delete mode 100644 repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/properties.json diff --git a/repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/README.md b/repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/README.md deleted file mode 100644 index e69de29b..00000000 diff --git a/repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/instance/group.st b/repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/instance/group.st deleted file mode 100644 index 7e52dd3b..00000000 --- a/repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/instance/group.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -group - ^ 'Grease Portability' \ No newline at end of file diff --git a/repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/instance/initialize.st b/repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/instance/initialize.st deleted file mode 100644 index c7605206..00000000 --- a/repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/instance/initialize.st +++ /dev/null @@ -1,6 +0,0 @@ -initialization -initialize - super initialize. - self matcher - matches: '`#literal `{ :node | node isLiteralArray and: [ node isForByteArray ] }' - do: [ :node :answer | answer isNil ifTrue: [ node ] ifFalse: [ answer ] ] \ No newline at end of file diff --git a/repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/instance/name.st b/repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/instance/name.st deleted file mode 100644 index fbcd5729..00000000 --- a/repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/instance/name.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -name - ^ 'Uses literal byte arrays' \ No newline at end of file diff --git a/repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/instance/rationale.st b/repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/instance/rationale.st deleted file mode 100644 index 269ea76d..00000000 --- a/repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/instance/rationale.st +++ /dev/null @@ -1,3 +0,0 @@ -accessing -rationale - ^ 'Literal byte arrays are not portable accross different Smalltalk dialects.' \ No newline at end of file diff --git a/repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/properties.json b/repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/properties.json deleted file mode 100644 index 8c5b7a18..00000000 --- a/repository/Grease-Pharo90-Slime.package/GRUsesLiteralByteArraysRule.class/properties.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "commentStamp" : "", - "super" : "GRSlimeParseTreeLintRule", - "category" : "Grease-Pharo90-Slime", - "classinstvars" : [ ], - "pools" : [ ], - "classvars" : [ ], - "instvars" : [ ], - "name" : "GRUsesLiteralByteArraysRule", - "type" : "normal" -} \ No newline at end of file From 1a385fc51b21b60d841c7f071e45a9e3ab69e20c Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 7 Jan 2024 14:24:51 +0100 Subject: [PATCH 03/44] First couple of Slime rules and tests converted to Reraku critiques --- .../instance/baselinePharo..st | 4 +- .../monticello.meta/categories.st | 2 +- .../GRPlatform.class/instance/version.st | 2 +- .../Grease-Pharo110-Slime.package/.filetree | 5 +++ .../README.md | 0 .../class/checksClass.st | 4 ++ .../instance/basicCheck..st | 11 ++++++ .../instance/group.st | 4 ++ .../instance/initialize.st | 8 ++++ .../instance/name.st | 4 ++ .../instance/rationale.st | 4 ++ .../properties.json | 13 +++++++ .../README.md | 0 .../instance/afterCheck.mappings..st | 15 ++++++++ .../instance/group.st | 4 ++ .../instance/initialize.st | 8 ++++ .../instance/name.st | 4 ++ .../instance/rationale.st | 4 ++ .../properties.json | 11 ++++++ .../GRReSlimeBlockLintRule.class/README.md | 0 .../properties.json | 11 ++++++ .../README.md | 0 .../properties.json | 11 ++++++ .../monticello.meta/categories.st | 1 + .../monticello.meta/initializers.st | 0 .../monticello.meta/package | 1 + .../properties.json | 1 + .../.filetree | 5 +++ .../GRReSlimeTest.class/README.md | 0 .../instance/assertRule.expectedMatches..st | 4 ++ .../assertRule.expectedMatches.ignoring..st | 13 +++++++ .../GRReSlimeTest.class/instance/canParse..st | 6 +++ .../GRReSlimeTest.class/instance/category.st | 3 ++ .../instance/compile.in..st | 7 ++++ .../instance/defineClass.superclass..st | 4 ++ .../instance/defineSubClassOf..st | 20 ++++++++++ .../GRReSlimeTest.class/instance/rules.st | 7 ++++ .../instance/run.ignoring.do..st | 28 ++++++++++++++ .../GRReSlimeTest.class/instance/runCase.st | 3 ++ .../instance/runTransformation.changes..st | 15 ++++++++ .../GRReSlimeTest.class/instance/setUp.st | 6 +++ .../GRReSlimeTest.class/instance/tearDown.st | 5 +++ .../instance/testAnsiBooleansRule.st | 12 ++++++ .../instance/testAnsiCharacterRule.st | 10 +++++ .../instance/testAnsiCollectionsRule.st | 37 +++++++++++++++++++ .../instance/testAnsiConditionalsRule.st | 12 ++++++ .../instance/testAnsiConvertorRule.st | 12 ++++++ .../instance/testAnsiExceptionsRule.st | 14 +++++++ .../instance/testAnsiStreamsRule.st | 14 +++++++ .../instance/testAnsiStringsRule.st | 28 ++++++++++++++ .../instance/testBasicNewInitializeMissing.st | 9 +++++ .../instance/testBlockFormatting.st | 29 +++++++++++++++ .../instance/testDeprecatedApiProtocol.st | 11 ++++++ .../instance/testEmptyStatements.st | 13 +++++++ .../testInvalidObjectInitialization.st | 9 +++++ .../instance/testNonPortableMessageRule.st | 15 ++++++++ .../instance/testNonPortableSourceFormat.st | 10 +++++ .../testNotPortableCollectionsRule.st | 12 ++++++ .../instance/testObjectIn.st | 13 +++++++ .../instance/testParensFormatting.st | 16 ++++++++ .../instance/testReturnFormatting.st | 16 ++++++++ .../instance/testTempsFormatting.st | 20 ++++++++++ .../instance/testTestCaseFailRule.st | 10 +++++ .../instance/testUnnecessaryLastPeriodRule.st | 10 +++++ .../testUsesCanPerformOrUnderstand.st | 20 ++++++++++ .../instance/testUsesClassForHash.st | 16 ++++++++ .../instance/testUsesCurlyBraceArrays.st | 18 +++++++++ .../instance/testUsesMethodAnnotations.st | 12 ++++++ .../instance/testUsesNotPortableClass.st | 10 +++++ .../GRReSlimeTest.class/properties.json | 15 ++++++++ .../monticello.meta/categories.st | 1 + .../monticello.meta/initializers.st | 0 .../monticello.meta/package | 1 + .../properties.json | 1 + 74 files changed, 680 insertions(+), 4 deletions(-) create mode 100644 repository/Grease-Pharo110-Slime.package/.filetree create mode 100644 repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/class/checksClass.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/instance/basicCheck..st create mode 100644 repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/instance/group.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/instance/initialize.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/instance/name.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/instance/rationale.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/properties.json create mode 100644 repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/instance/afterCheck.mappings..st create mode 100644 repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/instance/group.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/instance/initialize.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/instance/name.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/instance/rationale.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/properties.json create mode 100644 repository/Grease-Pharo110-Slime.package/GRReSlimeBlockLintRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRReSlimeBlockLintRule.class/properties.json create mode 100644 repository/Grease-Pharo110-Slime.package/GRReSlimeParseTreeLintRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRReSlimeParseTreeLintRule.class/properties.json create mode 100644 repository/Grease-Pharo110-Slime.package/monticello.meta/categories.st create mode 100644 repository/Grease-Pharo110-Slime.package/monticello.meta/initializers.st create mode 100644 repository/Grease-Pharo110-Slime.package/monticello.meta/package create mode 100644 repository/Grease-Pharo110-Slime.package/properties.json create mode 100644 repository/Grease-Tests-Pharo-Slime.package/.filetree create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/README.md create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.expectedMatches..st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.expectedMatches.ignoring..st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/canParse..st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/category.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/compile.in..st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/defineClass.superclass..st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/defineSubClassOf..st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/run.ignoring.do..st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/runCase.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/runTransformation.changes..st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/setUp.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/tearDown.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiBooleansRule.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiCharacterRule.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiCollectionsRule.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiConditionalsRule.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiConvertorRule.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiExceptionsRule.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiStreamsRule.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiStringsRule.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testBasicNewInitializeMissing.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testBlockFormatting.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testDeprecatedApiProtocol.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testEmptyStatements.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testInvalidObjectInitialization.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNonPortableMessageRule.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNonPortableSourceFormat.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNotPortableCollectionsRule.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testObjectIn.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testParensFormatting.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testReturnFormatting.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testTempsFormatting.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testTestCaseFailRule.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUnnecessaryLastPeriodRule.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesCanPerformOrUnderstand.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesClassForHash.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesCurlyBraceArrays.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesMethodAnnotations.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesNotPortableClass.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/properties.json create mode 100644 repository/Grease-Tests-Pharo-Slime.package/monticello.meta/categories.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/monticello.meta/initializers.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/monticello.meta/package create mode 100644 repository/Grease-Tests-Pharo-Slime.package/properties.json diff --git a/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselinePharo..st b/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselinePharo..st index 3b845c9a..336a93a6 100644 --- a/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselinePharo..st +++ b/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselinePharo..st @@ -62,8 +62,8 @@ baselinePharo: spec requires: #('Grease-Pharo100-Core'); includes: #('Grease-Tests-Pharo-Core') ]; package: 'Grease-Pharo100-Core' with: [ spec requires: #('Grease-Core') ]; - package: 'Grease-Pharo90-Slime' with: [ spec requires: #('Grease-Core') ]; - package: 'Grease-Tests-Slime' with: [ spec requires: #('Grease-Pharo90-Slime') ]. + package: 'Grease-Pharo110-Slime' with: [ spec requires: #('Grease-Core') ]; + package: 'Grease-Tests-Pharo-Slime' with: [ spec requires: #('Grease-Pharo110-Slime') ]. spec group: 'Slime' with: #('Grease-Pharo90-Slime'); diff --git a/repository/BaselineOfGrease.package/monticello.meta/categories.st b/repository/BaselineOfGrease.package/monticello.meta/categories.st index 95bd9e83..aad806f8 100644 --- a/repository/BaselineOfGrease.package/monticello.meta/categories.st +++ b/repository/BaselineOfGrease.package/monticello.meta/categories.st @@ -1 +1 @@ -self packageOrganizer ensurePackage: #BaselineOfGrease withTags: #('Manifest')! +SystemOrganization addCategory: #BaselineOfGrease! diff --git a/repository/Grease-Core.package/GRPlatform.class/instance/version.st b/repository/Grease-Core.package/GRPlatform.class/instance/version.st index 5b503f93..c48dd9b5 100644 --- a/repository/Grease-Core.package/GRPlatform.class/instance/version.st +++ b/repository/Grease-Core.package/GRPlatform.class/instance/version.st @@ -2,5 +2,5 @@ version info version "Answer the Grease version" - ^ (GRVersion major: 1 minor: 12 revision: 2) + ^ (GRVersion major: 1 minor: 15 revision: 0) yourself \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/.filetree b/repository/Grease-Pharo110-Slime.package/.filetree new file mode 100644 index 00000000..57a67973 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/.filetree @@ -0,0 +1,5 @@ +{ + "separateMethodMetaAndSource" : false, + "noMethodMetaData" : true, + "useCypressPropertiesFile" : true +} \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/class/checksClass.st b/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/class/checksClass.st new file mode 100644 index 00000000..918ec479 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/class/checksClass.st @@ -0,0 +1,4 @@ +testing - interest +checksClass + + ^ true \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/instance/basicCheck..st b/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/instance/basicCheck..st new file mode 100644 index 00000000..7d00fbc7 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/instance/basicCheck..st @@ -0,0 +1,11 @@ +running +basicCheck: aClass + + ^ aClass isMeta not + and: [ (aClass includesSelector: #initialize) + and: [ (#(GRObject GRNotification GRNotification GRError RBLintRule RBTransformationRule) noneSatisfy: [ :each | + aClass includesBehavior: (Smalltalk globals at: each) ]) + and: [ aClass class methodDictionary noneSatisfy: [ :each | + matcher + executeTree: each parseTree + initialAnswer: false ] ] ] ] \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/instance/group.st b/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/instance/group.st new file mode 100644 index 00000000..b4981dc4 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/instance/group.st @@ -0,0 +1,4 @@ +accessing +group + + ^ 'Grease Portability' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/instance/initialize.st b/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/instance/initialize.st new file mode 100644 index 00000000..f42fb7c0 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/instance/initialize.st @@ -0,0 +1,8 @@ +initialization +initialize + + super initialize. + matcher := RBParseTreeSearcher new. + matcher + matches: 'self basicNew initialize' + do: [ :node :answer | true ] \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/instance/name.st b/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/instance/name.st new file mode 100644 index 00000000..693fa6d6 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/instance/name.st @@ -0,0 +1,4 @@ +accessing +name + + ^ '#basicNew initialize is missing' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/instance/rationale.st b/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/instance/rationale.st new file mode 100644 index 00000000..22a02ade --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/instance/rationale.st @@ -0,0 +1,4 @@ +accessing +rationale + + ^ '#initialize is not called implicitly when sending #new to an object in all Smalltalk dialects. Consider subclassing GRObject.' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/properties.json new file mode 100644 index 00000000..67a42ffc --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/properties.json @@ -0,0 +1,13 @@ +{ + "commentStamp" : "", + "super" : "GRReSlimeBlockLintRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ + "matcher" + ], + "name" : "GRBasicNewInitializeMissingRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/instance/afterCheck.mappings..st b/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/instance/afterCheck.mappings..st new file mode 100644 index 00000000..495d1401 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/instance/afterCheck.mappings..st @@ -0,0 +1,15 @@ +hooks +afterCheck: aNode mappings: mappingDict + + | method | + method := aNode methodNode. + " This ensures that the description is of the form ClassName>>#selector:" + (aNode arguments first isLiteralNode + and: [ aNode arguments first value isString + and: [ method methodClass name greaseString , '>>#' , method selector greaseString ~= aNode arguments first value ] ]) ifTrue: [ ^ true ]. + + " This ensures that the description is a string and ends with a dot." + ^ (aNode arguments size > 1 + and: [ aNode arguments second isLiteralNode + and: [ aNode arguments second value isString + and: [ (aNode arguments second value endsWithSubCollection: '.') not ] ] ]) \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/instance/group.st b/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/instance/group.st new file mode 100644 index 00000000..b5813499 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/instance/group.st @@ -0,0 +1,4 @@ +accessing +group + + ^ 'Grease Formatting' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/instance/initialize.st b/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/instance/initialize.st new file mode 100644 index 00000000..4ee4851c --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/instance/initialize.st @@ -0,0 +1,8 @@ +initialization +initialize + + super initialize. + self + matchesAny: #( + '``@receiver greaseDeprecatedApi: ``@arg1' + '``@receiver greaseDeprecatedApi: ``@arg1 details: ``@arg2' ) \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/instance/name.st b/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/instance/name.st new file mode 100644 index 00000000..554083f4 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/instance/name.st @@ -0,0 +1,4 @@ +accessing +name + + ^ 'Invalid use of deprecated API protocol.' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/instance/rationale.st b/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/instance/rationale.st new file mode 100644 index 00000000..aeabf8ad --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/instance/rationale.st @@ -0,0 +1,4 @@ +accessing +rationale + + ^ 'Make sure to follow the following pattern: self greaseDeprecatedApi: ''Class>>#selector'' details: ''Some description''.' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/properties.json new file mode 100644 index 00000000..87feb3c9 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "", + "super" : "GRReSlimeParseTreeLintRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRDeprecatedApiProtocolRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRReSlimeBlockLintRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRReSlimeBlockLintRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRReSlimeBlockLintRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRReSlimeBlockLintRule.class/properties.json new file mode 100644 index 00000000..23226a97 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRReSlimeBlockLintRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "", + "super" : "ReAbstractRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRReSlimeBlockLintRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRReSlimeParseTreeLintRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRReSlimeParseTreeLintRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRReSlimeParseTreeLintRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRReSlimeParseTreeLintRule.class/properties.json new file mode 100644 index 00000000..e5d01d93 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRReSlimeParseTreeLintRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "", + "super" : "ReNodeMatchRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRReSlimeParseTreeLintRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/monticello.meta/categories.st b/repository/Grease-Pharo110-Slime.package/monticello.meta/categories.st new file mode 100644 index 00000000..ff4f5aed --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/monticello.meta/categories.st @@ -0,0 +1 @@ +SystemOrganization addCategory: #'Grease-Pharo110-Slime'! diff --git a/repository/Grease-Pharo110-Slime.package/monticello.meta/initializers.st b/repository/Grease-Pharo110-Slime.package/monticello.meta/initializers.st new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/monticello.meta/package b/repository/Grease-Pharo110-Slime.package/monticello.meta/package new file mode 100644 index 00000000..7cd09a28 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Grease-Pharo110-Slime') \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/properties.json b/repository/Grease-Pharo110-Slime.package/properties.json new file mode 100644 index 00000000..6f31cf5a --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/properties.json @@ -0,0 +1 @@ +{ } \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/.filetree b/repository/Grease-Tests-Pharo-Slime.package/.filetree new file mode 100644 index 00000000..57a67973 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/.filetree @@ -0,0 +1,5 @@ +{ + "separateMethodMetaAndSource" : false, + "noMethodMetaData" : true, + "useCypressPropertiesFile" : true +} \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/README.md b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.expectedMatches..st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.expectedMatches..st new file mode 100644 index 00000000..3a9f4525 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.expectedMatches..st @@ -0,0 +1,4 @@ +running-checks +assertRule: aRuleClass expectedMatches: aCollection + + self assertRule: aRuleClass expectedMatches: aCollection ignoring: Array new \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.expectedMatches.ignoring..st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.expectedMatches.ignoring..st new file mode 100644 index 00000000..ccee1f72 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.expectedMatches.ignoring..st @@ -0,0 +1,13 @@ +running-checks +assertRule: aRuleClass expectedMatches: aCollectionOfExpectedEntities ignoring: aCollectionOfIgnoredEntities + + self run: aRuleClass ignoring: aCollectionOfIgnoredEntities do: [ :critiques | | critiquedEntities | + critiquedEntities := critiques collect:[ :critique | critique sourceAnchor entity ]. + critiquedEntities do:[ :critiquedEntity | + self + assert: (aCollectionOfExpectedEntities includes: critiquedEntity) + description: critiquedEntity printString , ' should not be reported' ]. + aCollectionOfExpectedEntities do: [ :expectedEntity | + self + assert: (critiquedEntities includes: expectedEntity) + description: expectedEntity printString , ' should be reported' ] ] \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/canParse..st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/canParse..st new file mode 100644 index 00000000..083ac05b --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/canParse..st @@ -0,0 +1,6 @@ +accessing-code +canParse: aString + RBParser + parseMethod: aString + onError: [ :err :pos | ^ false ]. + ^ true \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/category.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/category.st new file mode 100644 index 00000000..cfe78bd0 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/category.st @@ -0,0 +1,3 @@ +accessing +category + ^ self class category , '-Data' \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/compile.in..st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/compile.in..st new file mode 100644 index 00000000..cb2577d5 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/compile.in..st @@ -0,0 +1,7 @@ +accessing-code +compile: aString in: aClass + + GRPlatform current + compile: aString + into: aClass + classified: #accessing \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/defineClass.superclass..st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/defineClass.superclass..st new file mode 100644 index 00000000..9769e83e --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/defineClass.superclass..st @@ -0,0 +1,4 @@ +accessing-code +defineClass: aClassSymbol superclass: aSuperSymbol + "For compatibility" + ^ self defineSubClassOf: aSuperSymbol \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/defineSubClassOf..st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/defineSubClassOf..st new file mode 100644 index 00000000..92da2de7 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/defineSubClassOf..st @@ -0,0 +1,20 @@ +accessing-code +defineSubClassOf: aSuperSymbol + + | class | + class := SystemVersion current major >= 12 + ifTrue: [ + factory make: [ :aBuilder | + aBuilder + superclass: (Smalltalk at: aSuperSymbol); + package: self category ] ] + ifFalse: [ + factory + newSubclassOf: (Smalltalk at: aSuperSymbol) + instanceVariableNames: '' + classVariableNames: 'classVarsString' + category: self category ]. + environment + addClass: class; + addClass: class classSide. + ^ class \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st new file mode 100644 index 00000000..70092732 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st @@ -0,0 +1,7 @@ +accessing +rules + ^ OrderedCollection new + addAll: GRReSlimeBlockLintRule allSubclasses; + addAll: GRReSlimeParseTreeLintRule allSubclasses; +" addAll: GRSlimeTransformationRule allSubclasses;" + yourself \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/run.ignoring.do..st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/run.ignoring.do..st new file mode 100644 index 00000000..09d5db28 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/run.ignoring.do..st @@ -0,0 +1,28 @@ +running-checks +run: aRuleClass ignoring: aCollectionOfEntities do: aBlock + + | rules rule runner | + rules := self rules + collect: [ :each | each new ]. + rule := rules + detect: [ :each | each isKindOf: aRuleClass ] + ifNone: [ self error: ('{1} is not a slime rule' format: { aRuleClass name }) ]. + self + assert: (rule name isString and: [ rule name notEmpty ]) + description: aRuleClass name , ' has no name'. + self + assert: (rule rationale isString and: [ rule rationale notEmpty and: [ rule rationale endsWithSubCollection: '.' ] ]) + description: aRuleClass name , ' has no rationale'. + runner := ReSmalllintChecker new. + rules do: [ :each | + runner + rule: { each }; + environment: environment; + run ]. + rules do: [ :each | | result | + result := runner criticsOf: each. + self + assert: (rule = each or: [ result isEmpty "and: [ each changes isEmpty ]) or: [ aCollectionOfEntities includes: each class ]" ]) + description: each name , ' should not report errors' ]. + aBlock value: (runner criticsOf: rule). + ^ rule \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/runCase.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/runCase.st new file mode 100644 index 00000000..9465625f --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/runCase.st @@ -0,0 +1,3 @@ +running +runCase + GRPlatform current doSilently: [ super runCase ] \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/runTransformation.changes..st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/runTransformation.changes..st new file mode 100644 index 00000000..49b8b233 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/runTransformation.changes..st @@ -0,0 +1,15 @@ +running-checks +runTransformation: aClass changes: aCollection + + | expected | + expected := aCollection + collect: [ :each | RBParser parseMethod: each ]. + self run: aClass ignoring: Array new do: [ :rule :rules | + rule changes do: [ :change | + self + assert: (expected anySatisfy: [ :parseTree | change parseTree = parseTree ]) + description: change selector , ' should not be transformed' ]. + expected do: [ :parseTree | + self + assert: (rule changes anySatisfy: [ :change | change parseTree = parseTree ]) + description: parseTree selector , ' should be transformed' ] ] \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/setUp.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/setUp.st new file mode 100644 index 00000000..ee5004c0 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/setUp.st @@ -0,0 +1,6 @@ +running +setUp + super setUp. + factory := ClassFactoryForTestCase new. + model := RBNamespace new. + environment := RBClassEnvironment new \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/tearDown.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/tearDown.st new file mode 100644 index 00000000..82f6aabd --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/tearDown.st @@ -0,0 +1,5 @@ +running +tearDown + + super tearDown. + factory cleanUp \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiBooleansRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiBooleansRule.st new file mode 100644 index 00000000..d4020fe4 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiBooleansRule.st @@ -0,0 +1,12 @@ +tests-transform +testAnsiBooleansRule + + | class | + class := self defineSubClassOf: #GRObject. + self compile: 'and 1 and: [ 2 ] and: [ 3 ] and: [ 4 ]' in: class. + self compile: 'or 1 or: [ 2 ] or: [ 3 ] or: [ 4 ]' in: class. + self + runTransformation: GRAnsiBooleansRule + changes: #( + 'and 1 and: [ 2 and: [ 3 and: [ 4 ] ] ]' + 'or 1 or: [ 2 or: [ 3 or: [ 4 ] ] ]' ) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiCharacterRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiCharacterRule.st new file mode 100644 index 00000000..3507a7e9 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiCharacterRule.st @@ -0,0 +1,10 @@ +tests-transform +testAnsiCharacterRule + + | class | + class := self defineSubClassOf: #GRObject. + self compile: 'character Character value: 123' in: class. + self compile: 'characterRange $a to: $c' in: class. + self + runTransformation: GRAnsiCharactersRule + changes: #('character Character codePoint: 123' 'characterRange ''abc''') \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiCollectionsRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiCollectionsRule.st new file mode 100644 index 00000000..d4cfdb9b --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiCollectionsRule.st @@ -0,0 +1,37 @@ +tests-transform +testAnsiCollectionsRule + + | class | + class := self defineSubClassOf: #GRObject. + self compile: 'withIndexDo #() withIndexDo: [ :each :index | each + index ]' in: class. + self compile: 'doWithIndex #() doWithIndex: [ :each :index | each + index ]' in: class. + self compile: 'collectThenDo #() collect: [ :a | a ] thenDo: [ :b | b ]' in: class. + self compile: 'collectThenSelect #() collect: [ :a | a ] thenSelect: [ :b | true ]' in: class. + self compile: 'detectSum #(1 2) detectSum: [ :each | each ]' in: class. + self compile: 'detectSumMultiline #(1 2) detectSum: [ :each | #foo copy. each ]' in: class. + self compile: 'pairsDo #(1 2 3 4) pairsDo: [ :a :b | b ]' in: class. + self compile: 'rejectThenDo #() reject: [ :a | true ] thenDo: [ :b | b ]' in: class. + self compile: 'selectThenCollect #() select: [ :a | true ] thenCollect: [ :b | b ]' in: class. + self compile: 'selectThenDo #() select: [ :a | true ] thenDo: [ :b | b ]' in: class. + self compile: 'valuesDo #() valuesDo: [ :a | a ]' in: class. + self compile: 'reversed #() reversed' in: class. + self compile: 'keysSortedSafely Dictionary new keysSortedSafely' in: class. + self compile: 'newWithAll Array new: 4 withAll: $a' in: class. + self + runTransformation: GRAnsiCollectionsRule + changes: #( + 'withIndexDo #() keysAndValuesDo: [ :index :each | each + index ]' + 'doWithIndex #() keysAndValuesDo: [ :index :each | each + index ]' + 'collectThenDo (#() collect: [ :a | a ]) do: [ :b | b ]' + 'selectThenDo (#() select: [ :a | true ]) do: [ :b | b ]' + 'rejectThenDo (#() reject: [ :a | true ]) do: [ :b | b ]' + 'selectThenCollect (#() select: [ :a | true ]) collect: [ :b | b ]' + 'pairsDo 1 to: #(1 2 3 4) size by: 2 do: [ :index | | a b | a := #(1 2 3 4) at: index. b := #(1 2 3 4) at: index + 1. b ]' + 'collectThenSelect (#() collect: [ :a | a ]) select: [ :b | true ]' + 'detectSum #(1 2) inject: 0 into: [ :sum :each | sum + each ]' + 'detectSumMultiline #(1 2) inject: 0 into: [ :sum :each | #foo copy. sum + each ]' + 'valuesDo #() do: [ :a | a ]' + 'reversed #() reverse' + 'keysSortedSafely Dictionary new keys asSortedCollection' + 'newWithAll (Array new: 4) atAllPut: $a' + ) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiConditionalsRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiConditionalsRule.st new file mode 100644 index 00000000..8d15ea35 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiConditionalsRule.st @@ -0,0 +1,12 @@ +tests-transform +testAnsiConditionalsRule + + | class | + class := self defineSubClassOf: #GRObject. + self compile: 'ifNotNil 1 ifNotNil: [ | a | self or. self and ]' in: class. + self compile: 'ifNotNilDo 1 ifNotNilDo: [ :a | ^ a ]' in: class. + self + runTransformation: GRAnsiConditionalsRule + changes: #( + 'ifNotNil 1 ifNotNil: [ :arg | | a | self or. self and ]' + 'ifNotNilDo 1 ifNotNil: [ :a | ^ a ]' ) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiConvertorRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiConvertorRule.st new file mode 100644 index 00000000..fd54043f --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiConvertorRule.st @@ -0,0 +1,12 @@ +tests-transform +testAnsiConvertorRule + + | class | + class := self defineSubClassOf: #GRObject. + self compile: 'convertInteger ''1'' asInteger' in: class. + self compile: 'convertString 2 asString' in: class. + self + runTransformation: GRAnsiConvertorRule + changes: #( + 'convertInteger ''1'' greaseInteger' + 'convertString 2 greaseString' ) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiExceptionsRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiExceptionsRule.st new file mode 100644 index 00000000..af061a7e --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiExceptionsRule.st @@ -0,0 +1,14 @@ +tests-transform +testAnsiExceptionsRule + + | class | + class := self defineSubClassOf: #GRObject. + self compile: 'exception1 [ self or ] on: Error do: [ self or ]' in: class. + self compile: 'exception2 [ self or ] on: Error do: [ self or. self or ]' in: class. + self compile: 'exception3 [ self or ] on: Error do: [ | a | a := 0 ]' in: class. + self + runTransformation: GRAnsiExceptionsRule + changes: #( + 'exception1 [ self or ] on: Error do: [ :err | self or ]' + 'exception2 [ self or ] on: Error do: [ :err | self or. self or ]' + 'exception3 [ self or ] on: Error do: [ :err | | a | a := 0 ]' ) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiStreamsRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiStreamsRule.st new file mode 100644 index 00000000..6550cb75 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiStreamsRule.st @@ -0,0 +1,14 @@ +tests-transform +testAnsiStreamsRule + + | class | + class := self defineSubClassOf: #GRObject. + self compile: 'writeStream ^ '''' writeStream' in: class. + self compile: 'writeCr | stream | stream := WriteStream on: ''''. stream cr. stream nextPut: Character cr' in: class. + self compile: 'writeLf | stream | stream := WriteStream on: ''''. stream lf. stream nextPut: Character lf' in: class. + self + runTransformation: GRAnsiStreamsRule + changes: #( + 'writeStream ^ WriteStream on: ''''' + 'writeCr | stream | stream := WriteStream on: ''''. stream nextPut: Character cr. stream nextPut: Character cr' + 'writeLf | stream | stream := WriteStream on: ''''. stream nextPut: Character lf. stream nextPut: Character lf') \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiStringsRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiStringsRule.st new file mode 100644 index 00000000..2b01a845 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiStringsRule.st @@ -0,0 +1,28 @@ +tests-transform +testAnsiStringsRule + + | class | + class := self defineSubClassOf: #GRObject. + self compile: 'stringCr String cr, (String with: Character cr)' in: class. + self compile: 'stringTab String tab, (String with: Character tab)' in: class. + self compile: 'stringLf String lf, (String with: Character lf)' in: class. + self compile: 'stringCrLf String crlf, (String with: Character cr with: Character lf)' in: class. + self compile: 'stringSpace String space, (String with: Character space)' in: class. + self compile: 'findTokens ''123'' findTokens: '',''' in: class. + self compile: 'findTokensCharacter ''123'' findTokens: $,' in: class. + self compile: 'findTokensArray ''123'' findTokens: #($, $;)' in: class. + self compile: 'includesSubString ''1234'' includesSubString: ''23''' in: class. + self compile: 'includesSubString ''1234'' includesSubstring: ''23''' in: class. + self + runTransformation: GRAnsiStringsRule + changes: #( + 'stringCr (String with: Character cr), (String with: Character cr)' + 'stringTab (String with: Character tab), (String with: Character tab)' + 'stringLf (String with: Character lf), (String with: Character lf)' + 'stringCrLf (String with: Character cr with: Character lf), (String with: Character cr with: Character lf)' + 'stringSpace (String with: Character space), (String with: Character space)' + 'findTokens ''123'' subStrings: '',''' + 'findTokensCharacter ''123'' subStrings: '',''' + 'findTokensArray ''123'' subStrings: '',;''' + 'includesSubString (''1234'' indexOfSubCollection: ''23'' startingAt: 0) ~= 0' + 'includesSubString (''1234'' indexOfSubCollection: ''23'' startingAt: 0) ~= 0') \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testBasicNewInitializeMissing.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testBasicNewInitializeMissing.st new file mode 100644 index 00000000..10d39dc6 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testBasicNewInitializeMissing.st @@ -0,0 +1,9 @@ +tests-block +testBasicNewInitializeMissing + + | class | + class := self defineSubClassOf: #Object. + self compile: 'initialize' in: class. + self + assertRule: GRBasicNewInitializeMissingRule + expectedMatches: { class } \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testBlockFormatting.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testBlockFormatting.st new file mode 100644 index 00000000..a1ad82b5 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testBlockFormatting.st @@ -0,0 +1,29 @@ +tests-parsetree +testBlockFormatting + + | class | + class := self defineSubClassOf: #GRObject. + self + compile: 'invalid1 + [:a ]' + in: class. + self + compile: 'invalid2 + [:a | ]' + in: class. + self + compile: 'invalid3 + [ :b]' + in: class. + + self + compile: 'invalid4 + [ :a| ]' + in: class. + self + compile: 'invalid5 + [ :a |a ]' + in: class. + self + runRule: GRBlockFormattingRule + selectors: #(invalid1 invalid2 invalid3 invalid4 invalid5) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testDeprecatedApiProtocol.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testDeprecatedApiProtocol.st new file mode 100644 index 00000000..24c4cb57 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testDeprecatedApiProtocol.st @@ -0,0 +1,11 @@ +tests-parsetree +testDeprecatedApiProtocol + + | class | + class := self defineSubClassOf: #GRObject. + self compile: 'deprecated1 self greaseDeprecatedApi: ''',class name,'>>#deprecated1'' details: ''Something.''' in: class. + self compile: 'deprecated2 self greaseDeprecatedApi: ''',class name,'>>#deprecated'' details: ''Something.''' in: class. + self compile: 'deprecated3 self greaseDeprecatedApi: ''GRSlimeMock>>#deprecated3'' details: ''Something.''' in: class. + self + assertRule: GRDeprecatedApiProtocolRule + expectedMatches: { class>>#deprecated2 . class>>#deprecated3 } \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testEmptyStatements.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testEmptyStatements.st new file mode 100644 index 00000000..834e9f96 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testEmptyStatements.st @@ -0,0 +1,13 @@ +tests-block +testEmptyStatements + + | class | + class := self defineSubClassOf: #GRObject. + self compile: 'emptyStatement1. self and' in: class. + self compile: 'emptyStatement2 self and..' in: class. + self compile: 'emptyStatement3 self and."foo".' in: class. + self compile: 'emptyStatement4 self and."foo".self and' in: class. + self + runRule: GREmptyStatementsRule + selectors: #(emptyStatement1 emptyStatement2 emptyStatement3 emptyStatement4) + ignoring: (Array with: GRUnnecessaryLastPeriodRule) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testInvalidObjectInitialization.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testInvalidObjectInitialization.st new file mode 100644 index 00000000..9db27eb0 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testInvalidObjectInitialization.st @@ -0,0 +1,9 @@ +tests-block +testInvalidObjectInitialization + + | class | + class := self defineSubClassOf: #GRObject. + self compile: 'initializeFoo: aNumber' in: class. + self + runRule: GRInvalidObjectInitializationRule + selectors: #(initializeFoo:) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNonPortableMessageRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNonPortableMessageRule.st new file mode 100644 index 00000000..e21849d4 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNonPortableMessageRule.st @@ -0,0 +1,15 @@ +tests-block +testNonPortableMessageRule + + | class | + class := self defineSubClassOf: #GRObject. + + self compile: 'invalid1 ^ Array new anyOne' in: class. + self compile: 'valid1 ^ Array new first' in: class. + + self compile: 'invalid2 ^ Array new withIndexCollect: [ :each :index | each hash ]' in: class. + self compile: 'valid2 ^ Array new do: [ :each | each hash ]' in: class. + + self + runRule: GRNonPortableMessageRule + selectors: #(invalid1 invalid2) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNonPortableSourceFormat.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNonPortableSourceFormat.st new file mode 100644 index 00000000..03012fdc --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNonPortableSourceFormat.st @@ -0,0 +1,10 @@ +tests-block +testNonPortableSourceFormat + + | class | + class := self defineSubClassOf: #GRObject. + self compile: 'invalid ^ ''Unicode snow man', (String with: (Character codePoint: 16r2603)) , '''' in: class. + self compile: 'valid ^ ''everything is fine''' in: class. + self + runRule: GRNonPortableSourceFormatRule + selectors: #(invalid) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNotPortableCollectionsRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNotPortableCollectionsRule.st new file mode 100644 index 00000000..2e619cfa --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNotPortableCollectionsRule.st @@ -0,0 +1,12 @@ +tests-transform +testNotPortableCollectionsRule + + | class | + class := self defineSubClassOf: #GRObject. + self compile: 'beginsWith1 ''abc'' beginsWith: ''a''' in: class. + self compile: 'endsWith1 ''abc'' endsWith: ''a''' in: class. + self + runTransformation: GRNotPortableCollectionsRule + changes: #( + 'beginsWith1 ''abc'' greaseBeginsWith: ''a''' + 'endsWith1 ''abc'' greaseEndsWith: ''a''') \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testObjectIn.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testObjectIn.st new file mode 100644 index 00000000..dcd86cb1 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testObjectIn.st @@ -0,0 +1,13 @@ +tests-transform +testObjectIn + + | class | + class := self defineSubClassOf: #GRObject. + self compile: 'objectIn1 1 in: [ :val | val factorial ]' in: class. + self compile: 'objectIn2 2 in: [ :val | | temps | val factorial ]' in: class. + self compile: 'objectIn3 2 in: [ ''not this'' ]' in: class. + self + runTransformation: GRObjectInRule + changes: #( + 'objectIn1 [ :val | val factorial ] value: 1' + 'objectIn2 [ :val | | temps | val factorial ] value: 2') \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testParensFormatting.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testParensFormatting.st new file mode 100644 index 00000000..d4c1b96b --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testParensFormatting.st @@ -0,0 +1,16 @@ +tests-parsetree +testParensFormatting + + | class | + class := self defineSubClassOf: #GRObject. + self + compile: 'invalid1 + ( 1 + 2)' + in: class. + self + compile: 'invalid2 + (1 + 2 )' + in: class. + self + runRule: GRParensFormattingRule + selectors: #(invalid1 invalid2) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testReturnFormatting.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testReturnFormatting.st new file mode 100644 index 00000000..0dc37ff6 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testReturnFormatting.st @@ -0,0 +1,16 @@ +tests-parsetree +testReturnFormatting + + | class | + class := self defineSubClassOf: #GRObject. + self + compile: 'invalid1 + ^1' + in: class. + self + compile: 'invalid2 + ^ 2' + in: class. + self + runRule: GRReturnFormattingRule + selectors: #(invalid1 invalid2) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testTempsFormatting.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testTempsFormatting.st new file mode 100644 index 00000000..b86d8685 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testTempsFormatting.st @@ -0,0 +1,20 @@ +tests-parsetree +testTempsFormatting + + | class | + class := self defineSubClassOf: #GRObject. + self + compile: 'invalid1 + | a|' + in: class. + self + compile: 'invalid2 + |a |' + in: class. + self + compile: 'invalid3 + | a b |' + in: class. + self + runRule: GRTempsFormattingRule + selectors: #(invalid1 invalid2 invalid3) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testTestCaseFailRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testTestCaseFailRule.st new file mode 100644 index 00000000..ad803388 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testTestCaseFailRule.st @@ -0,0 +1,10 @@ +tests-transform +testTestCaseFailRule + + | class | + class := self defineSubClassOf: #TestCase. + self compile: 'testMethod self fail' in: class. + self + runTransformation: GRTestAssertionsRule + changes: #( + 'testMethod self assert: false' ) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUnnecessaryLastPeriodRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUnnecessaryLastPeriodRule.st new file mode 100644 index 00000000..b9bde3fc --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUnnecessaryLastPeriodRule.st @@ -0,0 +1,10 @@ +tests-block +testUnnecessaryLastPeriodRule + + | class | + class := self defineSubClassOf: #GRObject. + self compile: 'invalid 1. 2.' in: class. + self compile: 'valid 1. 2' in: class. + self + runRule: GRUnnecessaryLastPeriodRule + selectors: #(invalid) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesCanPerformOrUnderstand.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesCanPerformOrUnderstand.st new file mode 100644 index 00000000..8164bc7c --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesCanPerformOrUnderstand.st @@ -0,0 +1,20 @@ +tests-parsetree +testUsesCanPerformOrUnderstand + + | class | + class := self defineSubClassOf: #GRObject. + self + compile: 'invalid1 + Object class canUnderstand: #new' + in: class. + self + compile: 'invalid2 + Object class canPerform: #new' + in: class. + self + compile: 'valid + Object respondsTo: #new' + in: class. + self + runRule: GRUsesCanPerformOrUnderstandRule + selectors: #(invalid1 invalid2) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesClassForHash.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesClassForHash.st new file mode 100644 index 00000000..f7ae3cf0 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesClassForHash.st @@ -0,0 +1,16 @@ +tests-parsetree +testUsesClassForHash + + | class | + class := self defineSubClassOf: #GRObject. + self + compile: 'foo + ^ super hash bitXor: self class hash' + in: class. + self + compile: 'hash + ^ super hash bitXor: self class hash' + in: class. + self + runRule: GRUsesClassForHashRule + selectors: #(hash) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesCurlyBraceArrays.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesCurlyBraceArrays.st new file mode 100644 index 00000000..04f7298e --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesCurlyBraceArrays.st @@ -0,0 +1,18 @@ +tests-parsetree +testUsesCurlyBraceArrays + + | class | + (self canParse: 'foo { self foo. self bar }') + ifFalse: [ ^ self ]. + class := self defineSubClassOf: #GRObject. + self + compile: 'invalid + ^ { self foo. self bar }' + in: class. + self + compile: 'valid + ^ Array new' + in: class. + self + runRule: GRUsesCurlyBraceArraysRule + selectors: #(invalid) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesMethodAnnotations.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesMethodAnnotations.st new file mode 100644 index 00000000..31d12a9d --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesMethodAnnotations.st @@ -0,0 +1,12 @@ +tests-block +testUsesMethodAnnotations + + | class | + (self canParse: 'foo ') + ifFalse: [ ^ self ]. + class := self defineSubClassOf: #GRObject. + self compile: 'invalid ' in: class. + self compile: 'valid' in: class. + self + runRule: GRUsesMethodAnnotationsRule + selectors: #(invalid) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesNotPortableClass.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesNotPortableClass.st new file mode 100644 index 00000000..2e2bcb62 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesNotPortableClass.st @@ -0,0 +1,10 @@ +tests-block +testUsesNotPortableClass + + | class | + class := self defineSubClassOf: #GRObject. + self compile: 'invalid ^ Semaphore new' in: class. + self compile: 'valid ^ GRObject new' in: class. + self + runRule: GRUsesNotPortableClassRule + selectors: #(invalid) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/properties.json b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/properties.json new file mode 100644 index 00000000..b4ebf23f --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/properties.json @@ -0,0 +1,15 @@ +{ + "commentStamp" : "", + "super" : "TestCase", + "category" : "Grease-Tests-Pharo-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ + "model", + "environment", + "factory" + ], + "name" : "GRReSlimeTest", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/monticello.meta/categories.st b/repository/Grease-Tests-Pharo-Slime.package/monticello.meta/categories.st new file mode 100644 index 00000000..6c2ac5ef --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/monticello.meta/categories.st @@ -0,0 +1 @@ +SystemOrganization addCategory: #'Grease-Tests-Pharo-Slime'! diff --git a/repository/Grease-Tests-Pharo-Slime.package/monticello.meta/initializers.st b/repository/Grease-Tests-Pharo-Slime.package/monticello.meta/initializers.st new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Tests-Pharo-Slime.package/monticello.meta/package b/repository/Grease-Tests-Pharo-Slime.package/monticello.meta/package new file mode 100644 index 00000000..e2360038 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/monticello.meta/package @@ -0,0 +1 @@ +(name 'Grease-Tests-Pharo-Slime') \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/properties.json b/repository/Grease-Tests-Pharo-Slime.package/properties.json new file mode 100644 index 00000000..6f31cf5a --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/properties.json @@ -0,0 +1 @@ +{ } \ No newline at end of file From 98f2c5c7fdae7965f704a76863cda341d8e45972 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 7 Jan 2024 14:26:22 +0100 Subject: [PATCH 04/44] Correct baseline typo --- .../BaselineOfGrease.class/instance/baselinePharo..st | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselinePharo..st b/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselinePharo..st index 336a93a6..78d30c22 100644 --- a/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselinePharo..st +++ b/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselinePharo..st @@ -45,7 +45,7 @@ baselinePharo: spec includes: #('Grease-Tests-Pharo-Core') ]; package: 'Grease-Pharo90-Core' with: [ spec requires: #('Grease-Core') ]; package: 'Grease-Pharo90-Slime' with: [ spec requires: #('Grease-Core') ]; - package: 'Grease-Tests-Slime' with: [ spec requires: #('Grease-Pharo90-Slime') ]. + package: 'Grease-Tests-Pharo-Slime' with: [ spec requires: #('Grease-Pharo90-Slime') ]. spec group: 'Slime' with: #('Grease-Pharo90-Slime'); From 171232fff29510b735054cc2453d390448b09a45 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 7 Jan 2024 14:34:39 +0100 Subject: [PATCH 05/44] Remove obsolete tests from older Slime test package as well --- .../instance/baselinePharo..st | 4 ++-- .../instance/testEmptyStatements.st | 12 ------------ .../instance/testUsesLiteralByteArrays.st | 17 ----------------- .../monticello.meta/categories.st | 2 +- 4 files changed, 3 insertions(+), 32 deletions(-) delete mode 100644 repository/Grease-Tests-Slime.package/GRSlimeTest.class/instance/testEmptyStatements.st delete mode 100644 repository/Grease-Tests-Slime.package/GRSlimeTest.class/instance/testUsesLiteralByteArrays.st diff --git a/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselinePharo..st b/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselinePharo..st index 78d30c22..6c0696c0 100644 --- a/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselinePharo..st +++ b/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselinePharo..st @@ -66,5 +66,5 @@ baselinePharo: spec package: 'Grease-Tests-Pharo-Slime' with: [ spec requires: #('Grease-Pharo110-Slime') ]. spec - group: 'Slime' with: #('Grease-Pharo90-Slime'); - group: 'Slime Tests' with: #('Grease-Tests-Slime') ] + group: 'Slime' with: #('Grease-Pharo110-Slime'); + group: 'Slime Tests' with: #('Grease-Tests-Pharo-Slime') ] diff --git a/repository/Grease-Tests-Slime.package/GRSlimeTest.class/instance/testEmptyStatements.st b/repository/Grease-Tests-Slime.package/GRSlimeTest.class/instance/testEmptyStatements.st deleted file mode 100644 index e4b03969..00000000 --- a/repository/Grease-Tests-Slime.package/GRSlimeTest.class/instance/testEmptyStatements.st +++ /dev/null @@ -1,12 +0,0 @@ -tests-block -testEmptyStatements - | class | - class := self defineSubClassOf: #GRObject. - self compile: 'emptyStatement1. self and' in: class. - self compile: 'emptyStatement2 self and..' in: class. - self compile: 'emptyStatement3 self and."foo".' in: class. - self compile: 'emptyStatement4 self and."foo".self and' in: class. - self - runRule: GREmptyStatementsRule - selectors: #(emptyStatement1 emptyStatement2 emptyStatement3 emptyStatement4) - ignoring: (Array with: GRUnnecessaryLastPeriodRule) \ No newline at end of file diff --git a/repository/Grease-Tests-Slime.package/GRSlimeTest.class/instance/testUsesLiteralByteArrays.st b/repository/Grease-Tests-Slime.package/GRSlimeTest.class/instance/testUsesLiteralByteArrays.st deleted file mode 100644 index 342eb995..00000000 --- a/repository/Grease-Tests-Slime.package/GRSlimeTest.class/instance/testUsesLiteralByteArrays.st +++ /dev/null @@ -1,17 +0,0 @@ -tests-parsetree -testUsesLiteralByteArrays - | class | - (self canParse: 'foo #[ 1 2 3 ]') - ifFalse: [ ^ self ]. - class := self defineSubClassOf: #GRObject. - self - compile: 'invalid - ^ #[ 1 2 3 ]' - in: class. - self - compile: 'valid - ^ ByteArray with: 1 with: 2 with: 3' - in: class. - self - runRule: GRUsesLiteralByteArraysRule - selectors: #(invalid) \ No newline at end of file diff --git a/repository/Grease-Tests-Slime.package/monticello.meta/categories.st b/repository/Grease-Tests-Slime.package/monticello.meta/categories.st index a49916c2..d34cfb4a 100644 --- a/repository/Grease-Tests-Slime.package/monticello.meta/categories.st +++ b/repository/Grease-Tests-Slime.package/monticello.meta/categories.st @@ -1 +1 @@ -self packageOrganizer ensurePackage: #'Grease-Tests-Slime' withTags: #()! +SystemOrganization addCategory: #'Grease-Tests-Slime'! From d6705ffaa24f3146fe0cb6bfc63b948afce5c5d9 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 7 Jan 2024 14:36:22 +0100 Subject: [PATCH 06/44] Fix another baseline typo --- .../BaselineOfGrease.class/instance/baselinePharo..st | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselinePharo..st b/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselinePharo..st index 6c0696c0..69d5fe19 100644 --- a/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselinePharo..st +++ b/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselinePharo..st @@ -45,7 +45,7 @@ baselinePharo: spec includes: #('Grease-Tests-Pharo-Core') ]; package: 'Grease-Pharo90-Core' with: [ spec requires: #('Grease-Core') ]; package: 'Grease-Pharo90-Slime' with: [ spec requires: #('Grease-Core') ]; - package: 'Grease-Tests-Pharo-Slime' with: [ spec requires: #('Grease-Pharo90-Slime') ]. + package: 'Grease-Tests-Slime' with: [ spec requires: #('Grease-Pharo90-Slime') ]. spec group: 'Slime' with: #('Grease-Pharo90-Slime'); From 81bec5c74bc23e50ea5ed0dddf7d7ec60ba8c686 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 7 Jan 2024 16:30:34 +0100 Subject: [PATCH 07/44] ported rules: invalid object initialization and non-portable messages --- .../README.md | 0 .../class/checksMethod.st | 4 ++++ .../instance/basicCheck..st | 10 ++++++++++ .../instance/group.st | 4 ++++ .../instance/name.st | 4 ++++ .../instance/rationale.st | 4 ++++ .../properties.json | 11 +++++++++++ .../GRNonPortableMessageRule.class/README.md | 0 .../class/checksNode.st | 4 ++++ .../instance/basicCheck..st | 4 ++++ .../instance/group.st | 4 ++++ .../instance/methodNames.st | 4 ++++ .../GRNonPortableMessageRule.class/instance/name.st | 4 ++++ .../instance/rationale.st | 4 ++++ .../GRNonPortableMessageRule.class/properties.json | 11 +++++++++++ .../instance/assertRule.expectedMatches..st | 4 ---- .../assertRule.expectedMatches.ignoring..st | 13 ------------- .../instance/assertRule.matches..st | 4 ++++ .../instance/assertRule.matches.ignoring..st | 13 +++++++++++++ .../GRReSlimeTest.class/instance/rules.st | 1 + .../instance/run.ignoring.do..st | 6 +++--- .../instance/testBasicNewInitializeMissing.st | 2 +- .../instance/testDeprecatedApiProtocol.st | 2 +- .../instance/testEmptyStatements.st | 6 ++++-- .../instance/testInvalidObjectInitialization.st | 6 +++--- .../instance/testNonPortableMessageRule.st | 6 +++--- 26 files changed, 105 insertions(+), 30 deletions(-) create mode 100644 repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/class/checksMethod.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/instance/basicCheck..st create mode 100644 repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/instance/group.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/instance/name.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/instance/rationale.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/properties.json create mode 100644 repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/class/checksNode.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/instance/basicCheck..st create mode 100644 repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/instance/group.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/instance/methodNames.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/instance/name.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/instance/rationale.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/properties.json delete mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.expectedMatches..st delete mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.expectedMatches.ignoring..st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.matches..st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.matches.ignoring..st diff --git a/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/class/checksMethod.st b/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/class/checksMethod.st new file mode 100644 index 00000000..c0b5961f --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/class/checksMethod.st @@ -0,0 +1,4 @@ +testing - interest +checksMethod + + ^ true \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/instance/basicCheck..st b/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/instance/basicCheck..st new file mode 100644 index 00000000..1b7b4c47 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/instance/basicCheck..st @@ -0,0 +1,10 @@ +running +basicCheck: aMethod + + ^ (aMethod methodClass isMeta not + and: [ (aMethod selector beginsWithSubCollection: #initialize) + and: [ aMethod selector numArgs > 0 + and: [ aMethod methodClass ~= GRObject + and: [ (aMethod methodClass includesBehavior: GRObject) + and: [ (aMethod superMessages includes: aMethod selector) not + and: [ aMethod selfMessages noneSatisfy: [ :each | each beginsWithSubCollection: #initialize ] ] ] ] ] ] ]) \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/instance/group.st b/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/instance/group.st new file mode 100644 index 00000000..b4981dc4 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/instance/group.st @@ -0,0 +1,4 @@ +accessing +group + + ^ 'Grease Portability' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/instance/name.st b/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/instance/name.st new file mode 100644 index 00000000..6386a8fd --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/instance/name.st @@ -0,0 +1,4 @@ +accessing +name + + ^ 'Invalid object initialization' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/instance/rationale.st b/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/instance/rationale.st new file mode 100644 index 00000000..9ce37a52 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/instance/rationale.st @@ -0,0 +1,4 @@ +accessing +rationale + + ^ 'Initialize methods are required to call the designated initializer or its super implementation.' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/properties.json new file mode 100644 index 00000000..4cbd7077 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "", + "super" : "GRReSlimeBlockLintRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRInvalidObjectInitializationRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/class/checksNode.st b/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/class/checksNode.st new file mode 100644 index 00000000..5e68f2ca --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/class/checksNode.st @@ -0,0 +1,4 @@ +testing - interest +checksNode + + ^ true \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/instance/basicCheck..st b/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/instance/basicCheck..st new file mode 100644 index 00000000..428bcd1c --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/instance/basicCheck..st @@ -0,0 +1,4 @@ +running +basicCheck: anEntity + + ^ anEntity isMessage and:[ self methodNames includes: anEntity selector ] diff --git a/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/instance/group.st b/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/instance/group.st new file mode 100644 index 00000000..b4981dc4 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/instance/group.st @@ -0,0 +1,4 @@ +accessing +group + + ^ 'Grease Portability' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/instance/methodNames.st b/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/instance/methodNames.st new file mode 100644 index 00000000..25a16ed6 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/instance/methodNames.st @@ -0,0 +1,4 @@ +private +methodNames + + ^ #( anyOne withIndexCollect: ) \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/instance/name.st b/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/instance/name.st new file mode 100644 index 00000000..cc5e5c47 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/instance/name.st @@ -0,0 +1,4 @@ +accessing +name + + ^ 'Uses non portable message' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/instance/rationale.st b/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/instance/rationale.st new file mode 100644 index 00000000..bc7272e4 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/instance/rationale.st @@ -0,0 +1,4 @@ +accessing +rationale + + ^ 'Some methods are not portable accross different Smalltalk dialects.' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/properties.json new file mode 100644 index 00000000..95a60d91 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "", + "super" : "GRReSlimeBlockLintRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRNonPortableMessageRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.expectedMatches..st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.expectedMatches..st deleted file mode 100644 index 3a9f4525..00000000 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.expectedMatches..st +++ /dev/null @@ -1,4 +0,0 @@ -running-checks -assertRule: aRuleClass expectedMatches: aCollection - - self assertRule: aRuleClass expectedMatches: aCollection ignoring: Array new \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.expectedMatches.ignoring..st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.expectedMatches.ignoring..st deleted file mode 100644 index ccee1f72..00000000 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.expectedMatches.ignoring..st +++ /dev/null @@ -1,13 +0,0 @@ -running-checks -assertRule: aRuleClass expectedMatches: aCollectionOfExpectedEntities ignoring: aCollectionOfIgnoredEntities - - self run: aRuleClass ignoring: aCollectionOfIgnoredEntities do: [ :critiques | | critiquedEntities | - critiquedEntities := critiques collect:[ :critique | critique sourceAnchor entity ]. - critiquedEntities do:[ :critiquedEntity | - self - assert: (aCollectionOfExpectedEntities includes: critiquedEntity) - description: critiquedEntity printString , ' should not be reported' ]. - aCollectionOfExpectedEntities do: [ :expectedEntity | - self - assert: (critiquedEntities includes: expectedEntity) - description: expectedEntity printString , ' should be reported' ] ] \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.matches..st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.matches..st new file mode 100644 index 00000000..65b1cddd --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.matches..st @@ -0,0 +1,4 @@ +running-checks +assertRule: aRuleClass matches: expectedMatches + + self assertRule: aRuleClass matches: expectedMatches ignoring: Array new \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.matches.ignoring..st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.matches.ignoring..st new file mode 100644 index 00000000..d2c4aa91 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/assertRule.matches.ignoring..st @@ -0,0 +1,13 @@ +running-checks +assertRule: aRuleClass matches: expectedMatches ignoring: ignoredRuleClasses + + self run: aRuleClass ignoring: ignoredRuleClasses do: [ :critiques | | critiquedEntities | + critiquedEntities := critiques collect:[ :critique | critique sourceAnchor entity ]. + critiquedEntities do:[ :critiquedEntity | + self + assert: (expectedMatches includes: critiquedEntity) + description: ('{1} should not be reported' format: { critiquedEntity printString }) ]. + expectedMatches do: [ :expectedEntity | + self + assert: (critiquedEntities includes: expectedEntity) + description: ('{1} should be reported' format: { expectedEntity printString }) ] ] \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st index 70092732..2a84e4b7 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st @@ -4,4 +4,5 @@ rules addAll: GRReSlimeBlockLintRule allSubclasses; addAll: GRReSlimeParseTreeLintRule allSubclasses; " addAll: GRSlimeTransformationRule allSubclasses;" + add: ReMultiplePeriodsTerminatingStatementRule; yourself \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/run.ignoring.do..st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/run.ignoring.do..st index 09d5db28..b6ec29e2 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/run.ignoring.do..st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/run.ignoring.do..st @@ -1,5 +1,5 @@ running-checks -run: aRuleClass ignoring: aCollectionOfEntities do: aBlock +run: aRuleClass ignoring: ignoredRuleClasses do: aBlock | rules rule runner | rules := self rules @@ -22,7 +22,7 @@ run: aRuleClass ignoring: aCollectionOfEntities do: aBlock rules do: [ :each | | result | result := runner criticsOf: each. self - assert: (rule = each or: [ result isEmpty "and: [ each changes isEmpty ]) or: [ aCollectionOfEntities includes: each class ]" ]) - description: each name , ' should not report errors' ]. + assert: (rule = each or: [ result isEmpty or: [ ignoredRuleClasses includes: each class ] ]) + description: ('{1} should not report errors' format: { each name }) ]. aBlock value: (runner criticsOf: rule). ^ rule \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testBasicNewInitializeMissing.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testBasicNewInitializeMissing.st index 10d39dc6..679e1393 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testBasicNewInitializeMissing.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testBasicNewInitializeMissing.st @@ -6,4 +6,4 @@ testBasicNewInitializeMissing self compile: 'initialize' in: class. self assertRule: GRBasicNewInitializeMissingRule - expectedMatches: { class } \ No newline at end of file + matches: { class } \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testDeprecatedApiProtocol.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testDeprecatedApiProtocol.st index 24c4cb57..bc229c20 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testDeprecatedApiProtocol.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testDeprecatedApiProtocol.st @@ -8,4 +8,4 @@ testDeprecatedApiProtocol self compile: 'deprecated3 self greaseDeprecatedApi: ''GRSlimeMock>>#deprecated3'' details: ''Something.''' in: class. self assertRule: GRDeprecatedApiProtocolRule - expectedMatches: { class>>#deprecated2 . class>>#deprecated3 } \ No newline at end of file + matches: { class>>#deprecated2 . class>>#deprecated3 } \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testEmptyStatements.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testEmptyStatements.st index 834e9f96..d65a638c 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testEmptyStatements.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testEmptyStatements.st @@ -1,6 +1,8 @@ tests-block testEmptyStatements + "We added this test to make sure that this Pharo-supplied rule works because we previously had this one in Grease and it is important." + | class | class := self defineSubClassOf: #GRObject. self compile: 'emptyStatement1. self and' in: class. @@ -8,6 +10,6 @@ testEmptyStatements self compile: 'emptyStatement3 self and."foo".' in: class. self compile: 'emptyStatement4 self and."foo".self and' in: class. self - runRule: GREmptyStatementsRule - selectors: #(emptyStatement1 emptyStatement2 emptyStatement3 emptyStatement4) + assertRule: ReMultiplePeriodsTerminatingStatementRule + matches: { class>>#emptyStatement1 . class>>#emptyStatement2 . class>>#emptyStatement3 . class>>#emptyStatement4 } ignoring: (Array with: GRUnnecessaryLastPeriodRule) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testInvalidObjectInitialization.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testInvalidObjectInitialization.st index 9db27eb0..c7bddcd6 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testInvalidObjectInitialization.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testInvalidObjectInitialization.st @@ -1,9 +1,9 @@ tests-block testInvalidObjectInitialization - + | class | class := self defineSubClassOf: #GRObject. self compile: 'initializeFoo: aNumber' in: class. self - runRule: GRInvalidObjectInitializationRule - selectors: #(initializeFoo:) \ No newline at end of file + assertRule: GRInvalidObjectInitializationRule + matches: { class>>#initializeFoo: } \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNonPortableMessageRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNonPortableMessageRule.st index e21849d4..d5b8d927 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNonPortableMessageRule.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNonPortableMessageRule.st @@ -1,6 +1,6 @@ tests-block testNonPortableMessageRule - + | class | class := self defineSubClassOf: #GRObject. @@ -11,5 +11,5 @@ testNonPortableMessageRule self compile: 'valid2 ^ Array new do: [ :each | each hash ]' in: class. self - runRule: GRNonPortableMessageRule - selectors: #(invalid1 invalid2) \ No newline at end of file + assertRule: GRNonPortableMessageRule + matches: { class>>#invalid1 . class>>#invalid2 } \ No newline at end of file From 2800c455039fe438b796c74132f9681cfa0f5e31 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 7 Jan 2024 17:15:27 +0100 Subject: [PATCH 08/44] Ported Slime rule for referencing/using a non-portable class --- .../instance/baselineCommon..st | 1 + .../instance/baselineGemStone..st | 1 + .../GRReferencesNotPortableClassRule.class/README.md | 0 .../class/checksMethod.st | 4 ++++ .../instance/basicCheck..st | 8 ++++++++ .../instance/name.st | 4 ++++ .../properties.json | 11 +++++++++++ .../GRSubclassesNotPortableClassRule.class/README.md | 0 .../class/checksClass.st | 4 ++++ .../instance/basicCheck..st | 4 ++++ .../instance/name.st | 4 ++++ .../properties.json | 11 +++++++++++ .../GRUsesNotPortableClassRule.class/README.md | 0 .../class/isAbstract.st | 4 ++++ .../instance/classNames.st | 4 ++++ .../instance/group.st | 4 ++++ .../instance/rationale.st | 4 ++++ .../GRUsesNotPortableClassRule.class/properties.json | 11 +++++++++++ .../GRReSlimeTest.class/instance/canParse..st | 1 + .../GRReSlimeTest.class/instance/category.st | 3 ++- .../GRReSlimeTest.class/instance/rules.st | 8 +++++--- .../GRReSlimeTest.class/instance/runCase.st | 1 + .../GRReSlimeTest.class/instance/setUp.st | 1 + .../instance/testNonPortableSourceFormat.st | 10 ---------- .../instance/testReferencesNotPortableClass.st | 11 +++++++++++ .../instance/testSubclassesNotPortableClass.st | 9 +++++++++ .../instance/testUnnecessaryLastPeriodRule.st | 6 +++--- .../instance/testUsesMethodAnnotations.st | 12 ------------ .../instance/testUsesNotPortableClass.st | 7 ++++--- 29 files changed, 116 insertions(+), 32 deletions(-) create mode 100644 repository/Grease-Pharo110-Slime.package/GRReferencesNotPortableClassRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRReferencesNotPortableClassRule.class/class/checksMethod.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRReferencesNotPortableClassRule.class/instance/basicCheck..st create mode 100644 repository/Grease-Pharo110-Slime.package/GRReferencesNotPortableClassRule.class/instance/name.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRReferencesNotPortableClassRule.class/properties.json create mode 100644 repository/Grease-Pharo110-Slime.package/GRSubclassesNotPortableClassRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRSubclassesNotPortableClassRule.class/class/checksClass.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRSubclassesNotPortableClassRule.class/instance/basicCheck..st create mode 100644 repository/Grease-Pharo110-Slime.package/GRSubclassesNotPortableClassRule.class/instance/name.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRSubclassesNotPortableClassRule.class/properties.json create mode 100644 repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/class/isAbstract.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/instance/classNames.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/instance/group.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/instance/rationale.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/properties.json delete mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNonPortableSourceFormat.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testReferencesNotPortableClass.st create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testSubclassesNotPortableClass.st delete mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesMethodAnnotations.st diff --git a/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselineCommon..st b/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselineCommon..st index 14755223..0ead53ce 100644 --- a/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselineCommon..st +++ b/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselineCommon..st @@ -1,5 +1,6 @@ baselines baselineCommon: spec + spec for: #common do: [ spec blessing: #baseline. diff --git a/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselineGemStone..st b/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselineGemStone..st index fe1b4782..85554409 100644 --- a/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselineGemStone..st +++ b/repository/BaselineOfGrease.package/BaselineOfGrease.class/instance/baselineGemStone..st @@ -1,5 +1,6 @@ baselines baselineGemStone: spec + spec for: #'gemstone' do: [ diff --git a/repository/Grease-Pharo110-Slime.package/GRReferencesNotPortableClassRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRReferencesNotPortableClassRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRReferencesNotPortableClassRule.class/class/checksMethod.st b/repository/Grease-Pharo110-Slime.package/GRReferencesNotPortableClassRule.class/class/checksMethod.st new file mode 100644 index 00000000..c0b5961f --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRReferencesNotPortableClassRule.class/class/checksMethod.st @@ -0,0 +1,4 @@ +testing - interest +checksMethod + + ^ true \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRReferencesNotPortableClassRule.class/instance/basicCheck..st b/repository/Grease-Pharo110-Slime.package/GRReferencesNotPortableClassRule.class/instance/basicCheck..st new file mode 100644 index 00000000..18b14d25 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRReferencesNotPortableClassRule.class/instance/basicCheck..st @@ -0,0 +1,8 @@ +running +basicCheck: aMethod + + (aMethod methodClass instanceSide category indexOfSubCollection: #'-Pharo-' startingAt: 1) ~= 0 ifTrue: [ + "classes in a -Pharo- package are per definition not portable and therefore allowed to use non-portable classes" + ^ false ]. + + ^ aMethod literals anySatisfy: [ :each | each isVariableBinding and: [ self classNames includes: each key ] ] \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRReferencesNotPortableClassRule.class/instance/name.st b/repository/Grease-Pharo110-Slime.package/GRReferencesNotPortableClassRule.class/instance/name.st new file mode 100644 index 00000000..510ca2ab --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRReferencesNotPortableClassRule.class/instance/name.st @@ -0,0 +1,4 @@ +accessing +name + + ^ 'Uses not portable class' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRReferencesNotPortableClassRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRReferencesNotPortableClassRule.class/properties.json new file mode 100644 index 00000000..d21602c8 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRReferencesNotPortableClassRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "", + "super" : "GRUsesNotPortableClassRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRReferencesNotPortableClassRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRSubclassesNotPortableClassRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRSubclassesNotPortableClassRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRSubclassesNotPortableClassRule.class/class/checksClass.st b/repository/Grease-Pharo110-Slime.package/GRSubclassesNotPortableClassRule.class/class/checksClass.st new file mode 100644 index 00000000..918ec479 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRSubclassesNotPortableClassRule.class/class/checksClass.st @@ -0,0 +1,4 @@ +testing - interest +checksClass + + ^ true \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRSubclassesNotPortableClassRule.class/instance/basicCheck..st b/repository/Grease-Pharo110-Slime.package/GRSubclassesNotPortableClassRule.class/instance/basicCheck..st new file mode 100644 index 00000000..1091897f --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRSubclassesNotPortableClassRule.class/instance/basicCheck..st @@ -0,0 +1,4 @@ +running +basicCheck: aClass + + ^ aClass allSuperclasses anySatisfy: [ :each | self classNames includes: each name ] \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRSubclassesNotPortableClassRule.class/instance/name.st b/repository/Grease-Pharo110-Slime.package/GRSubclassesNotPortableClassRule.class/instance/name.st new file mode 100644 index 00000000..65a2945a --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRSubclassesNotPortableClassRule.class/instance/name.st @@ -0,0 +1,4 @@ +accessing +name + + ^ 'Subclasses not portable class' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRSubclassesNotPortableClassRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRSubclassesNotPortableClassRule.class/properties.json new file mode 100644 index 00000000..65aeb32b --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRSubclassesNotPortableClassRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "", + "super" : "GRUsesNotPortableClassRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRSubclassesNotPortableClassRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/class/isAbstract.st b/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/class/isAbstract.st new file mode 100644 index 00000000..99dcbb1f --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/class/isAbstract.st @@ -0,0 +1,4 @@ +testing +isAbstract + + ^ self == GRUsesNotPortableClassRule \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/instance/classNames.st b/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/instance/classNames.st new file mode 100644 index 00000000..0487cbe8 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/instance/classNames.st @@ -0,0 +1,4 @@ +private +classNames + + ^ #( Delay MIMEDocument Monitor Mutex MutexSet Random Semaphore TimeStamp Timestamp MessageSend ) \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/instance/group.st b/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/instance/group.st new file mode 100644 index 00000000..b4981dc4 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/instance/group.st @@ -0,0 +1,4 @@ +accessing +group + + ^ 'Grease Portability' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/instance/rationale.st b/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/instance/rationale.st new file mode 100644 index 00000000..e9a097fe --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/instance/rationale.st @@ -0,0 +1,4 @@ +accessing +rationale + + ^ 'Some classes are not portable accross different Smalltalk dialects.' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/properties.json new file mode 100644 index 00000000..2965264e --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "", + "super" : "GRReSlimeBlockLintRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRUsesNotPortableClassRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/canParse..st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/canParse..st index 083ac05b..ddf9adbc 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/canParse..st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/canParse..st @@ -1,5 +1,6 @@ accessing-code canParse: aString + RBParser parseMethod: aString onError: [ :err :pos | ^ false ]. diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/category.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/category.st index cfe78bd0..e4bff2ba 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/category.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/category.st @@ -1,3 +1,4 @@ -accessing +accessing-code category + ^ self class category , '-Data' \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st index 2a84e4b7..5508a8e7 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st @@ -1,8 +1,10 @@ -accessing +accessing-code rules - ^ OrderedCollection new + + ^ (OrderedCollection new addAll: GRReSlimeBlockLintRule allSubclasses; addAll: GRReSlimeParseTreeLintRule allSubclasses; " addAll: GRSlimeTransformationRule allSubclasses;" add: ReMultiplePeriodsTerminatingStatementRule; - yourself \ No newline at end of file + add: ReUnnecessaryLastPeriodRule; + yourself) reject: #isAbstract \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/runCase.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/runCase.st index 9465625f..a508309b 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/runCase.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/runCase.st @@ -1,3 +1,4 @@ running runCase + GRPlatform current doSilently: [ super runCase ] \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/setUp.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/setUp.st index ee5004c0..1ba40656 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/setUp.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/setUp.st @@ -1,5 +1,6 @@ running setUp + super setUp. factory := ClassFactoryForTestCase new. model := RBNamespace new. diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNonPortableSourceFormat.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNonPortableSourceFormat.st deleted file mode 100644 index 03012fdc..00000000 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNonPortableSourceFormat.st +++ /dev/null @@ -1,10 +0,0 @@ -tests-block -testNonPortableSourceFormat - - | class | - class := self defineSubClassOf: #GRObject. - self compile: 'invalid ^ ''Unicode snow man', (String with: (Character codePoint: 16r2603)) , '''' in: class. - self compile: 'valid ^ ''everything is fine''' in: class. - self - runRule: GRNonPortableSourceFormatRule - selectors: #(invalid) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testReferencesNotPortableClass.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testReferencesNotPortableClass.st new file mode 100644 index 00000000..dbc22862 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testReferencesNotPortableClass.st @@ -0,0 +1,11 @@ +tests-block +testReferencesNotPortableClass + + | class | + class := self defineSubClassOf: #GRObject. + class category: 'SomeCategory'. + self compile: 'invalid ^ Semaphore new' in: class. + self compile: 'valid ^ GRObject new' in: class. + self + assertRule: GRReferencesNotPortableClassRule + matches: { class>>#invalid }. \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testSubclassesNotPortableClass.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testSubclassesNotPortableClass.st new file mode 100644 index 00000000..2ced3881 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testSubclassesNotPortableClass.st @@ -0,0 +1,9 @@ +tests-block +testSubclassesNotPortableClass + + | class | + class := self defineSubClassOf: #Mutex. + class category: 'SomeCategory'. + self + assertRule: GRSubclassesNotPortableClassRule + matches: { class } \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUnnecessaryLastPeriodRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUnnecessaryLastPeriodRule.st index b9bde3fc..d6358cc7 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUnnecessaryLastPeriodRule.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUnnecessaryLastPeriodRule.st @@ -1,10 +1,10 @@ tests-block testUnnecessaryLastPeriodRule - + | class | class := self defineSubClassOf: #GRObject. self compile: 'invalid 1. 2.' in: class. self compile: 'valid 1. 2' in: class. self - runRule: GRUnnecessaryLastPeriodRule - selectors: #(invalid) \ No newline at end of file + assertRule: ReUnnecessaryLastPeriodRule + matches: { class>>#invalid } \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesMethodAnnotations.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesMethodAnnotations.st deleted file mode 100644 index 31d12a9d..00000000 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesMethodAnnotations.st +++ /dev/null @@ -1,12 +0,0 @@ -tests-block -testUsesMethodAnnotations - - | class | - (self canParse: 'foo ') - ifFalse: [ ^ self ]. - class := self defineSubClassOf: #GRObject. - self compile: 'invalid ' in: class. - self compile: 'valid' in: class. - self - runRule: GRUsesMethodAnnotationsRule - selectors: #(invalid) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesNotPortableClass.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesNotPortableClass.st index 2e2bcb62..2df0cfed 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesNotPortableClass.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesNotPortableClass.st @@ -1,10 +1,11 @@ tests-block testUsesNotPortableClass - + | class | class := self defineSubClassOf: #GRObject. + class category: 'SomeCategory'. self compile: 'invalid ^ Semaphore new' in: class. self compile: 'valid ^ GRObject new' in: class. self - runRule: GRUsesNotPortableClassRule - selectors: #(invalid) \ No newline at end of file + assertRule: GRReferencesNotPortableClassRule + matches: { class>>#invalid }. \ No newline at end of file From 1c021777615790a2b4f0ed6f11a8cd269788c65b Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 7 Jan 2024 17:35:52 +0100 Subject: [PATCH 09/44] Block and Parens formatting rules moved to the PharoWithStyle project; removed the curly braces rule since it is not applicable anymore --- .../instance/testBlockFormatting.st | 29 ------------------- .../instance/testParensFormatting.st | 16 ---------- .../instance/testUsesCurlyBraceArrays.st | 18 ------------ 3 files changed, 63 deletions(-) delete mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testBlockFormatting.st delete mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testParensFormatting.st delete mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesCurlyBraceArrays.st diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testBlockFormatting.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testBlockFormatting.st deleted file mode 100644 index a1ad82b5..00000000 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testBlockFormatting.st +++ /dev/null @@ -1,29 +0,0 @@ -tests-parsetree -testBlockFormatting - - | class | - class := self defineSubClassOf: #GRObject. - self - compile: 'invalid1 - [:a ]' - in: class. - self - compile: 'invalid2 - [:a | ]' - in: class. - self - compile: 'invalid3 - [ :b]' - in: class. - - self - compile: 'invalid4 - [ :a| ]' - in: class. - self - compile: 'invalid5 - [ :a |a ]' - in: class. - self - runRule: GRBlockFormattingRule - selectors: #(invalid1 invalid2 invalid3 invalid4 invalid5) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testParensFormatting.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testParensFormatting.st deleted file mode 100644 index d4c1b96b..00000000 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testParensFormatting.st +++ /dev/null @@ -1,16 +0,0 @@ -tests-parsetree -testParensFormatting - - | class | - class := self defineSubClassOf: #GRObject. - self - compile: 'invalid1 - ( 1 + 2)' - in: class. - self - compile: 'invalid2 - (1 + 2 )' - in: class. - self - runRule: GRParensFormattingRule - selectors: #(invalid1 invalid2) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesCurlyBraceArrays.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesCurlyBraceArrays.st deleted file mode 100644 index 04f7298e..00000000 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesCurlyBraceArrays.st +++ /dev/null @@ -1,18 +0,0 @@ -tests-parsetree -testUsesCurlyBraceArrays - - | class | - (self canParse: 'foo { self foo. self bar }') - ifFalse: [ ^ self ]. - class := self defineSubClassOf: #GRObject. - self - compile: 'invalid - ^ { self foo. self bar }' - in: class. - self - compile: 'valid - ^ Array new' - in: class. - self - runRule: GRUsesCurlyBraceArraysRule - selectors: #(invalid) \ No newline at end of file From 18a37b0bb5972a2fdcb4158900c3e8765872e7f2 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 7 Jan 2024 18:06:23 +0100 Subject: [PATCH 10/44] Moved the return and temps formatting rules to the PharoWithStyle project --- .../GRReSlimeTest.class/instance/rules.st | 4 +--- .../instance/testReturnFormatting.st | 16 --------------- .../instance/testTempsFormatting.st | 20 ------------------- 3 files changed, 1 insertion(+), 39 deletions(-) delete mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testReturnFormatting.st delete mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testTempsFormatting.st diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st index 5508a8e7..8e2a8f69 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st @@ -1,10 +1,8 @@ -accessing-code +running rules ^ (OrderedCollection new addAll: GRReSlimeBlockLintRule allSubclasses; addAll: GRReSlimeParseTreeLintRule allSubclasses; " addAll: GRSlimeTransformationRule allSubclasses;" - add: ReMultiplePeriodsTerminatingStatementRule; - add: ReUnnecessaryLastPeriodRule; yourself) reject: #isAbstract \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testReturnFormatting.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testReturnFormatting.st deleted file mode 100644 index 0dc37ff6..00000000 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testReturnFormatting.st +++ /dev/null @@ -1,16 +0,0 @@ -tests-parsetree -testReturnFormatting - - | class | - class := self defineSubClassOf: #GRObject. - self - compile: 'invalid1 - ^1' - in: class. - self - compile: 'invalid2 - ^ 2' - in: class. - self - runRule: GRReturnFormattingRule - selectors: #(invalid1 invalid2) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testTempsFormatting.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testTempsFormatting.st deleted file mode 100644 index b86d8685..00000000 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testTempsFormatting.st +++ /dev/null @@ -1,20 +0,0 @@ -tests-parsetree -testTempsFormatting - - | class | - class := self defineSubClassOf: #GRObject. - self - compile: 'invalid1 - | a|' - in: class. - self - compile: 'invalid2 - |a |' - in: class. - self - compile: 'invalid3 - | a b |' - in: class. - self - runRule: GRTempsFormattingRule - selectors: #(invalid1 invalid2 invalid3) \ No newline at end of file From e34bcc2d9f730c735fd42248ce1de8265013b739 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 7 Jan 2024 19:21:42 +0100 Subject: [PATCH 11/44] Two more Slime rules ported --- .../GRUsesCanPerformOrUnderstandRule.class/README.md | 0 .../instance/group.st | 4 ++++ .../instance/initialize.st | 7 +++++++ .../instance/name.st | 4 ++++ .../instance/rationale.st | 4 ++++ .../properties.json | 11 +++++++++++ .../GRUsesClassForHashRule.class/README.md | 0 .../instance/afterCheck.mappings..st | 4 ++++ .../GRUsesClassForHashRule.class/instance/group.st | 4 ++++ .../instance/initialize.st | 5 +++++ .../GRUsesClassForHashRule.class/instance/name.st | 4 ++++ .../instance/rationale.st | 4 ++++ .../GRUsesClassForHashRule.class/properties.json | 11 +++++++++++ .../instance/testEmptyStatements.st | 2 +- .../instance/testUsesCanPerformOrUnderstand.st | 6 +++--- .../instance/testUsesClassForHash.st | 6 +++--- 16 files changed, 69 insertions(+), 7 deletions(-) create mode 100644 repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/instance/group.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/instance/initialize.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/instance/name.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/instance/rationale.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/properties.json create mode 100644 repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/instance/afterCheck.mappings..st create mode 100644 repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/instance/group.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/instance/initialize.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/instance/name.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/instance/rationale.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/properties.json diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/instance/group.st b/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/instance/group.st new file mode 100644 index 00000000..b4981dc4 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/instance/group.st @@ -0,0 +1,4 @@ +accessing +group + + ^ 'Grease Portability' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/instance/initialize.st b/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/instance/initialize.st new file mode 100644 index 00000000..6ca1e900 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/instance/initialize.st @@ -0,0 +1,7 @@ +initialization +initialize + + super initialize. + self matchesAny: #( + '`@receiver canPerform: `@selector' + '`@receiver canUnderstand: `@selector' ) \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/instance/name.st b/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/instance/name.st new file mode 100644 index 00000000..a7805d06 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/instance/name.st @@ -0,0 +1,4 @@ +accessing +name + + ^ 'Sends #canPerform: or #canUnderstand:' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/instance/rationale.st b/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/instance/rationale.st new file mode 100644 index 00000000..4332f561 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/instance/rationale.st @@ -0,0 +1,4 @@ +accessing +rationale + + ^ '#canPerform: or #canUnderstand: are not portable.' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/properties.json new file mode 100644 index 00000000..70456891 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "", + "super" : "GRReSlimeParseTreeLintRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRUsesCanPerformOrUnderstandRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/instance/afterCheck.mappings..st b/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/instance/afterCheck.mappings..st new file mode 100644 index 00000000..4648081c --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/instance/afterCheck.mappings..st @@ -0,0 +1,4 @@ +hooks +afterCheck: aNode mappings: mappingDict + + ^ aNode methodNode selector = #hash \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/instance/group.st b/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/instance/group.st new file mode 100644 index 00000000..b4981dc4 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/instance/group.st @@ -0,0 +1,4 @@ +accessing +group + + ^ 'Grease Portability' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/instance/initialize.st b/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/instance/initialize.st new file mode 100644 index 00000000..190c57e0 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/instance/initialize.st @@ -0,0 +1,5 @@ +initialization +initialize + + super initialize. + self matches: '`@receiver class hash' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/instance/name.st b/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/instance/name.st new file mode 100644 index 00000000..2a762ed7 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/instance/name.st @@ -0,0 +1,4 @@ +accessing +name + + ^ 'Uses its class for hash' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/instance/rationale.st b/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/instance/rationale.st new file mode 100644 index 00000000..018489ab --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/instance/rationale.st @@ -0,0 +1,4 @@ +accessing +rationale + + ^ 'The hash of an object should not depend on the hash of its class as some Smalltalk have non-constant class hashes.' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/properties.json new file mode 100644 index 00000000..c679f3eb --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "", + "super" : "GRReSlimeParseTreeLintRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRUsesClassForHashRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testEmptyStatements.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testEmptyStatements.st index d65a638c..352c6fdc 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testEmptyStatements.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testEmptyStatements.st @@ -12,4 +12,4 @@ testEmptyStatements self assertRule: ReMultiplePeriodsTerminatingStatementRule matches: { class>>#emptyStatement1 . class>>#emptyStatement2 . class>>#emptyStatement3 . class>>#emptyStatement4 } - ignoring: (Array with: GRUnnecessaryLastPeriodRule) \ No newline at end of file + ignoring: (Array with: ReUnnecessaryLastPeriodRule) \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesCanPerformOrUnderstand.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesCanPerformOrUnderstand.st index 8164bc7c..5573c829 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesCanPerformOrUnderstand.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesCanPerformOrUnderstand.st @@ -1,6 +1,6 @@ tests-parsetree testUsesCanPerformOrUnderstand - + | class | class := self defineSubClassOf: #GRObject. self @@ -16,5 +16,5 @@ testUsesCanPerformOrUnderstand Object respondsTo: #new' in: class. self - runRule: GRUsesCanPerformOrUnderstandRule - selectors: #(invalid1 invalid2) \ No newline at end of file + assertRule: GRUsesCanPerformOrUnderstandRule + matches: { class>>#invalid1 . class>>#invalid2 } \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesClassForHash.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesClassForHash.st index f7ae3cf0..7b934bbe 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesClassForHash.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesClassForHash.st @@ -1,6 +1,6 @@ tests-parsetree testUsesClassForHash - + | class | class := self defineSubClassOf: #GRObject. self @@ -12,5 +12,5 @@ testUsesClassForHash ^ super hash bitXor: self class hash' in: class. self - runRule: GRUsesClassForHashRule - selectors: #(hash) \ No newline at end of file + assertRule: GRUsesClassForHashRule + matches: { class>>#hash } \ No newline at end of file From 002bf2e272bd5a86072a13d6b251df685e175093 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 7 Jan 2024 20:05:55 +0100 Subject: [PATCH 12/44] Ported ANSI Booleans transformation Slime rule --- .../GRAnsiBooleansRule.class/README.md | 0 .../instance/group.st | 4 ++++ .../instance/initialize.st | 19 +++++++++++++++++++ .../GRAnsiBooleansRule.class/instance/name.st | 4 ++++ .../instance/rationale.st | 4 ++++ .../GRAnsiBooleansRule.class/properties.json | 11 +++++++++++ .../GRAnsiCharactersRule.class/README.md | 0 .../properties.json | 11 +++++++++++ .../class/isVisible.st | 4 ++++ .../class/isVisible.st | 4 ++++ .../README.md | 0 .../class/isVisible.st | 4 ++++ .../properties.json | 11 +++++++++++ .../GRReSlimeTest.class/instance/rules.st | 2 +- .../instance/runTransformation.changes..st | 14 +++++++------- .../instance/testAnsiBooleansRule.st | 2 +- .../testReferencesNotPortableClass.st | 2 +- .../instance/testUnnecessaryLastPeriodRule.st | 10 ---------- .../instance/testUsesNotPortableClass.st | 2 +- 19 files changed, 87 insertions(+), 21 deletions(-) create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/instance/group.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/instance/initialize.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/instance/name.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/instance/rationale.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/properties.json create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/properties.json create mode 100644 repository/Grease-Pharo110-Slime.package/GRReSlimeBlockLintRule.class/class/isVisible.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRReSlimeParseTreeLintRule.class/class/isVisible.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRReSlimeTransformationRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRReSlimeTransformationRule.class/class/isVisible.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRReSlimeTransformationRule.class/properties.json delete mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUnnecessaryLastPeriodRule.st diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/instance/group.st b/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/instance/group.st new file mode 100644 index 00000000..f34a290f --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/instance/group.st @@ -0,0 +1,4 @@ +accessing +group + + ^ 'ANSI Compatibility' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/instance/initialize.st b/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/instance/initialize.st new file mode 100644 index 00000000..6058ed9f --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/instance/initialize.st @@ -0,0 +1,19 @@ +initialization +initialize + + super initialize. + self + replace: '``@expr1 and: [ | `@temp2 | ``@expr2 ] and: [ | `@temp3 | ``@expr3 ]' + with: '``@expr1 and: [ | `@temp2 | ``@expr2 and: [ | `@temp3 | ``@expr3 ] ]'; + replace: '``@expr1 and: [ | `@temp2 | ``@expr2 ] and: [ | `@temp3 | ``@expr3 ] and: [ | `@temp4 | ``@expr4 ]' + with: '``@expr1 and: [ | `@temp2 | ``@expr2 and: [ | `@temp3 | ``@expr3 and: [ | `@temp4 | ``@expr4 ] ] ]'; + replace: '``@expr1 and: [ | `@temp2 | ``@expr2 ] and: [ | `@temp3 | ``@expr3 ] and: [ | `@temp4 | ``@expr4 ] and: [ | `@temp5 | ``@expr5 ]' + with: '``@expr1 and: [ | `@temp2 | ``@expr2 and: [ | `@temp3 | ``@expr3 and: [ | `@temp4 | ``@expr4 and: [ | `@temp5 | ``@expr5 ] ] ] ]'; + replace: '``@expr1 or: [ | `@temp2 | ``@expr2 ] or: [ | `@temp3 | ``@expr3 ]' + with: '``@expr1 or: [ | `@temp2 | ``@expr2 or: [ | `@temp3 | ``@expr3 ] ]'; + replace: '``@expr1 or: [ | `@temp2 | ``@expr2 ] or: [ | `@temp3 | ``@expr3 ] or: [ | `@temp4 | ``@expr4 ]' + with: '``@expr1 or: [ | `@temp2 | ``@expr2 or: [ | `@temp3 | ``@expr3 or: [ | `@temp4 | ``@expr4 ] ] ]'; + replace: '``@expr1 or: [ | `@temp2 | ``@expr2 ] or: [ | `@temp3 | ``@expr3 ] or: [ | `@temp4 | ``@expr4 ] or: [ | `@temp5 | ``@expr5 ]' + with: '``@expr1 or: [ | `@temp2 | ``@expr2 or: [ | `@temp3 | ``@expr3 or: [ | `@temp4 | ``@expr4 or: [ | `@temp5 | ``@expr5 ] ] ] ]'; + replace: '``@expr1 or: [ | `@temp2 | ``@expr2 ] or: [ | `@temp3 | ``@expr3 ] or: [ | `@temp4 | ``@expr4 ] or: [ | `@temp5 | ``@expr5 ] or: [ | `@temp6 | ``@expr6 ]' + with: '``@expr1 or: [ | `@temp2 | ``@expr2 or: [ | `@temp3 | ``@expr3 or: [ | `@temp4 | ``@expr4 or: [ | `@temp5 | ``@expr5 or: [ | `@temp6 | ``@expr6 ] ] ] ] ]' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/instance/name.st b/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/instance/name.st new file mode 100644 index 00000000..c1c48207 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/instance/name.st @@ -0,0 +1,4 @@ +accessing +name + + ^ 'Booleans' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/instance/rationale.st b/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/instance/rationale.st new file mode 100644 index 00000000..b650ed54 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/instance/rationale.st @@ -0,0 +1,4 @@ +accessing +rationale + + ^ '#and:and: and #or:or: are not ANSI compatible.' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/properties.json new file mode 100644 index 00000000..208c1ba2 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "", + "super" : "GRReSlimeTransformationRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRAnsiBooleansRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/properties.json new file mode 100644 index 00000000..d5fe699b --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "", + "super" : "GRReSlimeTransformationRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRAnsiCharactersRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRReSlimeBlockLintRule.class/class/isVisible.st b/repository/Grease-Pharo110-Slime.package/GRReSlimeBlockLintRule.class/class/isVisible.st new file mode 100644 index 00000000..0e3a239e --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRReSlimeBlockLintRule.class/class/isVisible.st @@ -0,0 +1,4 @@ +testing +isVisible + + ^ self name ~= #GRReSlimeBlockLintRule \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRReSlimeParseTreeLintRule.class/class/isVisible.st b/repository/Grease-Pharo110-Slime.package/GRReSlimeParseTreeLintRule.class/class/isVisible.st new file mode 100644 index 00000000..2d2913fb --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRReSlimeParseTreeLintRule.class/class/isVisible.st @@ -0,0 +1,4 @@ +testing +isVisible + + ^ self name ~= #GRReSlimeParseTreeLintRule \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRReSlimeTransformationRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRReSlimeTransformationRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRReSlimeTransformationRule.class/class/isVisible.st b/repository/Grease-Pharo110-Slime.package/GRReSlimeTransformationRule.class/class/isVisible.st new file mode 100644 index 00000000..b84d2a50 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRReSlimeTransformationRule.class/class/isVisible.st @@ -0,0 +1,4 @@ +testing +isVisible + + ^ self name ~= #GRReSlimeTransformationRule \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRReSlimeTransformationRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRReSlimeTransformationRule.class/properties.json new file mode 100644 index 00000000..eaa3dd3e --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRReSlimeTransformationRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "", + "super" : "ReNodeRewriteRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRReSlimeTransformationRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st index 8e2a8f69..58190464 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st @@ -4,5 +4,5 @@ rules ^ (OrderedCollection new addAll: GRReSlimeBlockLintRule allSubclasses; addAll: GRReSlimeParseTreeLintRule allSubclasses; -" addAll: GRSlimeTransformationRule allSubclasses;" + addAll: GRReSlimeTransformationRule allSubclasses; yourself) reject: #isAbstract \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/runTransformation.changes..st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/runTransformation.changes..st index 49b8b233..2bbd5df3 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/runTransformation.changes..st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/runTransformation.changes..st @@ -2,14 +2,14 @@ running-checks runTransformation: aClass changes: aCollection | expected | - expected := aCollection - collect: [ :each | RBParser parseMethod: each ]. - self run: aClass ignoring: Array new do: [ :rule :rules | - rule changes do: [ :change | + expected := aCollection collect: [ :each | RBParser parseMethod: each ]. + self run: aClass ignoring: Array new do: [ :critiques | | changes | + changes := critiques collect:[ :critique | critique change ]. + changes do: [ :change | self assert: (expected anySatisfy: [ :parseTree | change parseTree = parseTree ]) - description: change selector , ' should not be transformed' ]. + description: ('{1} should not be transformed' format: { change selector }) ]. expected do: [ :parseTree | self - assert: (rule changes anySatisfy: [ :change | change parseTree = parseTree ]) - description: parseTree selector , ' should be transformed' ] ] \ No newline at end of file + assert: (changes anySatisfy: [ :change | change parseTree = parseTree ]) + description: ('{1} should be transformed' format: { parseTree selector }) ] ] \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiBooleansRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiBooleansRule.st index d4020fe4..fc3a5aee 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiBooleansRule.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiBooleansRule.st @@ -1,6 +1,6 @@ tests-transform testAnsiBooleansRule - + | class | class := self defineSubClassOf: #GRObject. self compile: 'and 1 and: [ 2 ] and: [ 3 ] and: [ 4 ]' in: class. diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testReferencesNotPortableClass.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testReferencesNotPortableClass.st index dbc22862..6c1b5b23 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testReferencesNotPortableClass.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testReferencesNotPortableClass.st @@ -8,4 +8,4 @@ testReferencesNotPortableClass self compile: 'valid ^ GRObject new' in: class. self assertRule: GRReferencesNotPortableClassRule - matches: { class>>#invalid }. \ No newline at end of file + matches: { class>>#invalid } \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUnnecessaryLastPeriodRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUnnecessaryLastPeriodRule.st deleted file mode 100644 index d6358cc7..00000000 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUnnecessaryLastPeriodRule.st +++ /dev/null @@ -1,10 +0,0 @@ -tests-block -testUnnecessaryLastPeriodRule - - | class | - class := self defineSubClassOf: #GRObject. - self compile: 'invalid 1. 2.' in: class. - self compile: 'valid 1. 2' in: class. - self - assertRule: ReUnnecessaryLastPeriodRule - matches: { class>>#invalid } \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesNotPortableClass.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesNotPortableClass.st index 2df0cfed..5699c982 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesNotPortableClass.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testUsesNotPortableClass.st @@ -8,4 +8,4 @@ testUsesNotPortableClass self compile: 'valid ^ GRObject new' in: class. self assertRule: GRReferencesNotPortableClassRule - matches: { class>>#invalid }. \ No newline at end of file + matches: { class>>#invalid } \ No newline at end of file From 1ec525d02e3f36d1e69a5a5af66c5792b8516132 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 7 Jan 2024 20:11:14 +0100 Subject: [PATCH 13/44] fix --- .../GRAnsiCharactersRule.class/instance/group.st | 4 ++++ .../instance/initialize.st | 13 +++++++++++++ .../GRAnsiCharactersRule.class/instance/name.st | 4 ++++ .../instance/rationale.st | 4 ++++ .../instance/testAnsiCharacterRule.st | 2 +- 5 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/group.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/initialize.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/name.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/rationale.st diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/group.st b/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/group.st new file mode 100644 index 00000000..f34a290f --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/group.st @@ -0,0 +1,4 @@ +accessing +group + + ^ 'ANSI Compatibility' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/initialize.st b/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/initialize.st new file mode 100644 index 00000000..85ad1c4c --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/initialize.st @@ -0,0 +1,13 @@ +initialization +initialize + + super initialize. + self replace: 'Character value: ``@expr' with: 'Character codePoint: ``@expr' + "replace: '`#source to: `#target' + withValueFrom: [ :node | + RBLiteralNode value: (String streamContents: [ :stream | + node receiver value codePoint to: node arguments first value codePoint do: [ :code | + stream nextPut: (Character codePoint: code) ] ]) ] + when: [ :node | + node receiver value isCharacter + and: [ node arguments first value isCharacter ] ]" \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/name.st b/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/name.st new file mode 100644 index 00000000..6ea7a32b --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/name.st @@ -0,0 +1,4 @@ +accessing +name + + ^ 'Characters' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/rationale.st b/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/rationale.st new file mode 100644 index 00000000..94cf8eb0 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/rationale.st @@ -0,0 +1,4 @@ +accessing +rationale + + ^ 'Character value: 64 and $a to: $b is not ANSI compatible.' \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiCharacterRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiCharacterRule.st index 3507a7e9..a7eaeecf 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiCharacterRule.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiCharacterRule.st @@ -1,6 +1,6 @@ tests-transform testAnsiCharacterRule - + | class | class := self defineSubClassOf: #GRObject. self compile: 'character Character value: 123' in: class. From 59552a5f03c446a70170790f8a61b6c5a75204a9 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 7 Jan 2024 20:35:37 +0100 Subject: [PATCH 14/44] Ported all transformation Slime rules --- .../GRAnsiCollectionsRule.class/README.md | 0 .../instance/group.st | 4 +++ .../instance/initialize.st | 30 +++++++++++++++++++ .../instance/name.st | 4 +++ .../instance/rationale.st | 4 +++ .../properties.json | 11 +++++++ .../GRAnsiConditionalsRule.class/README.md | 0 .../instance/group.st | 4 +++ .../instance/initialize.st | 17 +++++++++++ .../instance/name.st | 4 +++ .../instance/rationale.st | 4 +++ .../properties.json | 11 +++++++ .../GRAnsiConvertorRule.class/README.md | 0 .../instance/group.st | 4 +++ .../instance/initialize.st | 7 +++++ .../instance/name.st | 4 +++ .../instance/rationale.st | 4 +++ .../GRAnsiConvertorRule.class/properties.json | 11 +++++++ .../GRAnsiExceptionsRule.class/README.md | 0 .../instance/group.st | 4 +++ .../instance/initialize.st | 7 +++++ .../instance/name.st | 4 +++ .../instance/rationale.st | 4 +++ .../properties.json | 11 +++++++ .../GRAnsiStreamsRule.class/README.md | 0 .../GRAnsiStreamsRule.class/instance/group.st | 4 +++ .../instance/initialize.st | 13 ++++++++ .../GRAnsiStreamsRule.class/instance/name.st | 4 +++ .../instance/rationale.st | 4 +++ .../GRAnsiStreamsRule.class/properties.json | 11 +++++++ .../GRAnsiStringsRule.class/README.md | 0 .../GRAnsiStringsRule.class/instance/group.st | 4 +++ .../instance/initialize.st | 25 ++++++++++++++++ .../GRAnsiStringsRule.class/instance/name.st | 4 +++ .../instance/rationale.st | 4 +++ .../GRAnsiStringsRule.class/properties.json | 11 +++++++ .../README.md | 0 .../instance/group.st | 4 +++ .../instance/initialize.st | 9 ++++++ .../instance/name.st | 4 +++ .../instance/rationale.st | 4 +++ .../properties.json | 11 +++++++ .../GRObjectInRule.class/README.md | 1 + .../GRObjectInRule.class/instance/group.st | 4 +++ .../instance/initialize.st | 7 +++++ .../GRObjectInRule.class/instance/name.st | 4 +++ .../instance/rationale.st | 4 +++ .../GRObjectInRule.class/properties.json | 11 +++++++ .../GRTestAssertionsRule.class/README.md | 1 + .../instance/afterCheck.mappings..st | 8 +++++ .../instance/checkMethod..st | 7 +++++ .../instance/group.st | 4 +++ .../instance/initialize.st | 7 +++++ .../instance/name.st | 4 +++ .../instance/rationale.st | 4 +++ .../properties.json | 11 +++++++ .../instance/testAnsiCollectionsRule.st | 2 +- .../instance/testAnsiConditionalsRule.st | 2 +- .../instance/testAnsiConvertorRule.st | 2 +- .../instance/testAnsiExceptionsRule.st | 2 +- .../instance/testAnsiStreamsRule.st | 2 +- .../instance/testAnsiStringsRule.st | 2 +- .../testNotPortableCollectionsRule.st | 2 +- .../instance/testObjectIn.st | 2 +- .../instance/testTestCaseFailRule.st | 2 +- .../instance/testTestCaseFailRule2.st | 9 ++++++ 66 files changed, 364 insertions(+), 9 deletions(-) create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/instance/group.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/instance/initialize.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/instance/name.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/instance/rationale.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/properties.json create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/instance/group.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/instance/initialize.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/instance/name.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/instance/rationale.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/properties.json create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/instance/group.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/instance/initialize.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/instance/name.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/instance/rationale.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/properties.json create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/instance/group.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/instance/initialize.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/instance/name.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/instance/rationale.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/properties.json create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/instance/group.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/instance/initialize.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/instance/name.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/instance/rationale.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/properties.json create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/group.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/initialize.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/name.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/rationale.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/properties.json create mode 100644 repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/instance/group.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/instance/initialize.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/instance/name.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/instance/rationale.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/properties.json create mode 100644 repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/instance/group.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/instance/initialize.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/instance/name.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/instance/rationale.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/properties.json create mode 100644 repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/README.md create mode 100644 repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/afterCheck.mappings..st create mode 100644 repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/checkMethod..st create mode 100644 repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/group.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/initialize.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/name.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/rationale.st create mode 100644 repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/properties.json create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testTestCaseFailRule2.st diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/instance/group.st b/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/instance/group.st new file mode 100644 index 00000000..f34a290f --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/instance/group.st @@ -0,0 +1,4 @@ +accessing +group + + ^ 'ANSI Compatibility' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/instance/initialize.st b/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/instance/initialize.st new file mode 100644 index 00000000..86c772ea --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/instance/initialize.st @@ -0,0 +1,30 @@ +initialization +initialize + super initialize. + self + replace: '``@collection withIndexDo: [ :`each :`index | | `@temps | ``@.body ]' + with: '``@collection keysAndValuesDo: [ :`index :`each | | `@temps | ``@.body ]'; + replace: '``@collection doWithIndex: [ :`each :`index | | `@temps | ``@.body ]' + with: '``@collection keysAndValuesDo: [ :`index :`each | | `@temps | ``@.body ]'; + replace: '``@collection collect: ``@block1 thenDo: ``@block2' + with: '(``@collection collect: ``@block1) do: ``@block2'; + replace: '``@collection collect: ``@block1 thenSelect: ``@block2' + with: '(``@collection collect: ``@block1) select: ``@block2'; + replace: '``@collection pairsDo: [ :`t1 :`t2 | ``@.statements ]' + with: '1 to: ``@collection size by: 2 do: [ :index | | `t1 `t2 | `t1 := ``@collection at: index. `t2 := ``@collection at: index + 1. ``@.statements ]'; + replace: '``@collection reject: ``@block1 thenDo: ``@block2' + with: '(``@collection reject: ``@block1) do: ``@block2'; + replace: '``@collection select: ``@block1 thenCollect: ``@block2' + with: '(``@collection select: ``@block1) collect: ``@block2'; + replace: '``@collection select: ``@block1 thenDo: ``@block2' + with: '(``@collection select: ``@block1) do: ``@block2'; + replace: '``@collection detectSum: [ :`t1 | ``@.statements. `.last ]' + with: '``@collection inject: 0 into: [ :sum :`t1 | ``@.statements. sum + (`.last) ]'; + replace: '``@collection valuesDo: ``@block' + with: '``@collection do: ``@block'; + replace: '``@collection reversed' + with: '``@collection reverse'; + replace: '``@dictionary keysSortedSafely' + with: '``@dictionary keys asSortedCollection'; + replace: '``@collectionClass new: ``@size withAll: ``@character' + with: '(``@collectionClass new: ``@size) atAllPut: ``@character' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/instance/name.st b/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/instance/name.st new file mode 100644 index 00000000..a318a869 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/instance/name.st @@ -0,0 +1,4 @@ +accessing +name + + ^ 'Collections' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/instance/rationale.st b/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/instance/rationale.st new file mode 100644 index 00000000..5929ea0d --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/instance/rationale.st @@ -0,0 +1,4 @@ +accessing +rationale + + ^ 'Some collection methods are not ANSI compatible: #pairsDo:, #collect:thenDo:, #reject:thenDo:, #detectSum:, #valuesDo:, #keysSortedSafely, #new:withAll:, etc.' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/properties.json new file mode 100644 index 00000000..b6b9f5c5 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "", + "super" : "GRReSlimeTransformationRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRAnsiCollectionsRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/instance/group.st b/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/instance/group.st new file mode 100644 index 00000000..f34a290f --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/instance/group.st @@ -0,0 +1,4 @@ +accessing +group + + ^ 'ANSI Compatibility' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/instance/initialize.st b/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/instance/initialize.st new file mode 100644 index 00000000..962d59d3 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/instance/initialize.st @@ -0,0 +1,17 @@ +initialization +initialize + + super initialize. + self + replace: '``@boolean ifNotNilDo: ``@block' + with: '``@boolean ifNotNil: ``@block'; + replace: '``@boolean ifNotNilDo: ``@block1 ifNil: ``@block2' + with: '``@boolean ifNotNil: ``@block1 ifNil: ``@block2'; + replace: '``@boolean ifNil: ``@block1 ifNotNilDo: ``@block2' + with: '``@boolean ifNil: ``@block1 ifNotNil: ``@block2'; + replace: '``@boolean ifNotNil: [ | `@temps | ``@.body ]' + with: '``@boolean ifNotNil: [ :arg | | `@temps | ``@.body ]'; + replace: '``@boolean ifNotNil: [ | `@temps | ``@.body ] ifNil: ``@block ' + with: '``@boolean ifNotNil: [ :arg | | `@temps | ``@.body ] ifNil: ``@block'; + replace: '``@boolean ifNil: ``@block ifNotNil: [ | `@temps | ``@.body ]' + with: '``@boolean ifNil: ``@block ifNotNil: [ :arg | | `@temps | ``@.body ]' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/instance/name.st b/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/instance/name.st new file mode 100644 index 00000000..76482a4a --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/instance/name.st @@ -0,0 +1,4 @@ +accessing +name + + ^ 'Conditionals' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/instance/rationale.st b/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/instance/rationale.st new file mode 100644 index 00000000..a60d109e --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/instance/rationale.st @@ -0,0 +1,4 @@ +accessing +rationale + + ^ 'Conditionals like #ifNotNilDo: are not ANSI compatible.' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/properties.json new file mode 100644 index 00000000..c9539d38 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "", + "super" : "GRReSlimeTransformationRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRAnsiConditionalsRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/instance/group.st b/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/instance/group.st new file mode 100644 index 00000000..f34a290f --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/instance/group.st @@ -0,0 +1,4 @@ +accessing +group + + ^ 'ANSI Compatibility' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/instance/initialize.st b/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/instance/initialize.st new file mode 100644 index 00000000..4867fd82 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/instance/initialize.st @@ -0,0 +1,7 @@ +initialization +initialize + + super initialize. + self + replace: '``@object asString' with: '``@object greaseString'; + replace: '``@object asInteger' with: '``@object greaseInteger' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/instance/name.st b/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/instance/name.st new file mode 100644 index 00000000..14c21187 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/instance/name.st @@ -0,0 +1,4 @@ +accessing +name + + ^ 'Convertors' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/instance/rationale.st b/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/instance/rationale.st new file mode 100644 index 00000000..806fe5ac --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/instance/rationale.st @@ -0,0 +1,4 @@ +accessing +rationale + + ^ 'The ANSI standard does not support #asInteger and #asString on Object.' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/properties.json new file mode 100644 index 00000000..0e6e4cb4 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "", + "super" : "GRReSlimeTransformationRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRAnsiConvertorRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/instance/group.st b/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/instance/group.st new file mode 100644 index 00000000..f34a290f --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/instance/group.st @@ -0,0 +1,4 @@ +accessing +group + + ^ 'ANSI Compatibility' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/instance/initialize.st b/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/instance/initialize.st new file mode 100644 index 00000000..a06d318e --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/instance/initialize.st @@ -0,0 +1,7 @@ +initialization +initialize + + super initialize. + self + replace: '``@block on: `class do: [ | `@temps | ``@.body ]' + with: '``@block on: `class do: [ :err | | `@temps | ``@.body ]' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/instance/name.st b/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/instance/name.st new file mode 100644 index 00000000..6d5286e6 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/instance/name.st @@ -0,0 +1,4 @@ +accessing +name + + ^ 'Exceptions' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/instance/rationale.st b/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/instance/rationale.st new file mode 100644 index 00000000..7ec36da6 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/instance/rationale.st @@ -0,0 +1,4 @@ +accessing +rationale + + ^ 'Exception handlers expect exactly one argument in ANSI.' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/properties.json new file mode 100644 index 00000000..51375683 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "", + "super" : "GRReSlimeTransformationRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRAnsiExceptionsRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/instance/group.st b/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/instance/group.st new file mode 100644 index 00000000..f34a290f --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/instance/group.st @@ -0,0 +1,4 @@ +accessing +group + + ^ 'ANSI Compatibility' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/instance/initialize.st b/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/instance/initialize.st new file mode 100644 index 00000000..1b87d4ea --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/instance/initialize.st @@ -0,0 +1,13 @@ +initialization +initialize + + super initialize. + self + replace: '`{ :node :context | node isVariable and: [ (Smalltalk includesKey: node name asSymbol) not and: [ context at: ''`receiver'' ifAbsentPut: [ node ]. true ] ] } cr' + with: '`{ :context | context at: ''`receiver'' } nextPut: Character cr'; + replace: '`{ :node :context | node isVariable and: [ (Smalltalk includesKey: node name asSymbol) not and: [ context at: ''`receiver'' ifAbsentPut: [ node ]. true ] ] } lf' + with: '`{ :context | context at: ''`receiver'' } nextPut: Character lf'; + replace: '``@stream nextPut: Character cr; nextPut: Character lf' + with: '``@stream crlf'; + replace: '``@collection writeStream' + with: 'WriteStream on: ``@collection' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/instance/name.st b/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/instance/name.st new file mode 100644 index 00000000..50e44acb --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/instance/name.st @@ -0,0 +1,4 @@ +accessing +name + + ^ 'Streams' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/instance/rationale.st b/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/instance/rationale.st new file mode 100644 index 00000000..3d05fb7c --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/instance/rationale.st @@ -0,0 +1,4 @@ +accessing +rationale + + ^ '#cr and #lf are not part of the ANSI stream protocol.' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/properties.json new file mode 100644 index 00000000..2539d9c8 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "", + "super" : "GRReSlimeTransformationRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRAnsiStreamsRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/group.st b/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/group.st new file mode 100644 index 00000000..f34a290f --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/group.st @@ -0,0 +1,4 @@ +accessing +group + + ^ 'ANSI Compatibility' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/initialize.st b/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/initialize.st new file mode 100644 index 00000000..ae23d568 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/initialize.st @@ -0,0 +1,25 @@ +initialization +initialize + + super initialize. + self + replace: 'String tab' with: '(String with: Character tab)'; + replace: 'String cr' with: '(String with: Character cr)'; + replace: 'String lf' with: '(String with: Character lf)'; + replace: 'String crlf' with: '(String with: Character cr with: Character lf)'; + replace: 'String space' with: '(String with: Character space)'; + replace: '`@string includesSubString: `@subString' + with: '(`@string indexOfSubCollection: `@subString startingAt: 0) ~= 0'; + replace: '`@string includesSubstring: `@subString' + with: '(`@string indexOfSubCollection: `@subString startingAt: 0) ~= 0' + "replace: '``@string findTokens: ``@arg' withValueFrom: [ :node | + | argument | + argument := node arguments first. + argument isLiteralNode ifTrue: [ + argument value isArray + ifTrue: [ argument replaceWith: (RBLiteralNode value: (String withAll: argument value)) ]. + argument value isCharacter + ifTrue: [ argument replaceWith: (RBLiteralNode value: (String with: argument value)) ] ]. + node + selector: #subStrings:; + yourself ]" \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/name.st b/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/name.st new file mode 100644 index 00000000..31e016a6 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/name.st @@ -0,0 +1,4 @@ +accessing +name + + ^ 'Strings' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/rationale.st b/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/rationale.st new file mode 100644 index 00000000..84577e32 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/rationale.st @@ -0,0 +1,4 @@ +accessing +rationale + + ^ '#cr, #crlf, #lf, #space, #tab, #findTokens:, ... are not part of the ANSI string protocol.' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/properties.json new file mode 100644 index 00000000..f544f2e7 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "", + "super" : "GRReSlimeTransformationRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRAnsiStringsRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/README.md new file mode 100644 index 00000000..e69de29b diff --git a/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/instance/group.st b/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/instance/group.st new file mode 100644 index 00000000..b4981dc4 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/instance/group.st @@ -0,0 +1,4 @@ +accessing +group + + ^ 'Grease Portability' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/instance/initialize.st b/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/instance/initialize.st new file mode 100644 index 00000000..5e8d416d --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/instance/initialize.st @@ -0,0 +1,9 @@ +initialization +initialize + + super initialize. + self + replace: '`@collection beginsWith: `@subCollection' + with: '`@collection greaseBeginsWith: `@subCollection'; + replace: '`@collection endsWith: `@subCollection' + with: '`@collection greaseEndsWith: `@subCollection' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/instance/name.st b/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/instance/name.st new file mode 100644 index 00000000..a318a869 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/instance/name.st @@ -0,0 +1,4 @@ +accessing +name + + ^ 'Collections' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/instance/rationale.st b/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/instance/rationale.st new file mode 100644 index 00000000..df5a43be --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/instance/rationale.st @@ -0,0 +1,4 @@ +accessing +rationale + + ^ '#beginsWith: and #endsWith: are not portable.' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/properties.json new file mode 100644 index 00000000..2a5a777c --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "", + "super" : "GRReSlimeTransformationRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRNotPortableCollectionsRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/README.md new file mode 100644 index 00000000..bca4d093 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/README.md @@ -0,0 +1 @@ +I detect senders of Object >> #in: diff --git a/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/instance/group.st b/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/instance/group.st new file mode 100644 index 00000000..b4981dc4 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/instance/group.st @@ -0,0 +1,4 @@ +accessing +group + + ^ 'Grease Portability' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/instance/initialize.st b/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/instance/initialize.st new file mode 100644 index 00000000..d51d0570 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/instance/initialize.st @@ -0,0 +1,7 @@ +initialization +initialize + + super initialize. + self + replace: '``@object in: [ :`var | | `@temps | `@.statements ]' + with: '[ :`var | | `@temps | `@.statements ] value: ``@object' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/instance/name.st b/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/instance/name.st new file mode 100644 index 00000000..914d48df --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/instance/name.st @@ -0,0 +1,4 @@ +accessing +name + + ^ 'Object>>#in:' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/instance/rationale.st b/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/instance/rationale.st new file mode 100644 index 00000000..944aa7c5 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/instance/rationale.st @@ -0,0 +1,4 @@ +accessing +rationale + + ^ 'Object>>#in: has different semantics on different Smalltalk dialects.' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/properties.json new file mode 100644 index 00000000..96ac6c53 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "pmm 9/12/2009 10:37", + "super" : "GRReSlimeTransformationRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRObjectInRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/README.md new file mode 100644 index 00000000..6f3d9062 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/README.md @@ -0,0 +1 @@ +I check for TestCase >> #fail. \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/afterCheck.mappings..st b/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/afterCheck.mappings..st new file mode 100644 index 00000000..874f1381 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/afterCheck.mappings..st @@ -0,0 +1,8 @@ +hooks +afterCheck: aNode mappings: mappingsDict + + aNode methodNode methodClass isMeta + ifTrue: [ ^ false ]. + (aNode methodNode methodClass allSuperclasses includes: (Smalltalk at: #TestCase)) + ifTrue: [ ^ true ]. + ^ false \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/checkMethod..st b/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/checkMethod..st new file mode 100644 index 00000000..bab892c3 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/checkMethod..st @@ -0,0 +1,7 @@ +running +checkMethod: aContext + aContext methodClass isMeta + ifTrue: [ ^ self ]. + (aContext methodClass allSuperclasses includes:(Smalltalk at: #TestCase)) + ifFalse: [ ^ self ]. + ^ super checkMethod: aContext \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/group.st b/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/group.st new file mode 100644 index 00000000..eb721d8e --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/group.st @@ -0,0 +1,4 @@ +accessing +group + + ^ 'SUnit Compatibility' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/initialize.st b/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/initialize.st new file mode 100644 index 00000000..097ff5a1 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/initialize.st @@ -0,0 +1,7 @@ +initialization +initialize + + super initialize. + self + replace: 'self fail' + with: 'self assert: false' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/name.st b/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/name.st new file mode 100644 index 00000000..0dd472fc --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/name.st @@ -0,0 +1,4 @@ +accessing +name + + ^ 'TestCase >> #fail' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/rationale.st b/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/rationale.st new file mode 100644 index 00000000..4e358c3e --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/instance/rationale.st @@ -0,0 +1,4 @@ +accessing +rationale + + ^ 'TestCase >> #fail is not portable.' \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/properties.json new file mode 100644 index 00000000..cd52efa5 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "pmm 8/17/2014 11:24", + "super" : "GRReSlimeTransformationRule", + "category" : "Grease-Pharo110-Slime", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "GRTestAssertionsRule", + "type" : "normal" +} \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiCollectionsRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiCollectionsRule.st index d4cfdb9b..85726226 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiCollectionsRule.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiCollectionsRule.st @@ -1,6 +1,6 @@ tests-transform testAnsiCollectionsRule - + | class | class := self defineSubClassOf: #GRObject. self compile: 'withIndexDo #() withIndexDo: [ :each :index | each + index ]' in: class. diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiConditionalsRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiConditionalsRule.st index 8d15ea35..cffcbfa7 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiConditionalsRule.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiConditionalsRule.st @@ -1,6 +1,6 @@ tests-transform testAnsiConditionalsRule - + | class | class := self defineSubClassOf: #GRObject. self compile: 'ifNotNil 1 ifNotNil: [ | a | self or. self and ]' in: class. diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiConvertorRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiConvertorRule.st index fd54043f..b29370e2 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiConvertorRule.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiConvertorRule.st @@ -1,6 +1,6 @@ tests-transform testAnsiConvertorRule - + | class | class := self defineSubClassOf: #GRObject. self compile: 'convertInteger ''1'' asInteger' in: class. diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiExceptionsRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiExceptionsRule.st index af061a7e..57b75a75 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiExceptionsRule.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiExceptionsRule.st @@ -1,6 +1,6 @@ tests-transform testAnsiExceptionsRule - + | class | class := self defineSubClassOf: #GRObject. self compile: 'exception1 [ self or ] on: Error do: [ self or ]' in: class. diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiStreamsRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiStreamsRule.st index 6550cb75..7a8b3238 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiStreamsRule.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiStreamsRule.st @@ -1,6 +1,6 @@ tests-transform testAnsiStreamsRule - + | class | class := self defineSubClassOf: #GRObject. self compile: 'writeStream ^ '''' writeStream' in: class. diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiStringsRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiStringsRule.st index 2b01a845..9e0aeb9e 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiStringsRule.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiStringsRule.st @@ -1,6 +1,6 @@ tests-transform testAnsiStringsRule - + | class | class := self defineSubClassOf: #GRObject. self compile: 'stringCr String cr, (String with: Character cr)' in: class. diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNotPortableCollectionsRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNotPortableCollectionsRule.st index 2e619cfa..ba64daef 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNotPortableCollectionsRule.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testNotPortableCollectionsRule.st @@ -1,6 +1,6 @@ tests-transform testNotPortableCollectionsRule - + | class | class := self defineSubClassOf: #GRObject. self compile: 'beginsWith1 ''abc'' beginsWith: ''a''' in: class. diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testObjectIn.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testObjectIn.st index dcd86cb1..5711be2a 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testObjectIn.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testObjectIn.st @@ -1,6 +1,6 @@ tests-transform testObjectIn - + | class | class := self defineSubClassOf: #GRObject. self compile: 'objectIn1 1 in: [ :val | val factorial ]' in: class. diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testTestCaseFailRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testTestCaseFailRule.st index ad803388..c4044a19 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testTestCaseFailRule.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testTestCaseFailRule.st @@ -1,6 +1,6 @@ tests-transform testTestCaseFailRule - + | class | class := self defineSubClassOf: #TestCase. self compile: 'testMethod self fail' in: class. diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testTestCaseFailRule2.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testTestCaseFailRule2.st new file mode 100644 index 00000000..13e098a6 --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testTestCaseFailRule2.st @@ -0,0 +1,9 @@ +tests-transform +testTestCaseFailRule2 + + | class | + class := self defineSubClassOf: #Object. + self compile: 'method self fail' in: class. + self + runTransformation: GRTestAssertionsRule + changes: #( ) \ No newline at end of file From 1031a70fafecf1119c381ed8167ad92e52797740 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 7 Jan 2024 20:46:06 +0100 Subject: [PATCH 15/44] Change class names back to previous class names (i.e. 'GRReXXX' to 'GRXXX') --- .../GRAnsiBooleansRule.class/properties.json | 2 +- .../GRAnsiCharactersRule.class/properties.json | 2 +- .../GRAnsiCollectionsRule.class/properties.json | 2 +- .../GRAnsiConditionalsRule.class/properties.json | 2 +- .../GRAnsiConvertorRule.class/properties.json | 2 +- .../GRAnsiExceptionsRule.class/properties.json | 2 +- .../GRAnsiStreamsRule.class/properties.json | 2 +- .../GRAnsiStringsRule.class/instance/initialize.st | 6 +++--- .../GRAnsiStringsRule.class/properties.json | 2 +- .../GRBasicNewInitializeMissingRule.class/properties.json | 2 +- .../GRDeprecatedApiProtocolRule.class/properties.json | 2 +- .../GRInvalidObjectInitializationRule.class/properties.json | 2 +- .../GRNonPortableMessageRule.class/properties.json | 2 +- .../GRNotPortableCollectionsRule.class/properties.json | 2 +- .../GRObjectInRule.class/properties.json | 2 +- .../GRReSlimeBlockLintRule.class/class/isVisible.st | 4 ---- .../GRReSlimeParseTreeLintRule.class/class/isVisible.st | 4 ---- .../GRReSlimeTransformationRule.class/class/isVisible.st | 4 ---- .../README.md | 0 .../GRSlimeBlockLintRule.class/class/isVisible.st | 4 ++++ .../properties.json | 2 +- .../README.md | 0 .../GRSlimeParseTreeLintRule.class/class/isVisible.st | 4 ++++ .../properties.json | 2 +- .../README.md | 0 .../GRSlimeTransformationRule.class/class/isVisible.st | 4 ++++ .../properties.json | 2 +- .../GRTestAssertionsRule.class/properties.json | 2 +- .../GRUsesCanPerformOrUnderstandRule.class/properties.json | 2 +- .../GRUsesClassForHashRule.class/properties.json | 2 +- .../GRUsesNotPortableClassRule.class/class/isAbstract.st | 2 +- .../GRUsesNotPortableClassRule.class/class/isVisible.st | 4 ++++ .../GRUsesNotPortableClassRule.class/properties.json | 2 +- .../GRReSlimeTest.class/instance/rules.st | 6 +++--- 34 files changed, 44 insertions(+), 40 deletions(-) delete mode 100644 repository/Grease-Pharo110-Slime.package/GRReSlimeBlockLintRule.class/class/isVisible.st delete mode 100644 repository/Grease-Pharo110-Slime.package/GRReSlimeParseTreeLintRule.class/class/isVisible.st delete mode 100644 repository/Grease-Pharo110-Slime.package/GRReSlimeTransformationRule.class/class/isVisible.st rename repository/Grease-Pharo110-Slime.package/{GRReSlimeBlockLintRule.class => GRSlimeBlockLintRule.class}/README.md (100%) create mode 100644 repository/Grease-Pharo110-Slime.package/GRSlimeBlockLintRule.class/class/isVisible.st rename repository/Grease-Pharo110-Slime.package/{GRReSlimeBlockLintRule.class => GRSlimeBlockLintRule.class}/properties.json (84%) rename repository/Grease-Pharo110-Slime.package/{GRReSlimeParseTreeLintRule.class => GRSlimeParseTreeLintRule.class}/README.md (100%) create mode 100644 repository/Grease-Pharo110-Slime.package/GRSlimeParseTreeLintRule.class/class/isVisible.st rename repository/Grease-Pharo110-Slime.package/{GRReSlimeParseTreeLintRule.class => GRSlimeParseTreeLintRule.class}/properties.json (82%) rename repository/Grease-Pharo110-Slime.package/{GRReSlimeTransformationRule.class => GRSlimeTransformationRule.class}/README.md (100%) create mode 100644 repository/Grease-Pharo110-Slime.package/GRSlimeTransformationRule.class/class/isVisible.st rename repository/Grease-Pharo110-Slime.package/{GRReSlimeTransformationRule.class => GRSlimeTransformationRule.class}/properties.json (82%) create mode 100644 repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/class/isVisible.st diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/properties.json index 208c1ba2..4cab4c2d 100644 --- a/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiBooleansRule.class/properties.json @@ -1,6 +1,6 @@ { "commentStamp" : "", - "super" : "GRReSlimeTransformationRule", + "super" : "GRSlimeTransformationRule", "category" : "Grease-Pharo110-Slime", "classinstvars" : [ ], "pools" : [ ], diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/properties.json index d5fe699b..2517609b 100644 --- a/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/properties.json @@ -1,6 +1,6 @@ { "commentStamp" : "", - "super" : "GRReSlimeTransformationRule", + "super" : "GRSlimeTransformationRule", "category" : "Grease-Pharo110-Slime", "classinstvars" : [ ], "pools" : [ ], diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/properties.json index b6b9f5c5..1261c334 100644 --- a/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiCollectionsRule.class/properties.json @@ -1,6 +1,6 @@ { "commentStamp" : "", - "super" : "GRReSlimeTransformationRule", + "super" : "GRSlimeTransformationRule", "category" : "Grease-Pharo110-Slime", "classinstvars" : [ ], "pools" : [ ], diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/properties.json index c9539d38..542f8001 100644 --- a/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiConditionalsRule.class/properties.json @@ -1,6 +1,6 @@ { "commentStamp" : "", - "super" : "GRReSlimeTransformationRule", + "super" : "GRSlimeTransformationRule", "category" : "Grease-Pharo110-Slime", "classinstvars" : [ ], "pools" : [ ], diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/properties.json index 0e6e4cb4..0069fdf8 100644 --- a/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiConvertorRule.class/properties.json @@ -1,6 +1,6 @@ { "commentStamp" : "", - "super" : "GRReSlimeTransformationRule", + "super" : "GRSlimeTransformationRule", "category" : "Grease-Pharo110-Slime", "classinstvars" : [ ], "pools" : [ ], diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/properties.json index 51375683..6bd99b1d 100644 --- a/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiExceptionsRule.class/properties.json @@ -1,6 +1,6 @@ { "commentStamp" : "", - "super" : "GRReSlimeTransformationRule", + "super" : "GRSlimeTransformationRule", "category" : "Grease-Pharo110-Slime", "classinstvars" : [ ], "pools" : [ ], diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/properties.json index 2539d9c8..d367dbf7 100644 --- a/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiStreamsRule.class/properties.json @@ -1,6 +1,6 @@ { "commentStamp" : "", - "super" : "GRReSlimeTransformationRule", + "super" : "GRSlimeTransformationRule", "category" : "Grease-Pharo110-Slime", "classinstvars" : [ ], "pools" : [ ], diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/initialize.st b/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/initialize.st index ae23d568..07556e09 100644 --- a/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/initialize.st +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/initialize.st @@ -11,8 +11,8 @@ initialize replace: '`@string includesSubString: `@subString' with: '(`@string indexOfSubCollection: `@subString startingAt: 0) ~= 0'; replace: '`@string includesSubstring: `@subString' - with: '(`@string indexOfSubCollection: `@subString startingAt: 0) ~= 0' - "replace: '``@string findTokens: ``@arg' withValueFrom: [ :node | + with: '(`@string indexOfSubCollection: `@subString startingAt: 0) ~= 0'; + replace: '``@string findTokens: ``@arg' byEvaluating: [ :node | | argument | argument := node arguments first. argument isLiteralNode ifTrue: [ @@ -22,4 +22,4 @@ initialize ifTrue: [ argument replaceWith: (RBLiteralNode value: (String with: argument value)) ] ]. node selector: #subStrings:; - yourself ]" \ No newline at end of file + yourself ] \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/properties.json index f544f2e7..39506d7e 100644 --- a/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/properties.json @@ -1,6 +1,6 @@ { "commentStamp" : "", - "super" : "GRReSlimeTransformationRule", + "super" : "GRSlimeTransformationRule", "category" : "Grease-Pharo110-Slime", "classinstvars" : [ ], "pools" : [ ], diff --git a/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/properties.json index 67a42ffc..e15fd361 100644 --- a/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRBasicNewInitializeMissingRule.class/properties.json @@ -1,6 +1,6 @@ { "commentStamp" : "", - "super" : "GRReSlimeBlockLintRule", + "super" : "GRSlimeBlockLintRule", "category" : "Grease-Pharo110-Slime", "classinstvars" : [ ], "pools" : [ ], diff --git a/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/properties.json index 87feb3c9..724ee707 100644 --- a/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRDeprecatedApiProtocolRule.class/properties.json @@ -1,6 +1,6 @@ { "commentStamp" : "", - "super" : "GRReSlimeParseTreeLintRule", + "super" : "GRSlimeParseTreeLintRule", "category" : "Grease-Pharo110-Slime", "classinstvars" : [ ], "pools" : [ ], diff --git a/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/properties.json index 4cbd7077..37adfef6 100644 --- a/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRInvalidObjectInitializationRule.class/properties.json @@ -1,6 +1,6 @@ { "commentStamp" : "", - "super" : "GRReSlimeBlockLintRule", + "super" : "GRSlimeBlockLintRule", "category" : "Grease-Pharo110-Slime", "classinstvars" : [ ], "pools" : [ ], diff --git a/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/properties.json index 95a60d91..e1e9857f 100644 --- a/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRNonPortableMessageRule.class/properties.json @@ -1,6 +1,6 @@ { "commentStamp" : "", - "super" : "GRReSlimeBlockLintRule", + "super" : "GRSlimeBlockLintRule", "category" : "Grease-Pharo110-Slime", "classinstvars" : [ ], "pools" : [ ], diff --git a/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/properties.json index 2a5a777c..33f1f490 100644 --- a/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRNotPortableCollectionsRule.class/properties.json @@ -1,6 +1,6 @@ { "commentStamp" : "", - "super" : "GRReSlimeTransformationRule", + "super" : "GRSlimeTransformationRule", "category" : "Grease-Pharo110-Slime", "classinstvars" : [ ], "pools" : [ ], diff --git a/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/properties.json index 96ac6c53..c4168e75 100644 --- a/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRObjectInRule.class/properties.json @@ -1,6 +1,6 @@ { "commentStamp" : "pmm 9/12/2009 10:37", - "super" : "GRReSlimeTransformationRule", + "super" : "GRSlimeTransformationRule", "category" : "Grease-Pharo110-Slime", "classinstvars" : [ ], "pools" : [ ], diff --git a/repository/Grease-Pharo110-Slime.package/GRReSlimeBlockLintRule.class/class/isVisible.st b/repository/Grease-Pharo110-Slime.package/GRReSlimeBlockLintRule.class/class/isVisible.st deleted file mode 100644 index 0e3a239e..00000000 --- a/repository/Grease-Pharo110-Slime.package/GRReSlimeBlockLintRule.class/class/isVisible.st +++ /dev/null @@ -1,4 +0,0 @@ -testing -isVisible - - ^ self name ~= #GRReSlimeBlockLintRule \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRReSlimeParseTreeLintRule.class/class/isVisible.st b/repository/Grease-Pharo110-Slime.package/GRReSlimeParseTreeLintRule.class/class/isVisible.st deleted file mode 100644 index 2d2913fb..00000000 --- a/repository/Grease-Pharo110-Slime.package/GRReSlimeParseTreeLintRule.class/class/isVisible.st +++ /dev/null @@ -1,4 +0,0 @@ -testing -isVisible - - ^ self name ~= #GRReSlimeParseTreeLintRule \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRReSlimeTransformationRule.class/class/isVisible.st b/repository/Grease-Pharo110-Slime.package/GRReSlimeTransformationRule.class/class/isVisible.st deleted file mode 100644 index b84d2a50..00000000 --- a/repository/Grease-Pharo110-Slime.package/GRReSlimeTransformationRule.class/class/isVisible.st +++ /dev/null @@ -1,4 +0,0 @@ -testing -isVisible - - ^ self name ~= #GRReSlimeTransformationRule \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRReSlimeBlockLintRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRSlimeBlockLintRule.class/README.md similarity index 100% rename from repository/Grease-Pharo110-Slime.package/GRReSlimeBlockLintRule.class/README.md rename to repository/Grease-Pharo110-Slime.package/GRSlimeBlockLintRule.class/README.md diff --git a/repository/Grease-Pharo110-Slime.package/GRSlimeBlockLintRule.class/class/isVisible.st b/repository/Grease-Pharo110-Slime.package/GRSlimeBlockLintRule.class/class/isVisible.st new file mode 100644 index 00000000..116356fd --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRSlimeBlockLintRule.class/class/isVisible.st @@ -0,0 +1,4 @@ +testing +isVisible + + ^ self name ~= #GRSlimeBlockLintRule \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRReSlimeBlockLintRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRSlimeBlockLintRule.class/properties.json similarity index 84% rename from repository/Grease-Pharo110-Slime.package/GRReSlimeBlockLintRule.class/properties.json rename to repository/Grease-Pharo110-Slime.package/GRSlimeBlockLintRule.class/properties.json index 23226a97..e1389bfa 100644 --- a/repository/Grease-Pharo110-Slime.package/GRReSlimeBlockLintRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRSlimeBlockLintRule.class/properties.json @@ -6,6 +6,6 @@ "pools" : [ ], "classvars" : [ ], "instvars" : [ ], - "name" : "GRReSlimeBlockLintRule", + "name" : "GRSlimeBlockLintRule", "type" : "normal" } \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRReSlimeParseTreeLintRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRSlimeParseTreeLintRule.class/README.md similarity index 100% rename from repository/Grease-Pharo110-Slime.package/GRReSlimeParseTreeLintRule.class/README.md rename to repository/Grease-Pharo110-Slime.package/GRSlimeParseTreeLintRule.class/README.md diff --git a/repository/Grease-Pharo110-Slime.package/GRSlimeParseTreeLintRule.class/class/isVisible.st b/repository/Grease-Pharo110-Slime.package/GRSlimeParseTreeLintRule.class/class/isVisible.st new file mode 100644 index 00000000..5d72890a --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRSlimeParseTreeLintRule.class/class/isVisible.st @@ -0,0 +1,4 @@ +testing +isVisible + + ^ self name ~= #GRSlimeParseTreeLintRule \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRReSlimeParseTreeLintRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRSlimeParseTreeLintRule.class/properties.json similarity index 82% rename from repository/Grease-Pharo110-Slime.package/GRReSlimeParseTreeLintRule.class/properties.json rename to repository/Grease-Pharo110-Slime.package/GRSlimeParseTreeLintRule.class/properties.json index e5d01d93..28ab8124 100644 --- a/repository/Grease-Pharo110-Slime.package/GRReSlimeParseTreeLintRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRSlimeParseTreeLintRule.class/properties.json @@ -6,6 +6,6 @@ "pools" : [ ], "classvars" : [ ], "instvars" : [ ], - "name" : "GRReSlimeParseTreeLintRule", + "name" : "GRSlimeParseTreeLintRule", "type" : "normal" } \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRReSlimeTransformationRule.class/README.md b/repository/Grease-Pharo110-Slime.package/GRSlimeTransformationRule.class/README.md similarity index 100% rename from repository/Grease-Pharo110-Slime.package/GRReSlimeTransformationRule.class/README.md rename to repository/Grease-Pharo110-Slime.package/GRSlimeTransformationRule.class/README.md diff --git a/repository/Grease-Pharo110-Slime.package/GRSlimeTransformationRule.class/class/isVisible.st b/repository/Grease-Pharo110-Slime.package/GRSlimeTransformationRule.class/class/isVisible.st new file mode 100644 index 00000000..b60e68d4 --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRSlimeTransformationRule.class/class/isVisible.st @@ -0,0 +1,4 @@ +testing +isVisible + + ^ self name ~= #GRSlimeTransformationRule \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRReSlimeTransformationRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRSlimeTransformationRule.class/properties.json similarity index 82% rename from repository/Grease-Pharo110-Slime.package/GRReSlimeTransformationRule.class/properties.json rename to repository/Grease-Pharo110-Slime.package/GRSlimeTransformationRule.class/properties.json index eaa3dd3e..df276035 100644 --- a/repository/Grease-Pharo110-Slime.package/GRReSlimeTransformationRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRSlimeTransformationRule.class/properties.json @@ -6,6 +6,6 @@ "pools" : [ ], "classvars" : [ ], "instvars" : [ ], - "name" : "GRReSlimeTransformationRule", + "name" : "GRSlimeTransformationRule", "type" : "normal" } \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/properties.json index cd52efa5..572f670a 100644 --- a/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRTestAssertionsRule.class/properties.json @@ -1,6 +1,6 @@ { "commentStamp" : "pmm 8/17/2014 11:24", - "super" : "GRReSlimeTransformationRule", + "super" : "GRSlimeTransformationRule", "category" : "Grease-Pharo110-Slime", "classinstvars" : [ ], "pools" : [ ], diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/properties.json index 70456891..a30a05da 100644 --- a/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRUsesCanPerformOrUnderstandRule.class/properties.json @@ -1,6 +1,6 @@ { "commentStamp" : "", - "super" : "GRReSlimeParseTreeLintRule", + "super" : "GRSlimeParseTreeLintRule", "category" : "Grease-Pharo110-Slime", "classinstvars" : [ ], "pools" : [ ], diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/properties.json index c679f3eb..063aef8f 100644 --- a/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRUsesClassForHashRule.class/properties.json @@ -1,6 +1,6 @@ { "commentStamp" : "", - "super" : "GRReSlimeParseTreeLintRule", + "super" : "GRSlimeParseTreeLintRule", "category" : "Grease-Pharo110-Slime", "classinstvars" : [ ], "pools" : [ ], diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/class/isAbstract.st b/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/class/isAbstract.st index 99dcbb1f..7d1d20cc 100644 --- a/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/class/isAbstract.st +++ b/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/class/isAbstract.st @@ -1,4 +1,4 @@ testing isAbstract - ^ self == GRUsesNotPortableClassRule \ No newline at end of file + ^ self name = #GRUsesNotPortableClassRule \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/class/isVisible.st b/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/class/isVisible.st new file mode 100644 index 00000000..680a15af --- /dev/null +++ b/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/class/isVisible.st @@ -0,0 +1,4 @@ +testing +isVisible + + ^ self name ~= #GRUsesNotPortableClassRule \ No newline at end of file diff --git a/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/properties.json b/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/properties.json index 2965264e..128f88b8 100644 --- a/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/properties.json +++ b/repository/Grease-Pharo110-Slime.package/GRUsesNotPortableClassRule.class/properties.json @@ -1,6 +1,6 @@ { "commentStamp" : "", - "super" : "GRReSlimeBlockLintRule", + "super" : "GRSlimeBlockLintRule", "category" : "Grease-Pharo110-Slime", "classinstvars" : [ ], "pools" : [ ], diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st index 58190464..a7984364 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st @@ -2,7 +2,7 @@ running rules ^ (OrderedCollection new - addAll: GRReSlimeBlockLintRule allSubclasses; - addAll: GRReSlimeParseTreeLintRule allSubclasses; - addAll: GRReSlimeTransformationRule allSubclasses; + addAll: GRSlimeBlockLintRule allSubclasses; + addAll: GRSlimeParseTreeLintRule allSubclasses; + addAll: GRSlimeTransformationRule allSubclasses; yourself) reject: #isAbstract \ No newline at end of file From bfea7eadc9109ac5a85f3135a2f05c24b652eccb Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sat, 13 Jan 2024 14:20:16 +0100 Subject: [PATCH 16/44] Fix ANSI characters Slime rule --- .../instance/initialize.st | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/initialize.st b/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/initialize.st index 85ad1c4c..ea3f6e73 100644 --- a/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/initialize.st +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/initialize.st @@ -2,12 +2,15 @@ initialization initialize super initialize. - self replace: 'Character value: ``@expr' with: 'Character codePoint: ``@expr' - "replace: '`#source to: `#target' - withValueFrom: [ :node | - RBLiteralNode value: (String streamContents: [ :stream | - node receiver value codePoint to: node arguments first value codePoint do: [ :code | - stream nextPut: (Character codePoint: code) ] ]) ] - when: [ :node | - node receiver value isCharacter - and: [ node arguments first value isCharacter ] ]" \ No newline at end of file + self + replace: 'Character value: ``@expr' + with: 'Character codePoint: ``@expr'. + self + replace: '`#source to: `#target' + byEvaluating: [ :node | + (node receiver value isCharacter and: [ + node arguments first value isCharacter ]) + ifTrue: [ + RBLiteralNode value: (String streamContents: [ :stream | + node receiver value codePoint to: node arguments first value codePoint do: [ :code | stream nextPut: (Character codePoint: code) ] ]) ] + ifFalse: [ node ] ] \ No newline at end of file From 499065208853879664fe6601d2dae958fa7c41d3 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sat, 13 Jan 2024 15:31:34 +0100 Subject: [PATCH 17/44] Fix ANSIStrings Slime rule --- .../GRAnsiStringsRule.class/instance/initialize.st | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/initialize.st b/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/initialize.st index 07556e09..702a9ad0 100644 --- a/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/initialize.st +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiStringsRule.class/instance/initialize.st @@ -13,13 +13,14 @@ initialize replace: '`@string includesSubstring: `@subString' with: '(`@string indexOfSubCollection: `@subString startingAt: 0) ~= 0'; replace: '``@string findTokens: ``@arg' byEvaluating: [ :node | - | argument | - argument := node arguments first. + | argument newNode | + newNode := node copy. + argument := newNode arguments first. argument isLiteralNode ifTrue: [ argument value isArray ifTrue: [ argument replaceWith: (RBLiteralNode value: (String withAll: argument value)) ]. argument value isCharacter ifTrue: [ argument replaceWith: (RBLiteralNode value: (String with: argument value)) ] ]. - node + newNode selector: #subStrings:; yourself ] \ No newline at end of file From 8f6c9b8496a41401d6b93c882f89e7c4a81f7ebc Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 14 Jan 2024 09:51:21 +0100 Subject: [PATCH 18/44] test with smalltalkCI fork for Pharo12 fix --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4e7286ca..c009f691 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,6 +21,7 @@ jobs: - uses: actions/checkout@v3 - uses: hpi-swa/setup-smalltalkCI@v1 with: + smalltalkCI-source: 'jbrichau/smalltalkCI' smalltalk-image: ${{ matrix.smalltalk }} - name: Run tests run: smalltalkci -s ${{ matrix.smalltalk }} From 52ba23426e0c4551ff18ccfab9314c0da75f1061 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 14 Jan 2024 09:55:41 +0100 Subject: [PATCH 19/44] try again to run against smalltalk-CI branch --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c009f691..2fc95e74 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,6 +22,7 @@ jobs: - uses: hpi-swa/setup-smalltalkCI@v1 with: smalltalkCI-source: 'jbrichau/smalltalkCI' + smalltalkCI-branch: 'master' smalltalk-image: ${{ matrix.smalltalk }} - name: Run tests run: smalltalkci -s ${{ matrix.smalltalk }} From 4e5cec20ea8b69f8b72acc8c9e8897d3e090a1ff Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 14 Jan 2024 11:05:16 +0100 Subject: [PATCH 20/44] try new fix branch for SmalltalkCI --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2fc95e74..2b33d50d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,7 +22,7 @@ jobs: - uses: hpi-swa/setup-smalltalkCI@v1 with: smalltalkCI-source: 'jbrichau/smalltalkCI' - smalltalkCI-branch: 'master' + smalltalkCI-branch: 'fix-issue-623' smalltalk-image: ${{ matrix.smalltalk }} - name: Run tests run: smalltalkci -s ${{ matrix.smalltalk }} From 64ac15d95c5d77326deb5c3b4759d6b3c4189f23 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 14 Jan 2024 14:04:09 +0100 Subject: [PATCH 21/44] Fixes Slime test for empty statements (will work correctly after fix for issue https://github.com/pharo-project/pharo/issues/15955 is merged into Pharo) --- .../GRReSlimeTest.class/instance/rules.st | 2 ++ .../instance/testEmptyStatements.st | 17 ++++++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st index a7984364..13c0034b 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/rules.st @@ -5,4 +5,6 @@ rules addAll: GRSlimeBlockLintRule allSubclasses; addAll: GRSlimeParseTreeLintRule allSubclasses; addAll: GRSlimeTransformationRule allSubclasses; + add: ReMultiplePeriodsTerminatingStatementRule; + add: ReMethodSignaturePeriodRule; yourself) reject: #isAbstract \ No newline at end of file diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testEmptyStatements.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testEmptyStatements.st index 352c6fdc..7e3c3a62 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testEmptyStatements.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testEmptyStatements.st @@ -1,15 +1,18 @@ tests-block testEmptyStatements "We added this test to make sure that this Pharo-supplied rule works because we previously had this one in Grease and it is important." - | class | class := self defineSubClassOf: #GRObject. - self compile: 'emptyStatement1. self and' in: class. - self compile: 'emptyStatement2 self and..' in: class. - self compile: 'emptyStatement3 self and."foo".' in: class. - self compile: 'emptyStatement4 self and."foo".self and' in: class. + self compile: 'emptyStatement1.', (String with: Character cr), ' self and' in: class. + self compile: 'emptyStatement2', (String with: Character cr), ' self and..' in: class. + self compile: 'emptyStatement3', (String with: Character cr), ' self and."foo".' in: class. + self compile: 'emptyStatement4', (String with: Character cr), ' self and."foo".self and' in: class. self assertRule: ReMultiplePeriodsTerminatingStatementRule - matches: { class>>#emptyStatement1 . class>>#emptyStatement2 . class>>#emptyStatement3 . class>>#emptyStatement4 } - ignoring: (Array with: ReUnnecessaryLastPeriodRule) \ No newline at end of file + matches: { class>>#emptyStatement2 . class>>#emptyStatement3 . class>>#emptyStatement4 } + ignoring: { ReMethodSignaturePeriodRule }. + self + assertRule: ReMethodSignaturePeriodRule + matches: { class>>#emptyStatement1 } + ignoring: { ReMultiplePeriodsTerminatingStatementRule }. \ No newline at end of file From c4074b0404f8248d68c94a768597f4f3c69d03ef Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 14 Jan 2024 15:00:03 +0100 Subject: [PATCH 22/44] Add Pharo110 to GRPackage resolution --- .../GRPackage.class/instance/resolveWith..st | 38 +++++++++---------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/repository/Grease-Core.package/GRPackage.class/instance/resolveWith..st b/repository/Grease-Core.package/GRPackage.class/instance/resolveWith..st index 210c7f65..d0a379cd 100644 --- a/repository/Grease-Core.package/GRPackage.class/instance/resolveWith..st +++ b/repository/Grease-Core.package/GRPackage.class/instance/resolveWith..st @@ -5,24 +5,20 @@ resolveWith: aDictionary aDictionary at: each ifAbsent: [ "if Foo-Pharo-Bar fails try Foo-Pharo20-Bar and Foo-Pharo30-Bar" (each indexOfSubCollection: '-Pharo-' startingAt: 1) ~= 0 ifTrue: [ - "try -Pharo40-" - aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo40-') ifAbsent: [ - "try -Pharo50-" - aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo50-') ifAbsent: [ - "try -Pharo60-" - aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo60-') ifAbsent: [ - "try -Pharo70-" - aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo70-') ifAbsent: [ - "try -Pharo90-" - aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo90-') ifAbsent: [ - "try -Pharo100-" - aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo100-') ifAbsent: [ - "try -Squeak-" - aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Squeak-') ifAbsent: [ - "try -Squeak5-" - aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Squeak5-') ifAbsent: [ - "try -Squeak6-" - aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Squeak6-') ifAbsent: [ - "specific for Grease-Slime" - aDictionary at: (each copyReplaceAll: 'Grease-Pharo-Slime' with: 'Grease-Slime') ifAbsent: [ - self error: self name printString , ' depends on unknown package ' , each printString ] ] ] ] ] ] ] ] ] ] ] ] ] \ No newline at end of file + "try -Pharo70-" + aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo70-') ifAbsent: [ + "try -Pharo90-" + aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo90-') ifAbsent: [ + "try -Pharo100-" + aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo100-') ifAbsent: [ + "try -Pharo110-" + aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo100-') ifAbsent: [ + "try -Squeak-" + aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Squeak-') ifAbsent: [ + "try -Squeak5-" + aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Squeak5-') ifAbsent: [ + "try -Squeak6-" + aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Squeak6-') ifAbsent: [ + "specific for Grease-Slime" + aDictionary at: (each copyReplaceAll: 'Grease-Pharo-Slime' with: 'Grease-Slime') ifAbsent: [ + self error: self name printString , ' depends on unknown package ' , each printString ] ] ] ] ] ] ] ] ] ] ] \ No newline at end of file From 55f34f462e4299b32046713dc91d0418b6f02203 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 14 Jan 2024 15:06:35 +0100 Subject: [PATCH 23/44] fix resolveWith: older version package names are used in later Pharo versions --- .../GRPackage.class/instance/resolveWith..st | 40 +++++++++++-------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/repository/Grease-Core.package/GRPackage.class/instance/resolveWith..st b/repository/Grease-Core.package/GRPackage.class/instance/resolveWith..st index d0a379cd..0617a084 100644 --- a/repository/Grease-Core.package/GRPackage.class/instance/resolveWith..st +++ b/repository/Grease-Core.package/GRPackage.class/instance/resolveWith..st @@ -5,20 +5,26 @@ resolveWith: aDictionary aDictionary at: each ifAbsent: [ "if Foo-Pharo-Bar fails try Foo-Pharo20-Bar and Foo-Pharo30-Bar" (each indexOfSubCollection: '-Pharo-' startingAt: 1) ~= 0 ifTrue: [ - "try -Pharo70-" - aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo70-') ifAbsent: [ - "try -Pharo90-" - aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo90-') ifAbsent: [ - "try -Pharo100-" - aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo100-') ifAbsent: [ - "try -Pharo110-" - aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo100-') ifAbsent: [ - "try -Squeak-" - aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Squeak-') ifAbsent: [ - "try -Squeak5-" - aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Squeak5-') ifAbsent: [ - "try -Squeak6-" - aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Squeak6-') ifAbsent: [ - "specific for Grease-Slime" - aDictionary at: (each copyReplaceAll: 'Grease-Pharo-Slime' with: 'Grease-Slime') ifAbsent: [ - self error: self name printString , ' depends on unknown package ' , each printString ] ] ] ] ] ] ] ] ] ] ] \ No newline at end of file + "try -Pharo40-" + aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo40-') ifAbsent: [ + "try -Pharo50-" + aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo50-') ifAbsent: [ + "try -Pharo60-" + aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo60-') ifAbsent: [ + "try -Pharo70-" + aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo70-') ifAbsent: [ + "try -Pharo90-" + aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo90-') ifAbsent: [ + "try -Pharo100-" + aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo100-') ifAbsent: [ + "try -Pharo110-" + aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Pharo110-') ifAbsent: [ + "try -Squeak-" + aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Squeak-') ifAbsent: [ + "try -Squeak5-" + aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Squeak5-') ifAbsent: [ + "try -Squeak6-" + aDictionary at: (each copyReplaceAll: '-Pharo-' with: '-Squeak6-') ifAbsent: [ + "specific for Grease-Slime" + aDictionary at: (each copyReplaceAll: 'Grease-Pharo-Slime' with: 'Grease-Slime') ifAbsent: [ + self error: self name printString , ' depends on unknown package ' , each printString ] ] ] ] ] ] ] ] ] ] ] ] ] ] \ No newline at end of file From 9aac9aaca4389dc41a714f5b570a7b72bf56a249 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 14 Jan 2024 15:23:16 +0100 Subject: [PATCH 24/44] gemstone 3.6.7 is no longer available for download, switching back to testing with 3.6.6 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2b33d50d..831cdc8f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,7 +8,7 @@ jobs: strategy: fail-fast: false matrix: - smalltalk: [ Pharo64-11, Pharo64-10, Pharo64-9.0, Pharo64-8.0, Pharo64-7.0, GemStone64-3.7.0, GemStone64-3.6.7, GemStone64-3.5.7, Squeak64-5.3 ] + smalltalk: [ Pharo64-11, Pharo64-10, Pharo64-9.0, Pharo64-8.0, Pharo64-7.0, GemStone64-3.7.0, GemStone64-3.6.6, GemStone64-3.5.7, Squeak64-5.3 ] experimental: [ false ] include: - smalltalk: Pharo64-12 From b073206c228ea0fd8aa7e62b9be07470ee19a961 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sat, 27 Jan 2024 09:21:03 +0100 Subject: [PATCH 25/44] Mark testEmptyStatements as fixed in Pharo 12 but breaking in earlier versions --- .../GRReSlimeTest.class/instance/expectedFailures.st | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/expectedFailures.st diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/expectedFailures.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/expectedFailures.st new file mode 100644 index 00000000..8c178caf --- /dev/null +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/expectedFailures.st @@ -0,0 +1,6 @@ +running +expectedFailures + + SystemVersion current major >= 12 ifTrue:[ ^ #() ]. + + ^ #(#testEmptyStatements) \ No newline at end of file From 933bc731de15ca1446ffefc7c039bf180b232eb2 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 28 Jan 2024 10:34:57 +0100 Subject: [PATCH 26/44] Fix GRAnsiCharacterRule: should only match character literals --- .../GRAnsiCharactersRule.class/instance/initialize.st | 2 +- .../GRReSlimeTest.class/instance/testAnsiCharacterRule.st | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/initialize.st b/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/initialize.st index ea3f6e73..f83e0222 100644 --- a/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/initialize.st +++ b/repository/Grease-Pharo110-Slime.package/GRAnsiCharactersRule.class/instance/initialize.st @@ -6,7 +6,7 @@ initialize replace: 'Character value: ``@expr' with: 'Character codePoint: ``@expr'. self - replace: '`#source to: `#target' + replace: '`#source `{:node | node value isCharacter }` to: `#target' byEvaluating: [ :node | (node receiver value isCharacter and: [ node arguments first value isCharacter ]) diff --git a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiCharacterRule.st b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiCharacterRule.st index a7eaeecf..ddc22642 100644 --- a/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiCharacterRule.st +++ b/repository/Grease-Tests-Pharo-Slime.package/GRReSlimeTest.class/instance/testAnsiCharacterRule.st @@ -5,6 +5,7 @@ testAnsiCharacterRule class := self defineSubClassOf: #GRObject. self compile: 'character Character value: 123' in: class. self compile: 'characterRange $a to: $c' in: class. + self compile: 'integerRange 1 to: 10' in: class. self runTransformation: GRAnsiCharactersRule changes: #('character Character codePoint: 123' 'characterRange ''abc''') \ No newline at end of file From 788fa150afdc6d44d83bde34fcaed9f4f2e5f700 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sat, 3 Feb 2024 15:52:57 +0100 Subject: [PATCH 27/44] Added support for newTemporaryFileReference in GemStone versions higher than 3.3 --- .../instance/newTemporaryFileReference.st | 8 ++++++++ .../instance/newTemporaryFileReferenceNamed..st | 8 ++++++++ 2 files changed, 16 insertions(+) create mode 100644 repository/Grease-GemStone330-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileReference.st create mode 100644 repository/Grease-GemStone330-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileReferenceNamed..st diff --git a/repository/Grease-GemStone330-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileReference.st b/repository/Grease-GemStone330-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileReference.st new file mode 100644 index 00000000..a89cef9e --- /dev/null +++ b/repository/Grease-GemStone330-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileReference.st @@ -0,0 +1,8 @@ +*grease-gemstone330-core +newTemporaryFileReference + "Create a new temporary file in the systems temp directory + and answer a reference to it. + It is the users responsibility to delete or move the file, + it will not be cleaned up automatically (unless the host system + has a policy for it)." + ^ self newTemporaryFileReferenceNamed: UUID new greaseString diff --git a/repository/Grease-GemStone330-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileReferenceNamed..st b/repository/Grease-GemStone330-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileReferenceNamed..st new file mode 100644 index 00000000..de9da1ec --- /dev/null +++ b/repository/Grease-GemStone330-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileReferenceNamed..st @@ -0,0 +1,8 @@ +*grease-gemstone330-core +newTemporaryFileReferenceNamed: aName + "Create a new temporary file in the systems temp directory + and answer a reference to it. + It is the users responsibility to delete or move the file, + it will not be cleaned up automatically (unless the host system + has a policy for it)." + ^ GsFile openWriteOnServer: '/tmp/', aName From 4d9ea9f26ec9f130c1b09fed367d75c41c70c4aa Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 4 Feb 2024 09:25:16 +0100 Subject: [PATCH 28/44] Deprecate existing `newTemporaryFileReference` in favour of `newTemporaryFile` which returns a pathString consistent with other Grease file-handling methods --- .../GRPlatform.class/instance/newTemporaryFile.st | 6 ++++++ .../instance/newTemporaryFileNamed..st | 6 ++++++ .../instance/newTemporaryFileReference.st | 8 -------- .../instance/newTemporaryFileReferenceNamed..st | 3 --- .../instance/newTemporaryFile.st | 4 ++++ .../instance/newTemporaryFileNamed..st | 4 ++++ .../instance/newTemporaryFileReference.st | 3 +++ .../instance/newTemporaryFileReferenceNamed..st | 3 +++ .../instance/testNewTemporaryFile.st | 13 +++++++++++++ .../instance/testNewTemporaryFileNamed.st | 13 +++++++++++++ 10 files changed, 52 insertions(+), 11 deletions(-) create mode 100644 repository/Grease-Core.package/GRPlatform.class/instance/newTemporaryFile.st create mode 100644 repository/Grease-Core.package/GRPlatform.class/instance/newTemporaryFileNamed..st delete mode 100644 repository/Grease-Core.package/GRPlatform.class/instance/newTemporaryFileReference.st delete mode 100644 repository/Grease-Core.package/GRPlatform.class/instance/newTemporaryFileReferenceNamed..st create mode 100644 repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/newTemporaryFile.st create mode 100644 repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st create mode 100644 repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testNewTemporaryFile.st create mode 100644 repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testNewTemporaryFileNamed.st diff --git a/repository/Grease-Core.package/GRPlatform.class/instance/newTemporaryFile.st b/repository/Grease-Core.package/GRPlatform.class/instance/newTemporaryFile.st new file mode 100644 index 00000000..e92ccc4c --- /dev/null +++ b/repository/Grease-Core.package/GRPlatform.class/instance/newTemporaryFile.st @@ -0,0 +1,6 @@ +files +newTemporaryFile + "Create a new temporary file in the systems temp directory and answer its pathString. + It is the users responsibility to delete or move the file, it will not be cleaned up automatically + (unless the host system has a policy for it)." + ^ self subclassResponsibility \ No newline at end of file diff --git a/repository/Grease-Core.package/GRPlatform.class/instance/newTemporaryFileNamed..st b/repository/Grease-Core.package/GRPlatform.class/instance/newTemporaryFileNamed..st new file mode 100644 index 00000000..c03ea7f2 --- /dev/null +++ b/repository/Grease-Core.package/GRPlatform.class/instance/newTemporaryFileNamed..st @@ -0,0 +1,6 @@ +files +newTemporaryFileNamed: aName + "Create a new temporary file in the systems temp directory and answer its pathString. + It is the users responsibility to delete or move the file, it will not be cleaned up automatically + (unless the host system has a policy for it)." + self subclassResponsibility \ No newline at end of file diff --git a/repository/Grease-Core.package/GRPlatform.class/instance/newTemporaryFileReference.st b/repository/Grease-Core.package/GRPlatform.class/instance/newTemporaryFileReference.st deleted file mode 100644 index 91961b92..00000000 --- a/repository/Grease-Core.package/GRPlatform.class/instance/newTemporaryFileReference.st +++ /dev/null @@ -1,8 +0,0 @@ -files -newTemporaryFileReference - "Create a new temporary file in the systems temp directory - and answer a reference to it. - It is the users responsibility to delete or move the file, - it will not be cleaned up automatically (unless the host system - has a policy for it)." - ^ self subclassResponsibility \ No newline at end of file diff --git a/repository/Grease-Core.package/GRPlatform.class/instance/newTemporaryFileReferenceNamed..st b/repository/Grease-Core.package/GRPlatform.class/instance/newTemporaryFileReferenceNamed..st deleted file mode 100644 index 93059d5f..00000000 --- a/repository/Grease-Core.package/GRPlatform.class/instance/newTemporaryFileReferenceNamed..st +++ /dev/null @@ -1,3 +0,0 @@ -files -newTemporaryFileReferenceNamed: aName - self subclassResponsibility \ No newline at end of file diff --git a/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/newTemporaryFile.st b/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/newTemporaryFile.st new file mode 100644 index 00000000..01578607 --- /dev/null +++ b/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/newTemporaryFile.st @@ -0,0 +1,4 @@ +files +newTemporaryFile + + ^ self newTemporaryFileNamed: UUID new greaseString \ No newline at end of file diff --git a/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st b/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st new file mode 100644 index 00000000..5e778cdd --- /dev/null +++ b/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st @@ -0,0 +1,4 @@ +files +newTemporaryFileNamed: aName + + ^ (FileLocator temp / aName) pathString \ No newline at end of file diff --git a/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReference.st b/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReference.st index cd503715..7992374f 100644 --- a/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReference.st +++ b/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReference.st @@ -5,4 +5,7 @@ newTemporaryFileReference It is the users responsibility to delete or move the file, it will not be cleaned up automatically (unless the host system has a policy for it)." + self + greaseDeprecatedApi: 'GRPlatform>>newTemporaryFileReference' + details: 'Use newTemporaryFile'. ^ self newTemporaryFileReferenceNamed: UUID new asString \ No newline at end of file diff --git a/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReferenceNamed..st b/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReferenceNamed..st index 5f4d0602..81baa7c1 100644 --- a/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReferenceNamed..st +++ b/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReferenceNamed..st @@ -5,4 +5,7 @@ newTemporaryFileReferenceNamed: aName It is the users responsibility to delete or move the file, it will not be cleaned up automatically (unless the host system has a policy for it)." + self + greaseDeprecatedApi: 'GRPlatform>>newTemporaryFileReferenceNamed:' + details: 'Use newTemporaryFileNamed:'. ^ FileLocator temp / aName \ No newline at end of file diff --git a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testNewTemporaryFile.st b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testNewTemporaryFile.st new file mode 100644 index 00000000..f02a8289 --- /dev/null +++ b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testNewTemporaryFile.st @@ -0,0 +1,13 @@ +tests-files +testNewTemporaryFile + + | temporaryFile | + [ + temporaryFile := GRPlatform current newTemporaryFile. + GRPlatform current + writeFileStreamOn: temporaryFile + do: [ :str | str nextPutAll: 'test temporary' ] + binary: false. + self assert: (GRPlatform current fileExists: temporaryFile) + ] ensure: [ GRPlatform current deleteFile: temporaryFile ]. + self deny: (GRPlatform current fileExists: temporaryFile) \ No newline at end of file diff --git a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testNewTemporaryFileNamed.st b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testNewTemporaryFileNamed.st new file mode 100644 index 00000000..68d6ff3c --- /dev/null +++ b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testNewTemporaryFileNamed.st @@ -0,0 +1,13 @@ +tests-files +testNewTemporaryFileNamed + + | temporaryFile | + [ + temporaryFile := GRPlatform current newTemporaryFileNamed: 'test_temporary'. + GRPlatform current + writeFileStreamOn: temporaryFile + do: [ :str | str nextPutAll: 'test temporary' ] + binary: false. + self assert: (GRPlatform current fileExists: temporaryFile) + ] ensure: [ GRPlatform current deleteFile: temporaryFile ]. + self deny: (GRPlatform current fileExists: temporaryFile) \ No newline at end of file From 0176ed2fb0619de39cc60437d4c60d0513f6e381 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 4 Feb 2024 09:39:26 +0100 Subject: [PATCH 29/44] added temporary file creation methods to older Pharo versions --- .../GRPharoPlatform.class/instance/newTemporaryFile.st | 4 ++++ .../GRPharoPlatform.class/instance/newTemporaryFileNamed..st | 4 ++++ .../instance/newTemporaryFileReference.st | 3 +++ .../instance/newTemporaryFileReferenceNamed..st | 3 +++ .../GRPharoPlatform.class/instance/newTemporaryFile.st | 4 ++++ .../GRPharoPlatform.class/instance/newTemporaryFileNamed..st | 4 ++++ .../instance/newTemporaryFileReference.st | 3 +++ .../instance/newTemporaryFileReferenceNamed..st | 3 +++ 8 files changed, 28 insertions(+) create mode 100644 repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/newTemporaryFile.st create mode 100644 repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st create mode 100644 repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/newTemporaryFile.st create mode 100644 repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st diff --git a/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/newTemporaryFile.st b/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/newTemporaryFile.st new file mode 100644 index 00000000..01578607 --- /dev/null +++ b/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/newTemporaryFile.st @@ -0,0 +1,4 @@ +files +newTemporaryFile + + ^ self newTemporaryFileNamed: UUID new greaseString \ No newline at end of file diff --git a/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st b/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st new file mode 100644 index 00000000..5e778cdd --- /dev/null +++ b/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st @@ -0,0 +1,4 @@ +files +newTemporaryFileNamed: aName + + ^ (FileLocator temp / aName) pathString \ No newline at end of file diff --git a/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReference.st b/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReference.st index ce7f6f18..63358983 100644 --- a/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReference.st +++ b/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReference.st @@ -5,4 +5,7 @@ newTemporaryFileReference It is the users responsibility to delete or move the file, it will not be cleaned up automatically (unless the host system has a policy for it)." + self + greaseDeprecatedApi: 'GRPlatform>>newTemporaryFileReference' + details: 'Use newTemporaryFile'. ^ self newTemporaryFileReferenceNamed: UUID new asString \ No newline at end of file diff --git a/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReferenceNamed..st b/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReferenceNamed..st index f0fdf80f..d9eed8ee 100644 --- a/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReferenceNamed..st +++ b/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReferenceNamed..st @@ -5,4 +5,7 @@ newTemporaryFileReferenceNamed: aName It is the users responsibility to delete or move the file, it will not be cleaned up automatically (unless the host system has a policy for it)." + self + greaseDeprecatedApi: 'GRPlatform>>newTemporaryFileReferenceNamed:' + details: 'Use newTemporaryFileNamed:'. ^ FileLocator temp / aName \ No newline at end of file diff --git a/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/newTemporaryFile.st b/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/newTemporaryFile.st new file mode 100644 index 00000000..01578607 --- /dev/null +++ b/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/newTemporaryFile.st @@ -0,0 +1,4 @@ +files +newTemporaryFile + + ^ self newTemporaryFileNamed: UUID new greaseString \ No newline at end of file diff --git a/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st b/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st new file mode 100644 index 00000000..5e778cdd --- /dev/null +++ b/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st @@ -0,0 +1,4 @@ +files +newTemporaryFileNamed: aName + + ^ (FileLocator temp / aName) pathString \ No newline at end of file diff --git a/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReference.st b/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReference.st index cd503715..7992374f 100644 --- a/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReference.st +++ b/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReference.st @@ -5,4 +5,7 @@ newTemporaryFileReference It is the users responsibility to delete or move the file, it will not be cleaned up automatically (unless the host system has a policy for it)." + self + greaseDeprecatedApi: 'GRPlatform>>newTemporaryFileReference' + details: 'Use newTemporaryFile'. ^ self newTemporaryFileReferenceNamed: UUID new asString \ No newline at end of file diff --git a/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReferenceNamed..st b/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReferenceNamed..st index 5f4d0602..81baa7c1 100644 --- a/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReferenceNamed..st +++ b/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/newTemporaryFileReferenceNamed..st @@ -5,4 +5,7 @@ newTemporaryFileReferenceNamed: aName It is the users responsibility to delete or move the file, it will not be cleaned up automatically (unless the host system has a policy for it)." + self + greaseDeprecatedApi: 'GRPlatform>>newTemporaryFileReferenceNamed:' + details: 'Use newTemporaryFileNamed:'. ^ FileLocator temp / aName \ No newline at end of file From c83bb49c5012e2dcaeaa73c1e2620f8abfdae37c Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 4 Feb 2024 09:58:28 +0100 Subject: [PATCH 30/44] added new temporary file creation methods to GemStone --- .../instance/newTemporaryFile.st | 4 ++++ .../instance/newTemporaryFileNamed..st | 4 ++++ .../instance/newTemporaryFileReference.st | 8 -------- .../instance/newTemporaryFileReferenceNamed..st | 8 -------- 4 files changed, 8 insertions(+), 16 deletions(-) create mode 100644 repository/Grease-GemStone300-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFile.st create mode 100644 repository/Grease-GemStone300-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileNamed..st delete mode 100644 repository/Grease-GemStone330-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileReference.st delete mode 100644 repository/Grease-GemStone330-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileReferenceNamed..st diff --git a/repository/Grease-GemStone300-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFile.st b/repository/Grease-GemStone300-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFile.st new file mode 100644 index 00000000..9c7dcae5 --- /dev/null +++ b/repository/Grease-GemStone300-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFile.st @@ -0,0 +1,4 @@ +*grease-gemstone300-core +newTemporaryFile + + ^ self newTemporaryFileNamed: UUID new greaseString diff --git a/repository/Grease-GemStone300-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileNamed..st b/repository/Grease-GemStone300-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileNamed..st new file mode 100644 index 00000000..c41ed58e --- /dev/null +++ b/repository/Grease-GemStone300-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileNamed..st @@ -0,0 +1,4 @@ +*grease-gemstone300-core +newTemporaryFileNamed: aName + + ^ (GsFile openWriteOnServer: '/tmp/', aName) pathName diff --git a/repository/Grease-GemStone330-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileReference.st b/repository/Grease-GemStone330-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileReference.st deleted file mode 100644 index a89cef9e..00000000 --- a/repository/Grease-GemStone330-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileReference.st +++ /dev/null @@ -1,8 +0,0 @@ -*grease-gemstone330-core -newTemporaryFileReference - "Create a new temporary file in the systems temp directory - and answer a reference to it. - It is the users responsibility to delete or move the file, - it will not be cleaned up automatically (unless the host system - has a policy for it)." - ^ self newTemporaryFileReferenceNamed: UUID new greaseString diff --git a/repository/Grease-GemStone330-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileReferenceNamed..st b/repository/Grease-GemStone330-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileReferenceNamed..st deleted file mode 100644 index de9da1ec..00000000 --- a/repository/Grease-GemStone330-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileReferenceNamed..st +++ /dev/null @@ -1,8 +0,0 @@ -*grease-gemstone330-core -newTemporaryFileReferenceNamed: aName - "Create a new temporary file in the systems temp directory - and answer a reference to it. - It is the users responsibility to delete or move the file, - it will not be cleaned up automatically (unless the host system - has a policy for it)." - ^ GsFile openWriteOnServer: '/tmp/', aName From acf57600216910eb04d8fc5a987f57d19ccaa4ad Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 4 Feb 2024 10:09:40 +0100 Subject: [PATCH 31/44] moved method to GemStone-Core package and implemented missing deleteFile: method --- .../GRGemStonePlatform.class/instance/deleteFile..st | 4 ++++ .../GRGemStonePlatform.class}/instance/newTemporaryFile.st | 2 +- .../instance/newTemporaryFileNamed..st | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/deleteFile..st rename repository/{Grease-GemStone300-Core.package/GRGemStonePlatform.extension => Grease-GemStone-Core.package/GRGemStonePlatform.class}/instance/newTemporaryFile.st (73%) rename repository/{Grease-GemStone300-Core.package/GRGemStonePlatform.extension => Grease-GemStone-Core.package/GRGemStonePlatform.class}/instance/newTemporaryFileNamed..st (77%) diff --git a/repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/deleteFile..st b/repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/deleteFile..st new file mode 100644 index 00000000..5959876d --- /dev/null +++ b/repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/deleteFile..st @@ -0,0 +1,4 @@ +files +deleteFile: aPathString + + GsFile removeServerFile: aPathString diff --git a/repository/Grease-GemStone300-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFile.st b/repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/newTemporaryFile.st similarity index 73% rename from repository/Grease-GemStone300-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFile.st rename to repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/newTemporaryFile.st index 9c7dcae5..c452c26b 100644 --- a/repository/Grease-GemStone300-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFile.st +++ b/repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/newTemporaryFile.st @@ -1,4 +1,4 @@ -*grease-gemstone300-core +files newTemporaryFile ^ self newTemporaryFileNamed: UUID new greaseString diff --git a/repository/Grease-GemStone300-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileNamed..st b/repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/newTemporaryFileNamed..st similarity index 77% rename from repository/Grease-GemStone300-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileNamed..st rename to repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/newTemporaryFileNamed..st index c41ed58e..46483c70 100644 --- a/repository/Grease-GemStone300-Core.package/GRGemStonePlatform.extension/instance/newTemporaryFileNamed..st +++ b/repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/newTemporaryFileNamed..st @@ -1,4 +1,4 @@ -*grease-gemstone300-core +files newTemporaryFileNamed: aName ^ (GsFile openWriteOnServer: '/tmp/', aName) pathName From 602230d111a3131af35e629990590c0f943108c4 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 4 Feb 2024 10:20:56 +0100 Subject: [PATCH 32/44] added file methods for Squeak 6 --- .../GRSqueakPlatform.class/instance/newTemporaryFile.st | 4 ++++ .../GRSqueakPlatform.class/instance/newTemporaryFileNamed..st | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/newTemporaryFile.st create mode 100644 repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/newTemporaryFileNamed..st diff --git a/repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/newTemporaryFile.st b/repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/newTemporaryFile.st new file mode 100644 index 00000000..01578607 --- /dev/null +++ b/repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/newTemporaryFile.st @@ -0,0 +1,4 @@ +files +newTemporaryFile + + ^ self newTemporaryFileNamed: UUID new greaseString \ No newline at end of file diff --git a/repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/newTemporaryFileNamed..st b/repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/newTemporaryFileNamed..st new file mode 100644 index 00000000..cd8669c0 --- /dev/null +++ b/repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/newTemporaryFileNamed..st @@ -0,0 +1,4 @@ +files +newTemporaryFileNamed: aName + + ^ (FileDirectory default / aName) pathName \ No newline at end of file From 454b8de660f9262349af384f21d55f5fddd2ae89 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 4 Feb 2024 10:22:34 +0100 Subject: [PATCH 33/44] Also add temporary file creation methods to Squeak 5 --- .../GRSqueakPlatform.class/instance/newTemporaryFile.st | 4 ++++ .../GRSqueakPlatform.class/instance/newTemporaryFileNamed..st | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 repository/Grease-Squeak5-Core.package/GRSqueakPlatform.class/instance/newTemporaryFile.st create mode 100644 repository/Grease-Squeak5-Core.package/GRSqueakPlatform.class/instance/newTemporaryFileNamed..st diff --git a/repository/Grease-Squeak5-Core.package/GRSqueakPlatform.class/instance/newTemporaryFile.st b/repository/Grease-Squeak5-Core.package/GRSqueakPlatform.class/instance/newTemporaryFile.st new file mode 100644 index 00000000..01578607 --- /dev/null +++ b/repository/Grease-Squeak5-Core.package/GRSqueakPlatform.class/instance/newTemporaryFile.st @@ -0,0 +1,4 @@ +files +newTemporaryFile + + ^ self newTemporaryFileNamed: UUID new greaseString \ No newline at end of file diff --git a/repository/Grease-Squeak5-Core.package/GRSqueakPlatform.class/instance/newTemporaryFileNamed..st b/repository/Grease-Squeak5-Core.package/GRSqueakPlatform.class/instance/newTemporaryFileNamed..st new file mode 100644 index 00000000..cd8669c0 --- /dev/null +++ b/repository/Grease-Squeak5-Core.package/GRSqueakPlatform.class/instance/newTemporaryFileNamed..st @@ -0,0 +1,4 @@ +files +newTemporaryFileNamed: aName + + ^ (FileDirectory default / aName) pathName \ No newline at end of file From 34bd7c337540d7272fb776f6217b8a20658f13a5 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 4 Feb 2024 10:30:51 +0100 Subject: [PATCH 34/44] added deleteFile: to Squeak --- .../GRSqueakPlatform.class/instance/deleteFile..st | 3 +++ .../GRSqueakPlatform.class/instance/deleteFile..st | 3 +++ 2 files changed, 6 insertions(+) create mode 100644 repository/Grease-Squeak5-Core.package/GRSqueakPlatform.class/instance/deleteFile..st create mode 100644 repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/deleteFile..st diff --git a/repository/Grease-Squeak5-Core.package/GRSqueakPlatform.class/instance/deleteFile..st b/repository/Grease-Squeak5-Core.package/GRSqueakPlatform.class/instance/deleteFile..st new file mode 100644 index 00000000..d03eee50 --- /dev/null +++ b/repository/Grease-Squeak5-Core.package/GRSqueakPlatform.class/instance/deleteFile..st @@ -0,0 +1,3 @@ +files +deleteFile: aPathString + FileDirectory deleteFilePath: aPathString \ No newline at end of file diff --git a/repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/deleteFile..st b/repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/deleteFile..st new file mode 100644 index 00000000..d03eee50 --- /dev/null +++ b/repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/deleteFile..st @@ -0,0 +1,3 @@ +files +deleteFile: aPathString + FileDirectory deleteFilePath: aPathString \ No newline at end of file From f7d355f105cb958e9433b0bfbc59dbf33edbe898 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 4 Feb 2024 10:33:20 +0100 Subject: [PATCH 35/44] fix missing method in Squeak 6 --- .../instance/writeFileStreamOn.do.binary..st | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/writeFileStreamOn.do.binary..st diff --git a/repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/writeFileStreamOn.do.binary..st b/repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/writeFileStreamOn.do.binary..st new file mode 100644 index 00000000..1207150a --- /dev/null +++ b/repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/writeFileStreamOn.do.binary..st @@ -0,0 +1,8 @@ +as yet unclassified +writeFileStreamOn: aString do: aBlock binary: aBoolean + | stream | + stream := aBoolean + ifTrue: [ (MultiByteFileStream fileNamed: aString) ascii; wantsLineEndConversion: true; yourself ] + ifFalse: [ (FileStream fileNamed: aString) binary ]. + [ aBlock value: stream ] + ensure: [ stream close ] \ No newline at end of file From f20c01fb2dff0b23d64199418fc732bcba1ec8c0 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 4 Feb 2024 12:22:14 +0100 Subject: [PATCH 36/44] Test unique name of two generated temporary files --- .../instance/testNewTemporaryFile.st | 19 +++++++++++++------ .../monticello.meta/categories.st | 2 +- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testNewTemporaryFile.st b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testNewTemporaryFile.st index f02a8289..a4c49df3 100644 --- a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testNewTemporaryFile.st +++ b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testNewTemporaryFile.st @@ -1,13 +1,20 @@ tests-files testNewTemporaryFile - | temporaryFile | + | temporaryFile1 temporaryFile2 | [ - temporaryFile := GRPlatform current newTemporaryFile. + temporaryFile1 := GRPlatform current newTemporaryFile. + temporaryFile2 := GRPlatform current newTemporaryFile. GRPlatform current - writeFileStreamOn: temporaryFile + writeFileStreamOn: temporaryFile1 do: [ :str | str nextPutAll: 'test temporary' ] binary: false. - self assert: (GRPlatform current fileExists: temporaryFile) - ] ensure: [ GRPlatform current deleteFile: temporaryFile ]. - self deny: (GRPlatform current fileExists: temporaryFile) \ No newline at end of file + GRPlatform current + writeFileStreamOn: temporaryFile2 + do: [ :str | str nextPutAll: #[116 101 115 116 32 116 101 109 112 111 114 97 114 121] ] + binary: true. + self assert: (GRPlatform current fileExists: temporaryFile1). + self deny: (GRPlatform current localNameOf: temporaryFile1) equals: (GRPlatform current localNameOf: temporaryFile2) + ] ensure: [ GRPlatform current deleteFile: temporaryFile1. GRPlatform current deleteFile: temporaryFile2 ]. + self deny: (GRPlatform current fileExists: temporaryFile1). + self deny: (GRPlatform current fileExists: temporaryFile2) \ No newline at end of file diff --git a/repository/Grease-Tests-Core.package/monticello.meta/categories.st b/repository/Grease-Tests-Core.package/monticello.meta/categories.st index ee8a55f5..7e8202de 100644 --- a/repository/Grease-Tests-Core.package/monticello.meta/categories.st +++ b/repository/Grease-Tests-Core.package/monticello.meta/categories.st @@ -1 +1 @@ -SystemOrganization addCategory: #'Grease-Tests-Core'! +self packageOrganizer ensurePackage: #'Grease-Tests-Core' withTags: #()! From e628eef8cf0b2226cdddf2148a430efba02c3aa6 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 4 Feb 2024 12:24:36 +0100 Subject: [PATCH 37/44] Fix writeFileStreamOn:do:binary: in Squeak --- .../instance/writeFileStreamOn.do.binary..st | 6 +++--- .../instance/writeFileStreamOn.do.binary..st | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/repository/Grease-Squeak5-Core.package/GRSqueakPlatform.class/instance/writeFileStreamOn.do.binary..st b/repository/Grease-Squeak5-Core.package/GRSqueakPlatform.class/instance/writeFileStreamOn.do.binary..st index 1207150a..9207976d 100644 --- a/repository/Grease-Squeak5-Core.package/GRSqueakPlatform.class/instance/writeFileStreamOn.do.binary..st +++ b/repository/Grease-Squeak5-Core.package/GRSqueakPlatform.class/instance/writeFileStreamOn.do.binary..st @@ -1,8 +1,8 @@ -as yet unclassified +files writeFileStreamOn: aString do: aBlock binary: aBoolean | stream | stream := aBoolean - ifTrue: [ (MultiByteFileStream fileNamed: aString) ascii; wantsLineEndConversion: true; yourself ] - ifFalse: [ (FileStream fileNamed: aString) binary ]. + ifTrue: [ (FileStream fileNamed: aString) binary ] + ifFalse: [ (MultiByteFileStream fileNamed: aString) ascii; wantsLineEndConversion: true; yourself ]. [ aBlock value: stream ] ensure: [ stream close ] \ No newline at end of file diff --git a/repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/writeFileStreamOn.do.binary..st b/repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/writeFileStreamOn.do.binary..st index 1207150a..9207976d 100644 --- a/repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/writeFileStreamOn.do.binary..st +++ b/repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/writeFileStreamOn.do.binary..st @@ -1,8 +1,8 @@ -as yet unclassified +files writeFileStreamOn: aString do: aBlock binary: aBoolean | stream | stream := aBoolean - ifTrue: [ (MultiByteFileStream fileNamed: aString) ascii; wantsLineEndConversion: true; yourself ] - ifFalse: [ (FileStream fileNamed: aString) binary ]. + ifTrue: [ (FileStream fileNamed: aString) binary ] + ifFalse: [ (MultiByteFileStream fileNamed: aString) ascii; wantsLineEndConversion: true; yourself ]. [ aBlock value: stream ] ensure: [ stream close ] \ No newline at end of file From 17da9325d3e7104ac0dbf40ff91ab31dafca0e27 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 4 Feb 2024 12:46:43 +0100 Subject: [PATCH 38/44] Refactor test for write:toFile:inFolder: --- .../testReadWriteEmptyFileInFolderBinary.st | 8 ------ .../testReadWriteEmptyFileInFolderText.st | 8 ------ .../testReadWriteToFileInFolderBinary.st | 8 ------ .../testReadWriteToFileInFolderText.st | 8 ------ .../instance/testWriteToFileInFolder.st | 27 +++++++++++++++++++ 5 files changed, 27 insertions(+), 32 deletions(-) delete mode 100644 repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteEmptyFileInFolderBinary.st delete mode 100644 repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteEmptyFileInFolderText.st delete mode 100644 repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteToFileInFolderBinary.st delete mode 100644 repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteToFileInFolderText.st create mode 100644 repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testWriteToFileInFolder.st diff --git a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteEmptyFileInFolderBinary.st b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteEmptyFileInFolderBinary.st deleted file mode 100644 index 39fbdb1c..00000000 --- a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteEmptyFileInFolderBinary.st +++ /dev/null @@ -1,8 +0,0 @@ -tests-filestreams -testReadWriteEmptyFileInFolderBinary - | bytes | - bytes := ByteArray new. - self - writeToFile: bytes - withFileNameDo:[ :fileName | - self assert: (bytes = (GRPlatform current contentsOfFile: fileName binary: true)) ] \ No newline at end of file diff --git a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteEmptyFileInFolderText.st b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteEmptyFileInFolderText.st deleted file mode 100644 index 757a5cdb..00000000 --- a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteEmptyFileInFolderText.st +++ /dev/null @@ -1,8 +0,0 @@ -tests-filestreams -testReadWriteEmptyFileInFolderText - | text | - text := String new. - self - writeToFile: text - withFileNameDo:[ :fileName | - self assert: (text = (GRPlatform current contentsOfFile: fileName binary: false)) ] \ No newline at end of file diff --git a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteToFileInFolderBinary.st b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteToFileInFolderBinary.st deleted file mode 100644 index ad114bf2..00000000 --- a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteToFileInFolderBinary.st +++ /dev/null @@ -1,8 +0,0 @@ -tests-filestreams -testReadWriteToFileInFolderBinary - | bytes | - bytes := #(80 104 39 110 103 108 117 105 32 109 103 108 119 39 110 97 102 104 32 67 116 104 117 108 104 117 32 82 39 108 121 101 104 32 119 103 97 104 39 110 97 103 108 32 102 104 116 97 103 110) asByteArray. - self - writeToFile: bytes - withFileNameDo:[ :fileName | - self assert: (bytes = (GRPlatform current contentsOfFile: fileName binary: true)) ] \ No newline at end of file diff --git a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteToFileInFolderText.st b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteToFileInFolderText.st deleted file mode 100644 index 2d9fc845..00000000 --- a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testReadWriteToFileInFolderText.st +++ /dev/null @@ -1,8 +0,0 @@ -tests-filestreams -testReadWriteToFileInFolderText - | text | - text := 'Ph''nglui mglw''nafh Cthulhu R''lyeh wgah''nagl fhtagn'. - self - writeToFile: text - withFileNameDo:[ :fileName | - self assert: (text = (GRPlatform current contentsOfFile: fileName binary: false)) ] \ No newline at end of file diff --git a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testWriteToFileInFolder.st b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testWriteToFileInFolder.st new file mode 100644 index 00000000..04b46b21 --- /dev/null +++ b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testWriteToFileInFolder.st @@ -0,0 +1,27 @@ +tests-files +testWriteToFileInFolder + + | bytes text | + bytes := ByteArray new. + self + writeToFile: bytes + withFileNameDo:[ :fileName | + self assert: (GRPlatform current contentsOfFile: fileName binary: true) equals: bytes ]. + + bytes := #[80 104 39 110 103 108 117 105 32 109 103 108 119 39 110 97 102 104 32 67 116 104 117 108 104 117 32 82 39 108 121 101 104 32 119 103 97 104 39 110 97 103 108 32 102 104 116 97 103 110]. + self + writeToFile: bytes + withFileNameDo:[ :fileName | + self assert:(GRPlatform current contentsOfFile: fileName binary: true) equals: bytes ]. + + text := String new. + self + writeToFile: text + withFileNameDo:[ :fileName | + self assert: (GRPlatform current contentsOfFile: fileName binary: false) equals: text ]. + + text := 'Ph''nglui mglw''nafh Cthulhu R''lyeh wgah''nagl fhtagn'. + self + writeToFile: text + withFileNameDo:[ :fileName | + self assert: (GRPlatform current contentsOfFile: fileName binary: false) equals: text ] \ No newline at end of file From 2816e8e9e7771bb5e1229cf00f96269f4afab438 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 4 Feb 2024 13:06:30 +0100 Subject: [PATCH 39/44] throw error when creating a duplicate temporary file --- .../instance/newTemporaryFileNamed..st | 5 ++++- .../monticello.meta/categories.st | 2 +- .../instance/testNewTemporaryFileNamed.st | 11 +++++++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st b/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st index 5e778cdd..29d781b7 100644 --- a/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st +++ b/repository/Grease-Pharo100-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st @@ -1,4 +1,7 @@ files newTemporaryFileNamed: aName - ^ (FileLocator temp / aName) pathString \ No newline at end of file + | newFile | + newFile := FileLocator temp / aName. + newFile exists ifTrue: [ GRError new signal: 'A (temporary) file with name ', aName, ' already exists.' ]. + ^ newFile pathString \ No newline at end of file diff --git a/repository/Grease-Pharo100-Core.package/monticello.meta/categories.st b/repository/Grease-Pharo100-Core.package/monticello.meta/categories.st index ecc9aa78..47e57aa2 100644 --- a/repository/Grease-Pharo100-Core.package/monticello.meta/categories.st +++ b/repository/Grease-Pharo100-Core.package/monticello.meta/categories.st @@ -1 +1 @@ -SystemOrganization addCategory: #'Grease-Pharo100-Core'! +self packageOrganizer ensurePackage: #'Grease-Pharo100-Core' withTags: #()! diff --git a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testNewTemporaryFileNamed.st b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testNewTemporaryFileNamed.st index 68d6ff3c..354c5403 100644 --- a/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testNewTemporaryFileNamed.st +++ b/repository/Grease-Tests-Core.package/GRPlatformTest.class/instance/testNewTemporaryFileNamed.st @@ -1,13 +1,16 @@ tests-files testNewTemporaryFileNamed - | temporaryFile | + | temporaryFile fileName | + fileName := 'GRPlatformTestTemporaryFile'. [ - temporaryFile := GRPlatform current newTemporaryFileNamed: 'test_temporary'. + temporaryFile := GRPlatform current newTemporaryFileNamed: fileName. GRPlatform current writeFileStreamOn: temporaryFile do: [ :str | str nextPutAll: 'test temporary' ] binary: false. - self assert: (GRPlatform current fileExists: temporaryFile) + self assert: (GRPlatform current fileExists: temporaryFile). + self should: [ GRPlatform current newTemporaryFileNamed: fileName ] raise: GRError. ] ensure: [ GRPlatform current deleteFile: temporaryFile ]. - self deny: (GRPlatform current fileExists: temporaryFile) \ No newline at end of file + self deny: (GRPlatform current fileExists: temporaryFile). + \ No newline at end of file From e1a14c913761976247fb0916de591a7fcf45501c Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 4 Feb 2024 13:32:42 +0100 Subject: [PATCH 40/44] error when creating a duplicate temporary file name on GemStone, older Pharo and Squeak --- .../instance/newTemporaryFileNamed..st | 5 ++++- .../GRPharoPlatform.class/instance/newTemporaryFileNamed..st | 5 ++++- .../GRPharoPlatform.class/instance/newTemporaryFileNamed..st | 5 ++++- .../instance/newTemporaryFileNamed..st | 5 ++++- .../instance/newTemporaryFileNamed..st | 5 ++++- 5 files changed, 20 insertions(+), 5 deletions(-) diff --git a/repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/newTemporaryFileNamed..st b/repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/newTemporaryFileNamed..st index 46483c70..198e0779 100644 --- a/repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/newTemporaryFileNamed..st +++ b/repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/newTemporaryFileNamed..st @@ -1,4 +1,7 @@ files newTemporaryFileNamed: aName - ^ (GsFile openWriteOnServer: '/tmp/', aName) pathName + | fileName | + fileName := '/tmp/', aName. + (self fileExists: fileName) ifTrue: [ GRError new signal: 'A (temporary) file with name ', aName, ' already exists.' ]. + ^ (GsFile openWriteOnServer: fileName) pathName diff --git a/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st b/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st index 5e778cdd..29d781b7 100644 --- a/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st +++ b/repository/Grease-Pharo70-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st @@ -1,4 +1,7 @@ files newTemporaryFileNamed: aName - ^ (FileLocator temp / aName) pathString \ No newline at end of file + | newFile | + newFile := FileLocator temp / aName. + newFile exists ifTrue: [ GRError new signal: 'A (temporary) file with name ', aName, ' already exists.' ]. + ^ newFile pathString \ No newline at end of file diff --git a/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st b/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st index 5e778cdd..29d781b7 100644 --- a/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st +++ b/repository/Grease-Pharo90-Core.package/GRPharoPlatform.class/instance/newTemporaryFileNamed..st @@ -1,4 +1,7 @@ files newTemporaryFileNamed: aName - ^ (FileLocator temp / aName) pathString \ No newline at end of file + | newFile | + newFile := FileLocator temp / aName. + newFile exists ifTrue: [ GRError new signal: 'A (temporary) file with name ', aName, ' already exists.' ]. + ^ newFile pathString \ No newline at end of file diff --git a/repository/Grease-Squeak5-Core.package/GRSqueakPlatform.class/instance/newTemporaryFileNamed..st b/repository/Grease-Squeak5-Core.package/GRSqueakPlatform.class/instance/newTemporaryFileNamed..st index cd8669c0..9e117ca4 100644 --- a/repository/Grease-Squeak5-Core.package/GRSqueakPlatform.class/instance/newTemporaryFileNamed..st +++ b/repository/Grease-Squeak5-Core.package/GRSqueakPlatform.class/instance/newTemporaryFileNamed..st @@ -1,4 +1,7 @@ files newTemporaryFileNamed: aName - ^ (FileDirectory default / aName) pathName \ No newline at end of file + | file | + file := FileDirectory default / aName. + file exists ifTrue: [ GRError new signal: 'A (temporary) file with name ', aName, ' already exists.' ]. + ^ file pathName \ No newline at end of file diff --git a/repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/newTemporaryFileNamed..st b/repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/newTemporaryFileNamed..st index cd8669c0..9e117ca4 100644 --- a/repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/newTemporaryFileNamed..st +++ b/repository/Grease-Squeak6-Core.package/GRSqueakPlatform.class/instance/newTemporaryFileNamed..st @@ -1,4 +1,7 @@ files newTemporaryFileNamed: aName - ^ (FileDirectory default / aName) pathName \ No newline at end of file + | file | + file := FileDirectory default / aName. + file exists ifTrue: [ GRError new signal: 'A (temporary) file with name ', aName, ' already exists.' ]. + ^ file pathName \ No newline at end of file From 14e6afb83aff9232d62b7bbcbb79bde4a97b36b5 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 4 Feb 2024 13:38:32 +0100 Subject: [PATCH 41/44] use GRPlatform current pathSeparator in the filename generation for temporary files on gemstone --- .../GRGemStonePlatform.class/instance/newTemporaryFileNamed..st | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/newTemporaryFileNamed..st b/repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/newTemporaryFileNamed..st index 198e0779..6f8c5c0a 100644 --- a/repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/newTemporaryFileNamed..st +++ b/repository/Grease-GemStone-Core.package/GRGemStonePlatform.class/instance/newTemporaryFileNamed..st @@ -2,6 +2,6 @@ files newTemporaryFileNamed: aName | fileName | - fileName := '/tmp/', aName. + fileName := GRPlatform current pathSeparator,'tmp', GRPlatform current pathSeparator, aName. (self fileExists: fileName) ifTrue: [ GRError new signal: 'A (temporary) file with name ', aName, ' already exists.' ]. ^ (GsFile openWriteOnServer: fileName) pathName From 5ae43f87a9d9062a2c92c4b164c5970fb69814be Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 4 Feb 2024 13:40:55 +0100 Subject: [PATCH 42/44] revert changes for categories in Squeak packages --- .../Grease-Squeak5-Core.package/monticello.meta/categories.st | 2 +- .../Grease-Squeak6-Core.package/monticello.meta/categories.st | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/repository/Grease-Squeak5-Core.package/monticello.meta/categories.st b/repository/Grease-Squeak5-Core.package/monticello.meta/categories.st index 9dee02a6..00eecc3b 100644 --- a/repository/Grease-Squeak5-Core.package/monticello.meta/categories.st +++ b/repository/Grease-Squeak5-Core.package/monticello.meta/categories.st @@ -1 +1 @@ -self packageOrganizer ensurePackage: #'Grease-Squeak5-Core' withTags: #()! +SystemOrganization addCategory: #'Grease-Squeak5-Core'! diff --git a/repository/Grease-Squeak6-Core.package/monticello.meta/categories.st b/repository/Grease-Squeak6-Core.package/monticello.meta/categories.st index c47b0497..89aae6c1 100644 --- a/repository/Grease-Squeak6-Core.package/monticello.meta/categories.st +++ b/repository/Grease-Squeak6-Core.package/monticello.meta/categories.st @@ -1 +1 @@ -self packageOrganizer ensurePackage: #'Grease-Squeak6-Core' withTags: #()! +SystemOrganization addCategory: #'Grease-Squeak6-Core'! From 9b35324ee42b9cfd81e0b8b407a31a06d30689c1 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 4 Feb 2024 15:27:33 +0100 Subject: [PATCH 43/44] version 1.16 --- .../Grease-Core.package/GRPlatform.class/instance/version.st | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/repository/Grease-Core.package/GRPlatform.class/instance/version.st b/repository/Grease-Core.package/GRPlatform.class/instance/version.st index c48dd9b5..6deca1da 100644 --- a/repository/Grease-Core.package/GRPlatform.class/instance/version.st +++ b/repository/Grease-Core.package/GRPlatform.class/instance/version.st @@ -2,5 +2,5 @@ version info version "Answer the Grease version" - ^ (GRVersion major: 1 minor: 15 revision: 0) + ^ (GRVersion major: 1 minor: 16 revision: 0) yourself \ No newline at end of file From ee685e4d00111741e008329379c87d7690ff8a41 Mon Sep 17 00:00:00 2001 From: Johan Brichau Date: Sun, 4 Feb 2024 15:32:27 +0100 Subject: [PATCH 44/44] revert using special branch of SmalltalkCI --- .github/workflows/ci.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 831cdc8f..9d5a0f3e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,8 +21,6 @@ jobs: - uses: actions/checkout@v3 - uses: hpi-swa/setup-smalltalkCI@v1 with: - smalltalkCI-source: 'jbrichau/smalltalkCI' - smalltalkCI-branch: 'fix-issue-623' smalltalk-image: ${{ matrix.smalltalk }} - name: Run tests run: smalltalkci -s ${{ matrix.smalltalk }}