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

Method Clauses

packages/packages.go:160–195  ·  view source on GitHub ↗

Clauses returns Clauses of the package with rewritten identifiers.

()

Source from the content-addressed store, hash-verified

158
159// Clauses returns Clauses of the package with rewritten identifiers.
160func (p *Package) Clauses() ([]ast.Clause, error) {
161 clauses := []ast.Clause{}
162
163 usedPackages, definedIdentifier, err := p.declarationMappings()
164 if err != nil {
165 return nil, err
166 }
167
168 for _, u := range p.units {
169 for _, clause := range u.Clauses {
170 if p.Name != "" {
171 clause.Head.Predicate.Symbol = fmt.Sprintf("%s.%s", p.Name, clause.Head.Predicate.Symbol)
172 }
173 for i, t := range clause.Premises {
174 switch a := t.(type) {
175 case ast.Atom:
176 na, err := p.updatedAtom(a, definedIdentifier, usedPackages)
177 if err != nil {
178 return nil, err
179 }
180 clause.Premises[i] = na
181 case ast.NegAtom:
182 ia, err := p.updatedAtom(a.Atom, definedIdentifier, usedPackages)
183 if err != nil {
184 return nil, err
185 }
186 clause.Premises[i] = ast.NegAtom{Atom: ia}
187 default:
188 continue
189 }
190 }
191 clauses = append(clauses, clause)
192 }
193 }
194 return clauses, nil
195}
196
197func findPackage(decls []ast.Decl) (Package, error) {
198 name := ""

Callers 3

TestClausesFunction · 0.80
TestClausesErrorsFunction · 0.80
AnalyzeAndCheckBoundsFunction · 0.80

Calls 2

declarationMappingsMethod · 0.95
updatedAtomMethod · 0.95

Tested by 2

TestClausesFunction · 0.64
TestClausesErrorsFunction · 0.64