X Tutup
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
eef7478
GREmptyStatementRule is superseded in Pharo by ReMultiplePeriodsTermi…
Sep 11, 2023
8bd356e
Literal byte arrays are accepted in Pharo, GemStone and VAST
Sep 11, 2023
b6ee952
Merge branch 'master' into slime-renovation
Dec 31, 2023
1a385fc
First couple of Slime rules and tests converted to Reraku critiques
Jan 7, 2024
98f2c5c
Correct baseline typo
Jan 7, 2024
171232f
Remove obsolete tests from older Slime test package as well
Jan 7, 2024
d6705ff
Fix another baseline typo
Jan 7, 2024
81bec5c
ported rules: invalid object initialization and non-portable messages
Jan 7, 2024
2800c45
Ported Slime rule for referencing/using a non-portable class
Jan 7, 2024
1c02177
Block and Parens formatting rules moved to the PharoWithStyle project…
Jan 7, 2024
18a37b0
Moved the return and temps formatting rules to the PharoWithStyle pro…
Jan 7, 2024
e34bcc2
Two more Slime rules ported
Jan 7, 2024
002bf2e
Ported ANSI Booleans transformation Slime rule
Jan 7, 2024
1ec525d
fix
Jan 7, 2024
59552a5
Ported all transformation Slime rules
Jan 7, 2024
1031a70
Change class names back to previous class names (i.e. 'GRReXXX' to 'G…
Jan 7, 2024
bfea7ea
Fix ANSI characters Slime rule
Jan 13, 2024
4990652
Fix ANSIStrings Slime rule
Jan 13, 2024
8f6c9b8
test with smalltalkCI fork for Pharo12 fix
Jan 14, 2024
52ba234
try again to run against smalltalk-CI branch
Jan 14, 2024
4e5cec2
try new fix branch for SmalltalkCI
Jan 14, 2024
59b1042
Merge pull request #167 from SeasideSt/slime-renovation
Jan 14, 2024
64ac15d
Fixes Slime test for empty statements (will work correctly after fix …
Jan 14, 2024
c4074b0
Add Pharo110 to GRPackage resolution
Jan 14, 2024
55f34f4
fix resolveWith: older version package names are used in later Pharo …
Jan 14, 2024
9aac9aa
gemstone 3.6.7 is no longer available for download, switching back to…
Jan 14, 2024
5eb55c9
Merge branch 'master' into fix-testEmptyStatements
Jan 15, 2024
b073206
Mark testEmptyStatements as fixed in Pharo 12 but breaking in earlier…
Jan 27, 2024
d8f5204
Merge 5eb55c9ca0481edc98c9685a62a2ba1b496d6b60
Jan 27, 2024
c53e80a
Merge pull request #168 from SeasideSt/fix-testEmptyStatements
Jan 27, 2024
933bc73
Fix GRAnsiCharacterRule: should only match character literals
Jan 28, 2024
788fa15
Added support for newTemporaryFileReference in GemStone versions high…
Feb 3, 2024
4d9ea9f
Deprecate existing `newTemporaryFileReference` in favour of `newTempo…
Feb 4, 2024
0176ed2
added temporary file creation methods to older Pharo versions
Feb 4, 2024
c83bb49
added new temporary file creation methods to GemStone
Feb 4, 2024
acf5760
moved method to GemStone-Core package and implemented missing deleteF…
Feb 4, 2024
602230d
added file methods for Squeak 6
Feb 4, 2024
454b8de
Also add temporary file creation methods to Squeak 5
Feb 4, 2024
34bd7c3
added deleteFile: to Squeak
Feb 4, 2024
f7d355f
fix missing method in Squeak 6
Feb 4, 2024
f20c01f
Test unique name of two generated temporary files
Feb 4, 2024
e628eef
Fix writeFileStreamOn:do:binary: in Squeak
Feb 4, 2024
17da932
Refactor test for write:toFile:inFolder:
Feb 4, 2024
22b0950
Merge e628eef8cf0b2226cdddf2148a430efba02c3aa6
Feb 4, 2024
2816e8e
throw error when creating a duplicate temporary file
Feb 4, 2024
e1a14c9
error when creating a duplicate temporary file name on GemStone, olde…
Feb 4, 2024
14e6afb
use GRPlatform current pathSeparator in the filename generation for t…
Feb 4, 2024
5ae43f8
revert changes for categories in Squeak packages
Feb 4, 2024
1a66633
Merge pull request #169 from SeasideSt/temporaryfiles-gemstone
Feb 4, 2024
9b35324
version 1.16
Feb 4, 2024
ee685e4
revert using special branch of SmalltalkCI
Feb 4, 2024
58f6c57
Merge pull request #30 from SeasideSt/master
Feb 4, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,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
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
baselines
baselineCommon: spec

spec
for: #common
do: [ spec blessing: #baseline.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
baselines
baselineGemStone: spec

spec
for: #'gemstone'
do: [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,9 @@ 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');
group: 'Slime Tests' with: #('Grease-Tests-Slime') ]
group: 'Slime' with: #('Grease-Pharo110-Slime');
group: 'Slime Tests' with: #('Grease-Tests-Pharo-Slime') ]
Original file line number Diff line number Diff line change
@@ -1 +1 @@
self packageOrganizer ensurePackage: #BaselineOfGrease withTags: #('Manifest')!
SystemOrganization addCategory: #BaselineOfGrease!
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,14 @@ resolveWith: aDictionary
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 ] ] ] ] ] ] ] ] ] ] ] ] ]
"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 ] ] ] ] ] ] ] ] ] ] ] ] ] ]
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ version info
version
"Answer the Grease version"

^ (GRVersion major: 1 minor: 12 revision: 2)
^ (GRVersion major: 1 minor: 16 revision: 0)
yourself
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
files
deleteFile: aPathString

GsFile removeServerFile: aPathString
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
files
newTemporaryFile

^ self newTemporaryFileNamed: UUID new greaseString
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
files
newTemporaryFileNamed: aName

| fileName |
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
files
newTemporaryFile

^ self newTemporaryFileNamed: UUID new greaseString
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
files
newTemporaryFileNamed: aName

| newFile |
newFile := FileLocator temp / aName.
newFile exists ifTrue: [ GRError new signal: 'A (temporary) file with name ', aName, ' already exists.' ].
^ newFile pathString
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
@@ -1 +1 @@
SystemOrganization addCategory: #'Grease-Pharo100-Core'!
self packageOrganizer ensurePackage: #'Grease-Pharo100-Core' withTags: #()!
5 changes: 5 additions & 0 deletions repository/Grease-Pharo110-Slime.package/.filetree
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"separateMethodMetaAndSource" : false,
"noMethodMetaData" : true,
"useCypressPropertiesFile" : true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
group

^ 'ANSI Compatibility'
Original file line number Diff line number Diff line change
@@ -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 ] ] ] ] ]'
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
name

^ 'Booleans'
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
rationale

^ '#and:and: and #or:or: are not ANSI compatible.'
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"commentStamp" : "",
"super" : "GRSlimeTransformationRule",
"category" : "Grease-Pharo110-Slime",
"classinstvars" : [ ],
"pools" : [ ],
"classvars" : [ ],
"instvars" : [ ],
"name" : "GRAnsiBooleansRule",
"type" : "normal"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
group

^ 'ANSI Compatibility'
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
initialization
initialize

super initialize.
self
replace: 'Character value: ``@expr'
with: 'Character codePoint: ``@expr'.
self
replace: '`#source `{:node | node value isCharacter }` 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 ] ]
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
name

^ 'Characters'
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
rationale

^ 'Character value: 64 and $a to: $b is not ANSI compatible.'
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"commentStamp" : "",
"super" : "GRSlimeTransformationRule",
"category" : "Grease-Pharo110-Slime",
"classinstvars" : [ ],
"pools" : [ ],
"classvars" : [ ],
"instvars" : [ ],
"name" : "GRAnsiCharactersRule",
"type" : "normal"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
group

^ 'ANSI Compatibility'
Original file line number Diff line number Diff line change
@@ -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'
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
name

^ 'Collections'
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
rationale

^ 'Some collection methods are not ANSI compatible: #pairsDo:, #collect:thenDo:, #reject:thenDo:, #detectSum:, #valuesDo:, #keysSortedSafely, #new:withAll:, etc.'
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"commentStamp" : "",
"super" : "GRSlimeTransformationRule",
"category" : "Grease-Pharo110-Slime",
"classinstvars" : [ ],
"pools" : [ ],
"classvars" : [ ],
"instvars" : [ ],
"name" : "GRAnsiCollectionsRule",
"type" : "normal"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
group

^ 'ANSI Compatibility'
Original file line number Diff line number Diff line change
@@ -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 ]'
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
name

^ 'Conditionals'
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
rationale

^ 'Conditionals like #ifNotNilDo: are not ANSI compatible.'
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"commentStamp" : "",
"super" : "GRSlimeTransformationRule",
"category" : "Grease-Pharo110-Slime",
"classinstvars" : [ ],
"pools" : [ ],
"classvars" : [ ],
"instvars" : [ ],
"name" : "GRAnsiConditionalsRule",
"type" : "normal"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
accessing
group

^ 'ANSI Compatibility'
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
initialization
initialize

super initialize.
self
replace: '``@object asString' with: '``@object greaseString';
replace: '``@object asInteger' with: '``@object greaseInteger'
Loading
X Tutup