File tree Expand file tree Collapse file tree
internal/parse/treesitter Expand file tree Collapse file tree Original file line number Diff line number Diff 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+
289325func TestParseGo_Import (t * testing.T ) {
290326 src := `package main
291327
You can’t perform that action at this time.
0 commit comments