A new version of Compiler was added to project The Inbox: http://source.squeak.org/inbox/Compiler-ul.193.mcz
==================== Summary ====================
Name: Compiler-ul.193 Author: ul Time: 20 February 2011, 5:23:51.585 pm UUID: 59f8e102-e41a-7547-abe7-a210bcbe4b74 Ancestors: Compiler-nice.192
- simplified MessageNode >> #checkBlock:as:from:maxArgs: and MessageNode >> #transformCase: - deprecated all implementors of #canBeSpecialArgument, because it has no senders
=============== Diff against Compiler-nice.192 ===============
Item was changed: ----- Method: BlockNode>>canBeSpecialArgument (in category 'testing') ----- canBeSpecialArgument "Can I be an argument of (e.g.) ifTrue:?"
+ self deprecated: 'Anything can be argument of inlined messages'. ^arguments size = 0!
Item was changed: ----- Method: MessageNode>>checkBlock:as:from:maxArgs: (in category 'private') ----- checkBlock: node as: nodeName from: encoder maxArgs: maxArgs "Answer true if node is a BlockNode with at most maxArgs arguments. This check is required in order to inline some special messages. Notify some undue usage of these special messages."
+ node isBlockNode ifFalse: [ ^false ]. + node numberOfArguments <= maxArgs ifTrue: [ ^true ]. + ^encoder notify: '<- ', nodeName , ' of ' , (MacroSelectors at: special) , ' has too many arguments'! - node isBlockNode - ifTrue: - [node numberOfArguments <= maxArgs - ifTrue: [^true] - ifFalse: [encoder notify: '<- ', nodeName , ' of ' , - (MacroSelectors at: special) , ' has too many arguments']]. - ^false!
Item was changed: ----- Method: MessageNode>>transformCase: (in category 'macro transformations') ----- transformCase: encoder
| caseNode | caseNode := arguments first. + (caseNode isMemberOf: BraceNode) ifFalse: [ ^false ]. + ((caseNode blockAssociationCheck: encoder) + and: [arguments size = 1 + or: [self checkBlock: arguments last as: 'otherwise arg' from: encoder]]) ifFalse: + [^false]. + caseNode elements do: + [:messageNode| + messageNode receiver noteOptimizedIn: self. + messageNode arguments first noteOptimizedIn: self]. + arguments size = 2 ifTrue: + [arguments last noteOptimizedIn: self]. + ^true! - (caseNode isMemberOf: BraceNode) ifTrue: - [((caseNode blockAssociationCheck: encoder) - and: [arguments size = 1 - or: [self checkBlock: arguments last as: 'otherwise arg' from: encoder]]) ifFalse: - [^false]. - caseNode elements do: - [:messageNode| - messageNode receiver noteOptimizedIn: self. - messageNode arguments first noteOptimizedIn: self]. - arguments size = 2 ifTrue: - [arguments last noteOptimizedIn: self]. - ^true]. - ^false!
Item was changed: ----- Method: ParseNode>>canBeSpecialArgument (in category 'testing') ----- canBeSpecialArgument "Can I be an argument of (e.g.) ifTrue:?"
+ self deprecated: 'Anything can be argument of inlined messages'. ^false!
Item was changed: ----- Method: VariableNode>>canBeSpecialArgument (in category 'testing') ----- canBeSpecialArgument "Can I be an argument of (e.g.) ifTrue:?"
+ self deprecated: 'Anything can be argument of inlined messages'. ^code < LdNil!
squeak-dev@lists.squeakfoundation.org