Skip to content

Commit 0598ac5

Browse files
authored
Merge pull request #835 from Shopify/vs/avoid_mutating_document_tree_on_show_syntax_tree
Avoid mutating document tree in show syntax tree
2 parents 9b552b5 + 85c2403 commit 0598ac5

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

lib/ruby_lsp/requests/show_syntax_tree.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def ast_for_range
4747
start_char = scanner.find_char_position(range[:start])
4848
end_char = scanner.find_char_position(range[:end])
4949

50-
queue = T.cast(@document.tree, SyntaxTree::Program).statements.body
50+
queue = T.cast(@document.tree, SyntaxTree::Program).statements.body.dup
5151
found_nodes = []
5252

5353
until queue.empty?

test/requests/show_syntax_tree_test.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,5 +62,14 @@ def test_returns_ast_for_a_selection
6262
6363
(assign (var_field (ident "bar")) (int "456"))
6464
AST
65+
66+
response = RubyLsp::Executor.new(store, @message_queue).execute({
67+
method: "rubyLsp/textDocument/showSyntaxTree",
68+
params: {
69+
textDocument: { uri: "file:///fake.rb" },
70+
range: { start: { line: 1, character: 0 }, end: { line: 1, character: 9 } },
71+
},
72+
}).response
73+
refute_empty(response[:ast])
6574
end
6675
end

0 commit comments

Comments
 (0)