File tree Expand file tree Collapse file tree 2 files changed +19
-9
lines changed Expand file tree Collapse file tree 2 files changed +19
-9
lines changed Original file line number Diff line number Diff line change @@ -828,15 +828,20 @@ func TestExpr_fetch_from_func(t *testing.T) {
828828 assert.Contains(t, err.Error(), "cannot fetch Value from func()")
829829}
830830
831- func TestExpr_reference_options(t *testing.T) {
832- options := []expr.Option{expr.Env(map[string]interface{}{})}
831+ func TestExpr_map_default_values(t *testing.T) {
832+ env := map[string]interface{}{
833+ "foo": map[string]string{},
834+ "bar": map[string]*string{},
835+ }
833836
834- e, err := expr.Compile("'hello world'", options...)
835- assert.NoError(t, err)
837+ input := `foo['missing'] == '' && bar['missing'] == nil`
838+
839+ program, err := expr.Compile(input, expr.Env(env))
840+ require.NoError(t, err)
836841
837- output, err := expr.Run(e, "'hello world'" )
838- assert .NoError(t, err)
839- assert .Equal(t, "hello world" , output)
842+ output, err := expr.Run(program, env )
843+ require .NoError(t, err)
844+ require .Equal(t, true , output)
840845}
841846
842847//
Original file line number Diff line number Diff line change @@ -36,8 +36,13 @@ func fetch(from interface{}, i interface{}) interface{} {
3636
3737 case reflect.Map:
3838 value := v.MapIndex(reflect.ValueOf(i))
39- if value.IsValid() && value.CanInterface() {
40- return value.Interface()
39+ if value.IsValid() {
40+ if value.CanInterface() {
41+ return value.Interface()
42+ }
43+ } else {
44+ elem := reflect.TypeOf(from).Elem()
45+ return reflect.Zero(elem).Interface()
4146 }
4247
4348 case reflect.Struct:
You can’t perform that action at this time.
0 commit comments