diff --git a/internal/ast/ref.go b/internal/ast/ref.go deleted file mode 100644 index f1de4135..00000000 --- a/internal/ast/ref.go +++ /dev/null @@ -1,32 +0,0 @@ -package ast - -import ( - "strings" - - "github.com/open-policy-agent/opa/v1/ast" -) - -// RefToString converts an ast.Ref to a readable string, e.g. data.foo[bar]. -func RefToString(ref ast.Ref) string { - sb := strings.Builder{} - - for i, part := range ref { - if part.IsGround() { - if i > 0 { - sb.WriteString(".") - } - - sb.WriteString(strings.Trim(part.Value.String(), `"`)) - } else { - if i == 0 { - sb.WriteString(strings.Trim(part.Value.String(), `"`)) - } else { - sb.WriteString("[") - sb.WriteString(strings.Trim(part.Value.String(), `"`)) - sb.WriteString("]") - } - } - } - - return sb.String() -} diff --git a/internal/ast/ref_test.go b/internal/ast/ref_test.go deleted file mode 100644 index 0e66f519..00000000 --- a/internal/ast/ref_test.go +++ /dev/null @@ -1,75 +0,0 @@ -package ast - -import ( - "testing" - - "github.com/open-policy-agent/opa/v1/ast" -) - -func TestRefToString(t *testing.T) { - t.Parallel() - - cases := []struct { - title string - ref ast.Ref - expected string - }{ - { - "single var", - ast.Ref{ - ast.VarTerm("foo"), - }, - "foo", - }, - { - "var in middle", - ast.Ref{ - ast.StringTerm("foo"), - ast.VarTerm("bar"), - ast.StringTerm("baz"), - }, - "foo[bar].baz", - }, - { - "strings", - ast.Ref{ - ast.DefaultRootDocument, - ast.StringTerm("foo"), - ast.StringTerm("bar"), - ast.StringTerm("baz"), - }, - "data.foo.bar.baz", - }, - { - "consecutive vars", - ast.Ref{ - ast.VarTerm("foo"), - ast.VarTerm("bar"), - ast.VarTerm("baz"), - }, - "foo[bar][baz]", - }, - { - "mixed", - ast.Ref{ - ast.VarTerm("foo"), - ast.VarTerm("bar"), - ast.StringTerm("baz"), - ast.VarTerm("qux"), - ast.StringTerm("quux"), - }, - "foo[bar].baz[qux].quux", - }, - } - - for _, tc := range cases { - t.Run(tc.title, func(t *testing.T) { - t.Parallel() - - result := RefToString(tc.ref) - if result != tc.expected { - t.Errorf("Expected %s, got %s", tc.expected, result) - } - }) - } -} diff --git a/internal/lsp/completions/refs/defined.go b/internal/lsp/completions/refs/defined.go index 07ba48e1..5d43276d 100644 --- a/internal/lsp/completions/refs/defined.go +++ b/internal/lsp/completions/refs/defined.go @@ -22,7 +22,7 @@ func DefinedInModule(module *ast.Module, builtins map[string]*ast.Builtin) map[s // first, create a reference for the package using the metadata // if present - packagePrettyName := strings.TrimPrefix(rast.RefToString(module.Package.Path), "data.") + packagePrettyName := strings.TrimPrefix(module.Package.Path.String(), "data.") packageDescription := defaultDescription(packagePrettyName) packageAnnotation, ok := findAnnotationForPackage(module) @@ -43,7 +43,7 @@ func DefinedInModule(module *ast.Module, builtins map[string]*ast.Builtin) map[s ruleGroups := make(map[string][]*ast.Rule, len(module.Rules)) for _, rule := range module.Rules { - name := rast.RefToString(rule.Head.Ref()) + name := rule.Head.Ref().String() if strings.HasPrefix(name, "test_") { continue diff --git a/internal/lsp/documentsymbol.go b/internal/lsp/documentsymbol.go index 14e79369..a6d2e127 100644 --- a/internal/lsp/documentsymbol.go +++ b/internal/lsp/documentsymbol.go @@ -41,7 +41,7 @@ func documentSymbols( ruleGroups := make(map[string][]*ast.Rule, len(module.Rules)) for _, rule := range module.Rules { - name := rast.RefToString(rule.Head.Ref()) + name := rule.Head.Ref().String() ruleGroups[name] = append(ruleGroups[name], rule) } @@ -58,7 +58,7 @@ func documentSymbols( ruleRange := locationToRange(rule.Location) ruleSymbol := types.DocumentSymbol{ - Name: rast.RefToString(rule.Head.Ref()), + Name: rule.Head.Ref().String(), Kind: kind, Range: ruleRange, SelectionRange: ruleRange, @@ -84,7 +84,7 @@ func documentSymbols( } groupSymbol := types.DocumentSymbol{ - Name: rast.RefToString(rules[0].Head.Ref()), + Name: rules[0].Head.Ref().String(), Kind: kind, Range: groupRange, SelectionRange: groupRange,