ChangeSet.st
author Claus Gittinger <cg@exept.de>
Wed, 15 Dec 1999 00:28:10 +0100
changeset 860 4e159afd172a
parent 859 5d50d068c63b
child 864 4f35b96a799e
permissions -rw-r--r--
checkin from browser
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3
263f814933d4 *** empty log message ***
claus
parents: 0
diff changeset
     1
"
263f814933d4 *** empty log message ***
claus
parents: 0
diff changeset
     2
 COPYRIGHT (c) 1993 by Claus Gittinger
16
fcbfbba03d49 *** empty log message ***
claus
parents: 10
diff changeset
     3
	      All Rights Reserved
3
263f814933d4 *** empty log message ***
claus
parents: 0
diff changeset
     4
263f814933d4 *** empty log message ***
claus
parents: 0
diff changeset
     5
 This software is furnished under a license and may be used
263f814933d4 *** empty log message ***
claus
parents: 0
diff changeset
     6
 only in accordance with the terms of that license and with the
263f814933d4 *** empty log message ***
claus
parents: 0
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
263f814933d4 *** empty log message ***
claus
parents: 0
diff changeset
     8
 be provided or otherwise made available to, or used by, any
263f814933d4 *** empty log message ***
claus
parents: 0
diff changeset
     9
 other person.  No title to or ownership of the software is
263f814933d4 *** empty log message ***
claus
parents: 0
diff changeset
    10
 hereby transferred.
263f814933d4 *** empty log message ***
claus
parents: 0
diff changeset
    11
"
0
470788421600 Initial revision
claus
parents:
diff changeset
    12
470788421600 Initial revision
claus
parents:
diff changeset
    13
OrderedCollection subclass:#ChangeSet
235
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
    14
	instanceVariableNames:''
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
    15
	classVariableNames:''
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
    16
	poolDictionaries:''
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
    17
	category:'System-Changes'
0
470788421600 Initial revision
claus
parents:
diff changeset
    18
!
470788421600 Initial revision
claus
parents:
diff changeset
    19
625
06f4ed35832b added #patches for ST80 compatibility
Claus Gittinger <cg@exept.de>
parents: 378
diff changeset
    20
!ChangeSet class methodsFor:'documentation'!
9
f5b6ab00bdf6 *** empty log message ***
claus
parents: 3
diff changeset
    21
f5b6ab00bdf6 *** empty log message ***
claus
parents: 3
diff changeset
    22
copyright
f5b6ab00bdf6 *** empty log message ***
claus
parents: 3
diff changeset
    23
"
f5b6ab00bdf6 *** empty log message ***
claus
parents: 3
diff changeset
    24
 COPYRIGHT (c) 1993 by Claus Gittinger
16
fcbfbba03d49 *** empty log message ***
claus
parents: 10
diff changeset
    25
	      All Rights Reserved
9
f5b6ab00bdf6 *** empty log message ***
claus
parents: 3
diff changeset
    26
f5b6ab00bdf6 *** empty log message ***
claus
parents: 3
diff changeset
    27
 This software is furnished under a license and may be used
f5b6ab00bdf6 *** empty log message ***
claus
parents: 3
diff changeset
    28
 only in accordance with the terms of that license and with the
f5b6ab00bdf6 *** empty log message ***
claus
parents: 3
diff changeset
    29
 inclusion of the above copyright notice.   This software may not
f5b6ab00bdf6 *** empty log message ***
claus
parents: 3
diff changeset
    30
 be provided or otherwise made available to, or used by, any
f5b6ab00bdf6 *** empty log message ***
claus
parents: 3
diff changeset
    31
 other person.  No title to or ownership of the software is
f5b6ab00bdf6 *** empty log message ***
claus
parents: 3
diff changeset
    32
 hereby transferred.
f5b6ab00bdf6 *** empty log message ***
claus
parents: 3
diff changeset
    33
"
f5b6ab00bdf6 *** empty log message ***
claus
parents: 3
diff changeset
    34
!
f5b6ab00bdf6 *** empty log message ***
claus
parents: 3
diff changeset
    35
f5b6ab00bdf6 *** empty log message ***
claus
parents: 3
diff changeset
    36
documentation
f5b6ab00bdf6 *** empty log message ***
claus
parents: 3
diff changeset
    37
"
f5b6ab00bdf6 *** empty log message ***
claus
parents: 3
diff changeset
    38
    used in the changes management to keep track of changes
235
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
    39
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
    40
    [author:]
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
    41
        Claus Gittinger
9
f5b6ab00bdf6 *** empty log message ***
claus
parents: 3
diff changeset
    42
"
f5b6ab00bdf6 *** empty log message ***
claus
parents: 3
diff changeset
    43
! !
f5b6ab00bdf6 *** empty log message ***
claus
parents: 3
diff changeset
    44
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    45
!ChangeSet class methodsFor:'instance creation'!
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    46
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    47
fromStream:aStream
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    48
    "build a changeSet from a stream, containing chunks.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    49
     (i.e. either a classes sourceFile or a change-file).
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    50
     Return the changeSet."
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    51
859
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    52
    |changeSet chunk sawExcla lastTimeStamp s change nameSpace|
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    53
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    54
    changeSet := self new.
859
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    55
    nameSpace := Smalltalk.
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    56
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    57
    [aStream atEnd] whileFalse:[
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    58
        aStream skipSeparators.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    59
        sawExcla := aStream peekFor:$!!.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    60
        chunk := aStream nextChunk.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
    61
        (chunk notNil and:[chunk notEmpty]) ifTrue:[
859
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    62
            Class nameSpaceQuerySignal answer:nameSpace do:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    63
                |parser tree|
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    64
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    65
                parser := Parser for:chunk.
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    66
                tree := parser 
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    67
                            parseExpressionWithSelf:nil 
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    68
                            notifying:nil 
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    69
                            ignoreErrors:true 
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    70
                            ignoreWarnings:true 
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    71
                            inNameSpace:nameSpace.
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    72
                tree == #Error ifTrue:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    73
                    change := DoItChange new.
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    74
                    change source:chunk.
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    75
                    changeSet add: change.
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    76
                ] ifFalse:[    
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    77
                    (tree notNil and:[tree ~~ #Error]) ifTrue:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    78
                        "/ if there is any nameSPace directoive in there, extract it.
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    79
                        parser currentNameSpace notNil ifTrue:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    80
                            nameSpace := parser currentNameSpace
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    81
                        ].
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    82
                        Class nameSpaceQuerySignal answer:nameSpace do:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    83
                            "/
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    84
                            "/ what type of chunk is this ...
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    85
                            "/
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    86
                            tree isConstant ifTrue:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    87
                                (s := tree evaluate) isString ifTrue:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    88
                                    (s startsWith:'---- timestamp ') ifTrue:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    89
                                        lastTimeStamp := s.
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    90
                                    ]
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    91
                                ] ifFalse:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    92
                                    self halt:'unexpected change-chunk'
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    93
                                ]
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    94
                            ] ifFalse:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    95
                                tree isMessage ifTrue:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    96
                                    (changeSet addFromParseTree:tree andStream:aStream) ifFalse:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    97
                                        change := DoItChange new.
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    98
                                        change source:chunk.
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
    99
                                        changeSet add: change.
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   100
                                    ]
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   101
                                ] ifFalse:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   102
                                    self halt:'unexpected change-chunk'
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   103
                                ]
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   104
                            ]
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   105
                        ]
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   106
                    ]
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   107
                ]
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   108
            ]
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   109
        ]
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   110
    ].
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   111
    ^ changeSet
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   112
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   113
    "
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   114
     ChangeSet fromStream:('changes' asFilename readStream)
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   115
     ChangeSet fromStream:('patches' asFilename readStream)
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   116
     ChangeSet fromStream:(Object source asString readStream)
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   117
    "
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   118
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   119
    "Created: / 16.2.1998 / 12:19:34 / cg"
859
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   120
    "Modified: / 14.12.1999 / 15:23:16 / cg"
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   121
! !
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   122
625
06f4ed35832b added #patches for ST80 compatibility
Claus Gittinger <cg@exept.de>
parents: 378
diff changeset
   123
!ChangeSet class methodsFor:'ST80 compatibility'!
06f4ed35832b added #patches for ST80 compatibility
Claus Gittinger <cg@exept.de>
parents: 378
diff changeset
   124
06f4ed35832b added #patches for ST80 compatibility
Claus Gittinger <cg@exept.de>
parents: 378
diff changeset
   125
patches
06f4ed35832b added #patches for ST80 compatibility
Claus Gittinger <cg@exept.de>
parents: 378
diff changeset
   126
    ^ #()
06f4ed35832b added #patches for ST80 compatibility
Claus Gittinger <cg@exept.de>
parents: 378
diff changeset
   127
06f4ed35832b added #patches for ST80 compatibility
Claus Gittinger <cg@exept.de>
parents: 378
diff changeset
   128
    "Created: / 27.10.1997 / 13:52:54 / cg"
06f4ed35832b added #patches for ST80 compatibility
Claus Gittinger <cg@exept.de>
parents: 378
diff changeset
   129
! !
06f4ed35832b added #patches for ST80 compatibility
Claus Gittinger <cg@exept.de>
parents: 378
diff changeset
   130
06f4ed35832b added #patches for ST80 compatibility
Claus Gittinger <cg@exept.de>
parents: 378
diff changeset
   131
!ChangeSet class methodsFor:'queries'!
27
claus
parents: 16
diff changeset
   132
claus
parents: 16
diff changeset
   133
current
claus
parents: 16
diff changeset
   134
    "ST-80 compatibility: return the current changeSet"
claus
parents: 16
diff changeset
   135
claus
parents: 16
diff changeset
   136
    |p|
claus
parents: 16
diff changeset
   137
claus
parents: 16
diff changeset
   138
    (Project notNil and:[(p := Project current) notNil]) ifTrue:[
claus
parents: 16
diff changeset
   139
	^ p changeSet
claus
parents: 16
diff changeset
   140
    ]
claus
parents: 16
diff changeset
   141
claus
parents: 16
diff changeset
   142
    "
claus
parents: 16
diff changeset
   143
     ChangeSet current 
claus
parents: 16
diff changeset
   144
    "
claus
parents: 16
diff changeset
   145
! !
claus
parents: 16
diff changeset
   146
0
470788421600 Initial revision
claus
parents:
diff changeset
   147
!ChangeSet methodsFor:'change management'!
470788421600 Initial revision
claus
parents:
diff changeset
   148
100
d09e51d14901 project changeSet fixes
Claus Gittinger <cg@exept.de>
parents: 85
diff changeset
   149
addClassCategoryChange:newCategory for:aClass
378
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   150
    "add a classCategory change to the receiver"
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   151
100
d09e51d14901 project changeSet fixes
Claus Gittinger <cg@exept.de>
parents: 85
diff changeset
   152
    |newChange|
d09e51d14901 project changeSet fixes
Claus Gittinger <cg@exept.de>
parents: 85
diff changeset
   153
d09e51d14901 project changeSet fixes
Claus Gittinger <cg@exept.de>
parents: 85
diff changeset
   154
    newChange := ClassCategoryChange class:aClass category:newCategory.
d09e51d14901 project changeSet fixes
Claus Gittinger <cg@exept.de>
parents: 85
diff changeset
   155
    self add:newChange
d09e51d14901 project changeSet fixes
Claus Gittinger <cg@exept.de>
parents: 85
diff changeset
   156
d09e51d14901 project changeSet fixes
Claus Gittinger <cg@exept.de>
parents: 85
diff changeset
   157
    "Created: 3.12.1995 / 13:45:53 / cg"
378
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   158
    "Modified: 15.7.1996 / 09:26:52 / cg"
100
d09e51d14901 project changeSet fixes
Claus Gittinger <cg@exept.de>
parents: 85
diff changeset
   159
!
d09e51d14901 project changeSet fixes
Claus Gittinger <cg@exept.de>
parents: 85
diff changeset
   160
d09e51d14901 project changeSet fixes
Claus Gittinger <cg@exept.de>
parents: 85
diff changeset
   161
addClassDefinitionChangeFor:aClass
378
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   162
    "add a classDefinition change to the receiver"
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   163
100
d09e51d14901 project changeSet fixes
Claus Gittinger <cg@exept.de>
parents: 85
diff changeset
   164
    |newChange|
d09e51d14901 project changeSet fixes
Claus Gittinger <cg@exept.de>
parents: 85
diff changeset
   165
d09e51d14901 project changeSet fixes
Claus Gittinger <cg@exept.de>
parents: 85
diff changeset
   166
    newChange := ClassDefinitionChange class:aClass.
787
5d49bd054fc2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 783
diff changeset
   167
    newChange source:aClass definition.
100
d09e51d14901 project changeSet fixes
Claus Gittinger <cg@exept.de>
parents: 85
diff changeset
   168
    self add:newChange
d09e51d14901 project changeSet fixes
Claus Gittinger <cg@exept.de>
parents: 85
diff changeset
   169
378
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   170
    "Modified: 15.7.1996 / 09:27:05 / cg"
100
d09e51d14901 project changeSet fixes
Claus Gittinger <cg@exept.de>
parents: 85
diff changeset
   171
!
d09e51d14901 project changeSet fixes
Claus Gittinger <cg@exept.de>
parents: 85
diff changeset
   172
16
fcbfbba03d49 *** empty log message ***
claus
parents: 10
diff changeset
   173
addMethodCategoryChange:aMethod category:newCategory in:aClass
378
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   174
    "add a methodCategory change to the receiver"
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   175
16
fcbfbba03d49 *** empty log message ***
claus
parents: 10
diff changeset
   176
    |newChange|
fcbfbba03d49 *** empty log message ***
claus
parents: 10
diff changeset
   177
fcbfbba03d49 *** empty log message ***
claus
parents: 10
diff changeset
   178
    newChange := MethodCategoryChange class:aClass
378
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   179
                                   selector:(aClass selectorAtMethod:aMethod)
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   180
                                   category:newCategory.
16
fcbfbba03d49 *** empty log message ***
claus
parents: 10
diff changeset
   181
    self add:newChange
fcbfbba03d49 *** empty log message ***
claus
parents: 10
diff changeset
   182
378
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   183
    "Modified: 15.7.1996 / 09:27:15 / cg"
44
claus
parents: 39
diff changeset
   184
!
claus
parents: 39
diff changeset
   185
85
c354e2f81394 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   186
addMethodChange:aMethod in:aClass
378
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   187
    "add a method change to the receiver"
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   188
85
c354e2f81394 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   189
    |newChange|
c354e2f81394 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   190
c354e2f81394 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   191
    newChange := MethodChange class:aClass
378
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   192
                           selector:(aClass selectorAtMethod:aMethod)
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   193
                             source:aMethod source
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   194
                           category:aMethod category.
85
c354e2f81394 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   195
    self add:newChange
378
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   196
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   197
    "Modified: 15.7.1996 / 09:27:21 / cg"
85
c354e2f81394 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   198
!
c354e2f81394 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   199
44
claus
parents: 39
diff changeset
   200
addMethodPrivacyChange:aMethod in:aClass
378
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   201
    "add a methodPrivacy change to the receiver"
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   202
44
claus
parents: 39
diff changeset
   203
    |newChange|
claus
parents: 39
diff changeset
   204
claus
parents: 39
diff changeset
   205
    newChange := MethodPrivacyChange class:aClass
378
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   206
                                   selector:(aClass selectorAtMethod:aMethod)
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   207
                                   privacy:aMethod privacy.
44
claus
parents: 39
diff changeset
   208
    self add:newChange
claus
parents: 39
diff changeset
   209
claus
parents: 39
diff changeset
   210
    "Modified: 27.8.1995 / 22:55:22 / claus"
378
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   211
    "Modified: 15.7.1996 / 09:27:28 / cg"
235
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
   212
!
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
   213
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
   214
addPrimitiveDefinitionsChangeFor:aClass
378
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   215
    "add a primitiveDefinitions change to the receiver"
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   216
235
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
   217
    |newChange|
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
   218
783
90ffa6f0a86b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 781
diff changeset
   219
    newChange := ClassPrimitiveDefinitionsChange new
90ffa6f0a86b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 781
diff changeset
   220
                        class:aClass name source:aClass primitiveDefinitionsString.
235
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
   221
    self add:newChange
378
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   222
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   223
    "Modified: 15.7.1996 / 09:27:40 / cg"
235
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
   224
!
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
   225
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
   226
addPrimitiveFunctionsChangeFor:aClass
378
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   227
    "add a primitiveFunctions change to the receiver"
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   228
235
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
   229
    |newChange|
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
   230
783
90ffa6f0a86b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 781
diff changeset
   231
    newChange := ClassPrimitiveFunctionsChange new
90ffa6f0a86b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 781
diff changeset
   232
                        class:aClass name source:aClass primitiveFunctionsString.
235
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
   233
    self add:newChange
378
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   234
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   235
    "Modified: 15.7.1996 / 09:27:47 / cg"
235
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
   236
!
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
   237
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
   238
addPrimitiveVariablesChangeFor:aClass
378
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   239
    "add a primitiveVariables change to the receiver"
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   240
235
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
   241
    |newChange|
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
   242
783
90ffa6f0a86b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 781
diff changeset
   243
    newChange := ClassPrimitiveVariablesChange new
90ffa6f0a86b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 781
diff changeset
   244
                         class:aClass name source:aClass primitiveVariablesString.
235
3ebfdc6edab9 documentation
Claus Gittinger <cg@exept.de>
parents: 102
diff changeset
   245
    self add:newChange
378
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   246
f106015c98a6 commentary
Claus Gittinger <cg@exept.de>
parents: 235
diff changeset
   247
    "Modified: 15.7.1996 / 09:27:55 / cg"
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   248
!
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   249
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   250
addRemoveSelectorChange:aSelector in:aClass
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   251
    "add a method-remove change to the receiver"
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   252
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   253
    |newChange|
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   254
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   255
    newChange := MethodRemoveChange 
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   256
                        class:aClass
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   257
                        selector:aSelector.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   258
    self add:newChange
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   259
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   260
    "Modified: / 27.8.1995 / 22:55:22 / claus"
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   261
    "Modified: / 15.7.1996 / 09:27:28 / cg"
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   262
    "Created: / 16.2.1998 / 12:47:07 / cg"
0
470788421600 Initial revision
claus
parents:
diff changeset
   263
! !
470788421600 Initial revision
claus
parents:
diff changeset
   264
85
c354e2f81394 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   265
!ChangeSet methodsFor:'misc'!
c354e2f81394 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   266
c354e2f81394 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   267
addPatch:nameOfPatch
c354e2f81394 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   268
    "ignored for now - allows fileIn of ST-80 patch stuff .."
c354e2f81394 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   269
c354e2f81394 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   270
    ^ self
c354e2f81394 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   271
! !
c354e2f81394 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 68
diff changeset
   272
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   273
!ChangeSet methodsFor:'private'!
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   274
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   275
addFromParseTree:aTree andStream:aStream
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   276
    |sel className categoryName 
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   277
     methodSource methodSelector change parser
775
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   278
     oldName newName priv receiver receiverVarName
859
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   279
     receiverSelector receiverReceiver primSource
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   280
     nameSpace|
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   281
860
4e159afd172a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 859
diff changeset
   282
    nameSpace := Class nameSpaceQuerySignal query.
859
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   283
    nameSpace isNil ifTrue:[nameSpace := Smalltalk].
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   284
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   285
    sel := aTree selector.
775
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   286
    receiver := aTree receiver.
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   287
    receiver isMessage ifTrue:[
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   288
        receiverSelector := receiver selector.
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   289
        receiverReceiver := receiver receiver.
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   290
    ] ifFalse:[
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   291
        receiver isVariable ifTrue:[
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   292
            receiverVarName := receiver name
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   293
        ]
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   294
    ].
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   295
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   296
    (sel == #'methodsFor:'
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   297
    or:[(sel == #'ignoredMethodsFor:')]) ifTrue:[
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   298
        (sel == #'ignoredMethodsFor:') ifTrue:[
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   299
            priv := #ignored.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   300
        ] ifFalse:[
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   301
            priv := nil
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   302
        ].
775
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   303
        (receiver isUnaryMessage 
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   304
        and:[receiverSelector == #class]) ifTrue:[
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   305
            className := (receiverReceiver name) , ' class'.
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   306
        ] ifFalse:[
775
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   307
            className := (receiver name).
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   308
        ].
859
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   309
        nameSpace ~~ Smalltalk ifTrue:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   310
            className := nameSpace name , '::' , className
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   311
        ].
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   312
        categoryName := (aTree arguments at:1) evaluate.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   313
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   314
        aStream skipSeparators.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   315
        methodSource := aStream nextChunk.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   316
        [methodSource notEmpty] whileTrue:[
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   317
            parser := Parser
789
f5dd39d0653e dont parse the methods body, if all we need is the selector.
Claus Gittinger <cg@exept.de>
parents: 787
diff changeset
   318
                        parseMethodArgAndVarSpecification:methodSource 
f5dd39d0653e dont parse the methods body, if all we need is the selector.
Claus Gittinger <cg@exept.de>
parents: 787
diff changeset
   319
                        in:nil 
f5dd39d0653e dont parse the methods body, if all we need is the selector.
Claus Gittinger <cg@exept.de>
parents: 787
diff changeset
   320
                        ignoreErrors:true 
f5dd39d0653e dont parse the methods body, if all we need is the selector.
Claus Gittinger <cg@exept.de>
parents: 787
diff changeset
   321
                        ignoreWarnings:true
f5dd39d0653e dont parse the methods body, if all we need is the selector.
Claus Gittinger <cg@exept.de>
parents: 787
diff changeset
   322
                        parseBody:false.
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   323
829
1e701ca3c59f care for unparsable stuff (java methods)
Claus Gittinger <cg@exept.de>
parents: 802
diff changeset
   324
            parser isNil ifTrue:[
1e701ca3c59f care for unparsable stuff (java methods)
Claus Gittinger <cg@exept.de>
parents: 802
diff changeset
   325
                "/ something wierd ...
1e701ca3c59f care for unparsable stuff (java methods)
Claus Gittinger <cg@exept.de>
parents: 802
diff changeset
   326
                methodSelector := '????'.
1e701ca3c59f care for unparsable stuff (java methods)
Claus Gittinger <cg@exept.de>
parents: 802
diff changeset
   327
            ] ifFalse:[
1e701ca3c59f care for unparsable stuff (java methods)
Claus Gittinger <cg@exept.de>
parents: 802
diff changeset
   328
                methodSelector := parser selector.
1e701ca3c59f care for unparsable stuff (java methods)
Claus Gittinger <cg@exept.de>
parents: 802
diff changeset
   329
            ].
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   330
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   331
            change := MethodChange new.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   332
            change 
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   333
                className:className
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   334
                selector:methodSelector
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   335
                source:methodSource
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   336
                category:categoryName
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   337
                privacy:priv.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   338
            self add: change.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   339
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   340
            aStream skipSeparators.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   341
            methodSource := aStream nextChunk.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   342
        ].
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   343
        ^ true
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   344
    ].
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   345
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   346
    sel == #'removeSelector:' ifTrue:[
775
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   347
        (receiver isUnaryMessage 
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   348
        and:[receiverSelector == #class]) ifTrue:[
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   349
            className := (receiverReceiver name) , ' class'.
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   350
        ] ifFalse:[
775
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   351
            className := (receiver name).
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   352
        ].
859
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   353
        nameSpace ~~ Smalltalk ifTrue:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   354
            className := nameSpace name , '::' , className
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   355
        ].
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   356
        methodSelector := (aTree arguments at:1) evaluate.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   357
        change := MethodRemoveChange new.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   358
        change 
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   359
            className:className
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   360
            selector:methodSelector.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   361
        self add: change.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   362
        ^ true
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   363
    ].
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   364
787
5d49bd054fc2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 783
diff changeset
   365
    "/ any subclass definiton selector ?
802
f6cfa27d60e0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 798
diff changeset
   366
    (Behavior definitionSelectors includes:sel)
787
5d49bd054fc2 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 783
diff changeset
   367
    ifTrue:[
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   368
        className := (aTree arguments at:1) evaluate.
859
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   369
        nameSpace ~~ Smalltalk ifTrue:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   370
            className := nameSpace name , '::' , className
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   371
        ].
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   372
        change := ClassDefinitionChange new.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   373
        change 
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   374
            className:className;
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   375
            source:(aTree printString).
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   376
        self add: change.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   377
        ^ true
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   378
    ].
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   379
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   380
    sel == #'renameCategory:to:' ifTrue:[
775
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   381
        (receiver isUnaryMessage 
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   382
        and:[receiverSelector == #class]) ifTrue:[
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   383
            className := (receiverReceiver name) , ' class'.
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   384
        ] ifFalse:[
775
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   385
            className := (receiver name).
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   386
        ].
859
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   387
        nameSpace ~~ Smalltalk ifTrue:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   388
            className := nameSpace name , '::' , className
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   389
        ].
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   390
        change := MethodCategoryRenameChange new.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   391
        change 
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   392
            className:className;
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   393
            oldCategoryName:(aTree arguments at:1) evaluate
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   394
            newCategoryName:(aTree arguments at:2) evaluate.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   395
        self add: change.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   396
        ^ true
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   397
    ].
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   398
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   399
    (sel == #'category:' 
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   400
    or:[sel == #'privacy:']) ifTrue:[
775
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   401
        (receiver isMessage
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   402
        and:[receiverSelector == #'compiledMethodAt:']) ifTrue:[
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   403
            (receiverReceiver isUnaryMessage 
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   404
            and:[receiverReceiver selector == #class]) ifTrue:[
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   405
                className := (receiverReceiver receiver name) , ' class'.
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   406
            ] ifFalse:[
775
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   407
                className := (receiverReceiver name).
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   408
            ].
859
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   409
            nameSpace ~~ Smalltalk ifTrue:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   410
                className := nameSpace name , '::' , className
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   411
            ].
775
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   412
            methodSelector := (receiver arguments at:1) evaluate.
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   413
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   414
            sel == #'category:' ifTrue:[
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   415
                change := MethodCategoryChange new.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   416
                change 
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   417
                    className:className
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   418
                    selector:methodSelector
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   419
                    category:(aTree arguments at:1) evaluate.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   420
            ] ifFalse:[
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   421
                change := MethodPrivacyChange new.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   422
                change 
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   423
                    className:className
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   424
                    selector:methodSelector
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   425
                    privacy:(aTree arguments at:1) evaluate.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   426
            ].
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   427
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   428
            self add: change.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   429
            ^ true
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   430
        ] ifFalse:[
798
999fff0aa0d0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 789
diff changeset
   431
            self halt:'unexpected change'
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   432
        ].
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   433
    ].
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   434
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   435
    sel == #'comment:' ifTrue:[
775
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   436
        (receiver isUnaryMessage 
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   437
        and:[receiverSelector == #class]) ifTrue:[
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   438
            className := (receiverReceiver name) , ' class'.
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   439
        ] ifFalse:[
775
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   440
            className := (receiver name).
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   441
        ].
859
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   442
        nameSpace ~~ Smalltalk ifTrue:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   443
            className := nameSpace name , '::' , className
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   444
        ].
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   445
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   446
        change := ClassCommentChange new.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   447
        change 
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   448
            className:className
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   449
            comment:(aTree arguments at:1) evaluate.
775
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   450
        change source:(aTree printString).
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   451
        self add: change.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   452
        ^ true
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   453
    ].
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   454
798
999fff0aa0d0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 789
diff changeset
   455
    sel == #'instanceVariableNames:' ifTrue:[
999fff0aa0d0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 789
diff changeset
   456
        (receiver isUnaryMessage 
999fff0aa0d0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 789
diff changeset
   457
        and:[receiverSelector == #class]) ifTrue:[
999fff0aa0d0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 789
diff changeset
   458
            className := (receiverReceiver name) , ' class'.
999fff0aa0d0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 789
diff changeset
   459
        ] ifFalse:[
999fff0aa0d0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 789
diff changeset
   460
            className := (receiver name).
999fff0aa0d0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 789
diff changeset
   461
        ].
859
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   462
        nameSpace ~~ Smalltalk ifTrue:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   463
            className := nameSpace name , '::' , className
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   464
        ].
798
999fff0aa0d0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 789
diff changeset
   465
        change := ClassInstVarDefinitionChange new.
999fff0aa0d0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 789
diff changeset
   466
        change className:className.
999fff0aa0d0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 789
diff changeset
   467
        change source:(aTree printString).
999fff0aa0d0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 789
diff changeset
   468
        self add: change.
999fff0aa0d0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 789
diff changeset
   469
        ^ true
999fff0aa0d0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 789
diff changeset
   470
    ].
999fff0aa0d0 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 789
diff changeset
   471
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   472
    sel == #'removeClass:' ifTrue:[
775
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   473
        (receiverVarName == #Smalltalk) ifTrue:[
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   474
            className := (aTree arguments at:1) name.
859
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   475
            nameSpace ~~ Smalltalk ifTrue:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   476
                className := nameSpace name , '::' , className
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   477
            ].
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   478
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   479
            change := ClassRemoveChange new.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   480
            change className:className.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   481
            self add: change.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   482
            ^ true
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   483
        ] ifFalse:[
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   484
            self halt
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   485
        ].
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   486
    ].
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   487
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   488
    sel == #'renameClass:to:' ifTrue:[
775
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   489
        (receiverVarName == #Smalltalk) ifTrue:[
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   490
            oldName := (aTree arguments at:1) name.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   491
            newName := (aTree arguments at:2) evaluate.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   492
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   493
            change := ClassRenameChange new.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   494
            change oldName:oldName newName:newName.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   495
            self add: change.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   496
            ^ true
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   497
        ] ifFalse:[
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   498
            self halt
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   499
        ].
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   500
    ].
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   501
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   502
    sel == #'name:' ifTrue:[
775
04b5618b4477 code cleanup
Claus Gittinger <cg@exept.de>
parents: 757
diff changeset
   503
        (receiverVarName == #Namespace) ifTrue:[
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   504
            className := (aTree arguments at:1) evaluate.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   505
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   506
            change := NameSpaceCreationChange new.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   507
            change name:className.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   508
            self add: change.
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   509
            ^ true
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   510
        ] ifFalse:[
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   511
            self halt
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   512
        ].
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   513
    ].
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   514
781
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   515
    (sel == #'primitiveDefinitions'
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   516
    or:[sel == #'primitiveFunctions'
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   517
    or:[sel == #'primitiveVariables']]) ifTrue:[
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   518
        (receiver isUnaryMessage 
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   519
        and:[receiverSelector == #class]) ifTrue:[
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   520
            className := (receiverReceiver name) , ' class'.
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   521
        ] ifFalse:[
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   522
            className := (receiver name).
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   523
        ].
859
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   524
        nameSpace ~~ Smalltalk ifTrue:[
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   525
            className := nameSpace name , '::' , className
5d50d068c63b keep track of the nameSpace
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
   526
        ].
781
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   527
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   528
        aStream skipSeparators.
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   529
        primSource := aStream nextChunk.
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   530
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   531
        sel == #'primitiveDefinitions' ifTrue:[
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   532
            change := ClassPrimitiveDefinitionsChange new
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   533
        ] ifFalse:[
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   534
            sel == #'primitiveFunctions' ifTrue:[
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   535
                change := ClassPrimitiveFunctionsChange new
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   536
            ] ifFalse:[
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   537
                change := ClassPrimitiveVariablesChange new
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   538
            ]
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   539
        ].
783
90ffa6f0a86b checkin from browser
Claus Gittinger <cg@exept.de>
parents: 781
diff changeset
   540
        change class:className source:primSource.
781
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   541
        self add: change.
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   542
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   543
        ^ true
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   544
    ].
d32abf3c57d7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 775
diff changeset
   545
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   546
    ^ false
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   547
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   548
    "Created: / 16.2.1998 / 13:42:40 / cg"
860
4e159afd172a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 859
diff changeset
   549
    "Modified: / 15.12.1999 / 00:29:06 / cg"
654
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   550
! !
edeb63d98088 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 625
diff changeset
   551
857
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   552
!ChangeSet methodsFor:'utilities'!
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   553
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   554
diffSetsAgainst:anotherChangeSet
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   555
    "walk over the receiver and anotherChangeSet,
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   556
     add all changes to one of the tree lists:
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   557
        onlyInReceiver, onlyInArg or changed,
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   558
     each being a changeSet containing corresponding changes.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   559
     In addition, an info collection is returned, which provides
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   560
     indexing informatiom, for "
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   561
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   562
    |onlyInReceiver onlyInArg changedMethods
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   563
     indexFromChangedMethodsToA indexFromChangedMethodsToB
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   564
     info ret|
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   565
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   566
    onlyInReceiver := ChangeSet new.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   567
    onlyInArg      := ChangeSet new.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   568
    changedMethods := ChangeSet new.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   569
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   570
    indexFromChangedMethodsToA := OrderedCollection new.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   571
    indexFromChangedMethodsToB := OrderedCollection new.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   572
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   573
    self keysAndValuesDo:[:idxA :aChangeInA |
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   574
        |anyFound ch|
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   575
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   576
        anyFound := false.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   577
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   578
        anotherChangeSet keysAndValuesDo:[:idxB :aChangeInB |
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   579
            (aChangeInA isForSameAs:aChangeInB) ifTrue:[
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   580
                anyFound := true.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   581
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   582
                "/ also in B - is it different ?
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   583
                (aChangeInA sameAs:aChangeInB) ifFalse:[
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   584
                    changedMethods add:aChangeInA.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   585
                    indexFromChangedMethodsToA add:idxA.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   586
                    indexFromChangedMethodsToB add:idxB.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   587
                ] ifTrue:[
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   588
                    aChangeInA isMethodChange ifTrue:[
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   589
                        aChangeInA methodCategory ~= aChangeInB methodCategory ifTrue:[
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   590
                            "/ only the category is different;
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   591
                            "/ make it a MethodCategory changes.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   592
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   593
                            ch := MethodCategoryChange new
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   594
                                    className:aChangeInA className
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   595
                                    selector:aChangeInA selector
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   596
                                    category:aChangeInA methodCategory.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   597
                            self at:idxA put:ch.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   598
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   599
                            ch := MethodCategoryChange new
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   600
                                    className:aChangeInB className
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   601
                                    selector:aChangeInB selector
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   602
                                    category:aChangeInB methodCategory.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   603
                            anotherChangeSet at:idxB put:ch.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   604
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   605
                            changedMethods add:aChangeInA.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   606
                            indexFromChangedMethodsToA add:idxA.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   607
                            indexFromChangedMethodsToB add:idxB.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   608
                        ]
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   609
                    ].
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   610
                ]
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   611
            ] ifFalse:[
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   612
                (aChangeInA sameAs:aChangeInB) ifTrue:[
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   613
                    anyFound := true.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   614
                ] ifFalse:[
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   615
                ]
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   616
            ]
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   617
        ].
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   618
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   619
        anyFound ifFalse:[
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   620
            onlyInReceiver add:aChangeInA.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   621
        ]
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   622
    ].
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   623
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   624
    anotherChangeSet keysAndValuesDo:[:idxB :aChangeInB |
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   625
        |anyFound|
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   626
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   627
        anyFound := false.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   628
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   629
        self do:[:aChangeInA |
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   630
            |idxM|
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   631
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   632
            (aChangeInA isForSameAs:aChangeInB) ifTrue:[
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   633
                anyFound := true.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   634
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   635
                "/ also in B - is it different ?
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   636
                (aChangeInA sameAs:aChangeInB) ifFalse:[
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   637
                    "/ already there ?
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   638
                    idxM := changedMethods findFirst:[:c | c isForSameAs:aChangeInB].
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   639
                    idxM == 0 ifTrue:[
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   640
                        changedMethods add:aChangeInB.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   641
                        indexFromChangedMethodsToB add:idxB.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   642
                    ] ifFalse:[
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   643
                        indexFromChangedMethodsToB at:idxM put:idxB
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   644
                    ]
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   645
                ]
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   646
            ] ifFalse:[
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   647
                (aChangeInA sameAs:aChangeInB) ifTrue:[
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   648
                    anyFound := true.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   649
                ] ifFalse:[
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   650
                ]
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   651
            ]
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   652
        ].
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   653
        anyFound ifFalse:[
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   654
            onlyInArg add:aChangeInB.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   655
        ]
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   656
    ].
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   657
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   658
    info := OrderedCollection new:(changedMethods size).
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   659
    changedMethods keysAndValuesDo:[:idx :changedMethod |
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   660
        info add:(Array 
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   661
                        with:(indexFromChangedMethodsToA at:idx)
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   662
                        with:(indexFromChangedMethodsToB at:idx)
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   663
                 )
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   664
    ].
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   665
    changedMethods := (1 to:changedMethods size) collect:[:idx |
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   666
                        |cA cB|
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   667
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   668
                        cA := self at:(indexFromChangedMethodsToA at:idx).
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   669
                        cB := anotherChangeSet at:(indexFromChangedMethodsToB at:idx).
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   670
                        Array with:cA with:cB
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   671
                      ].
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   672
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   673
    ret := IdentityDictionary new.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   674
    ret at:#info           put:info.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   675
    ret at:#changed        put:changedMethods.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   676
    ret at:#onlyInReceiver put:onlyInReceiver.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   677
    ret at:#onlyInArg      put:onlyInArg.
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   678
! !
0a1a91c94e53 diff utility
Claus Gittinger <cg@exept.de>
parents: 829
diff changeset
   679
625
06f4ed35832b added #patches for ST80 compatibility
Claus Gittinger <cg@exept.de>
parents: 378
diff changeset
   680
!ChangeSet class methodsFor:'documentation'!
100
d09e51d14901 project changeSet fixes
Claus Gittinger <cg@exept.de>
parents: 85
diff changeset
   681
d09e51d14901 project changeSet fixes
Claus Gittinger <cg@exept.de>
parents: 85
diff changeset
   682
version
860
4e159afd172a checkin from browser
Claus Gittinger <cg@exept.de>
parents: 859
diff changeset
   683
    ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.32 1999-12-14 23:28:10 cg Exp $'
100
d09e51d14901 project changeSet fixes
Claus Gittinger <cg@exept.de>
parents: 85
diff changeset
   684
! !