myroslavarm / Experimental-Completion

My internship project: improving code completion for Pharo
6 stars 3 forks source link

nodeForOffset: experiment #68

Closed MarcusDenker closed 5 years ago

MarcusDenker commented 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)

MarcusDenker commented 5 years ago

nodeForOffset: is for RBProgramNode, the tests are for the RBMethodNodeTest

myroslavarm commented 5 years ago

done https://github.com/pharo-project/pharo/pull/4053