5 Commits

Author SHA1 Message Date
Johan Fylling a179a24c48 v1 API
All packages, except for `cmd` and `internal`, have been moved into a new `v1` root package.

Old packages are kept for backwards-compatibility reasons. All contained code is replaced with simple type aliases and proxy functions to `v1` implementations.

Old packages default to the Rego v0 syntax, new `v1` packages default to the Rego v1 syntax.

Signed-off-by: Johan Fylling <johan.dev@fylling.se>
2024-12-12 15:27:34 +01:00
Johan Fylling 7bb6dbe36b Preparing for v1 API
Moving (most) source to v1 root package to prepare for v0/v1 API separation.

Signed-off-by: Johan Fylling <johan.dev@fylling.se>
2024-12-12 15:09:03 +01:00
Torin Sandall cf56ae2c23 Add BFS traversal and refactor DFS 2017-04-26 15:04:48 -07:00
Torin Sandall 480281741b Address PR comments
- Refactored the checkSafetyBody function

    * Moved reordering into separate function with well defined interface.

    * Replaced ad-hoc maps to track sets of Vars with VarSet.

    * Added helper functions to get Vars on expressions, rules, etc. This
      makes the re-ordering much clearer.

- Updated test cases for DFS and re-ordering.

- Added comment in DFSTraversal to help callers consider whether
  the Visited state needs to be reset.

Also, fixed two separate bugs:

- When computing output variables in positions that unify recursively,
variable object keys should not be included (as the unification implementation
won't unify these.)

- When computing output variables, variables found in references (other than
the head) WILL be bound, so they should be included in the result. For
example:

> a = [1,2,3], a[i] != 2

In this case, "i" will be bound so it should be included in the output
variables for the expression.
2016-05-25 16:36:14 -07:00
Torin Sandall c5d8f52d5d Add recursion check
Also, add utility to perform DFS traversals.
2016-05-18 12:56:10 -07:00