diff --git a/fortls/parsers/internal/parser.py b/fortls/parsers/internal/parser.py index 174d1499..1dc93760 100644 --- a/fortls/parsers/internal/parser.py +++ b/fortls/parsers/internal/parser.py @@ -637,7 +637,7 @@ def read_use_stmt(line: str) -> tuple[Literal["use"], Use] | None: if use_match is None: return None - trailing_line = line[use_match.end(0) :].lower() + trailing_line = line[use_match.end(0) :].lower().split("!")[0] use_mod = use_match.group(2) only_list: set[str] = set() rename_map: dict[str, str] = {} diff --git a/test/test_server_references.py b/test/test_server_references.py index 6fa775c8..14b0ee18 100644 --- a/test/test_server_references.py +++ b/test/test_server_references.py @@ -60,3 +60,18 @@ def test_references_ignore_comments_fixed(): errcode, results = run_request(string) assert errcode == 0 assert len(results[1]) == 2 + + +def test_references_ignore_comments_on_use_import(): + string = write_rpc_request(1, "initialize", {"rootPath": str(test_dir / "use")}) + file_path = test_dir / "use" / "comment_after_use.f90" + string += ref_req(file_path, 6, 31) + errcode, results = run_request(string, ["-n", "1"]) + assert errcode == 0 + validate_refs( + results[1], + ( + [str(file_path), 1, 15, 27], + [str(file_path), 5, 23, 35], + ), + ) diff --git a/test/test_source/use/comment_after_use.f90 b/test/test_source/use/comment_after_use.f90 new file mode 100644 index 00000000..79556284 --- /dev/null +++ b/test/test_source/use/comment_after_use.f90 @@ -0,0 +1,7 @@ +module dep_mod + integer :: dep_variable +end module dep_mod + +module user_mod + use dep_mod, only: dep_variable ! disabling comment +end module user_mod