[Pkg] SystemEditor: SystemEditor-mtf.114.mcz
squeaksource-noreply at iam.unibe.ch
squeaksource-noreply at iam.unibe.ch
Wed Aug 13 07:45:40 UTC 2008
A new version of SystemEditor was added to project SystemEditor:
http://www.squeaksource.com/SystemEditor/SystemEditor-mtf.114.mcz
==================== Summary ====================
Name: SystemEditor-mtf.114
Author: mtf
Time: 13 August 2008, 12:06:44 am
UUID: a0b5f178-9445-43fc-8da6-f3b84d6bd41b
Ancestors: SystemEditor-mtf.113, SystemEditor-mtf.111
merged the stable branch (107-111) with the unstable branch (112-113)
=============== Diff against SystemEditor-mtf.113 ===============
Item was added:
+ ----- Method: MetaclassEditor>>indexIfCompact (in category 'reflecting') -----
+ indexIfCompact
+ self subject ifNotNil: [^ self subject indexIfCompact].
+ ^ 0!
Item was added:
+ ----- Method: ClassOrganizer>>edClassComment:stamp: (in category '*SystemEditor-workaround') -----
+ edClassComment: aString stamp: aStamp
+ "Set the comment and stamp directly, with no checks.This works around a silly check in ClassOrganizer>>classComment:stamp: in Croquet. This check raises an error if the subject is either nil or a metaclass. The check does not exist in Squeak 3.8 and above"
+ ^ super classComment: aString stamp: aStamp!
Item was changed:
----- Method: OrganizationEditor>>build (in category 'building') -----
build
| result |
self subject.
subject ifNil: [
result := ClassOrganizer defaultList: #()]
ifNotNil: [
result := ClassOrganizer defaultList: self subject elementArray.
self subject categories ifNotNilDo:
[:categories | categories do: [:ea |
result classifyAll: (subject listAtCategoryNamed: ea) under: ea]]].
classEditor edMethodsDo: [:ea |
result classify: ea selector under: (self categoryOfElement: ea selector)].
+ result
+ edClassComment: self commentRemoteStr
+ stamp: self commentStamp.
- result classComment: self commentRemoteStr stamp: self commentStamp.
^ result!
Item was changed:
----- Method: ClassEditor>>edName:superclassEditor:type:instVarString:classVarString:poolImports:category: (in category 'building') -----
edName: aSymbol superclassEditor: anEditor type: typeOfClass instVarString: instString classVarString: classString poolImports: poolString category: catString
| scanner |
scanner := Scanner new.
name := aSymbol.
+ self superclass: anEditor.
- superEditor := anEditor.
type := typeOfClass.
category := catString.
instVarNames := scanner scanFieldNames: instString.
classVarNames := scanner scanFieldNames: classString.
sharedPools := (scanner scanFieldNames: poolString)
collect: [:ea | system edResolve: ea asSymbol]!
Item was changed:
----- Method: MetaclassEditor>>instSize (in category 'reflecting') -----
instSize
"Override the implemenation in Behavior, so that when inspecting the
ClassEditor, it will look like a regular Class"
self isDebuggingAsEditor ifTrue: [^ super instSize].
+ ^ self instVarNames size + (self edSuperclass
+ ifNil: [0] ifNotNilDo: [:ed | ed instSize])!
- ^ self allInstVarNames size!
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 selector: node selector.
+ ^ method
+ ] on: SyntaxErrorNotification do: [:ex |
+ "Let the user install the fixed code into the system"
+ ex defaultAction.
+ "Now fetch and use that code instead"
+ source := aClassEditor product sourceCodeAt: self selector ifAbsent: [^ nil].
+ ^ aClassEditor product compiledMethodAt: self selector
+ ]!
- ^ method!
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.
+ 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 methodDictionary: self methodDictionary.
- product class methodDictionary: self class methodDictionary.
^product!
Item was changed:
----- Method: MetaclassEditor>>allInstVarNames (in category 'reflecting') -----
allInstVarNames
"specialized in order to enable debugger to show as self"
- | vars |
self isDebuggingAsEditor ifTrue: [^ super allInstVarNames].
+ ^ self edSuperclass
+ ifNil: [self instVarNames copy]
+ ifNotNil: [self edSuperclass allInstVarNames, self instVarNames]!
-
- vars := self subject ifNil: [ #() ] ifNotNil: [ self instVarNames ].
-
- ^ superclass == nil
- ifTrue: [ vars copy] "Guarantee a copy is answered."
- ifFalse: [ self superclass allInstVarNames , vars ].
- !
Item was changed:
----- Method: MetaclassEditor>>edSuperclass (in category 'building') -----
edSuperclass
^ superEditor
ifNil: [self subject superclass]
+ ifNotNil: [superEditor product]!
- ifNotNil: [superEditor subject]!
Item was added:
+ ----- Method: MetaclassEditor>>typeOfClass (in category 'reflecting') -----
+ typeOfClass
+ ^ #normal!
Item was changed:
----- Method: MethodDictionaryEditor>>buildFor: (in category 'editing') -----
buildFor: aClassEditor
| result old |
+ result := aClassEditor product methodDictionary.
- result := MethodDictionary new.
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
!
More information about the Packages
mailing list