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'].] |