Closed MarcusDenker closed 5 years ago
nodeForOffset: anInteger | children | children := self children. (children isEmpty) ifTrue: [ (self sourceInterval includes: anInteger) ifTrue: [^self]]. children do: [:each | (each sourceInterval includes: anInteger) ifTrue: [^each nodeForOffset: anInteger] ].
testNodeForOffsetAssignment "test the case of a Assignment" | source ast foundNode | source := 'method Object := Class'. ast := RBParser parseMethod: source. foundNode := ast nodeForOffset: 9. self assert: (foundNode class == RBVariableNode). foundNode := ast nodeForOffset: 14. self assert: (foundNode class == RBAssignmentNode). foundNode := ast nodeForOffset: 19. self assert: (foundNode class == RBVariableNode)
testNodeForOffsetMessage "test the case of Messages" | source ast foundNode | source := 'method Object doit: Class'. ast := RBParser parseMethod: source. foundNode := ast nodeForOffset: 9. self assert: (foundNode class == RBVariableNode). foundNode := ast nodeForOffset: 14. self assert: (foundNode class == RBMessageNode). foundNode := ast nodeForOffset: 22. self assert: (foundNode class == RBVariableNode) testNodeForOffsetTempDefinition "test the case of Messages" | source ast foundNode | source := 'method | temp |'. ast := RBParser parseFaultyMethod: source. foundNode := ast nodeForOffset: 12. self assert: (foundNode class == RBVariableNode).
testNodeForOffsetVar "test the case of a variable" | source ast foundNode | source := 'method Object'. ast := RBParser parseMethod: source. foundNode := ast nodeForOffset: 9. self assert: (foundNode class == RBVariableNode)
nodeForOffset: is for RBProgramNode, the tests are for the RBMethodNodeTest
done https://github.com/pharo-project/pharo/pull/4053
nodeForOffset: anInteger | children | children := self children. (children isEmpty) ifTrue: [ (self sourceInterval includes: anInteger) ifTrue: [^self]]. children do: [:each | (each sourceInterval includes: anInteger) ifTrue: [^each nodeForOffset: anInteger] ].
testNodeForOffsetAssignment "test the case of a Assignment" | source ast foundNode | source := 'method Object := Class'. ast := RBParser parseMethod: source. foundNode := ast nodeForOffset: 9. self assert: (foundNode class == RBVariableNode). foundNode := ast nodeForOffset: 14. self assert: (foundNode class == RBAssignmentNode). foundNode := ast nodeForOffset: 19. self assert: (foundNode class == RBVariableNode)
testNodeForOffsetVar "test the case of a variable" | source ast foundNode | source := 'method Object'. ast := RBParser parseMethod: source. foundNode := ast nodeForOffset: 9. self assert: (foundNode class == RBVariableNode)