Spaces:
Running
Running
scratch0-5
/
utils
/VMMakerJS.package
/TAssignmentNode.extension
/instance
/emitJSCodeOn.level.generator..st
*vmmakerjs | |
emitJSCodeOn: aStream level: level generator: aCodeGen | |
expression isSwitch ifTrue: | |
[^expression emitJSCodeOn: aStream addToEndOfCases: self level: level generator: aCodeGen]. | |
(self isVariableUpdatingAssignment and: [(aCodeGen isPointer: variable) not]) | |
ifTrue: | |
[(expression args first isConstant and: [expression args first value = 1]) | |
ifTrue: [aStream nextPutAll: expression selector, expression selector. | |
variable emitJSCodeOn: aStream level: level generator: aCodeGen] | |
ifFalse: [ | |
variable emitJSCodeOn: aStream level: level generator: aCodeGen. | |
aStream nextPutAll: ' ', expression selector, '= '. | |
expression args first emitJSCodeAsArgumentOn: aStream level: level generator: aCodeGen]] | |
ifFalse: | |
[ | coerceToInt | | |
coerceToInt := (variable isFloatIn: aCodeGen) not and: [expression isFloatIn: aCodeGen]. | |
variable emitJSCodeOn: aStream level: level generator: aCodeGen. | |
aStream nextPutAll: ' = '. | |
expression emitJSCodeAsArgumentOn: aStream level: level generator: aCodeGen. | |
coerceToInt ifTrue: [aStream nextPutAll: '|0'].] |