1 // Code generated by "go test -run=Generate -write=all"; DO NOT EDIT.
2 // Source: ../../cmd/compile/internal/types2/objset.go
3 4 // Copyright 2013 The Go Authors. All rights reserved.
5 // Use of this source code is governed by a BSD-style
6 // license that can be found in the LICENSE file.
7 8 // This file implements objsets.
9 //
10 // An objset is similar to a Scope but objset elements
11 // are identified by their unique id, instead of their
12 // object name.
13 14 package types
15 16 // An objset is a set of objects identified by their unique id.
17 // The zero value for objset is a ready-to-use empty objset.
18 type objset map[string]Object // initialized lazily
19 20 // insert attempts to insert an object obj into objset s.
21 // If s already contains an alternative object alt with
22 // the same name, insert leaves s unchanged and returns alt.
23 // Otherwise it inserts obj and returns nil.
24 func (s *objset) insert(obj Object) Object {
25 id := obj.Id()
26 if alt := (*s)[id]; alt != nil {
27 return alt
28 }
29 if *s == nil {
30 *s = make(map[string]Object)
31 }
32 (*s)[id] = obj
33 return nil
34 }
35