Closed
Description
Example (Go Playground):
package main
import (
"fmt"
"github.com/expr-lang/expr"
)
func main() {
type MyStruct struct {
nonExported string
}
fmt.Println(expr.Eval(` "nonExported" in $env `, MyStruct{})) // "in" can see unexported fields
fmt.Println(expr.Eval(` nonExported `, MyStruct{})) // trying to access them fails as expected
}
I would expect that "in" returns false when testing an unexported struct field. This can be a problem for a number of reasons:
- It is confusing if I can see the field with the "in" operator but cannot access it with a member operator.
- This can be disclosing the existence of information that we want to keep private, thus we make the field unexported.
P.S.: I know where the bug is and can provide a PR to fix it, but I'm not creating it right now because I've been creating too many issues and PRs these last days. I would like your confirmation before proceeding to avoid bugging you if you don't have time. Let me know and I can work in the bug fix.
Thank you.