|  | @@ -163,7 +163,8 @@ left
 | 
	
		
			
				|  |  |  !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  left: aNode
 | 
	
		
			
				|  |  | -	left := aNode
 | 
	
		
			
				|  |  | +	left := aNode.
 | 
	
		
			
				|  |  | +	left assigned: true
 | 
	
		
			
				|  |  |  !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  right
 | 
	
	
		
			
				|  | @@ -296,9 +297,19 @@ accept: aVisitor
 | 
	
		
			
				|  |  |  ! !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  ValueNode subclass: #VariableNode
 | 
	
		
			
				|  |  | -	instanceVariableNames: ''
 | 
	
		
			
				|  |  | +	instanceVariableNames: 'assigned'
 | 
	
		
			
				|  |  |  	category: 'Compiler'!
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +!VariableNode methodsFor: 'accessing'!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +assigned
 | 
	
		
			
				|  |  | +	^assigned ifNil: [false]
 | 
	
		
			
				|  |  | +!
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +assigned: aBoolean
 | 
	
		
			
				|  |  | +	assigned := aBoolean
 | 
	
		
			
				|  |  | +! !
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  !VariableNode methodsFor: 'visiting'!
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  accept: aVisitor
 | 
	
	
		
			
				|  | @@ -736,12 +747,6 @@ inline: aSelector receiver: receiver argumentNodes: aCollection
 | 
	
		
			
				|  |  |                  self visit: aCollection first.
 | 
	
		
			
				|  |  |                  inlined := true].
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	(aSelector = '=') ifTrue: [
 | 
	
		
			
				|  |  | -                self checkClass: 'Number' for: receiver.
 | 
	
		
			
				|  |  | -                stream nextPutAll: '$receiver =='.
 | 
	
		
			
				|  |  | -                self visit: aCollection first.
 | 
	
		
			
				|  |  | -                inlined := true].
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  	(aSelector = '>') ifTrue: [
 | 
	
		
			
				|  |  |                  self checkClass: 'Number' for: receiver.
 | 
	
		
			
				|  |  |                  stream nextPutAll: '$receiver >'.
 | 
	
	
		
			
				|  | @@ -961,8 +966,13 @@ visitVariableNode: aNode
 | 
	
		
			
				|  |  |  		ifTrue: [stream nextPutAll: 'self[''@', aNode value, ''']']
 | 
	
		
			
				|  |  |  		ifFalse: [
 | 
	
		
			
				|  |  |  			(self knownVariables includes: aNode value) 
 | 
	
		
			
				|  |  | -                  		ifFalse: [unknownVariables add: aNode value].
 | 
	
		
			
				|  |  | -                	stream nextPutAll: '(', aNode value, ' || nil)']
 | 
	
		
			
				|  |  | +                  		ifFalse: [
 | 
	
		
			
				|  |  | +                                  	unknownVariables add: aNode value.
 | 
	
		
			
				|  |  | +                                  	aNode assigned 
 | 
	
		
			
				|  |  | +                                  		ifTrue: [stream nextPutAll: '(', aNode value, ' || nil)']
 | 
	
		
			
				|  |  | +                                  		ifFalse: [stream nextPutAll: '(typeof ', aNode value, ' == ''undefined'' ? nil : ', aNode value, ')']]
 | 
	
		
			
				|  |  | +                  		ifTrue: [
 | 
	
		
			
				|  |  | +                			stream nextPutAll:aNode value]]
 | 
	
		
			
				|  |  |  !
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  visitJSStatementNode: aNode
 | 
	
	
		
			
				|  | @@ -1023,6 +1033,6 @@ Object subclass: #DoIt
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  !DoIt methodsFor: ''!
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -doIt ^[Compiler new recompile: Browser] value
 | 
	
		
			
				|  |  | +doIt ^[a < 3] value
 | 
	
		
			
				|  |  |  ! !
 | 
	
		
			
				|  |  |  
 |