[squeak-dev] The Trunk: EToys-nice.116.mcz
commits at source.squeak.org
commits at source.squeak.org
Mon Dec 16 14:57:57 UTC 2013
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].!
More information about the Squeak-dev
mailing list
|