Nicolas Cellier uploaded a new version of EToys to project The Trunk:
http://source.squeak.org/trunk/EToys-nice.116.mcz ==================== Summary ==================== Name: EToys-nice.116 Author: nice Time: 16 December 2013, 3:57:08.611 pm UUID: 95b95062-8e45-4262-b5b8-afea43dfb898 Ancestors: EToys-fbs.115 Use non logging Compiler protocol rather than providing a logged: false argument. =============== Diff against EToys-fbs.115 =============== Item was changed: ----- Method: ButtonProperties>>setArguments (in category 'menu') ----- setArguments | s newArgs newArgsArray | s := WriteStream on: ''. arguments do: [:arg | arg printOn: s. s nextPutAll: '. ']. newArgs := UIManager default request: 'Please type the arguments to be sent to the target when this button is pressed separated by periods' translated initialAnswer: s contents. newArgs isEmpty ifFalse: [ + newArgsArray := Compiler evaluate: '{', newArgs, '}' for: self. - newArgsArray := Compiler evaluate: '{', newArgs, '}' for: self logged: false. self arguments: newArgsArray]. ! Item was changed: ----- Method: KedamaVectorizer>>checkRequireVectorIn:for: (in category 'private') ----- checkRequireVectorIn: aMessageNode for: obj | players playersSet playerNodes | "self halt." playerNodes := self getAllPlayersIn: aMessageNode for: obj. + players := playerNodes collect: [:e | Compiler evaluate: e name for: obj.]. - players := playerNodes collect: [:e | Compiler evaluate: e name for: obj logged: false.]. playersSet := players asSet. (playersSet select: [:e | e isPrototypeTurtlePlayer]) size = 0 ifTrue: [ + attributes setAttribute: #firstTurtle of: aMessageNode to: (Compiler evaluate: playerNodes first name for: obj). - attributes setAttribute: #firstTurtle of: aMessageNode to: (Compiler evaluate: playerNodes first name for: obj logged: false). attributes setAttribute: #requireVector of: aMessageNode to: false. ^ self. ]. (playersSet select: [:e | e isPrototypeTurtlePlayer]) size > 0 ifTrue: [ playerNodes with: players do: [:n :p | | sel | p isPrototypeTurtlePlayer ifTrue: [ sel := self getSelectorRootFor: p fromMessageNode: aMessageNode for: obj ignoreSelectors: #(beNotZero: setTurtleCount: getTurtleCount setGrouped: getGrouped). sel ifNotNil: [ (self isVectorizationRequiredWithPlayer: p andSelector: sel) ifTrue: [ attributes setAttribute: #requireVector of: aMessageNode to: true. attributes setAttribute: #firstTurtle of: aMessageNode to: p. attributes setAttribute: #firstNode of: aMessageNode to: n. ^ self. ]. ]. ]. ]. ]. attributes setAttribute: #firstTurtle of: aMessageNode to: players first. attributes setAttribute: #requireVector of: aMessageNode to: false. ! Item was changed: ----- Method: KedamaVectorizer>>getPlayersMessage:for:into: (in category 'player and selector look up') ----- getPlayersMessage: aMessageNode for: obj into: aCollection ((Array with: aMessageNode receiver), aMessageNode arguments) do: [:stmt | | thisPlayer | (stmt isMemberOf: MessageNode) ifTrue: [ self getPlayersMessage: stmt for: obj into: aCollection. ]. (stmt isMemberOf: BlockNode) ifTrue: [ self getPlayersBlock: stmt for: obj into: aCollection.. ]. (stmt isMemberOf: VariableNode) ifTrue: [ + thisPlayer := Compiler evaluate: stmt name for: obj. - thisPlayer := Compiler evaluate: stmt name for: obj logged: false. (thisPlayer isKindOf: Player) ifTrue: [aCollection add: stmt]. ]. ]. ! Item was changed: ----- Method: KedamaVectorizer>>getSelectorFor:fromMessageNode:for:ifFoundDo:ignoreSelectors: (in category 'player and selector look up') ----- getSelectorFor: receiver fromMessageNode: aMessageNode for: obj ifFoundDo: aBlock ignoreSelectors: ignoreSelectors root ifNotNil: [^ self]. (Array with: aMessageNode receiver), aMessageNode arguments do: [:stmt | | key thisPlayer | (stmt isMemberOf: VariableNode) ifTrue: [ + thisPlayer := Compiler evaluate: stmt name for: obj. - thisPlayer := Compiler evaluate: stmt name for: obj logged: false. thisPlayer == receiver ifTrue: [ key := aMessageNode selector key. (ignoreSelectors includes: key) ifFalse: [aBlock value: key. ^ self]]. ]. (stmt isMemberOf: MessageNode) ifTrue: [ self getSelectorFor: receiver fromMessageNode: stmt for: obj ifFoundDo: aBlock ignoreSelectors: ignoreSelectors ]. (stmt isMemberOf: BlockNode) ifTrue: [ self getSelectorFor: receiver fromBlockNode: stmt for: obj ifFoundDo: aBlock ignoreSelectors: ignoreSelectors ]. ]. ! Item was changed: ----- Method: KedamaVectorizer>>includesTurtlePlayer:for: (in category 'entry point') ----- includesTurtlePlayer: aMethodNode for: obj | players | players := self getAllPlayersInMethodNode: aMethodNode for: obj. players do: [:e | | p | + p := Compiler evaluate: e name for: obj. - p := Compiler evaluate: e name for: obj logged: false. (p isKindOf: KedamaExamplerPlayer) ifTrue: [^ true]. ]. ^ false. ! Item was changed: ----- Method: KedamaVectorizer>>traverseMessage:in:firstPlayer:inCondition: (in category 'vectorization attribute calculation') ----- traverseMessage: aMessageNode in: obj firstPlayer: firstPlayer inCondition: inCondition | receiver thisPlayer ret constant proto | aMessageNode arguments do: [:argument | (argument isMemberOf: MessageNode) ifTrue: [ self traverseMessage: argument in: obj firstPlayer: firstPlayer inCondition: inCondition. ]. (argument isMemberOf: BlockNode) ifTrue: [ self traverseBlock: argument in: obj firstPlayer: firstPlayer inCondition: inCondition. ]. (argument isMemberOf: LiteralNode) ifTrue: [ attributes setAttribute: #constant of: argument to: true. ]. (argument isMemberOf: VariableNode) ifTrue: [ + thisPlayer := Compiler evaluate: argument name for: obj. - thisPlayer := Compiler evaluate: argument name for: obj logged: false. ret := (thisPlayer isKindOf: Player) and: [thisPlayer costume renderedMorph isKindOf: KedamaPatchMorph]. attributes setAttribute: #constant of: argument to: ret. ]. ]. receiver := aMessageNode receiver. (receiver isMemberOf: MessageNode) ifTrue: [ self traverseMessage: receiver in: obj firstPlayer: firstPlayer inCondition: inCondition. ]. (receiver isMemberOf: BlockNode) ifTrue: [ self traverseBlock: receiver in: obj firstPlayer: firstPlayer inCondition: inCondition. ]. (receiver isMemberOf: LiteralNode) ifTrue: [ attributes setAttribute: #constant of: receiver to: true. ]. (receiver isMemberOf: VariableNode) ifTrue: [ + thisPlayer := Compiler evaluate: receiver name for: obj. - thisPlayer := Compiler evaluate: receiver name for: obj logged: false. ret := thisPlayer == firstPlayer. attributes setAttribute: #constant of: receiver to: ret. proto := (thisPlayer isKindOf: Player) and: [thisPlayer isPrototypeTurtlePlayer]. attributes setAttribute: #isTurtle of: receiver to: proto. attributes setAttribute: #scalar of: aMessageNode selector to: (ret not and: [(proto and: [self isScalarizable: thisPlayer andSelector: aMessageNode selector key])]). ]. "special cases..." (#(atRandom die getReplicated bounceOn: bounceOn:color: bounceOnColor: ifTrue: ifFalse: ifTrue:ifFalse: itFalse:ifTrue: setPatchValueIn:to: getTurtleAt: getTurtleOf:) includes: aMessageNode selector key) ifTrue: [ attributes setAttribute: #constant of: aMessageNode to: false. aMessageNode selector key = #die ifTrue: [ attributes setAttribute: #dieMessage of: root to: true. ]. ] ifFalse: [ constant := (aMessageNode arguments copyWith: receiver) allSatisfy: [:t | attributes getAttribute: #constant of: t]. attributes setAttribute: #constant of: aMessageNode to: constant. ]. ! Item was changed: ----- Method: PhraseTileMorph>>try (in category 'miscellaneous') ----- try "Evaluate the given phrase once" | aPlayer | (userScriptSelector notNil and: [userScriptSelector numArgs = 0]) ifTrue: [aPlayer := self objectViewed player. aPlayer triggerScript: userScriptSelector] ifFalse: [Compiler evaluate: self codeString + for: self associatedPlayer]! - for: self associatedPlayer - logged: false]! Item was changed: ----- Method: SyntaxMorph>>actualObject (in category 'accessing') ----- actualObject | sub | "Who is self in these tiles? Usually a Player." (self nodeClassIs: LiteralVariableNode) ifTrue: [ (sub := self findA: StringMorph) ifNil: [^ nil]. "Need to decompile here for odd synonyms of 'self' ?" + ^ Compiler evaluate: sub contents for: Player]. - ^ Compiler evaluate: sub contents for: Player logged: false]. (self nodeClassIs: VariableNode) ifTrue: [ (sub := self findA: StringMorph) ifNil: [^ nil]. ^ References at: (self cleanUpString: sub) asSymbol ifAbsent: [nil]]. (self nodeClassIs: LiteralNode) ifTrue: [ (sub := self findA: StringMorph) ifNil: [^ nil]. + ^ Compiler evaluate: sub contents for: nil]. - ^ Compiler evaluate: sub contents for: nil logged: false]. (sub := self findA: SyntaxMorph) ifNil: [^ nil]. ^ sub actualObject "receiver"! Item was changed: ----- Method: SyntaxMorph>>try (in category 'layout') ----- try "Evaluate me once" (#(MessageNode LiteralNode VariableNode) includes: parseNode class name) ifFalse: [^ Error new]. ^ [Compiler evaluate: self decompile + for: self actualObject. "should do something to the player" - for: self actualObject - logged: false. "should do something to the player" ] ifError: [ :a :b | Error new].! |
Free forum by Nabble | Edit this page |