Пример #1
0
func (ctxt *context) callees(inst *ssa.Call) ([]*ssa.Function, error) {
	pos := ctxt.lprog.Fset.Position(inst.Pos())
	if pos.Line <= 0 {
		return nil, fmt.Errorf("no position")
	}
	qpos, err := oracle.ParseQueryPos(ctxt.lprog, posStr(pos), true)
	if err != nil {
		return nil, fmt.Errorf("cannot parse query pos %q: %v", posStr(pos), err)
	}
	result, err := ctxt.oracle.Query("callees", qpos)
	if err != nil {
		return nil, fmt.Errorf("query error: %v", err)
	}
	return calleeFuncs(result), nil
}