--- a/Change.st Thu Apr 11 14:36:03 2013 +0200
+++ b/Change.st Tue Apr 16 09:44:57 2013 +0200
@@ -50,7 +50,7 @@
!Change class methodsFor:'others'!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic3/Change.st,v 1.64 2013-03-30 14:12:02 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/Change.st,v 1.65 2013-04-14 06:57:58 cg Exp $'
! !
@@ -177,14 +177,6 @@
"Modified (format): / 25-07-2012 / 17:37:23 / cg"
!
-mcDefinition
- ^ mcDefinition
-!
-
-mcDefinition:something
- mcDefinition := something.
-!
-
nameSpaceOverride:ns
"Created: / 20-03-2012 / 17:18:17 / cg"
@@ -367,6 +359,7 @@
! !
+
!Change methodsFor:'queries'!
isForGeneratedSubject
@@ -446,6 +439,13 @@
"Created: / 7.2.1998 / 19:26:50 / cg"
!
+isConflict
+ "true if this change is different than what is already in the image
+ (i.e. it overwrites some existing code)"
+
+ ^ true
+!
+
isDoIt
^ false
@@ -565,7 +565,7 @@
!Change class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/Change.st,v 1.64 2013-03-30 14:12:02 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/Change.st,v 1.65 2013-04-14 06:57:58 cg Exp $'
!
version_HG
--- a/ChangeDeltaInformation.st Thu Apr 11 14:36:03 2013 +0200
+++ b/ChangeDeltaInformation.st Tue Apr 16 09:44:57 2013 +0200
@@ -14,7 +14,7 @@
Object subclass:#ChangeDeltaInformation
instanceVariableNames:'shortDeltaSymbol'
classVariableNames:'Unknown Identical Different Added Removed IdenticalButWhiteSpace
- IdenticalButFormat IdenticalSemantically'
+ IdenticalButFormat IdenticalSemantically Conflict'
poolDictionaries:''
category:'System-Changes'
!
@@ -50,6 +50,7 @@
"
! !
+
!ChangeDeltaInformation class methodsFor:'initialization'!
initialize
@@ -62,10 +63,12 @@
Different := self new shortDeltaSymbol:#'~'. "/ code is different
Added := self new shortDeltaSymbol:#'+'. "/ method/class is added by change
Removed := self new shortDeltaSymbol:#'-'. "/ method/class is removed by change
+ Conflict := self new shortDeltaSymbol:#'!!'. "/ package conflict - overwrites existing method
"Created: / 31-08-2011 / 10:09:24 / cg"
! !
+
!ChangeDeltaInformation class methodsFor:'accessing'!
added
@@ -76,6 +79,12 @@
"Modified (comment): / 31-08-2011 / 10:20:51 / cg"
!
+conflict
+ "method overwrites existing method from another package"
+
+ ^ Conflict
+!
+
different
"code is different"
@@ -133,6 +142,7 @@
"Created: / 31-08-2011 / 10:20:13 / cg"
! !
+
!ChangeDeltaInformation methodsFor:'accessing'!
shortDeltaSymbol
@@ -147,14 +157,15 @@
"Created: / 31-08-2011 / 10:39:05 / cg"
! !
+
!ChangeDeltaInformation class methodsFor:'documentation'!
version
- ^ '$Header: ChangeDeltaInformation.st 1909 2012-03-31 00:14:49Z vranyj1 $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/ChangeDeltaInformation.st,v 1.2 2013-04-14 18:24:14 cg Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic3/ChangeDeltaInformation.st,v 1.1 2011/08/31 09:45:27 cg Exp §'
+ ^ '$Header: /cvs/stx/stx/libbasic3/ChangeDeltaInformation.st,v 1.2 2013-04-14 18:24:14 cg Exp $'
!
version_HG
--- a/ChangeSet.st Thu Apr 11 14:36:03 2013 +0200
+++ b/ChangeSet.st Tue Apr 16 09:44:57 2013 +0200
@@ -20,8 +20,8 @@
Object subclass:#ChangeFileReader
instanceVariableNames:'inputStream parseTree changeAction changeSet selector receiver
- arguments receiverSelector receiverReceiver lineNumber position
- className methodSelector chunk timestamp classIsJava'
+ arguments receiverSelector receiverReceiver lineNumber position
+ className methodSelector nameSpaceOverride chunk timestamp classIsJava'
classVariableNames:''
poolDictionaries:''
privateIn:ChangeSet
@@ -1492,8 +1492,8 @@
includesChangeForClassOrMetaclassOrPrivateClassOfAny:aCollectionOfClasses
|namesOfClasses namesOfMetaclasses|
- namesOfClasses := aCollectionOfClasses collect:[:eachClass | eachClass theNonMetaclass name] as:Array.
- namesOfMetaclasses := aCollectionOfClasses collect:[:eachClass | eachClass theMetaclass name] as:Array.
+ namesOfClasses := (aCollectionOfClasses collect:[:eachClass | eachClass theNonMetaclass name]) asArray.
+ namesOfMetaclasses := (aCollectionOfClasses collect:[:eachClass | eachClass theMetaclass name]) asArray.
self do:[:aChange |
|changeClassName changeClass|
@@ -1532,7 +1532,7 @@
|selected alreadyProcessed classes prev|
- classes := aCollectionOfClasses collect:[:eachClass | eachClass theNonMetaclass] as:Array.
+ classes := (aCollectionOfClasses collect:[:eachClass | eachClass theNonMetaclass]) asArray.
selected := Set new.
alreadyProcessed := Set new.
@@ -1568,7 +1568,7 @@
|selected classes |
- classes := aCollectionOfClasses collect:[:eachClass | eachClass theNonMetaclass] as:Array.
+ classes := (aCollectionOfClasses collect:[:eachClass | eachClass theNonMetaclass]) asArray.
selected := ChangeSet new.
@@ -2248,6 +2248,7 @@
!
classNameOf:aReceiver
+ "old"
| nameSpace isMeta clsNode clsName |
nameSpace := Class nameSpaceQuerySignal query.
@@ -2278,13 +2279,53 @@
clsName := clsName , ' class'.
].
- ^(nameSpace ~~ Smalltalk and:[(clsName startsWith: nameSpace name) not])
- ifTrue:[nameSpace name , '::' , clsName]
- ifFalse:[clsName].
+ (nameSpace ~~ Smalltalk and:[(clsName startsWith: nameSpace name) not])
+ ifTrue:[
+ ^ nameSpace name , '::' , clsName
+ ] ifFalse:[
+ ^ clsName
+ ].
"Modified: / 30-01-2013 / 10:02:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
+classNameOfRememberingNamespace:aReceiver
+ "new"
+
+ | nameSpace clsName rr|
+
+ nameSpace := Class nameSpaceQuerySignal query.
+
+ (aReceiver isUnaryMessage) ifTrue:[
+ rr := aReceiver receiver.
+ (aReceiver selector == #classSide) ifTrue:[
+ clsName := (rr name) , ' classSide'
+ ] ifFalse:[
+ (aReceiver selector == #class) ifTrue:[
+ clsName := (rr name) , ' class'
+ ] ifFalse:[
+ self error:'unhandled receiver message'.
+ ].
+ ]
+ ] ifFalse:[
+ clsName := aReceiver name.
+ ].
+
+ (nameSpace ~~ Smalltalk and:[(clsName startsWith: nameSpace name) not])
+ ifTrue:[
+ "/ old: remember namespace in name
+ "/ ^ nameSpace name , '::' , clsName
+ "/ new: remember in override
+ nameSpaceOverride := nameSpace.
+ ^ clsName
+ ] ifFalse:[
+ nameSpaceOverride := nil.
+ ^ clsName
+ ].
+
+ "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: ...
@@ -2295,12 +2336,11 @@
self error:'unexpected change' mayProceed:true.
^ false.
].
- className := self classNameOf:receiverReceiver.
+
+ "/ className := self classNameOf:receiverReceiver.
+ className := self classNameOfRememberingNamespace:receiverReceiver.
self assert:className notNil.
-"/ nameSpace ~~ Smalltalk ifTrue:[
-"/ className := nameSpace name , '::' , className
-"/ ].
methodSelector := (receiver arguments at:1) evaluate.
self assert:methodSelector notNil.
^ true.
@@ -2312,6 +2352,10 @@
^ self classNameOf:receiver
!
+receiversClassNameRememberingNamespace
+ ^ self classNameOfRememberingNamespace:receiver
+!
+
variableNameOfReceiver
receiver isVariable ifFalse:[ ^ nil ].
@@ -2366,7 +2410,7 @@
|selector category categories attributes change|
selector := arguments first value.
- className := self receiversClassName.
+ className := self receiversClassNameRememberingNamespace.
categories := OrderedCollection new.
attributes := OrderedCollection new.
@@ -2389,6 +2433,7 @@
selector:selector
source:(parseTree printString)
category:(categories first).
+ change nameSpaceOverride:nameSpaceOverride.
self addChange:change.
] ifFalse:[
self halt:'multiple/missing categories not supported'.
@@ -2403,6 +2448,7 @@
className:className
selector:selector
privacy:(attributes first asSymbol).
+ change nameSpaceOverride:nameSpaceOverride.
change source:(parseTree printString).
self addChange:change.
].
@@ -2415,13 +2461,11 @@
handleClassCommentChange
|change|
- className := self receiversClassName.
-"/ nameSpace ~~ Smalltalk ifTrue:[
-"/ className := nameSpace name , '::' , className
-"/ ].
+ className := self receiversClassNameRememberingNamespace.
change := ClassCommentChange new.
change className:className comment:(arguments at:1) evaluate.
+ change nameSpaceOverride:nameSpaceOverride.
change source:(parseTree printString).
self addChange:change.
^ true
@@ -2431,16 +2475,19 @@
|nameSpace change|
className := (arguments at:1) evaluate.
-"/ nameSpace ~~ Smalltalk ifTrue:[
-"/ className := nameSpace name , '::' , className
-"/ ].
+
nameSpace := Class nameSpaceQuerySignal query.
- nameSpace ~~ Smalltalk ifTrue:[
- className := nameSpace name , '::' , className
- ].
+ (nameSpace == Smalltalk) ifTrue:[ nameSpace := nil ].
+
+ "/ old: remember namespace in className
+"/ nameSpace ~~ Smalltalk ifTrue:[
+"/ className := nameSpace name , '::' , className
+"/ ].
change := ClassDefinitionChange new.
change className:className; source:(parseTree printString).
+ "/ new: remember in override
+ change nameSpaceOverride:nameSpace.
receiver isVariable ifTrue:[
change superClassName:receiver name.
].
@@ -2475,16 +2522,22 @@
"Modified: / 30-08-2010 / 13:56:32 / cg"
!
+handleClassInitializeChange
+ |change|
+
+ change := DoItChange new source: chunk.
+ self addChange: change.
+ ^ true
+!
+
handleClassInstanceVariableDefinitionChange
|change|
- className := self receiversClassName.
-
-"/ nameSpace ~~ Smalltalk ifTrue:[
-"/ className := nameSpace name , '::' , className
-"/ ].
+ className := self receiversClassNameRememberingNamespace.
+
change := ClassInstVarDefinitionChange new.
change className:className.
+ change nameSpaceOverride:nameSpaceOverride.
change source:(parseTree printString).
change classInstVarNames:(parseTree arguments first value asCollectionOfWords asArray).
self addChange:change.
@@ -2506,6 +2559,7 @@
selector:methodSelector
category:(arguments at:1) evaluate.
+ change nameSpaceOverride:nameSpaceOverride.
self addChange:change.
^ true
@@ -2515,10 +2569,7 @@
handleMethodCategoryRenameChange
|change|
- className := self receiversClassName.
-"/ nameSpace ~~ Smalltalk ifTrue:[
-"/ className := nameSpace name , '::' , className
-"/ ].
+ className := self receiversClassNameRememberingNamespace.
change := MethodCategoryRenameChange new.
change
@@ -2526,6 +2577,7 @@
oldCategoryName:(arguments at:1) evaluate
newCategoryName:(arguments at:2) evaluate.
+ change nameSpaceOverride:nameSpaceOverride.
self addChange:change.
^ true
!
@@ -2555,16 +2607,14 @@
handleMethodChangeUnsafe
|priv categoryName methodSource changes change parser |
+ className := self receiversClassNameRememberingNamespace.
+
(selector == #'ignoredMethodsFor:') ifTrue:[
priv := #ignored.
] ifFalse:[
priv := nil
].
classIsJava := false.
- className := self receiversClassName.
-"/ nameSpace ~~ Smalltalk ifTrue:[
-"/ className := nameSpace name , '::' , className
-"/ ].
((selector == #'methods')
or:[(selector == #'publicMethods')
or:[(selector == #'methodsFor')]]) ifTrue:[
@@ -2607,6 +2657,7 @@
privacy:priv.
change classIsJava: classIsJava.
+ change nameSpaceOverride:nameSpaceOverride.
self addChange:change.
inputStream skipSeparators.
@@ -2633,6 +2684,7 @@
selector:methodSelector
package:(arguments at:1) evaluate.
+ change nameSpaceOverride:nameSpaceOverride.
self addChange:change.
^ true
@@ -2652,6 +2704,7 @@
selector:methodSelector
privacy:(arguments at:1) evaluate.
+ change nameSpaceOverride:nameSpaceOverride.
self addChange:change.
^ true
@@ -2677,28 +2730,7 @@
!
handlePrimitiveChange
- |change primSource|
-
- className := self receiversClassName.
-"/ nameSpace ~~ Smalltalk ifTrue:[
-"/ className := nameSpace name , '::' , className
-"/ ].
-
- inputStream skipSeparators.
- primSource := inputStream nextChunk.
-
- selector == #'primitiveDefinitions' ifTrue:[
- change := ClassPrimitiveDefinitionsChange new
- ] ifFalse:[
- selector == #'primitiveFunctions' ifTrue:[
- change := ClassPrimitiveFunctionsChange new
- ] ifFalse:[
- change := ClassPrimitiveVariablesChange new
- ]
- ].
- change className:className source:primSource.
- self addChange:change.
- ^ true
+ self handlePrimitiveChange:nil
!
handlePrimitiveChange: sourceOrNil
@@ -2707,10 +2739,8 @@
|change primSource|
- className := self receiversClassName.
-"/ nameSpace ~~ Smalltalk ifTrue:[
-"/ className := nameSpace name , '::' , className
-"/ ].
+ className := self receiversClassNameRememberingNamespace.
+
sourceOrNil notNil ifTrue:[
primSource := sourceOrNil
] ifFalse:[
@@ -2728,6 +2758,7 @@
]
].
change className:className source:primSource.
+ change nameSpaceOverride:nameSpaceOverride.
self addChange:change.
^ true
@@ -2757,9 +2788,7 @@
|change|
className := self receiversClassName.
-"/ nameSpace ~~ Smalltalk ifTrue:[
-"/ className := nameSpace name , '::' , className
-"/ ].
+
methodSelector := (arguments at:1) evaluate.
change := MethodRemoveChange new.
change className:className selector:methodSelector.
@@ -2790,7 +2819,8 @@
comment := inputStream nextChunk.
- className := self receiversClassName.
+ className := self receiversClassNameRememberingNamespace.
+
change := ClassCommentChange new.
change className:className comment:comment.
change source:(parseTree printString).
@@ -2829,7 +2859,7 @@
] on: Error do:[:ex|
| change |
- change := InvalidChange new source: chunk.
+ change := DoItChange new source: chunk.
self addChange: change.
].
@@ -2859,6 +2889,7 @@
^ self handleClassDefinitionChange.
].
+ self error:'unhandled change selector: ',selector.
^ false
"Created: / 24-01-2012 / 17:33:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -2880,13 +2911,18 @@
| kind sel |
inputStream skip: 5.
kind := inputStream upTo: Character space.
+ (kind endsWith:$:) ifTrue:[
+ kind := kind copyWithoutLast:1
+ ].
sel := ('process_', kind) asSymbolIfInterned.
sel notNil ifTrue:[
- MessageNotUnderstood handle:[
- "/Unknown info record, do nothing"
+ MessageNotUnderstood handle:[
+ self process_otherInfo:kind
] do:[
self perform: sel.
]
+ ] ifFalse:[
+ self process_otherInfo:kind
]
"Created: / 30-03-2012 / 16:44:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -2916,12 +2952,22 @@
^ self handleClassCommentChange.
!
+process_encoding
+ "St/X encoding info record. Ignored"
+!
+
process_ignoredMethodsFor_
"'ignoredMethodsFor:' chunk (ST/X)"
^ self handleMethodChange.
!
+process_initialize
+ "'class initialize' chunk"
+
+ ^ self handleClassInitializeChange
+!
+
process_instanceVariableNames_
"'instanceVariableNames:' chunk (ST/X)"
@@ -2964,6 +3010,18 @@
^ self handleNameSpaceCreationChange.
!
+process_otherInfo:what
+ "'---- <what> 12-03-2012 10:49:40 ----'
+
+ '<what>' is already read from inputStream.
+ "
+
+ "/ inputStream skipSeparators.
+ self addChange: (InfoChange type: what data: (inputStream upToEnd) timestamp: nil)
+
+ "Created: / 18-05-2012 / 17:03:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
process_package_
"'package:' chunk (ST/X)"
@@ -3502,8 +3560,7 @@
].
].
- aStream nextPutAll: (nonMetaInfo definition definitionStringInNamespace: namespaceName).
- aStream nextPutChunkSeparator.
+ aStream nextChunkPut: (nonMetaInfo definition definitionStringInNamespace: namespaceName).
aStream cr; cr.
"/
@@ -4450,11 +4507,11 @@
!ChangeSet class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.217 2013-03-31 20:08:50 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.222 2013-04-15 13:39:06 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.217 2013-03-31 20:08:50 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/ChangeSet.st,v 1.222 2013-04-15 13:39:06 cg Exp $'
!
version_HG
--- a/ClassChange.st Thu Apr 11 14:36:03 2013 +0200
+++ b/ClassChange.st Tue Apr 16 09:44:57 2013 +0200
@@ -208,6 +208,7 @@
className:aString
"set the className of the change"
+ self assert:aString notNil.
className := aString
"Modified: / 15.7.1996 / 09:28:35 / cg"
@@ -382,7 +383,7 @@
The format is suitable for a human - not meant to be read back."
source isNil ifTrue:[
- aStream nextPutAll:'an empty change'.
+ aStream nextPutAll:self class nameWithArticle,'-change (no source)'.
^ self
].
aStream nextPutAll:(self class name , ' - ' , source string firstLine , '...').
@@ -394,7 +395,7 @@
cutMyNameSpaceOf:aString
|ns|
- aString isNil ifTrue:[ ^ aString ].
+ aString isNil ifTrue:[ ^ nil ].
(ns := self nameSpaceOverride) isNil ifTrue:[ ^ aString ].
(aString startsWith:(ns , '.')) ifTrue:[ ^ self cutNameSpaceOf:aString ].
(aString startsWith:(ns , '::')) ifTrue:[ ^ self cutNameSpaceOf:aString ].
@@ -450,11 +451,11 @@
!ClassChange class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/ClassChange.st,v 1.69 2013-03-27 18:18:35 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/ClassChange.st,v 1.71 2013-04-15 08:42:41 stefan Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic3/ClassChange.st,v 1.69 2013-03-27 18:18:35 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/ClassChange.st,v 1.71 2013-04-15 08:42:41 stefan Exp $'
!
version_HG
--- a/ClassCommentChange.st Thu Apr 11 14:36:03 2013 +0200
+++ b/ClassCommentChange.st Tue Apr 16 09:44:57 2013 +0200
@@ -44,12 +44,14 @@
"
! !
+
!ClassCommentChange class methodsFor:'others'!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic3/ClassCommentChange.st,v 1.34 2011/11/25 16:45:02 cg Exp §'
+ ^ '$Header: /cvs/stx/stx/libbasic3/ClassCommentChange.st,v 1.35 2013-04-14 06:57:10 cg Exp $'
! !
+
!ClassCommentChange methodsFor:'accessing'!
className:clsName comment:aCommentString
@@ -69,8 +71,19 @@
"Created: / 16.2.1998 / 14:16:45 / cg"
! !
+
!ClassCommentChange methodsFor:'comparing'!
+isConflict
+ "true if this change is different than what is already in the image
+ (i.e. it overwrites some existing code)"
+
+ |cls|
+
+ ^ (cls := self changeClass) notNil
+ and:[ cls comment ~= self comment ]
+!
+
isForSameAs:changeB
"return true, if the given change represents a change for the same
thingy as the receiver (i.e. same method, same definition etc.)."
@@ -93,14 +106,13 @@
source
"synthesize the changes source"
- ^ String
- streamContents:
- [:s |
- self printOn:s.
- comment storeOn:s.
- ]
+ ^ String streamContents: [:s |
+ self printOn:s.
+ comment storeOn:s.
+ ]
! !
+
!ClassCommentChange methodsFor:'converting'!
asAntiChange
@@ -110,6 +122,7 @@
"Created: / 26-11-2009 / 16:09:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+
!ClassCommentChange methodsFor:'printing & storing'!
printOn:aStream
@@ -122,7 +135,9 @@
"/ ns notNil ifTrue:[
"/ aStream nextPutAll:ns; nextPutAll:'::'
"/ ].
- aStream nextPutAll:self className; nextPutAll:' comment:'
+ aStream
+ nextPutAll:self className;
+ nextPutAll:' comment:'
!
printWithoutClassNameOn:aStream
@@ -132,6 +147,7 @@
aStream nextPutAll:'comment:'
! !
+
!ClassCommentChange methodsFor:'queries'!
isClassCommentChange
@@ -140,6 +156,7 @@
! !
+
!ClassCommentChange methodsFor:'visiting'!
acceptChangeVisitor:aVisitor
@@ -148,10 +165,11 @@
"Created: / 25-11-2011 / 17:13:02 / cg"
! !
+
!ClassCommentChange class methodsFor:'documentation'!
version
- ^ '$Header: ClassCommentChange.st 1909 2012-03-31 00:14:49Z vranyj1 $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/ClassCommentChange.st,v 1.35 2013-04-14 06:57:10 cg Exp $'
!
version_HG
--- a/ClassDefinitionChange.st Thu Apr 11 14:36:03 2013 +0200
+++ b/ClassDefinitionChange.st Tue Apr 16 09:44:57 2013 +0200
@@ -51,7 +51,7 @@
!ClassDefinitionChange class methodsFor:'others'!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic3/ClassDefinitionChange.st,v 1.76 2013-03-30 01:54:34 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/ClassDefinitionChange.st,v 1.79 2013-04-14 06:55:37 cg Exp $'
! !
@@ -351,12 +351,32 @@
!ClassDefinitionChange methodsFor:'comparing'!
+isConflict
+ "true if this change is different than what is already in the image
+ (i.e. it overwrites some existing code)"
+
+ |cls|
+
+ (cls := self changeClass) isNil ifTrue:[^ false].
+ cls superclass name ~= superClassName ifTrue:[ ^ true ].
+ cls instanceVariableString ~= instanceVariableNames ifTrue:[ ^ true ].
+ cls classVariableString ~= classVariableNames ifTrue:[ ^ true ].
+ cls class instanceVariableString ~= classInstanceVariableNames ifTrue:[ ^ true ].
+ cls sharedPoolNames ~= poolDictionaries ifTrue:[ ^ true ].
+ cls category ~= category ifTrue:[ ^ true ].
+ cls isPrivate ifTrue:[
+ cls owningClass name ~= owningClassName ifTrue:[ ^ true ].
+ ].
+ cls definitionSelector ~= self definitionSelector ifTrue:[ ^ true ].
+ ^ false
+!
+
isForSameAs:changeB
"return true, if the given change represents a change for the same
thingy as the receiver (i.e. same method, same definition etc.)."
changeB isClassDefinitionChange ifFalse:[^ false].
- ^ className = changeB className
+ ^ self className = changeB className.
!
sameAs:changeB
@@ -383,14 +403,16 @@
!ClassDefinitionChange methodsFor:'printing & storing'!
definitionString
- |ns classNameUsed superClassNameUsed selPart|
+ ^ self definitionStringInNamespace: (self nameSpaceOverride)
+!
- ns := self nameSpaceOverride.
+definitionStringInNamespace: nsOrNil
+ |classNameUsed superClassNameUsed selPart|
objectType == #variable ifTrue:[
^ String streamContents:[:stream |
- ns notNil ifTrue:[
- stream nextPutAll:((ns asCollectionOfSubstringsSeparatedBy:$.) asStringWith:'::')
+ nsOrNil notNil ifTrue:[
+ stream nextPutAll:((nsOrNil asCollectionOfSubstringsSeparatedBy:$.) asStringWith:'::')
] ifFalse:[
self halt:'can this happen ?'.
stream nextPutAll:'Smalltalk'
@@ -407,6 +429,7 @@
"/ local name as argument, not the full name
classNameUsed := self localClassName.
+ "/ selPart is the subclass:/variableSubclass/variableByteSubclass:/... - part
selPart := (self definitionSelector ? #'subclass:instanceVariableNames:classVariableNames:poolDictionaries:category:')
keywords first.
@@ -414,117 +437,30 @@
stream
nextPutAll:superClassNameUsed;
nextPutAll:' ',selPart;
- nextPutAll: classNameUsed asSymbol storeString;
- cr;
- spaces:4;
- nextPutAll:'instanceVariableNames: ';
- nextPutAll:(instanceVariableNames ? '') storeString;
- cr;
- spaces:4;
- nextPutAll:'classVariableNames: ';
- nextPutAll:(classVariableNames ? '') storeString;
- cr;
- spaces:4;
- nextPutAll:'poolDictionaries: ';
- nextPutAll:(poolDictionaries ? '') storeString;
- cr.
+ nextPutLine: classNameUsed asSymbol storeString;
+ nextPutAll:' instanceVariableNames: ';
+ nextPutLine:(instanceVariableNames ? '') storeString;
+ nextPutAll:' classVariableNames: ';
+ nextPutLine:(classVariableNames ? '') storeString;
+ nextPutAll:' poolDictionaries: ';
+ nextPutLine:(poolDictionaries ? '') storeString.
private == true ifTrue:[
stream
- spaces:4;
- nextPutAll:'privateIn: ';
+ nextPutAll:' privateIn: ';
nextPutAll:(self owningClassName)
] ifFalse:[
stream
- spaces:4;
- nextPutAll:'category: ';
- nextPutAll:(category ? '') storeString
+ nextPutAll:' category: ';
+ nextPutAll:(category ? '') asString storeString
].
]
"Modified: / 13-06-2012 / 13:01:58 / cg"
!
-definitionStringInNamespace: ns
- | classNameUsed superClassNameUsed |
-
- objectType == #variable ifTrue:[
- ^ String streamContents:[:stream |
- ns notNil ifTrue:[
- stream
- nextPutAll:((ns asCollectionOfSubstringsSeparatedBy:$.) asStringWith:'::')
- ] ifFalse:[
- self halt:'can this happen ?'.
- stream
- nextPutAll:'Smalltalk'
- ].
-
- stream
- nextPutAll:' addClassVarName:';
- nextPutAll:className asString storeString
- ].
- ].
-
- superClassNameUsed := self superClassName.
- classNameUsed := self classNameWithoutNamespace.
+definitionStringWithoutNamespace
+ "cg - huh - who needs that? (the definitionString already does NOT include the classes namespace)"
- ^ String streamContents:[:stream |
- self isPrivateClassDefinitionChange ifFalse:[
- stream
- nextPutAll:(superClassNameUsed ? 'nil');
- nextPutAll:' subclass:';
- nextPutAll: classNameUsed asSymbol storeString
- ;
- cr;
- tab;
- nextPutAll:'instanceVariableNames:';
- nextPutAll:(instanceVariableNames ? '') storeString;
- cr;
- tab;
- nextPutAll:'classVariableNames:';
- nextPutAll:(classVariableNames ? '') storeString;
- cr;
- tab;
- nextPutAll:'poolDictionaries:';
- nextPutAll:(poolDictionaries ? '') storeString;
- cr;
- tab;
- nextPutAll:'category:';
- nextPutAll:(category ? '') storeString;
- cr
- ] ifTrue:[
- stream
- nextPutAll:superClassNameUsed;
- nextPutAll:' subclass:';
- nextPutAll: (self className copyFrom: owningClassName size + 3) asSymbol storeString
- ;
- cr;
- tab;
- nextPutAll:'instanceVariableNames:';
- nextPutAll:(instanceVariableNames ? '') storeString;
- cr;
- tab;
- nextPutAll:'classVariableNames:';
- nextPutAll:(classVariableNames ? '') storeString;
- cr;
- tab;
- nextPutAll:'poolDictionaries:';
- nextPutAll:(poolDictionaries ? '') storeString;
- cr;
- tab;
- nextPutAll:'privateIn:';
- nextPutAll:
- (ns isNil
- ifTrue:[owningClassName]
- ifFalse:[owningClassName copyFrom: ns size + 3]);
- cr
- ]
- ]
-
- "Modified: / 06-10-2011 / 17:02:05 / cg"
- "Created: / 20-03-2012 / 19:40:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-definitionStringWithoutNamespace
|ns classNameUsed superClassNameUsed|
ns := self nameSpaceOverride.
@@ -815,7 +751,7 @@
!ClassDefinitionChange class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/ClassDefinitionChange.st,v 1.76 2013-03-30 01:54:34 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/ClassDefinitionChange.st,v 1.79 2013-04-14 06:55:37 cg Exp $'
!
version_HG
--- a/ClassRemoveChange.st Thu Apr 11 14:36:03 2013 +0200
+++ b/ClassRemoveChange.st Tue Apr 16 09:44:57 2013 +0200
@@ -56,7 +56,7 @@
!ClassRemoveChange methodsFor:'printing'!
printOn:aStream
- aStream nextPutAll:'Smalltalk removeClass:';
+ aStream nextPutAll:'Smalltalk removeClass: ';
nextPutAll:className asString
"Created: / 16-02-1998 / 14:19:48 / cg"
@@ -82,7 +82,7 @@
!ClassRemoveChange class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/ClassRemoveChange.st,v 1.6 2013-03-26 12:13:27 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/ClassRemoveChange.st,v 1.7 2013-04-02 19:21:31 cg Exp $'
!
version_HG
--- a/ClassRenameChange.st Thu Apr 11 14:36:03 2013 +0200
+++ b/ClassRenameChange.st Tue Apr 16 09:44:57 2013 +0200
@@ -45,6 +45,7 @@
"
! !
+
!ClassRenameChange methodsFor:'accessing'!
oldName
@@ -60,6 +61,7 @@
"Created: / 16.2.1998 / 14:22:38 / cg"
! !
+
!ClassRenameChange methodsFor:'applying'!
apply
@@ -86,27 +88,30 @@
"Created: / 31-07-2012 / 18:58:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+
!ClassRenameChange methodsFor:'printing'!
printOn:aStream
- aStream nextPutAll:'Smalltalk renameClass:';
+ aStream nextPutAll:'Smalltalk renameClass: ';
nextPutAll:oldName;
- nextPutAll:' to:';
+ nextPutAll:' to: ';
nextPutAll:className storeString
"Created: / 16.2.1998 / 14:23:35 / cg"
! !
+
!ClassRenameChange methodsFor:'queries'!
isClassRenameChange
^ true
! !
+
!ClassRenameChange class methodsFor:'documentation'!
version
- ^ '$Header: ClassRenameChange.st 1948 2012-07-31 18:04:54Z vranyj1 $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/ClassRenameChange.st,v 1.6 2013-04-02 19:21:26 cg Exp $'
!
version_HG
--- a/InfoChange.st Thu Apr 11 14:36:03 2013 +0200
+++ b/InfoChange.st Tue Apr 16 09:44:57 2013 +0200
@@ -90,19 +90,24 @@
printOn:aStream
- type == #snapshot ifTrue:[
- aStream nextPutAll:'Snapshot'; space; nextPutAll: data.
+ type = 'snapshot' ifTrue:[
+ aStream nextPutAll:'---- snapshot '; space; nextPutAll: data.
+ timeOfChangeIfKnown notNil ifTrue:[ timeOfChangeIfKnown printOn: aStream ].
+ aStream nextPutAll:' ---- '.
^self
].
- type == #start ifTrue:[
+ type = 'start' ifTrue:[
aStream nextPutAll:'System start'.
^self
].
- type == #rake ifTrue:[
+ type = 'rake' ifTrue:[
aStream nextPutAll:'rake'; space; nextPutAll: data.
^self
].
+ "/ default
+ aStream nextPutAll:'---- '; nextPutAll:type; space; nextPutAll: data.
+
"Created: / 18-05-2012 / 17:02:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
@@ -110,11 +115,11 @@
!InfoChange class methodsFor:'documentation'!
version
- ^ '$Header: InfoChange.st 1946 2012-07-31 14:00:47Z vranyj1 $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/InfoChange.st,v 1.2 2013-04-02 19:20:25 cg Exp $'
!
version_CVS
- ^ '§Header: /cvs/stx/stx/libbasic3/InfoChange.st,v 1.1 2012-07-31 13:28:44 +0100 vrany Exp §'
+ ^ '$Header: /cvs/stx/stx/libbasic3/InfoChange.st,v 1.2 2013-04-02 19:20:25 cg Exp $'
!
version_HG
--- a/Make.proto Thu Apr 11 14:36:03 2013 +0200
+++ b/Make.proto Tue Apr 16 09:44:57 2013 +0200
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/libbasic3/Make.proto,v 1.134 2013-01-18 13:02:55 cg Exp $
+# $Header: /cvs/stx/stx/libbasic3/Make.proto,v 1.135 2013-04-02 19:24:04 cg Exp $
#
# DO NOT EDIT
# automagically generated from the projectDefinition: stx_libbasic3.
@@ -34,7 +34,7 @@
# add the path(es) here:,
# ********** OPTIONAL: MODIFY the next lines ***
# LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libbasic2
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic
# if you need any additional defines for embedded C code,
@@ -127,6 +127,11 @@
cd ../libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)"
+
+# build all packages containing referenced classes for this package
+# they are nor needed to compile the package
+references:
+
# build all packages containing referenced classes for this package
# they are nor needed to compile the package
references:
--- a/Make.spec Thu Apr 11 14:36:03 2013 +0200
+++ b/Make.spec Tue Apr 16 09:44:57 2013 +0200
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/libbasic3/Make.spec,v 1.84 2013-01-18 13:02:54 cg Exp $
+# $Header: /cvs/stx/stx/libbasic3/Make.spec,v 1.85 2013-04-02 19:24:02 cg Exp $
#
# DO NOT EDIT
# automagically generated from the projectDefinition: stx_libbasic3.
--- a/MethodChange.st Thu Apr 11 14:36:03 2013 +0200
+++ b/MethodChange.st Tue Apr 16 09:44:57 2013 +0200
@@ -266,7 +266,7 @@
apply
"apply the change"
- |class replacementClassName suggestion|
+ |class replacementClassName suggestion oldMethodOrNil oldPackage newPackage defClass|
class := self changeClass.
class isNil ifTrue:[
@@ -315,6 +315,21 @@
]
]
].
+
+ "/ if overwriting an existing method from another package,
+ "/ put the existing method into the packagessafe
+ oldMethodOrNil := class compiledMethodAt:selector.
+ oldMethodOrNil notNil ifTrue:[
+ oldPackage := oldMethodOrNil package.
+ newPackage := Class packageQuerySignal query.
+ (newPackage notNil and:[newPackage ~= oldPackage]) ifTrue:[
+ defClass := oldPackage asPackageId projectDefinitionClass.
+ defClass notNil ifTrue:[
+ defClass rememberOverwrittenMethod:oldMethodOrNil inClass:class.
+ ]
+ ].
+ ].
+
class compile:source classified:methodCategory logged:true.
"Modified: / 07-09-2011 / 21:09:19 / cg"
@@ -323,6 +338,18 @@
!MethodChange methodsFor:'comparing'!
+isConflict
+ "true if this change is different than what is already in the image
+ (i.e. it overwrites some existing code)"
+
+ |cls mthd|
+
+ (cls := self changeClass) isNil ifTrue:[^ false].
+ (mthd := cls compiledMethodAt:selector) isNil ifTrue:[^ false].
+ ^ mthd category ~= methodCategory
+ or:[ mthd source ~= self source ]
+!
+
isForSameAs:changeB
"return true, if the given change represents a change for the same
thingy as the receiver (i.e. same method, same definition etc.)."
@@ -404,12 +431,12 @@
The format is suitable for a human - not meant to be read back."
aStream
- nextPutAll:(self className ? 'unnamed');
- nextPutAll:'>>';
- nextPutAll:(selector ? '?');
- nextPutAll:' {';
- nextPutAll:(methodCategory ? '?');
- nextPutAll:'}'
+ nextPutAll:(self className ? 'unnamed');
+ nextPutAll:' >> ';
+ nextPutAll:(selector ? '?');
+ nextPutAll:' {';
+ nextPutAll:(methodCategory ? '?');
+ nextPutAll:'}'
"Modified: / 04-10-2006 / 16:46:01 / cg"
"Modified: / 07-11-2008 / 08:29:03 / Jan Vrany <vranyj1@fel.cvut.cz>"
@@ -511,11 +538,11 @@
!MethodChange class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/MethodChange.st,v 1.70 2013-03-28 12:23:42 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/MethodChange.st,v 1.73 2013-04-14 11:33:33 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic3/MethodChange.st,v 1.70 2013-03-28 12:23:42 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/MethodChange.st,v 1.73 2013-04-14 11:33:33 cg Exp $'
!
version_HG
--- a/ProjectProblem.st Thu Apr 11 14:36:03 2013 +0200
+++ b/ProjectProblem.st Tue Apr 16 09:44:57 2013 +0200
@@ -528,31 +528,31 @@
"Created: / 26-07-2012 / 10:21:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!ProjectProblem::ClassProblem methodsFor:'fixing'!
+
+doUpdateAllProjectDefinitions
+ "full update the project definition class;
+ will do a rescan to add all missing items"
+
+ | def |
+
+ def := self packageDefinitionClass.
+ def isNil ifTrue:[ ^ false ].
+
+ def
+ updateMethodsCodeUsingCompiler:Compiler
+ ignoreOldDefinition:false.
+
+ UserNotification notify: ('Project definitions updated. Do not forget to check in build support files!!').
+ ^true
+! !
+
!ProjectProblem::InconsistentProjectDefinition methodsFor:'fixes'!
fixes
^Array
- with: (Array with: 'Regenerate specs in ProjectDefinitions' with: [ self regenerateProjectDefinition ])
-!
-
-regenerateProjectDefinition
- |defClass|
-
- defClass := self packageDefinitionClass.
- Class packageQuerySignal
- answer:defClass package
- do:[
- defClass theNonMetaclass
- forEachContentsMethodsCodeToCompileDo:
- [:code :category |
- Compiler
- compile:code
- forClass:defClass theMetaclass
- inCategory:category.
- ]
- ignoreOldDefinition:false
- ].
+ with: (Array with: 'Full update of the project definitions (rescan)' with: [ self doUpdateAllProjectDefinitions ])
! !
!ProjectProblem::ClassListedButDoesNotExist methodsFor:'accessing'!
@@ -674,8 +674,9 @@
fixes
^Array
- with: (Array with: 'Include in project' with: [ self doIncludeInProject ])
- with: (Array with: 'Include in project as autoloaded' with: [ self doIncludeInProjectAsAutoloaded ])
+ with: (Array with: 'Add class to project' with: [ self doIncludeInProject ])
+ with: (Array with: 'Add class to project as autoloaded' with: [ self doIncludeInProjectAsAutoloaded ])
+ with: (Array with: 'Full update of the project definitions (rescan)' with: [ self doUpdateAllProjectDefinitions ])
"Created: / 26-07-2012 / 10:41:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
@@ -833,6 +834,38 @@
selector := something.
! !
+!ProjectProblem::MethodProblem methodsFor:'fixes'!
+
+doRemoveMethodFromExtensionsList
+ "update the extension method info in the project definition.
+ Return false if fix fails, true otherwise"
+
+ | def mthd |
+
+ def := self packageDefinitionClass.
+ def isNil ifTrue:[ ^ false ].
+ mthd := self method.
+ mthd isNil ifTrue:[ ^ false ].
+
+ def excludeMethods:(Array with:mthd) usingCompiler:nil.
+ UserNotification notify: ('ProjectDefinition updated. Do not forget to check it in!!').
+ ^true
+!
+
+doRemoveNamedMethodFromExtensionsList
+ "update the extension method info in the project definition.
+ Return false if fix fails, true otherwise"
+
+ | def |
+
+ def := self packageDefinitionClass.
+ def isNil ifTrue:[ ^ false ].
+
+ def excludeMethodFor:selector inClassNamed:className usingCompiler:nil.
+ UserNotification notify: ('ProjectDefinition updated. Do not forget to check it in!!').
+ ^true
+! !
+
!ProjectProblem::MethodProblem methodsFor:'utilities-HTML'!
linkToMethod
@@ -907,22 +940,6 @@
self method package:package
!
-doRemoveMethodFromExtensionsList
- "update the extension method info in the project definition.
- Return false if fix fails, true otherwise"
-
- | def mthd |
-
- def := self packageDefinitionClass.
- def isNil ifTrue:[ ^ false ].
- mthd := self method.
- mthd isNil ifTrue:[ ^ false ].
-
- def excludeMethods:(Array with:mthd) usingCompiler:nil.
- UserNotification notify: ('ProjectDefinition updated. Do not forget to check it in!!').
- ^true
-!
-
fixes
|mthd|
@@ -999,8 +1016,9 @@
fixes
^Array
- with: (Array with: 'Update project definition' with: [ self doUpdateExtensionMethodsInProject ])
+ with: (Array with: 'Add method to project' with: [ self doUpdateExtensionMethodsInProject ])
with: (Array with: 'Move to classes package' with: [ self doMoveToClassesPackage ])
+ with: (Array with: 'Full update of the project definitions (rescan)' with: [ self doUpdateAllProjectDefinitions ])
! !
!ProjectProblem::ExtensionMethodsClassDoesNotExist methodsFor:'accessing-description'!
@@ -1027,6 +1045,15 @@
"Modified: / 23-02-2012 / 14:22:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!ProjectProblem::ExtensionMethodsClassDoesNotExist methodsFor:'fixes'!
+
+fixes
+ ^Array
+ with: (Array with: 'Remove from the extensionMethodNames list' with: [ self doRemoveNamedMethodFromExtensionsList ])
+
+ "Created: / 26-07-2012 / 10:41:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!ProjectProblem::ClassListedBeforeItsSuperclass methodsFor:'accessing'!
superClassName
@@ -1323,6 +1350,10 @@
!ProjectProblem::MethodInNoPackage methodsFor:'accessing-description'!
+alreadyFixed
+ ^ (self method package ~= PackageId noProjectID)
+!
+
description
"Return a (HTML) describing the problem."
@@ -1368,6 +1399,15 @@
"Modified: / 23-02-2012 / 14:22:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
+!ProjectProblem::ExtensionMethodListedButDoesNotExist methodsFor:'fixes'!
+
+fixes
+ ^Array
+ with: (Array with: 'Remove from the extensionMethodNames list' with: [ self doRemoveNamedMethodFromExtensionsList ])
+
+ "Created: / 26-07-2012 / 10:41:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!ProjectProblem::MethodSourceCorrupted methodsFor:'accessing'!
severity
@@ -1454,16 +1494,17 @@
"Return a (HTML) describing the problem."
package = 'stx' ifTrue:[
- ^
+ ^
'Move your code to another package.
-<br>The package named "stx" is reserveed for exept''s ST/X development.'
+<br>The package name "stx" is reserveed for exept''s ST/X development.'
].
^
'A project definition class for package "%1" does not exist.
<br>Project definition classes keep the meta information of a package,
such as contents and build parameters.
-You <b>must</b> create it, otherwise package management won''t work.'
+You <b>must</b> create it, otherwise package management won''t work,
+and the package cannot be compiled to a binary dll.'
bindWith: package
"Modified: / 23-02-2012 / 13:29:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -1478,10 +1519,16 @@
!ProjectProblem::ProjectDefinitionDoesNotExist methodsFor:'fixing'!
doCreateAs:whatType
- ProjectDefinition
- definitionClassForPackage:package
- projectType: whatType
- createIfAbsent:true.
+ |prjDef|
+
+ prjDef := ProjectDefinition
+ definitionClassForPackage:package
+ projectType: whatType
+ createIfAbsent:true.
+
+ prjDef
+ updateMethodsCodeUsingCompiler:Compiler
+ ignoreOldDefinition:true
!
doCreateAsGUIApplication
@@ -1508,11 +1555,11 @@
!ProjectProblem class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/ProjectProblem.st,v 1.17 2013-03-30 21:02:36 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/ProjectProblem.st,v 1.21 2013-04-15 13:38:37 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic3/ProjectProblem.st,v 1.17 2013-03-30 21:02:36 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/ProjectProblem.st,v 1.21 2013-04-15 13:38:37 cg Exp $'
!
version_SVN
--- a/SourceCodeManagerUtilities.st Thu Apr 11 14:36:03 2013 +0200
+++ b/SourceCodeManagerUtilities.st Tue Apr 16 09:44:57 2013 +0200
@@ -825,7 +825,7 @@
sourceCodeForExtensions:aCollectionOfMethods package:aPackageID forManager:scmManagerOrNil
|s methodsSortedByName defClass|
- s := (String new:1000) writeStream.
+ s := CharacterWriteStream on:(String new:1000).
s nextPutAll:'"{ Package: '''.
s nextPutAll:aPackageID asString.
@@ -876,7 +876,6 @@
^ s contents.
"Created: / 25-07-2012 / 18:38:05 / cg"
- "Modified: / 29-03-2013 / 12:21:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
sourceCodeManagerFor:aClass
@@ -2714,7 +2713,7 @@
with:aProject allBold)
editViewClass:ListView
lines:10 columns:20
- initialAnswer:nil model:nil
+ initialAnswer:nil
setupWith:
[:v :d |
|removeButton|
@@ -3157,16 +3156,13 @@
|box y component resources answer
moduleHolder packageHolder fileNameHolder
module package fileName
- knownContainers knownPackages packageUpdater
+ allPackageIDs knownContainers knownPackages packageUpdater
packageBoxComponent fileNameBoxComponent fileNameUpdater|
- knownContainers := Set new.
- Smalltalk allClassesDo:[:cls | |pckg|
- pckg := cls package.
- pckg size > 0 ifTrue:[
- knownContainers add:(pckg upTo:$:)
- ]
- ].
+ allPackageIDs := Smalltalk allProjectIDs.
+
+ knownContainers := allPackageIDs collect:[:package | (package upTo:$:)] as:Set.
+
knownContainers := knownContainers asOrderedCollection.
knownContainers := knownContainers select:[:module | module isBlank not].
knownContainers sort.
@@ -3177,17 +3173,14 @@
theModulePrefix := moduleHolder value , ':'.
Cursor wait showWhile:[
- knownPackages := Set new.
- Smalltalk allClassesDo:[:cls | |pckg idx|
- pckg := cls package.
- pckg size > 0 ifTrue:[
- (pckg startsWith:theModulePrefix) ifTrue:[
- idx := pckg indexOf:$:.
- knownPackages add:(pckg copyFrom:idx + 1)
- ]
- ]
- ].
- knownPackages := knownPackages asOrderedCollection.
+ knownPackages :=
+ allPackageIDs
+ select:[:package | (package startsWith:theModulePrefix)]
+ thenCollect:[:package | |idx|
+ idx := package indexOf:$:.
+ (package copyFrom:idx + 1)].
+
+ knownPackages := knownPackages asSet asOrderedCollection.
knownPackages := knownPackages select:[:package | package isBlank not].
knownPackages sort.
packageBoxComponent list:knownPackages.
@@ -3912,11 +3905,11 @@
!SourceCodeManagerUtilities class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.269 2013-03-28 10:48:26 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.272 2013-04-04 09:34:44 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.269 2013-03-28 10:48:26 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.272 2013-04-04 09:34:44 cg Exp $'
!
version_HG
--- a/SourceCodeManagerUtilitiesForContainerBasedManagers.st Thu Apr 11 14:36:03 2013 +0200
+++ b/SourceCodeManagerUtilitiesForContainerBasedManagers.st Tue Apr 16 09:44:57 2013 +0200
@@ -494,7 +494,7 @@
!
checkinPackage:packageToCheckIn classes:doClasses extensions:doExtensions buildSupport:doBuild askForMethodsInOtherPackages:askForMethodsInOtherPackages
- |mgr classesToCheckIn methodsToCheckIn
+ |mgr classesToCheckIn methodsToCheckIn methodsInPrjDef
methodsInOtherPackages looseMethods otherPackages
msg classesInChangeSet newClasses checkinInfo originalCheckinInfo classesToTag|
@@ -568,8 +568,23 @@
checkinInfo validateConsistency ifTrue:[
self validateConsistencyOfPackage:packageToCheckIn doClasses:doClasses doExtensions:doExtensions.
- "/ could have changed/recompiled methods
- methodsToCheckIn := packageToCheckIn asPackageId projectDefinitionClass extensionMethods
+ "/ could have changed/recompiled methods...
+ "/ mhmh - should we checkin what is specified in the prj-def,
+ "/ or what is actually present in the image (in case user did not repair)???
+
+ methodsInPrjDef := packageToCheckIn asPackageId projectDefinitionClass extensionMethods.
+ methodsInPrjDef := methodsInPrjDef reject:[:m | m isNil].
+ methodsInPrjDef asSet ~= methodsToCheckIn asSet ifTrue:[
+ (Dialog
+ confirm:('Set of methods in image is different from what is specified in the project definition.\Check in image methods (%1) or definition methods (%2)?'
+ bindWith: methodsToCheckIn size
+ with: methodsInPrjDef size)
+ yesLabel:'Image Methods'
+ noLabel:'Definition Methods'
+ ) ifFalse:[
+ methodsToCheckIn := methodsInPrjDef.
+ ].
+ ].
].
(self
@@ -735,11 +750,11 @@
!SourceCodeManagerUtilitiesForContainerBasedManagers class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilitiesForContainerBasedManagers.st,v 1.8 2013-03-31 00:27:16 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilitiesForContainerBasedManagers.st,v 1.9 2013-04-02 20:48:44 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilitiesForContainerBasedManagers.st,v 1.8 2013-03-31 00:27:16 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilitiesForContainerBasedManagers.st,v 1.9 2013-04-02 20:48:44 cg Exp $'
!
version_HG
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/TraitClassTraitDefinitionChange.st Tue Apr 16 09:44:57 2013 +0200
@@ -0,0 +1,68 @@
+"{ Package: 'stx:libbasic3' }"
+
+ClassChange subclass:#TraitClassTraitDefinitionChange
+ instanceVariableNames:'baseTrait traitComposition'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'System-Changes'
+!
+
+!TraitClassTraitDefinitionChange class methodsFor:'documentation'!
+
+documentation
+"
+ instances represent trait changes.
+ These are not present or supported (currently) in st/x, but may be encountered
+ when reading a monticello package containing traits.
+ Mostly experimental.
+"
+! !
+
+!TraitClassTraitDefinitionChange methodsFor:'accessing'!
+
+baseTrait
+ ^ baseTrait
+!
+
+baseTrait:something
+ baseTrait := something.
+!
+
+source
+ ^ String streamContents:[:s |
+ s
+ nextPutAll: baseTrait;
+ nextPutAll: ' classTrait '; cr;
+ nextPutAll: ' uses: '.
+ traitComposition isEmptyOrNil ifTrue:[
+ s nextPutAll: '{}'.
+ ] ifFalse:[
+ s nextPutAll: traitComposition.
+ ].
+ ]
+!
+
+traitComposition
+ ^ traitComposition
+!
+
+traitComposition:something
+ traitComposition := something.
+! !
+
+!TraitClassTraitDefinitionChange methodsFor:'printing & storing'!
+
+printOn:aStream
+ aStream nextPutAll:baseTrait; nextPutAll:' {class trait definition}'
+! !
+
+!TraitClassTraitDefinitionChange class methodsFor:'documentation'!
+
+version
+ ^ '$Header: /cvs/stx/stx/libbasic3/TraitClassTraitDefinitionChange.st,v 1.1 2013-04-02 19:18:58 cg Exp $'
+!
+
+version_CVS
+ ^ '$Header: /cvs/stx/stx/libbasic3/TraitClassTraitDefinitionChange.st,v 1.1 2013-04-02 19:18:58 cg Exp $'
+! !
+
--- a/TraitDefinitionChange.st Thu Apr 11 14:36:03 2013 +0200
+++ b/TraitDefinitionChange.st Tue Apr 16 09:44:57 2013 +0200
@@ -1,6 +1,6 @@
"{ Package: 'stx:libbasic3' }"
-Change subclass:#TraitDefinitionChange
+ClassChange subclass:#TraitDefinitionChange
instanceVariableNames:'baseTrait traitComposition category'
classVariableNames:''
poolDictionaries:''
@@ -36,6 +36,24 @@
category := something.
!
+source
+ ^ String streamContents:[:s |
+ s
+ nextPutAll: 'Trait named: ';
+ nextPutAll: className; cr;
+ nextPutAll: ' uses: '.
+ traitComposition isEmptyOrNil ifTrue:[
+ s nextPutAll: '{}'.
+ ] ifFalse:[
+ s nextPutAll: traitComposition.
+ ].
+ s
+ cr;
+ nextPutAll: ' category: '.
+ category asString storeOn:s.
+ ]
+!
+
traitComposition
^ traitComposition
!
@@ -44,13 +62,21 @@
traitComposition := something.
! !
+!TraitDefinitionChange methodsFor:'printing & storing'!
+
+printOn:aStream
+ aStream nextPutAll:className; nextPutAll:' {trait definition}'
+
+ "Modified: / 12-10-2006 / 17:48:28 / cg"
+! !
+
!TraitDefinitionChange class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/TraitDefinitionChange.st,v 1.1 2013-01-18 12:55:48 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/TraitDefinitionChange.st,v 1.2 2013-04-02 19:18:40 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic3/TraitDefinitionChange.st,v 1.1 2013-01-18 12:55:48 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/TraitDefinitionChange.st,v 1.2 2013-04-02 19:18:40 cg Exp $'
! !
--- a/abbrev.stc Thu Apr 11 14:36:03 2013 +0200
+++ b/abbrev.stc Tue Apr 16 09:44:57 2013 +0200
@@ -73,3 +73,4 @@
SourceCodeManagerUtilitiesForWorkspaceBasedManagers SourceCodeManagerUtilitiesForWorkspaceBasedManagers stx:libbasic3 'System-SourceCodeManagement' 0
VisualAgeChunkFileSourceWriter VisualAgeChunkFileSourceWriter stx:libbasic3 'Kernel-Classes' 0
TraitDefinitionChange TraitDefinitionChange stx:libbasic3 'System-Changes' 0
+TraitClassTraitDefinitionChange TraitClassTraitDefinitionChange stx:libbasic3 'System-Changes' 0
--- a/bc.mak Thu Apr 11 14:36:03 2013 +0200
+++ b/bc.mak Tue Apr 16 09:44:57 2013 +0200
@@ -1,4 +1,4 @@
-# $Header: /cvs/stx/stx/libbasic3/bc.mak,v 1.114 2013-01-18 13:02:58 cg Exp $
+# $Header: /cvs/stx/stx/libbasic3/bc.mak,v 1.115 2013-04-02 19:24:08 cg Exp $
#
# DO NOT EDIT
# automagically generated from the projectDefinition: stx_libbasic3.
@@ -37,7 +37,7 @@
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic -I$(INCLUDE_TOP)\stx\libbasic2
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic
LOCALDEFINES=
STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) $(COMMONSYMBOLS) -varPrefix=$(LIBNAME)
@@ -61,6 +61,10 @@
+clean::
+ del *.$(CSUFFIX)
+
+
test: $(TOP)\goodies\builder\reports\NUL
pushd $(TOP)\goodies\builder\reports & $(MAKE_BAT)
$(TOP)\goodies\builder\reports\report-runner.bat -D . -r Builder::TestReport -p $(PACKAGE)
--- a/libInit.cc Thu Apr 11 14:36:03 2013 +0200
+++ b/libInit.cc Tue Apr 16 09:44:57 2013 +0200
@@ -1,5 +1,5 @@
/*
- * $Header$
+ * $Header: /cvs/stx/stx/libbasic3/libInit.cc,v 1.101 2013-04-02 19:24:20 cg Exp $
*
* DO NOT EDIT
* automagically generated from the projectDefinition: stx_libbasic3.
--- a/libbasic3.rc Thu Apr 11 14:36:03 2013 +0200
+++ b/libbasic3.rc Tue Apr 16 09:44:57 2013 +0200
@@ -3,8 +3,8 @@
// automagically generated from the projectDefinition: stx_libbasic3.
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 6,2,1,75
- PRODUCTVERSION 6,2,2,0
+ FILEVERSION 6,2,1,78
+ PRODUCTVERSION 6,2,3,0
#if (__BORLANDC__)
FILEFLAGSMASK VS_FF_DEBUG | VS_FF_PRERELEASE
FILEFLAGS VS_FF_PRERELEASE | VS_FF_SPECIALBUILD
@@ -20,12 +20,12 @@
BEGIN
VALUE "CompanyName", "eXept Software AG\0"
VALUE "FileDescription", "Smalltalk/X Additional Developer Basic Classes (LIB)\0"
- VALUE "FileVersion", "6.2.1.75\0"
+ VALUE "FileVersion", "6.2.1.78\0"
VALUE "InternalName", "stx:libbasic3\0"
VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2012\nCopyright eXept Software AG 1998-2012\0"
VALUE "ProductName", "Smalltalk/X\0"
- VALUE "ProductVersion", "6.2.2.0\0"
- VALUE "ProductDate", "Fri, 18 Jan 2013 13:02:52 GMT\0"
+ VALUE "ProductVersion", "6.2.3.0\0"
+ VALUE "ProductDate", "Tue, 02 Apr 2013 19:24:00 GMT\0"
END
END
--- a/mingwmake.bat Thu Apr 11 14:36:03 2013 +0200
+++ b/mingwmake.bat Tue Apr 16 09:44:57 2013 +0200
@@ -8,3 +8,5 @@
@call find_mingw.bat
@popd
make.exe -N -f bc.mak %USEMINGW_ARG% %*
+
+
--- a/stx_libbasic3.st Thu Apr 11 14:36:03 2013 +0200
+++ b/stx_libbasic3.st Tue Apr 16 09:44:57 2013 +0200
@@ -42,7 +42,7 @@
!
extensionsVersion_SVN
- ^ '$Id: stx_libbasic3.st,v 1.78 2013-03-13 16:05:14 cg Exp $'
+ ^ '$Id: stx_libbasic3.st,v 1.79 2013-04-02 19:24:22 cg Exp $'
! !
@@ -192,6 +192,7 @@
SourceCodeManagerUtilitiesForWorkspaceBasedManagers
(VisualAgeChunkFileSourceWriter autoload)
(TraitDefinitionChange autoload)
+ (TraitClassTraitDefinitionChange autoload)
)
!
@@ -275,14 +276,14 @@
!stx_libbasic3 class methodsFor:'others'!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic3/stx_libbasic3.st,v 1.78 2013-03-13 16:05:14 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/stx_libbasic3.st,v 1.79 2013-04-02 19:24:22 cg Exp $'
! !
!stx_libbasic3 class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/stx_libbasic3.st,v 1.78 2013-03-13 16:05:14 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/stx_libbasic3.st,v 1.79 2013-04-02 19:24:22 cg Exp $'
!
version_HG