[squeak-dev] The Trunk: Tools-mt.897.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue Oct 1 13:31:54 UTC 2019
Marcel Taeumel uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-mt.897.mcz
==================== Summary ====================
Name: Tools-mt.897
Author: mt
Time: 1 October 2019, 3:31:51.626118 pm
UUID: 8929b94e-60de-a34e-b620-554025bf28e3
Ancestors: Tools-mt.896
Fixes another tool-update bug.
=============== Diff against Tools-mt.896 ===============
Item was changed:
----- Method: Browser>>compileMessage:notifying: (in category 'code pane') -----
compileMessage: aText notifying: aController
"Compile the code that was accepted by the user, placing the compiled method into an appropriate message category. Return true if the compilation succeeded, else false."
| fallBackCategoryName originalSelectorName result fallBackMethodName |
self selectedMessageCategoryName = ClassOrganizer allCategory
ifTrue:
[ "User tried to save a method while the ALL category was selected"
fallBackCategoryName := selectedMessageCategoryName.
fallBackMethodName := selectedMessageName.
editSelection == #newMessage
ifTrue:
[ "Select the 'as yet unclassified' category"
selectedMessageCategoryName := nil.
(result := self defineMessageFrom: aText notifying: aController)
ifNil:
["Compilation failure: reselect the original category & method"
selectedMessageCategoryName := fallBackCategoryName.
selectedMessageName := fallBackMethodName]
ifNotNil:
[self setSelector: result]]
ifFalse:
[originalSelectorName := self selectedMessageName.
self setOriginalCategoryIndexForCurrentMethod.
selectedMessageName := fallBackMethodName := originalSelectorName.
(result := self defineMessageFrom: aText notifying: aController)
ifNotNil:
[self setSelector: result]
ifNil:
[ "Compilation failure: reselect the original category & method"
selectedMessageCategoryName := fallBackCategoryName.
selectedMessageName := fallBackMethodName.
^ result notNil]].
self changed: #messageCategoryList.
+ self changed: #messageList.
^ result notNil]
ifFalse:
[ "User tried to save a method while the ALL category was NOT selected"
^ (self defineMessageFrom: aText notifying: aController) notNil]!
Item was changed:
----- Method: Browser>>defineMessageFrom:notifying: (in category 'message functions') -----
defineMessageFrom: aString notifying: aController
"Compile the expressions in aString. Notify aController if a syntax error occurs. Install the compiled method in the selected class classified under the currently selected message category name. Answer the selector obtained if compilation succeeds, nil otherwise."
| selectedMessageName selector category oldMessageList selectedClassOrMetaClass |
selectedMessageName := self selectedMessageName.
oldMessageList := self messageList.
selectedClassOrMetaClass := self selectedClassOrMetaClass.
contents := nil.
selector := (selectedClassOrMetaClass newParser parseSelector: aString).
(self metaClassIndicated
and: [(selectedClassOrMetaClass includesSelector: selector) not
and: [Metaclass isScarySelector: selector]])
ifTrue: ["A frist-time definition overlaps the protocol of Metaclasses"
(self confirm: ((selector , ' is used in the existing class system.
Overriding it could cause serious problems.
Is this really what you want to do?') asText makeBoldFrom: 1 to: selector size))
ifFalse: [^nil]].
category := selectedMessageName
ifNil: [ self selectedMessageCategoryName ]
ifNotNil: [ (selectedClassOrMetaClass >> selectedMessageName) methodReference ifNotNil: [ : ref | ref category ]].
selector := selectedClassOrMetaClass
compile: aString
classified: category
notifying: aController.
selector == nil ifTrue: [^ nil].
contents := aString copy.
+ self changed: #messageList. "Because we have code-dependent list formatting by now such as #isDeprecated."
selector ~~ selectedMessageName
ifTrue:
[category = ClassOrganizer nullCategory
ifTrue: [self changed: #classSelectionChanged.
self changed: #classList.
self messageCategoryListIndex: 1].
self setClassOrganizer. "In case organization not cached"
(oldMessageList includes: selector)
ifFalse: [self changed: #messageList].
self messageListIndex: (self messageList indexOf: selector)].
^ selector!
More information about the Squeak-dev
mailing list
|