diff --git a/src/BaselineOfIDE/BaselineOfIDE.class.st b/src/BaselineOfIDE/BaselineOfIDE.class.st index 7aa84683eb2..0400d4910fb 100644 --- a/src/BaselineOfIDE/BaselineOfIDE.class.st +++ b/src/BaselineOfIDE/BaselineOfIDE.class.st @@ -182,6 +182,11 @@ BaselineOfIDE >> baseline: spec [ spec loads: 'traits-tests'. spec repository: repository ]. + + spec baseline: 'Slot' with: [ + spec loads: 'slot-tests'. + spec repository: repository + ]. spec package: 'ReleaseTests'. spec package: 'Refactoring-Critics'. @@ -391,7 +396,6 @@ BaselineOfIDE >> baseline: spec [ spec package: 'SUnit-Tests'. spec package: 'SUnit-Support-UITesting-Tests'. spec package: 'Shout-Tests'. - spec package: 'Slot-Tests'. spec package: 'SmartSuggestions-Tests'. spec package: 'Spec-Help'. spec package: 'Spec-Tests'. @@ -509,8 +513,7 @@ spec group: 'General-Tests-Group' with: #( 'ScriptingExtensions-Tests' 'STON-Tests' 'SUnit-Tests' - 'SUnit-Support-UITesting-Tests' - 'Slot-Tests' + 'SUnit-Support-UITesting-Tests' 'Spec-Tests' 'System-Caching-Tests' 'System-Hashing-Tests' @@ -890,6 +893,7 @@ spec group: #default with: #( 'Shift' "Importing tests of Traits" 'Traits' + 'Slot' ). ] diff --git a/src/BaselineOfSlot/BaselineOfSlot.class.st b/src/BaselineOfSlot/BaselineOfSlot.class.st new file mode 100644 index 00000000000..e8c5f77148f --- /dev/null +++ b/src/BaselineOfSlot/BaselineOfSlot.class.st @@ -0,0 +1,32 @@ +Class { + #name : #BaselineOfSlot, + #superclass : #BaselineOf, + #category : #BaselineOfSlot +} + +{ #category : #baselines } +BaselineOfSlot class >> corePackages [ + | groups | + + groups := self packagesOfGroupNamed: 'core-traits'. + ^ groups flatCollect: [ :e | self packagesOfGroupNamed: e ]. +] + +{ #category : #baselines } +BaselineOfSlot >> baseline: spec [ + + + spec for: #common do: [ + + spec + package: 'Slot-Core'; + package: 'Slot-Examples' with: [ spec requires: #('Slot-Core') ]; + package: 'Slot-Tests' with: [ spec requires: #('Slot-Core' 'Slot-Examples') ]. + + spec group: 'core' with: #('Slot-Core'). + + spec group: 'default' with: #('core' 'slot-tests'). + spec group: 'slot-tests' with: #('Slot-Tests'). + ]. + +] diff --git a/src/BaselineOfSlot/package.st b/src/BaselineOfSlot/package.st new file mode 100644 index 00000000000..069205cbd03 --- /dev/null +++ b/src/BaselineOfSlot/package.st @@ -0,0 +1 @@ +Package { #name : #BaselineOfSlot } diff --git a/src/Kernel-Tests/BehaviorTest.class.st b/src/Kernel-Tests/BehaviorTest.class.st index 2e51aac9b18..927d6c87c10 100644 --- a/src/Kernel-Tests/BehaviorTest.class.st +++ b/src/Kernel-Tests/BehaviorTest.class.st @@ -238,26 +238,6 @@ BehaviorTest >> testWhichSelectorsAccess [ self deny: ((Point whichSelectorsAccess: 'y') includes: #x). ] -{ #category : #tests } -BehaviorTest >> testWhichSelectorsAccessFindSlots [ - | cls | - cls := Object newAnonymousSubclass. - cls := cls addSlot: #regularIvar. - cls := cls addSlot: #slotIvar => PropertySlot. - cls - compile: - 'initialize - super initialize. - - regularIvar := 4. - slotIvar := 2. - '. - self - assert: (cls whichSelectorsAccess: #regularIvar) size equals: 1; - assert: (cls whichSelectorsAccess: #slotIvar) size equals: 1; - assert: (cls whichSelectorsAccess: #notAnIvar) equals: #() -] - { #category : #tests } BehaviorTest >> testallSuperclassesIncluding [ diff --git a/src/Slot-Core/AccessorInstanceVariableSlot.class.st b/src/Slot-Examples/AccessorInstanceVariableSlot.class.st similarity index 96% rename from src/Slot-Core/AccessorInstanceVariableSlot.class.st rename to src/Slot-Examples/AccessorInstanceVariableSlot.class.st index 69010f9b591..830a075677f 100644 --- a/src/Slot-Core/AccessorInstanceVariableSlot.class.st +++ b/src/Slot-Examples/AccessorInstanceVariableSlot.class.st @@ -8,7 +8,7 @@ This example shows how Slots can change the class that they are part of. Class { #name : #AccessorInstanceVariableSlot, #superclass : #InstanceVariableSlot, - #category : #'Slot-Core-Examples' + #category : #'Slot-Examples-base' } { #category : #'class building' } diff --git a/src/Slot-Core/BaseSlot.class.st b/src/Slot-Examples/BaseSlot.class.st similarity index 97% rename from src/Slot-Core/BaseSlot.class.st rename to src/Slot-Examples/BaseSlot.class.st index 587a7976dc0..44ed14fe681 100644 --- a/src/Slot-Core/BaseSlot.class.st +++ b/src/Slot-Examples/BaseSlot.class.st @@ -9,7 +9,7 @@ Class { #instVars : [ 'default' ], - #category : #'Slot-Core-Examples' + #category : #'Slot-Examples-base' } { #category : #comparing } diff --git a/src/Slot-Core/BooleanSlot.class.st b/src/Slot-Examples/BooleanSlot.class.st similarity index 98% rename from src/Slot-Core/BooleanSlot.class.st rename to src/Slot-Examples/BooleanSlot.class.st index 8796eb9fe78..b4094b388ec 100644 --- a/src/Slot-Core/BooleanSlot.class.st +++ b/src/Slot-Examples/BooleanSlot.class.st @@ -12,7 +12,7 @@ Class { 'baseSlot', 'offset' ], - #category : #'Slot-Core-Examples' + #category : #'Slot-Examples-base' } { #category : #accessing } diff --git a/src/Slot-Core/ComputedSlot.class.st b/src/Slot-Examples/ComputedSlot.class.st similarity index 97% rename from src/Slot-Core/ComputedSlot.class.st rename to src/Slot-Examples/ComputedSlot.class.st index ba4eec45915..2f45de85f7a 100644 --- a/src/Slot-Core/ComputedSlot.class.st +++ b/src/Slot-Examples/ComputedSlot.class.st @@ -17,7 +17,7 @@ Class { #instVars : [ 'block' ], - #category : #'Slot-Core-Examples' + #category : #'Slot-Examples-base' } { #category : #comparing } diff --git a/src/Slot-Core/ExampleClassVariable.class.st b/src/Slot-Examples/ExampleClassVariable.class.st similarity index 92% rename from src/Slot-Core/ExampleClassVariable.class.st rename to src/Slot-Examples/ExampleClassVariable.class.st index 30bb6bb10d5..7baa454a517 100644 --- a/src/Slot-Core/ExampleClassVariable.class.st +++ b/src/Slot-Examples/ExampleClassVariable.class.st @@ -8,7 +8,7 @@ Class { #instVars : [ 'state' ], - #category : #'Slot-Core-Examples' + #category : #'Slot-Examples-base' } { #category : #'meta-object-protocol' } diff --git a/src/Slot-Core/ExampleSlotWithDefaultValue.class.st b/src/Slot-Examples/ExampleSlotWithDefaultValue.class.st similarity index 97% rename from src/Slot-Core/ExampleSlotWithDefaultValue.class.st rename to src/Slot-Examples/ExampleSlotWithDefaultValue.class.st index a510d2d3880..010fffa39b1 100644 --- a/src/Slot-Core/ExampleSlotWithDefaultValue.class.st +++ b/src/Slot-Examples/ExampleSlotWithDefaultValue.class.st @@ -11,7 +11,7 @@ Class { #instVars : [ 'default' ], - #category : #'Slot-Core-Examples' + #category : #'Slot-Examples-base' } { #category : #comparing } diff --git a/src/Slot-Core/ExampleSlotWithState.class.st b/src/Slot-Examples/ExampleSlotWithState.class.st similarity index 97% rename from src/Slot-Core/ExampleSlotWithState.class.st rename to src/Slot-Examples/ExampleSlotWithState.class.st index b1989b473b5..c20c2f13c6c 100644 --- a/src/Slot-Core/ExampleSlotWithState.class.st +++ b/src/Slot-Examples/ExampleSlotWithState.class.st @@ -46,7 +46,7 @@ Class { #instVars : [ 'value' ], - #category : #'Slot-Core-Examples' + #category : #'Slot-Examples-base' } { #category : #'meta-object-protocol' } diff --git a/src/Slot-Core/HiddenInstanceVariableSlot.class.st b/src/Slot-Examples/HiddenInstanceVariableSlot.class.st similarity index 92% rename from src/Slot-Core/HiddenInstanceVariableSlot.class.st rename to src/Slot-Examples/HiddenInstanceVariableSlot.class.st index 03b027ca19b..25ab8a0e65f 100644 --- a/src/Slot-Core/HiddenInstanceVariableSlot.class.st +++ b/src/Slot-Examples/HiddenInstanceVariableSlot.class.st @@ -8,7 +8,7 @@ The idea is that virtual slots can use hidden non-virtual slots to store their s Class { #name : #HiddenInstanceVariableSlot, #superclass : #InstanceVariableSlot, - #category : #'Slot-Core-Examples' + #category : #'Slot-Examples-base' } { #category : #testing } diff --git a/src/Slot-Core/MorphSlot.class.st b/src/Slot-Examples/MorphSlot.class.st similarity index 93% rename from src/Slot-Core/MorphSlot.class.st rename to src/Slot-Examples/MorphSlot.class.st index 2c57e9a4f7a..eeed3cf1fa1 100644 --- a/src/Slot-Core/MorphSlot.class.st +++ b/src/Slot-Examples/MorphSlot.class.st @@ -11,7 +11,7 @@ setIvar: aMorph Class { #name : #MorphSlot, #superclass : #IndexedSlot, - #category : #'Slot-Core-Examples' + #category : #'Slot-Examples-base' } { #category : #'meta-object-protocol' } diff --git a/src/Slot-Core/ProcessLocalSlot.class.st b/src/Slot-Examples/ProcessLocalSlot.class.st similarity index 98% rename from src/Slot-Core/ProcessLocalSlot.class.st rename to src/Slot-Examples/ProcessLocalSlot.class.st index f86af771498..494a6f8d6fd 100644 --- a/src/Slot-Core/ProcessLocalSlot.class.st +++ b/src/Slot-Examples/ProcessLocalSlot.class.st @@ -26,7 +26,7 @@ obj local. “nil” <—— Now we don’t Class { #name : #ProcessLocalSlot, #superclass : #IndexedSlot, - #category : #'Slot-Core-Examples' + #category : #'Slot-Examples-base' } { #category : #'code generation' } diff --git a/src/Slot-Core/PropertySlot.class.st b/src/Slot-Examples/PropertySlot.class.st similarity index 98% rename from src/Slot-Core/PropertySlot.class.st rename to src/Slot-Examples/PropertySlot.class.st index 81b29148ac0..09d067c3fc4 100644 --- a/src/Slot-Core/PropertySlot.class.st +++ b/src/Slot-Examples/PropertySlot.class.st @@ -11,7 +11,7 @@ Class { #instVars : [ 'baseSlot' ], - #category : #'Slot-Core-Examples' + #category : #'Slot-Examples-base' } { #category : #'code generation' } diff --git a/src/Slot-Core/RelationSet.class.st b/src/Slot-Examples/RelationSet.class.st similarity index 97% rename from src/Slot-Core/RelationSet.class.st rename to src/Slot-Examples/RelationSet.class.st index 15165d7092c..41631afba99 100644 --- a/src/Slot-Core/RelationSet.class.st +++ b/src/Slot-Examples/RelationSet.class.st @@ -9,7 +9,7 @@ Class { 'slot', 'set' ], - #category : #'Slot-Core-Examples-Associations' + #category : #'Slot-Examples-Associations' } { #category : #'instance creation' } diff --git a/src/Slot-Core/RelationSlot.class.st b/src/Slot-Examples/RelationSlot.class.st similarity index 99% rename from src/Slot-Core/RelationSlot.class.st rename to src/Slot-Examples/RelationSlot.class.st index 096ea46aad7..bbe39ef316b 100644 --- a/src/Slot-Core/RelationSlot.class.st +++ b/src/Slot-Examples/RelationSlot.class.st @@ -26,7 +26,7 @@ Class { 'inverseName', 'inverseSlot' ], - #category : #'Slot-Core-Examples-Associations' + #category : #'Slot-Examples-Associations' } { #category : #'instance creation' } diff --git a/src/Slot-Core/ToManyRelationSlot.class.st b/src/Slot-Examples/ToManyRelationSlot.class.st similarity index 94% rename from src/Slot-Core/ToManyRelationSlot.class.st rename to src/Slot-Examples/ToManyRelationSlot.class.st index d491e3878cd..c5f9d49c88d 100644 --- a/src/Slot-Core/ToManyRelationSlot.class.st +++ b/src/Slot-Examples/ToManyRelationSlot.class.st @@ -4,7 +4,7 @@ I'm a relation slot that describes slots that contain collections. Class { #name : #ToManyRelationSlot, #superclass : #RelationSlot, - #category : #'Slot-Core-Examples-Associations' + #category : #'Slot-Examples-Associations' } { #category : #internal } diff --git a/src/Slot-Core/ToOneRelationSlot.class.st b/src/Slot-Examples/ToOneRelationSlot.class.st similarity index 94% rename from src/Slot-Core/ToOneRelationSlot.class.st rename to src/Slot-Examples/ToOneRelationSlot.class.st index 4f3a1ebb8db..bcb46abf5ea 100644 --- a/src/Slot-Core/ToOneRelationSlot.class.st +++ b/src/Slot-Examples/ToOneRelationSlot.class.st @@ -4,7 +4,7 @@ I'm an relation slot that describes the one or zero side of an association. Class { #name : #ToOneRelationSlot, #superclass : #RelationSlot, - #category : #'Slot-Core-Examples-Associations' + #category : #'Slot-Examples-Associations' } { #category : #testing } diff --git a/src/Slot-Core/UnlimitedInstanceVariableSlot.class.st b/src/Slot-Examples/UnlimitedInstanceVariableSlot.class.st similarity index 98% rename from src/Slot-Core/UnlimitedInstanceVariableSlot.class.st rename to src/Slot-Examples/UnlimitedInstanceVariableSlot.class.st index 0dd4773f1cc..2952e7f06c8 100644 --- a/src/Slot-Core/UnlimitedInstanceVariableSlot.class.st +++ b/src/Slot-Examples/UnlimitedInstanceVariableSlot.class.st @@ -9,7 +9,7 @@ Class { 'offset', 'baseSlotSize' ], - #category : #'Slot-Core-Examples' + #category : #'Slot-Examples-base' } { #category : #'class building' } diff --git a/src/Slot-Core/WeakSlot.class.st b/src/Slot-Examples/WeakSlot.class.st similarity index 97% rename from src/Slot-Core/WeakSlot.class.st rename to src/Slot-Examples/WeakSlot.class.st index ef0cb9b35dd..640f5191084 100644 --- a/src/Slot-Core/WeakSlot.class.st +++ b/src/Slot-Examples/WeakSlot.class.st @@ -14,7 +14,7 @@ This slot inherits from IndexedSlot to guarantee that this slot has a real field Class { #name : #WeakSlot, #superclass : #IndexedSlot, - #category : #'Slot-Core-Examples' + #category : #'Slot-Examples-base' } { #category : #'code generation' } diff --git a/src/Slot-Examples/package.st b/src/Slot-Examples/package.st new file mode 100644 index 00000000000..001842f96ac --- /dev/null +++ b/src/Slot-Examples/package.st @@ -0,0 +1 @@ +Package { #name : #'Slot-Examples' } diff --git a/src/Slot-Tests/PropertySlotTest.class.st b/src/Slot-Tests/PropertySlotTest.class.st index 950410bca25..dd43bcdaae3 100644 --- a/src/Slot-Tests/PropertySlotTest.class.st +++ b/src/Slot-Tests/PropertySlotTest.class.st @@ -141,3 +141,23 @@ PropertySlotTest >> testRemovePropertySlot2 [ self deny: (aClass hasSlot: propertySlot2). self deny: (aClass classLayout hasSlotNamed: #'_propertyBaseSlot'). ] + +{ #category : #tests } +PropertySlotTest >> testWhichSelectorsAccessFindSlots [ + | cls | + cls := Object newAnonymousSubclass. + cls := cls addSlot: #regularIvar. + cls := cls addSlot: #slotIvar => PropertySlot. + cls + compile: + 'initialize + super initialize. + + regularIvar := 4. + slotIvar := 2. + '. + self + assert: (cls whichSelectorsAccess: #regularIvar) size equals: 1; + assert: (cls whichSelectorsAccess: #slotIvar) size equals: 1; + assert: (cls whichSelectorsAccess: #notAnIvar) equals: #() +] diff --git a/src/System-DependenciesTests/SystemDependenciesTest.class.st b/src/System-DependenciesTests/SystemDependenciesTest.class.st index c7d74e30890..daca51da548 100644 --- a/src/System-DependenciesTests/SystemDependenciesTest.class.st +++ b/src/System-DependenciesTests/SystemDependenciesTest.class.st @@ -210,7 +210,7 @@ SystemDependenciesTest >> testExternalBasicToolsDependencies [ dependencies := self externalDependendiesOf: ( self metacelloPackageNames, self tonelCorePackageNames, - BaselineOfTraits allPackageNames, + BaselineOfTraits corePackages, { BaselineOfSUnit name }, BaselineOfSUnit allPackageNames, "ALL" { BaselineOfDisplay name }, BaselineOfDisplay allPackageNames, { BaselineOfUnifiedFFI name }, BaselineOfUnifiedFFI allPackageNames, @@ -249,7 +249,7 @@ SystemDependenciesTest >> testExternalDisplayDependencies [ dependencies := self externalDependendiesOf: ( self metacelloPackageNames, self tonelCorePackageNames, - BaselineOfTraits allPackageNames, + BaselineOfTraits corePackages, BaselineOfDisplay allPackageNames). self assertCollection: dependencies equals: self knownDisplayDependencies. @@ -283,6 +283,7 @@ SystemDependenciesTest >> testExternalIDEDependencies [ self metacelloPackageNames, self tonelCorePackageNames, { BaselineOfTraits name }, BaselineOfTraits allPackageNames, + { BaselineOfSlot name }, BaselineOfSlot allPackageNames, { BaselineOfSUnit name }, BaselineOfSUnit allPackageNames, "ALL" { BaselineOfDisplay name }, BaselineOfDisplay allPackageNames, { BaselineOfUnifiedFFI name }, BaselineOfUnifiedFFI allPackageNames, @@ -337,7 +338,7 @@ SystemDependenciesTest >> testExternalMetacelloDependencies [ self longTestCase. - dependencies := self externalDependendiesOf: self metacelloPackageNames, BaselineOfTraits allPackageNames. + dependencies := self externalDependendiesOf: self metacelloPackageNames, BaselineOfTraits corePackages. self assertCollection: dependencies equals: self knownMetacelloDependencies. ] @@ -350,7 +351,7 @@ SystemDependenciesTest >> testExternalMonticelloDependencies [ self longTestCase. dependencies := self externalDependendiesOf: ( - BaselineOfTraits allPackageNames, + BaselineOfTraits corePackages, BaselineOfPharoBootstrap kernelPackageNames, BaselineOfPharoBootstrap multilingualPackageNames, BaselineOfPharoBootstrap compilerPackageNames, @@ -372,7 +373,7 @@ SystemDependenciesTest >> testExternalMorphicCoreDependencies [ dependencies := self externalDependendiesOf: ( self metacelloPackageNames, self tonelCorePackageNames, - BaselineOfTraits allPackageNames, + BaselineOfTraits corePackages, BaselineOfSUnit defaultPackageNames, BaselineOfDisplay allPackageNames, BaselineOfUnifiedFFI allPackageNames, @@ -391,7 +392,7 @@ SystemDependenciesTest >> testExternalMorphicDependencies [ dependencies := self externalDependendiesOf: ( self metacelloPackageNames, self tonelCorePackageNames, - BaselineOfTraits allPackageNames, + BaselineOfTraits corePackages, BaselineOfSUnit defaultPackageNames, BaselineOfDisplay allPackageNames, BaselineOfUnifiedFFI allPackageNames, @@ -409,7 +410,7 @@ SystemDependenciesTest >> testExternalSUnitDependencies [ self longTestCase. dependencies := self externalDependendiesOf: ( - BaselineOfTraits allPackageNames, + BaselineOfTraits corePackages, self metacelloPackageNames, self tonelCorePackageNames, BaselineOfSUnit defaultPackageNames). @@ -425,7 +426,7 @@ SystemDependenciesTest >> testExternalSUnitKernelDependencies [ self longTestCase. dependencies := self externalDependendiesOf: ( - BaselineOfTraits allPackageNames, + BaselineOfTraits corePackages, BaselineOfPharoBootstrap kernelPackageNames, BaselineOfPharoBootstrap multilingualPackageNames, BaselineOfPharoBootstrap kernelAdditionalPackagesNames, @@ -443,7 +444,7 @@ SystemDependenciesTest >> testExternalSpecDependencies [ dependencies := (self externalDependendiesOf: ( self metacelloPackageNames, - BaselineOfTraits allPackageNames, + BaselineOfTraits corePackages, self specPackageNames )) copyWithoutAll: self knownMetacelloDependencies. @@ -460,7 +461,7 @@ SystemDependenciesTest >> testExternalUFFIDependencies [ dependencies := self externalDependendiesOf: ( self metacelloPackageNames, self tonelCorePackageNames, - BaselineOfTraits allPackageNames, + BaselineOfTraits corePackages, BaselineOfSUnit defaultPackageNames, BaselineOfUnifiedFFI allPackageNames). @@ -477,7 +478,7 @@ SystemDependenciesTest >> testExternalUIDependencies [ dependencies := (self externalDependendiesOf: ( self metacelloPackageNames, self tonelCorePackageNames, - BaselineOfTraits allPackageNames, + BaselineOfTraits corePackages, BaselineOfSUnit defaultPackageNames, BaselineOfDisplay allPackageNames, BaselineOfUnifiedFFI allPackageNames,