Merge pull request #99295 from HolonProduction/yet-another-lsp-violation
LSP: Fix spec violations that break the VSCode outline
This commit is contained in:
commit
6eca2aa8d6
3 changed files with 43 additions and 1 deletions
2
modules/gdscript/tests/scripts/lsp/first_line_comment.gd
Normal file
2
modules/gdscript/tests/scripts/lsp/first_line_comment.gd
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
# Some comment
|
||||
extends Node
|
||||
|
|
@ -375,6 +375,18 @@ func f():
|
|||
gd.to_lsp(lines);
|
||||
}
|
||||
|
||||
SUBCASE("special case: zero column for root class") {
|
||||
GodotPosition gd(1, 0);
|
||||
lsp::Position expected = lsp_pos(0, 0);
|
||||
lsp::Position actual = gd.to_lsp(lines);
|
||||
CHECK_EQ(actual, expected);
|
||||
}
|
||||
SUBCASE("special case: zero line and column for root class") {
|
||||
GodotPosition gd(0, 0);
|
||||
lsp::Position expected = lsp_pos(0, 0);
|
||||
lsp::Position actual = gd.to_lsp(lines);
|
||||
CHECK_EQ(actual, expected);
|
||||
}
|
||||
SUBCASE("special case: negative line for root class") {
|
||||
GodotPosition gd(-1, 0);
|
||||
lsp::Position expected = lsp_pos(0, 0);
|
||||
|
|
@ -468,6 +480,25 @@ func f():
|
|||
test_resolve_symbols(uri, all_test_data, all_test_data);
|
||||
}
|
||||
|
||||
memdelete(proto);
|
||||
finish_language();
|
||||
}
|
||||
TEST_CASE("[workspace][document_symbol]") {
|
||||
GDScriptLanguageProtocol *proto = initialize(root);
|
||||
REQUIRE(proto);
|
||||
|
||||
SUBCASE("selectionRange of root class must be inside range") {
|
||||
String path = "res://lsp/first_line_comment.gd";
|
||||
assert_no_errors_in(path);
|
||||
GDScriptLanguageProtocol::get_singleton()->get_workspace()->parse_local_script(path);
|
||||
ExtendGDScriptParser *parser = GDScriptLanguageProtocol::get_singleton()->get_workspace()->parse_results[path];
|
||||
REQUIRE(parser);
|
||||
lsp::DocumentSymbol cls = parser->get_symbols();
|
||||
|
||||
REQUIRE(((cls.range.start.line == cls.selectionRange.start.line && cls.range.start.character <= cls.selectionRange.start.character) || (cls.range.start.line < cls.selectionRange.start.line)));
|
||||
REQUIRE(((cls.range.end.line == cls.selectionRange.end.line && cls.range.end.character >= cls.selectionRange.end.character) || (cls.range.end.line > cls.selectionRange.end.line)));
|
||||
}
|
||||
|
||||
memdelete(proto);
|
||||
finish_language();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue