From 8b58f72b3388d75c5aead12f721a046a453b7f9a Mon Sep 17 00:00:00 2001 From: Gabriel-Darbord Date: Thu, 28 May 2026 10:56:48 +0200 Subject: [PATCH 1/2] Add context temporary names compatibility --- .../PharoCompatibility.class.st | 66 +++++++++++-------- .../PharoCompatibilityTest.class.st | 11 ++++ 2 files changed, 48 insertions(+), 29 deletions(-) diff --git a/src/PharoCompatibility-Core/PharoCompatibility.class.st b/src/PharoCompatibility-Core/PharoCompatibility.class.st index c8cc204..564f06c 100644 --- a/src/PharoCompatibility-Core/PharoCompatibility.class.st +++ b/src/PharoCompatibility-Core/PharoCompatibility.class.st @@ -9,12 +9,6 @@ Class { #tag : 'Core' } -{ #category : 'accessing' } -PharoCompatibility class >> currentMajorVersion [ - - ^ SystemVersion current major -] - { #category : 'errors' } PharoCompatibility class >> compilationAstFromException: anError [ @@ -28,6 +22,12 @@ PharoCompatibility class >> compilationAstFromException: anError [ do: [ :ignored | nil ] ] +{ #category : 'accessing' } +PharoCompatibility class >> currentMajorVersion [ + + ^ SystemVersion current major +] + { #category : 'private' } PharoCompatibility class >> firstExistingGlobalFrom: globalNames [ @@ -72,29 +72,6 @@ PharoCompatibility class >> installMissingGlobalNamed: missingGlobalName from: r ^ replacement ] -{ #category : 'errors' } -PharoCompatibility class >> noticeFromException: anError ifKindOfAnyNamed: classNames [ - - | candidate | - candidate := anError. - (anError respondsTo: #notice) ifTrue: [ - anError notice ifNotNil: [ :notice | candidate := notice ] ]. - ^ (self object: candidate isKindOfAnyClassNamed: classNames) - ifTrue: [ candidate ] - ifFalse: [ nil ] -] - -{ #category : 'private' } -PharoCompatibility class >> object: anObject isKindOfAnyClassNamed: classNames [ - - classNames do: [ :className | - | class | - class := Smalltalk at: className ifAbsent: [ nil ]. - (class notNil and: [ anObject isKindOf: class ]) ifTrue: [ - ^ true ] ]. - ^ false -] - { #category : 'installing' } PharoCompatibility class >> installPharo12Surface [ @@ -145,6 +122,29 @@ PharoCompatibility class >> loadedSurfaces [ ^ surfaces asArray ] +{ #category : 'errors' } +PharoCompatibility class >> noticeFromException: anError ifKindOfAnyNamed: classNames [ + + | candidate | + candidate := anError. + (anError respondsTo: #notice) ifTrue: [ + anError notice ifNotNil: [ :notice | candidate := notice ] ]. + ^ (self object: candidate isKindOfAnyClassNamed: classNames) + ifTrue: [ candidate ] + ifFalse: [ nil ] +] + +{ #category : 'private' } +PharoCompatibility class >> object: anObject isKindOfAnyClassNamed: classNames [ + + classNames do: [ :className | + | class | + class := Smalltalk at: className ifAbsent: [ nil ]. + (class notNil and: [ anObject isKindOf: class ]) ifTrue: [ + ^ true ] ]. + ^ false +] + { #category : 'errors' } PharoCompatibility class >> resumeDeprecationsDuring: aBlock [ @@ -187,6 +187,14 @@ PharoCompatibility class >> syntaxNoticeFromException: anError [ { self syntaxErrorNoticeClassName asSymbol } ] +{ #category : 'compatibility' } +PharoCompatibility class >> temporaryNamesForContext: aContext [ + + ^ aContext perform: (self currentMajorVersion >= 14 + ifTrue: [ #temporaryVariableNames ] + ifFalse: [ #tempNames ]) +] + { #category : 'errors' } PharoCompatibility class >> undeclaredVariableNodeFromException: anError [ diff --git a/src/PharoCompatibility-Tests/PharoCompatibilityTest.class.st b/src/PharoCompatibility-Tests/PharoCompatibilityTest.class.st index 934b783..3ad7fc9 100644 --- a/src/PharoCompatibility-Tests/PharoCompatibilityTest.class.st +++ b/src/PharoCompatibility-Tests/PharoCompatibilityTest.class.st @@ -23,3 +23,14 @@ PharoCompatibilityTest >> testSyntaxErrorNoticeClassNameIsConcrete [ self assert: PharoCompatibility syntaxErrorNoticeClassName isString. self deny: PharoCompatibility syntaxErrorNoticeClassName isEmpty ] + +{ #category : 'tests' } +PharoCompatibilityTest >> testTemporaryNamesForContextReturnsContextTemporaryNames [ + + | names temporaryValue | + temporaryValue := 42. + names := PharoCompatibility temporaryNamesForContext: thisContext. + self assert: + ((names collect: [ :each | each asString ]) includes: + 'temporaryValue') +] From 953477162825972470e9ed2149425ce9a5e4840b Mon Sep 17 00:00:00 2001 From: Gabriel-Darbord Date: Thu, 28 May 2026 14:54:58 +0200 Subject: [PATCH 2/2] Move context temp name compatibility to Pharo 13 surface --- .../PharoCompatibility.class.st | 8 -------- .../PharoCompatibilityP13SurfacePharo14Test.class.st | 9 +++++++++ .../Context.extension.st | 7 +++++++ .../PharoCompatibilityTest.class.st | 11 ----------- 4 files changed, 16 insertions(+), 19 deletions(-) create mode 100644 src/PharoCompatibility-Pharo13Surface-Pharo14/Context.extension.st diff --git a/src/PharoCompatibility-Core/PharoCompatibility.class.st b/src/PharoCompatibility-Core/PharoCompatibility.class.st index 564f06c..7b099b9 100644 --- a/src/PharoCompatibility-Core/PharoCompatibility.class.st +++ b/src/PharoCompatibility-Core/PharoCompatibility.class.st @@ -187,14 +187,6 @@ PharoCompatibility class >> syntaxNoticeFromException: anError [ { self syntaxErrorNoticeClassName asSymbol } ] -{ #category : 'compatibility' } -PharoCompatibility class >> temporaryNamesForContext: aContext [ - - ^ aContext perform: (self currentMajorVersion >= 14 - ifTrue: [ #temporaryVariableNames ] - ifFalse: [ #tempNames ]) -] - { #category : 'errors' } PharoCompatibility class >> undeclaredVariableNodeFromException: anError [ diff --git a/src/PharoCompatibility-Pharo13Surface-Pharo14-Tests/PharoCompatibilityP13SurfacePharo14Test.class.st b/src/PharoCompatibility-Pharo13Surface-Pharo14-Tests/PharoCompatibilityP13SurfacePharo14Test.class.st index 2f081f3..3503c84 100644 --- a/src/PharoCompatibility-Pharo13Surface-Pharo14-Tests/PharoCompatibilityP13SurfacePharo14Test.class.st +++ b/src/PharoCompatibility-Pharo13Surface-Pharo14-Tests/PharoCompatibilityP13SurfacePharo14Test.class.st @@ -87,6 +87,15 @@ PharoCompatibilityP13SurfacePharo14Test >> testMoveClassRefactoringUsesTheClassB self removePackageNamed: packageName ] ] +{ #category : 'tests' } +PharoCompatibilityP13SurfacePharo14Test >> testPharo13ContextTempNamesSelector [ + + | names temporaryValue | + temporaryValue := 42. + names := thisContext tempNames collect: [ :each | each asString ]. + self assert: (names includes: 'temporaryValue') +] + { #category : 'tests' } PharoCompatibilityP13SurfacePharo14Test >> testUndeclaredVariableNodeFromCompilationError [ diff --git a/src/PharoCompatibility-Pharo13Surface-Pharo14/Context.extension.st b/src/PharoCompatibility-Pharo13Surface-Pharo14/Context.extension.st new file mode 100644 index 0000000..ee12f80 --- /dev/null +++ b/src/PharoCompatibility-Pharo13Surface-Pharo14/Context.extension.st @@ -0,0 +1,7 @@ +Extension { #name : 'Context' } + +{ #category : '*PharoCompatibility-Pharo13Surface-Pharo14' } +Context >> tempNames [ + + ^ self temporaryVariableNames +] diff --git a/src/PharoCompatibility-Tests/PharoCompatibilityTest.class.st b/src/PharoCompatibility-Tests/PharoCompatibilityTest.class.st index 3ad7fc9..934b783 100644 --- a/src/PharoCompatibility-Tests/PharoCompatibilityTest.class.st +++ b/src/PharoCompatibility-Tests/PharoCompatibilityTest.class.st @@ -23,14 +23,3 @@ PharoCompatibilityTest >> testSyntaxErrorNoticeClassNameIsConcrete [ self assert: PharoCompatibility syntaxErrorNoticeClassName isString. self deny: PharoCompatibility syntaxErrorNoticeClassName isEmpty ] - -{ #category : 'tests' } -PharoCompatibilityTest >> testTemporaryNamesForContextReturnsContextTemporaryNames [ - - | names temporaryValue | - temporaryValue := 42. - names := PharoCompatibility temporaryNamesForContext: thisContext. - self assert: - ((names collect: [ :each | each asString ]) includes: - 'temporaryValue') -]