File size: 688 Bytes
8f3f8db
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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