The Inbox: EToys-ct.390.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Inbox: EToys-ct.390.mcz

commits-2
Christoph Thiede uploaded a new version of EToys to project The Inbox:
http://source.squeak.org/inbox/EToys-ct.390.mcz

==================== Summary ====================

Name: EToys-ct.390
Author: ct
Time: 27 March 2020, 9:39:10.801235 pm
UUID: d54c1d9b-6381-784b-8a2d-497804eab2a7
Ancestors: EToys-eem.388

Refines parsing of SyntaxMorphs, respecting asStatement: aBoolean

If a statement is requested, don't return the whole method to avoid nested methods. Also cleans up ScriptEditorMorph >> #parseNodeWith: (strengthening polymorphy).

=============== Diff against EToys-eem.388 ===============

Item was changed:
  ----- Method: ScriptEditorMorph>>parseNodeWith: (in category '*Etoys-Squeakland-other') -----
  parseNodeWith: encoder
 
  | statements ret |
  statements := WriteStream on: (Array new: self tileRows size).
+ self tileRows do: [:row |
+ row do: [:morph |
+ (morph respondsTo: #parseNodeWith:asStatement:) ifTrue: [
+ statements nextPut: (morph parseNodeWith: encoder asStatement: true)]]].
- self tileRows do: [:r |
- r do: [:m |
- ((m isKindOf: TileMorph)
- or: [(m isKindOf: CompoundTileMorph)
- or: [m isKindOf: PhraseTileMorph]]) ifTrue: [
- statements nextPut: (m parseNodeWith: encoder asStatement: true)]]].
  statements := statements contents.
  ret := ReturnNode new expr: (encoder encodeVariable: 'self').
+ ^ BlockNode new
+ arguments: #()
+ statements: (statements copyWith: ret)
+ returns: true
+ from: encoder.!
- ^ BlockNode new arguments: #() statements: (statements copyWith: ret) returns: true from: encoder.
- !

Item was changed:
  ----- Method: SyntaxMorph>>parseNodeWith:asStatement: (in category '*Etoys-Squeakland-code generation') -----
  parseNodeWith: encoder asStatement: aBoolean
 
+ | methodNode |
+ methodNode := self parseNodeWith: encoder.
+ ^ aBoolean
+ ifFalse: [methodNode]
+ ifTrue: [methodNode block]!
- ^ self parseNode!