MCPcopy
hub / github.com/google/mangle / declarationMappings

Method declarationMappings

packages/packages.go:39–78  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

37}
38
39func (p *Package) declarationMappings() (stringset.Set, map[ast.PredicateSym]bool, error) {
40 usedPackages := stringset.New(p.Name)
41 definedIdentifier := map[ast.PredicateSym]bool{}
42 for _, u := range p.units {
43 for _, clause := range u.Clauses {
44 oldSym := clause.Head.Predicate
45 definedIdentifier[oldSym] = true
46 }
47 for _, decl := range u.Decls {
48 if decl.DeclaredAtom.Predicate == symbols.Package {
49 continue
50 }
51 if decl.DeclaredAtom.Predicate == symbols.Use {
52 for _, desc := range decl.Descr {
53 if desc.Predicate == nameSym {
54 if len(desc.Args) != 1 {
55 return nil, nil, fmt.Errorf("unexpected length %v", len(desc.Args))
56 }
57 n, ok := desc.Args[0].(ast.Constant)
58 if !ok {
59 return nil, nil, fmt.Errorf("unexpected type for name, expected constant")
60 }
61 v, err := n.StringValue()
62 if err != nil {
63 return nil, nil, err
64 }
65 if v == p.Name {
66 return nil, nil, fmt.Errorf("used package %q is same as current package", v)
67 }
68 usedPackages.Add(v)
69 break
70 }
71 }
72 }
73 oldSym := decl.DeclaredAtom.Predicate
74 definedIdentifier[oldSym] = true
75 }
76 }
77 return usedPackages, definedIdentifier, nil
78}
79
80// Decls returns Decls of the package with rewritten identifiers.
81func (p *Package) Decls() ([]ast.Decl, error) {

Callers 2

DeclsMethod · 0.95
ClausesMethod · 0.95

Calls 2

StringValueMethod · 0.80
AddMethod · 0.65

Tested by

no test coverage detected