expr icon indicating copy to clipboard operation
expr copied to clipboard

Auto-dereferencing not working

Open antonmedv opened this issue 3 months ago • 1 comments

In some cases auto-deref is not working.

  • Map access {foo: bar}[ptr], where ptr is *string
  • Cond ptr ? 1 : 0, where ptr is *bool

antonmedv avatar Sep 18 '25 11:09 antonmedv

Examples of the problem:

package main

import (
	"fmt"

	"github.com/expr-lang/expr"
)

type InputStruct struct {
	Enabled *bool `json:"enabled"`
}

func main() {
	var v InputStruct

	//	b := true
	//	v.Enabled = &b

	env := map[string]any{
		"v": v,
	}

	code := `v.Enabled == nil ? 'default' : ( v.Enabled ? 'enabled' : 'disabled' )`

	program, err := expr.Compile(code, expr.Env(env))
	if err != nil {
		panic(err)
	}

	output, err := expr.Run(program, env)
	if err != nil {
		panic(err)
	}

	fmt.Println(output)
}

antonmedv avatar Sep 18 '25 11:09 antonmedv