Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve type checking #7057

Open
nikpivkin opened this issue Sep 24, 2024 · 0 comments
Open

Improve type checking #7057

nikpivkin opened this issue Sep 24, 2024 · 0 comments

Comments

@nikpivkin
Copy link
Contributor

What is the underlying problem you're trying to solve?

Type checking can be improved with schemas, it's very cool. Right now Rego only does type checking when accessing an object and its child properties that are associated with a schema. But type checking stops working in other very common cases:

  • assigning an object property to a variable
  • passing an object to a Rego function
  • passing an object to a custom function

Describe the ideal solution

The type is stored in the value and are used for type checking anywhere

Additional Context

In the example below, only the first case works.

Example Rego file:

package test

import rego.v1

deny if {

    # case 1
    input.foo.baz

    # case 2
    # foo := input.foo
    # foo.baz

    # case 3
    # test(input.foo)

    # case 4
    # object.get(input.foo, "baz", input.foo)
}

test(foo) if foo.baz

schema.json

{
    "type": "object",
    "properties": {
        "foo": {
            "type": "object"
        }
    }
}

input.json

{
    "foo": {}
}

Run opa eval data -d test.rego -i input.json -s schema.json

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant