package languages import "testing" func TestPHPStringCallable_ArrayMap(t *testing.T) { src := []byte(` 'cb', '/y/' => 'Acme::handle'], $s); set_exception_handler('onError'); register_tick_function([$obj, 'tick']); } `) res, err := NewPHPExtractor().Extract("a.php", src) if err != nil { t.Fatal(err) } cands := fnValueCands(res) for _, name := range []string{"cmp", "cb", "handle", "onError", "tick"} { if _, ok := cands[name]; !ok { t.Errorf("expected callable %q captured (got: %v)", name, keys(cands)) } } if m, ok := cands["handle"]; !ok || m["fn_ref_recv_hint"] != "Acme" { t.Errorf("preg_replace_callback_array value Acme::handle recv hint = %v", cands["handle"]) } }