compiler/PPCForwardNode.st
changeset 438 20598d7ce9fa
parent 422 116d2b2af905
child 452 9f4558b3be66
equal deleted inserted replaced
437:54b3bc9e3987 438:20598d7ce9fa
     7 	classVariableNames:''
     7 	classVariableNames:''
     8 	poolDictionaries:''
     8 	poolDictionaries:''
     9 	category:'PetitCompiler-Nodes'
     9 	category:'PetitCompiler-Nodes'
    10 !
    10 !
    11 
    11 
    12 !PPCForwardNode methodsFor:'compiling'!
    12 !PPCForwardNode methodsFor:'accessing'!
    13 
       
    14 check
       
    15 	^ (child name = self name and: [child suffix = self suffix]) ifTrue: [ 'referring to itself!!' ]
       
    16 !
       
    17 
       
    18 compileWith: compiler effect: effect id: id
       
    19 	compiler startMethod: id.
       
    20 	compiler add: '^ '.
       
    21 	"child name = 'keyword' ifTrue: [ self halt ]."
       
    22 	compiler callOnLine: (child compileWith: compiler).
       
    23  ^ compiler stopMethod.	
       
    24 !
       
    25 
    13 
    26 prefix
    14 prefix
    27 	^ #fw
    15 	^ #fw
    28 !
       
    29 
       
    30 rewrite: changeStatus
       
    31 	child name ifNil: [  
       
    32 		changeStatus change.
       
    33 		child name: self name.
       
    34 		^ child
       
    35 	].
       
    36 
       
    37 	(child name = self name) ifTrue: [ 
       
    38 		changeStatus change.
       
    39 		^ child
       
    40 	]
       
    41 ! !
    16 ! !
    42 
    17 
       
    18 !PPCForwardNode methodsFor:'analysis'!
       
    19 
       
    20 check
       
    21 	^ (self name notNil and: [ 
       
    22 		child name = self name and: [
       
    23 		child suffix = self suffix
       
    24 	]]) ifTrue: [ 'referring to itself!!' ]
       
    25 ! !
       
    26 
       
    27 !PPCForwardNode methodsFor:'visiting'!
       
    28 
       
    29 accept: visitor
       
    30 	^ visitor visitForwardNode: self
       
    31 ! !
       
    32