Last updated: 2026-03-01
- All 13 parsers store
visibilityas a string ("public"/"protected"/"private") - LSP server's
get_symbol_infoonly checks booleanis_publicorexported, defaults totrue - Result: Python
_protected_functionand__private_functionboth showis_public: true - Fix: LSP should fall back to
visibilitystring whenis_publicbool is absent - Affects:
engine.rslines 405-409, 989-991, andnode_to_symbol_info
- cpp: system include distinction (
is_systemproperty) — added in1256a12 - ruby:
require_relativetracking — added in1256a12 - typescript: triple-slash reference directives — added in
1256a12 - php: dynamic include/require resolution — added in
25c4dba - python:
is_externalfix — added in25c4dba - rust: mod declaration import edges — added in
d92e2ae - Integration tests exist but could use edge-case coverage
- tree-sitter-tcl uses a vendored ABI v15→v14 patched grammar
- Position-0 splitting is worked around with sibling-stitching in visitor
- Consider: upstream grammar fix, or switching to a maintained grammar fork
- Collapsed word_list and fragmented body issues are handled but fragile
- TypeScript: arrow functions stored as
arrow_functioninstead of variable name (e.g.,fetchData) - C#, Java, Kotlin, Ruby, Swift, PHP: no parameter extraction, no return type extraction
- C#, Java, PHP, Ruby, Swift: no enum-as-class extraction
- Kotlin, Ruby, Swift: no ABC/trait detection from class hierarchy
- Use Rust parser as gold standard reference for feature parity
- No Lua, Perl, Scala, Dart, or Zig parsers yet
- Add based on demand / stellarion user requests
- Current parsers track imports within their own language
- No cross-language linking (e.g., Python calling C extensions, TypeScript importing WASM)
- Current: BFS, DFS, cycle detection
- Potential: strongly connected components, topological sort, PageRank for code importance
- Current: RocksDB (production), BTreeMap (tests)
- Potential: SQLite for zero-config, PostgreSQL for multi-user
- TypeScript: enum extraction (as ClassEntity), arrow function async detection (
4384d7d) - Python: enum detection from base classes, ABC/Protocol → TraitEntity, visibility from name prefixes
- Go: parameter extraction (incl. variadic), return type, receiver type, visibility, test detection
- C++: C++20 coroutine detection via co_await/co_return/co_yield and return type patterns
- Versions bumped: TS 0.4.2, Python 0.4.3, Go 0.1.6, C++ 0.2.2
- Rust: added call_expression handling in visitor, including macro invocation bodies (
78fad1d,be9a66f) - Go: added call extraction (
78fad1d) - C: was already fixed separately
- Fixed: switched
parse_source()from tolerant mode to strictextract(), matching other parsers - All 144 codegraph-c tests now pass
- Fixed:
parser_impl.rsalready had import mapping; added matching implementation tobuilder.rs - Module nodes created with
is_externalflag, Imports edges with alias/symbols/wildcard properties
- Fixed:
parser_impl.rsstoredis_async/is_staticas strings instead of bools; now uses proper types - Added
is_testandattributes(decorators) properties to function nodes - Extractor now assigns decorators to
func.attributes - Test assertions completed for both async detection and decorator extraction
- Added
has_error()check to cpp, csharp, java, kotlin, php, ruby, swift extractors (f34b749) - TCL intentionally excluded — vendored grammar produces ERROR nodes for keywords, resolved by sibling-stitching
- Removed misleading "tolerant parsing" comment from PHP extractor
- 12 of 13 parsers now enforce strict syntax error checking; TCL documented as exception
- Added
test_syntax_errorintegration tests to all 7 parsers
- Removed unused
config: ParserConfigfield from 11 visitors (all except Rust) (9e396b1) - Removed debug
print_tree/dump_asthelpers + their test callers from Kotlin, Ruby, Tcl - Removed dead Python
VisitorContext,type_to_string,default_to_string - Updated C
extract_with_optionssignature (removed config param) and doctest - 3 intentional annotations remain: EdaCommand enum (write-only fields), C Ifdef/Ifndef fields
- 25 files changed, -249 lines net
- Total tests: 1098 passing, 0 failing, 4 ignored
- Crates: 15 (core + parser-api + 13 language parsers)
- Clippy: clean
- Recent features: cyclomatic complexity (all 13 parsers), TypeReference IR, cross-file type resolution