func checkPointsToExpectation(e *expectation, pts pointer.PointsToSet, lineMapping map[string]string, prog *ssa.Program) bool { expected := make(map[string]int) surplus := make(map[string]int) exact := true for _, g := range e.args { if g == "..." { exact = false continue } expected[g]++ } // Find the set of labels that the probe's // argument (x in print(x)) may point to. for _, label := range pts.Labels() { name := labelString(label, lineMapping, prog) if expected[name] > 0 { expected[name]-- } else if exact { surplus[name]++ } } // Report multiset difference: ok := true for _, count := range expected { if count > 0 { ok = false e.errorf("value does not alias these expected labels: %s", join(expected)) break } } for _, count := range surplus { if count > 0 { ok = false e.errorf("value may additionally alias these labels: %s", join(surplus)) break } } return ok }