Skip to content

Commit 2c0a142

Browse files
committed
tests(treesitter): add tests for Go type assertion call rewrite and default call rewriter
1 parent d261c93 commit 2c0a142

1 file changed

Lines changed: 36 additions & 0 deletions

File tree

internal/parse/treesitter/walker_test.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,42 @@ func main() {
286286
}
287287
}
288288

289+
func TestParseGo_TypeAssertionCallRewriteUsesSemanticsHook(t *testing.T) {
290+
src := `package main
291+
292+
type FlowTracer interface {
293+
TraceFlowBounded()
294+
}
295+
296+
func handle(dep any) {
297+
tracer, ok := dep.(FlowTracer)
298+
if ok {
299+
tracer.TraceFlowBounded()
300+
}
301+
}
302+
`
303+
w := NewWalker(GoSpec)
304+
_, edges, err := w.Parse("main.go", []byte(src))
305+
if err != nil {
306+
t.Fatalf("unexpected error: %v", err)
307+
}
308+
callEdges := filterEdgesByKind(edges, model.EdgeKindCalls)
309+
for _, e := range callEdges {
310+
if e.Fingerprint == "calls:main.go:FlowTracer.TraceFlowBounded:10" {
311+
return
312+
}
313+
}
314+
t.Fatalf("expected type assertion call rewrite edge, got %#v", callEdges)
315+
}
316+
317+
func TestLanguageSemantics_DefaultCallRewriterNoop(t *testing.T) {
318+
rewriter := semanticsOrDefault(PythonSpec).CallRewriter(SemanticContext{})
319+
got := rewriter.RewriteCall(CallRewriteContext{Callee: "client.get", Line: 1})
320+
if got != "client.get" {
321+
t.Fatalf("default call rewriter changed callee: got %q", got)
322+
}
323+
}
324+
289325
func TestParseGo_Import(t *testing.T) {
290326
src := `package main
291327

0 commit comments

Comments
 (0)