func (c *Compiler) getExports() *util.HashMap { exports := util.NewHashMap(func(a, b util.T) bool { r1 := a.(Ref) r2 := a.(Ref) return r1.Equal(r2) }, func(v util.T) int { return v.(Ref).Hash() }) for _, mod := range c.Modules { for _, rule := range mod.Rules { v, ok := exports.Get(mod.Package.Path) if !ok { v = []Var{} } vars := v.([]Var) vars = append(vars, rule.Name) exports.Put(mod.Package.Path, vars) } } return exports }
// NewValueMap returns a new ValueMap. func NewValueMap() *ValueMap { vs := &ValueMap{ hashMap: util.NewHashMap(valueEq, valueHash), } return vs }