mirror of
https://github.com/tiennm99/serena.git
synced 2026-10-13 12:15:10 +00:00
solidlsp: recognize Arduino .ino files as C++ (#1534)
This commit is contained in:
2 files changed
+21
No files matched your search
@@ -361,6 +361,11 @@ class Language(str, Enum):
|
||||
# OpenCL
|
||||
".cl",
|
||||
".clcpp",
|
||||
# Arduino sketch: not in clang's extension table, but it is C++.
|
||||
# Routing it here lets clangd serve symbols; the project must
|
||||
# tell clangd it is C++ (a .clangd with CompileFlags Add: [-xc++],
|
||||
# or a compile DB), since the clang driver can't infer a job from .ino.
|
||||
".ino",
|
||||
case_sensitive=False,
|
||||
)
|
||||
case self.CPP_CCLS:
|
||||
@@ -386,6 +391,8 @@ class Language(str, Enum):
|
||||
# Objective-C
|
||||
".m",
|
||||
".mm",
|
||||
# Arduino sketch (C++); see note in the CPP case above.
|
||||
".ino",
|
||||
case_sensitive=False,
|
||||
)
|
||||
case self.KOTLIN:
|
||||
|
||||
@@ -24,6 +24,20 @@ if language_tests_enabled(Language.CPP_CCLS):
|
||||
_cpp_servers.append(Language.CPP_CCLS)
|
||||
|
||||
|
||||
@pytest.mark.parametrize("language", [Language.CPP, Language.CPP_CCLS])
|
||||
def test_source_fn_matcher_includes_ino(language: Language) -> None:
|
||||
"""Arduino .ino sketches are C++ and must route to the C++ language server.
|
||||
|
||||
This is a pure matcher check; it needs no running language server.
|
||||
"""
|
||||
matcher = language.get_source_fn_matcher()
|
||||
assert matcher.is_relevant_filename("sketch.ino")
|
||||
assert matcher.is_relevant_filename("BLINK.INO") # case-insensitive
|
||||
assert matcher.is_relevant_filename("/path/to/s3_camera.ino")
|
||||
assert matcher.is_relevant_filename("main.cpp") # regression: ordinary C++ still matches
|
||||
assert not matcher.is_relevant_filename("notes.md")
|
||||
|
||||
|
||||
@pytest.mark.cpp
|
||||
@pytest.mark.skipif(not _cpp_servers, reason="No C++ language server (clangd or ccls) available")
|
||||
class TestCppLanguageServer:
|
||||
|
||||
Reference in new issue
Block a user