scratch0-5 / utils /VMMakerJS.package /JSMethod.class /instance /emitJSSpecialOn.level.generator..st
soiz1's picture
Upload folder using huggingface_hub
8f3f8db verified
raw
history blame contribute delete
688 Bytes
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