ChangeSet.st
branchjv
changeset 3068 f92b042b8470
parent 3067 580931ccfea6
child 3069 89d2cfee177f
--- a/ChangeSet.st	Fri Jul 27 15:53:23 2012 +0100
+++ b/ChangeSet.st	Tue Jul 31 12:53:41 2012 +0100
@@ -542,7 +542,6 @@
     "Created: / 27.10.1997 / 13:52:54 / cg"
 ! !
 
-
 !ChangeSet class methodsFor:'Compatibility-VW'!
 
 component: component definition: anObject change: changeSymbol
@@ -811,8 +810,10 @@
     ^ name
 !
 
-name:something
-    name := something.
+name:aString
+    name := aString.
+
+    "Modified (format): / 28-07-2012 / 09:34:52 / cg"
 ! !
 
 !ChangeSet methodsFor:'change & update'!
@@ -1085,7 +1086,6 @@
     "Created: / 05-12-2009 / 12:32:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-
 !ChangeSet methodsFor:'misc'!
 
 addPatch:nameOfPatch
@@ -1094,7 +1094,6 @@
     ^ self
 ! !
 
-
 !ChangeSet methodsFor:'private-accessing'!
 
 addChange:aChange
@@ -2052,6 +2051,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
 !
@@ -2238,19 +2260,9 @@
 handleMethodCategoryChange
     |change|
 
-    (receiver isMessage
-    and:[receiverSelector == #'compiledMethodAt:']) ifFalse:[
-        self error:'unexpected change' mayProceed:true.
+    self extractMethodsClassAndSelectorFromReceiver ifFalse:[
         ^ 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.
 
     change := MethodCategoryChange new.
     change 
@@ -2260,6 +2272,8 @@
 
     self addChange:change.
     ^ true
+
+    "Modified: / 27-07-2012 / 21:34:42 / cg"
 !
 
 handleMethodCategoryRenameChange
@@ -2367,21 +2381,32 @@
     "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|
 
-    (receiver isMessage
-    and:[receiverSelector == #'compiledMethodAt:']) ifFalse:[
-        self error:'unexpected change' mayProceed:true.
+    self extractMethodsClassAndSelectorFromReceiver ifFalse:[
         ^ false.
     ].
 
-    className := self classNameOf:receiverReceiver.
-"/            nameSpace ~~ Smalltalk ifTrue:[
-"/                className := nameSpace name , '::' , className
-"/            ].
-    methodSelector := (receiver arguments at:1) evaluate.
-
     change := MethodPrivacyChange new.
     change 
         className:className
@@ -2390,6 +2415,8 @@
 
     self addChange:change.
     ^ true
+
+    "Modified: / 27-07-2012 / 21:35:20 / cg"
 !
 
 handleNameSpaceCreationChange
@@ -2435,6 +2462,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|
 
@@ -2665,22 +2725,60 @@
     ^ self handleNameSpaceCreationChange.
 !
 
+process_package_
+    "'package:' chunk (ST/X)"
+
+    ^ self handleMethodPackageChange.
+
+    "Created: / 27-07-2012 / 21:36:30 / cg"
+!
+
 process_primitiveDefinitions
     "'primitiveDefinitions' chunk (ST/X)"
 
-    ^ self handlePrimitiveChange.
+    ^ self handlePrimitiveChange:nil.
+
+    "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)"
 
-    ^ self handlePrimitiveChange.
+    ^ self handlePrimitiveChange:nil.
+
+    "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)"
 
-    ^ self handlePrimitiveChange.
+    ^ self handlePrimitiveChange:nil.
+
+    "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_
@@ -3921,11 +4019,14 @@
 
 !ChangeSet class methodsFor:'documentation'!
 
+version
+    ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.192 2012/07/29 11:05:27 cg Exp $'
+!
+
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.190 2012/07/26 10:20:26 cg Exp §'
-
+    ^ '§Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.192 2012/07/29 11:05:27 cg Exp §'
 !
 
 version_SVN
-    ^ '$Id: ChangeSet.st 1942 2012-07-27 14:53:23Z vranyj1 $'
+    ^ '$Id: ChangeSet.st 1945 2012-07-31 11:53:41Z vranyj1 $'
 ! !