A new version of SystemEditor was added to project SystemEditor:
http://www.squeaksource.com/SystemEditor/SystemEditor-mtf.124.mcz
==================== Summary ====================
Name: SystemEditor-mtf.124
Author: mtf
Time: 6 October 2008, 12:33:39 pm
UUID: 25458d7e-9457-4e14-be42-e583e0cb0a12
Ancestors: SystemEditor-mtf.123
fixed an atomicity violation in MethodDictionaryEditor, and documented the reason why it was changed in the first place (SystemEditor-mtf.108), namely to support SyntaxError dialogs
=============== Diff against SystemEditor-mtf.123 ===============
Item was changed:
----- Method: MetaclassEditor>>edBuild (in category 'building') -----
edBuild
| result class |
class := self subject ifNil: [Metaclass] ifNotNilDo: [:subject | subject class].
result := class basicNew.
+ "Create a temporary MethodDictionary to catch code written by SyntaxError dialogs. MethodDictionaryEditor will overwrite this. See MethodEditor>>compileFor:"
result
superclass: self edSuperclass
methodDictionary: MethodDictionary new
format: self format;
organization: self organization build.
result setInstVarNames: self instVarNames.
^ result!
Item was changed:
----- Method: MethodEditor>>compileFor: (in category 'building') -----
compileFor: aClassEditor
[
| node method |
node := aClassEditor compilerClass new
compile: source
in: aClassEditor product
notifying: requestor
ifFail: nil.
node encoder requestor: self.
method := node generate: #(0 0 0 0).
(method respondsTo: #selector:) "set selector on 3.9 and above"
ifTrue: [method selector: node selector].
^ method
] on: SyntaxErrorNotification do: [:ex |
"In 3.10, the class category needs to be set"
ex instVarNamed: #category put: aClassEditor category.
+ "Let the user fix and install the fixed code into the class's old or temporary MethodDictionary"
- "Let the user install the fixed code into the system"
ex outer.
"Now fetch and use that code instead"
source := aClassEditor product sourceCodeAt: self selector ifAbsent: [^ nil].
^ aClassEditor product compiledMethodAt: self selector
]!
Item was changed:
----- Method: OldMetaclassEditor>>edBuild (in category 'building') -----
edBuild
| result class |
class := self subject ifNil: [Metaclass] ifNotNilDo: [:subject | subject class].
result := class basicNew.
+ "Create a temporary MethodDictionary to catch code written by SyntaxError dialogs. MethodDictionaryEditor will overwrite this. See MethodEditor>>compileFor:"
result
superclass: self edSuperclass
methodDictionary: MethodDictionary new
format: self format;
organization: self organization build.
result setInstVarNames: self instVarNames.
^ result!
Item was changed:
----- Method: ClassEditor>>edBuild (in category 'building') -----
edBuild
| meta |
meta := self class edBuild.
product := subject ifNil: [meta new]
ifNotNil: [meta adoptInstance: subject from: subject class].
product
superclass: self edSuperclass;
setFormat: self format;
setName: self name;
setInstVarNames: self instVarNames;
classPoolFrom: self;
instVarNamed: #sharedPools put: self sharedPools;
organization: self organization build.
+ "Create a temporary MethodDictionary to catch code written by SyntaxError dialogs. MethodDictionaryEditor will overwrite this. See MethodEditor>>compileFor:"
product methodDictionary: MethodDictionary new.
self decoratorsDo: [:ea | ea buildFor: self].
"Class methods should be compiled before instance methods,
since #compilerClass may be among the class methods"
self class methods buildFor: self class.
self methods buildFor: self.
^product!
Item was changed:
----- Method: MethodDictionaryEditor>>buildFor: (in category 'editing') -----
buildFor: aClassEditor
| result old |
+ result := MethodDictionary new.
- result := aClassEditor product methodDictionary.
self subject keysAndValuesDo:
[:selector :cm |
(self selectorIsModified: selector)
ifFalse: [result at: selector put: (self recompile: selector from: cm for: aClassEditor)]].
additions keysAndValuesDo:
[:selector :mm |
old := self subject at: selector ifAbsent: [nil].
result at: selector put: (mm compileFrom: old for: aClassEditor)].
^ result
!
A new version of Monticello.impl was added to project Monticello Public:
http://www.squeaksource.com/mc/Monticello.impl-mtf.577.mcz
==================== Summary ====================
Name: Monticello.impl-mtf.577
Author: mtf
Time: 4 October 2008, 10:54:31 am
UUID: 3b365775-b75a-443a-94dd-1e87ca5300ef
Ancestors: Monticello.impl-mtf.576
Moved the extension MethodReference>>category into mantis issue 7205
=============== Diff against Monticello.impl-mtf.576 ===============
Item was removed:
- ----- Method: MethodReference>>category (in category '*monticello') -----
- category
- ^ self actualClass organization categoryOfElement: methodSymbol!
A new version of PackageInfo-Base was added to project Monticello Public:
http://www.squeaksource.com/mc/PackageInfo-Base-mtf.56.mcz
==================== Summary ====================
Name: PackageInfo-Base-mtf.56
Author: mtf
Time: 4 October 2008, 10:18:21 am
UUID: ea7fa2e0-3be1-4482-be7c-fc040b5caf32
Ancestors: PackageInfo-Base-mtf.55
Make use of Mantis fix 7205: use the category ivar of MethodReference to speed up MC snapshotting
Removed an unused extension method from MethodReference
=============== Diff against PackageInfo-Base-mtf.55 ===============
Item was changed:
----- Method: PackageInfo>>methodsInClass:category:do: (in category 'single-pass') -----
methodsInClass: aClass category: aCategory do: aBlock
"Enumerate the methods in the given class and category"
(aClass organization listAtCategoryNamed: aCategory) do: [:selector |
+ aBlock value: ((self referenceForMethod: selector ofClass: aClass) category: aCategory)]!
- aBlock value: (self referenceForMethod: selector ofClass: aClass)]!
Item was removed:
- ----- Method: MethodReference>>sourceCode (in category '*packageinfo-base') -----
- sourceCode
- ^ self actualClass sourceCodeAt: methodSymbol!