--- a/ChangeSet.st Tue Jul 31 15:30:56 2012 +0200
+++ b/ChangeSet.st Tue Jul 31 16:24:36 2012 +0200
@@ -542,7 +542,6 @@
"Created: / 27.10.1997 / 13:52:54 / cg"
! !
-
!ChangeSet class methodsFor:'Compatibility-VW'!
component: component definition: anObject change: changeSymbol
@@ -695,7 +694,7 @@
!ChangeSet class methodsFor:'others'!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.193 2012-07-31 12:41:14 vrany Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.194 2012-07-31 14:24:36 vrany Exp $'
! !
!ChangeSet class methodsFor:'queries'!
@@ -1093,7 +1092,6 @@
"Created: / 05-12-2009 / 12:32:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
-
!ChangeSet methodsFor:'misc'!
addPatch:nameOfPatch
@@ -1102,7 +1100,6 @@
^ self
! !
-
!ChangeSet methodsFor:'private-accessing'!
addChange:aChange
@@ -2075,6 +2072,29 @@
"Modified: / 24-01-2012 / 17:07:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+extractMethodsClassAndSelectorFromReceiver
+ "helper for all changes which are of the form:
+ (className compiledMethodAt:#methodSelector) something: ...
+ "
+
+ (receiver isMessage
+ and:[receiverSelector == #'compiledMethodAt:']) ifFalse:[
+ self error:'unexpected change' mayProceed:true.
+ ^ false.
+ ].
+ className := self classNameOf:receiverReceiver.
+ self assert:className notNil.
+
+"/ nameSpace ~~ Smalltalk ifTrue:[
+"/ className := nameSpace name , '::' , className
+"/ ].
+ methodSelector := (receiver arguments at:1) evaluate.
+ self assert:methodSelector notNil.
+ ^ true.
+
+ "Created: / 27-07-2012 / 21:33:47 / cg"
+!
+
receiversClassName
^ self classNameOf:receiver
!
@@ -2382,6 +2402,25 @@
"Created: / 24-01-2012 / 16:52:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+handleMethodPackageChange
+ |change|
+
+ self extractMethodsClassAndSelectorFromReceiver ifFalse:[
+ ^ false.
+ ].
+
+ change := MethodPackageChange new.
+ change
+ className:className
+ selector:methodSelector
+ package:(arguments at:1) evaluate.
+
+ self addChange:change.
+ ^ true
+
+ "Created: / 27-07-2012 / 21:31:25 / cg"
+!
+
handleMethodPrivacyChange
|change|
@@ -2444,6 +2483,39 @@
^ true
!
+handlePrimitiveChange: sourceOrNil
+ "if sourceOrNil is nil, the def has not been read and must be read from
+ the next chunk. Otherwise, it has been already read as argument."
+
+ |change primSource|
+
+ className := self receiversClassName.
+"/ nameSpace ~~ Smalltalk ifTrue:[
+"/ className := nameSpace name , '::' , className
+"/ ].
+ sourceOrNil notNil ifTrue:[
+ primSource := sourceOrNil
+ ] ifFalse:[
+ inputStream skipSeparators.
+ primSource := inputStream nextChunk.
+ ].
+
+ (selector == #'primitiveDefinitions' or:[ selector == #'primitiveDefinitions:' ]) ifTrue:[
+ change := ClassPrimitiveDefinitionsChange new
+ ] ifFalse:[
+ (selector == #'primitiveFunctions' or:[ selector == #'primitiveFunctions:' ]) ifTrue:[
+ change := ClassPrimitiveFunctionsChange new
+ ] ifFalse:[
+ change := ClassPrimitiveVariablesChange new
+ ]
+ ].
+ change className:className source:primSource.
+ self addChange:change.
+ ^ true
+
+ "Created: / 27-07-2012 / 21:39:55 / cg"
+!
+
handleRemoveClassChange
|change|
@@ -2674,6 +2746,14 @@
^ self handleNameSpaceCreationChange.
!
+process_package_
+ "'package:' chunk (ST/X)"
+
+ ^ self handleMethodPackageChange.
+
+ "Created: / 27-07-2012 / 21:36:30 / cg"
+!
+
process_primitiveDefinitions
"'primitiveDefinitions' chunk (ST/X)"
@@ -2682,6 +2762,14 @@
"Modified: / 27-07-2012 / 21:40:33 / cg"
!
+process_primitiveDefinitions_
+ "'primitiveDefinitions:' chunk (ST/X)"
+
+ ^ self handlePrimitiveChange: (arguments at:1) evaluate.
+
+ "Created: / 27-07-2012 / 21:42:03 / cg"
+!
+
process_primitiveFunctions
"'primitiveFunctions' chunk (ST/X)"
@@ -2690,6 +2778,14 @@
"Modified: / 27-07-2012 / 21:40:23 / cg"
!
+process_primitiveFunctions_
+ "'primitiveFunctions:' chunk (ST/X)"
+
+ ^ self handlePrimitiveChange: (arguments at:1) evaluate.
+
+ "Created: / 27-07-2012 / 21:37:21 / cg"
+!
+
process_primitiveVariables
"'primitiveVariables' chunk (ST/X)"
@@ -2698,6 +2794,14 @@
"Modified: / 27-07-2012 / 21:40:35 / cg"
!
+process_primitiveVariables_
+ "'primitiveVariables:' chunk (ST/X)"
+
+ ^ self handlePrimitiveChange: (arguments at:1) evaluate.
+
+ "Created: / 27-07-2012 / 21:41:49 / cg"
+!
+
process_privacy_
"'privacy:' chunk (ST/X)"
@@ -3937,7 +4041,7 @@
!ChangeSet class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.193 2012-07-31 12:41:14 vrany Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.194 2012-07-31 14:24:36 vrany Exp $'
!
version_SVN