Spaces:
Running
Running
scratch0-5
/
utils
/VMMakerJS.package
/JSMethod.class
/instance
/emitJSSpecialOn.level.generator..st
| JS hacks | |
| emitJSSpecialOn: aStream level: level generator: aCodeGen | |
| | expr type | | |
| aCodeGen pluginName = 'B2DPlugin' ifFalse: [^false]. | |
| (returnType includes: $*) ifFalse: [^false]. | |
| parseTree statements first isReturn ifFalse: [^false]. | |
| expr := parseTree statements first expression. | |
| expr isSend ifFalse: [^false]. | |
| type := returnType. | |
| expr selector = #cCoerce:to: ifTrue: [ | |
| type = expr args second value ifFalse: [self halt]. | |
| expr := expr args first. | |
| ]. | |
| expr selector = #+ ifFalse: [^false]. | |
| aStream tab: level; nextPutAll: 'return '. | |
| expr emitJSPointerArithmetic: type on: aStream level: level generator: aCodeGen type: type top: true. | |
| aStream nextPutAll: ';'; cr. | |
| ^true | |