mirror of
https://github.com/abhigyanpatwari/GitNexus.git
synced 2026-10-11 03:38:07 +00:00
Adds a Zig LanguageProvider grounded in @tree-sitter-grammars/tree-sitter-zig 1.1.2.
The grammar's published peerOptional `tree-sitter@^0.22.1` is suppressed via an
npm `overrides` entry that aliases the peer to the bundled `tree-sitter@0.21.x`;
load-time smoke testing confirmed ABI compatibility.
v1 capabilities:
- .zig file detection + Prism syntax mapping
- Top-level + nested function_declaration as Function/Method
- struct/enum/union (anonymous in the grammar — owner name resolved from the
enclosing variable_declaration in class/field/method extractors)
- container_field as struct/union fields and enum variants
- top-level const/var as Variable nodes
- free + member call_expression as @call edges
- @import("./foo.zig") local-file resolution; std and external packages
return empty (no ghost edges)
- pub keyword detection for export checking
- no heritage hooks (Zig has no inheritance; queries never emit @heritage.*)
Generic extractor changes (backward-compatible):
- field-extractors/generic.ts and method-extractors/generic.ts: empty
`bodyNodeTypes` falls back to the type declaration node itself as its own
body container — needed because Zig's struct_declaration directly contains
its container_field children. (The `extractOwnerName` hook this commit
originally introduced now exists upstream; Zig just configures it.)
Out of scope (deferred):
- usingnamespace, build.zig.zon package graph, comptime/anytype
- scope-resolution hooks (emitScopeCaptures, interpretImport, …): Zig is
classified `experimental` and uses the generic fallback resolution path
- cross-package imports (std, deps)
Tests:
- new fixture test/fixtures/sample-code/simple.zig
- Zig describe block in tree-sitter-languages integration test
- simple.zig added to parsing.test.ts fixture-existence list
- Zig added to ingestion-utils detection unit test
- Zig smoke case in parser-loader-abi.test.ts
- Zig grammar registered in the grammar-literal validation gate
30 lines
541 B
Zig
30 lines
541 B
Zig
const std = @import("std");
|
|
|
|
pub fn add(a: i32, b: i32) i32 {
|
|
return a + b;
|
|
}
|
|
|
|
fn private_helper() i32 {
|
|
return 0;
|
|
}
|
|
|
|
pub const Point = struct {
|
|
x: i32,
|
|
y: i32,
|
|
|
|
pub fn init(x: i32, y: i32) Point {
|
|
return .{ .x = x, .y = y };
|
|
}
|
|
|
|
pub fn distance(self: Point, other: Point) i32 {
|
|
return (self.x - other.x) + (self.y - other.y);
|
|
}
|
|
};
|
|
|
|
const Color = enum { red, green, blue };
|
|
|
|
pub fn main() void {
|
|
const p = Point.init(1, 2);
|
|
_ = p.distance(Point{ .x = 3, .y = 4 });
|
|
_ = add(1, 2);
|
|
}
|