| 142 | } |
| 143 | |
| 144 | func TestDeref_pointer_of_interface(t *testing.T) { |
| 145 | v := 42 |
| 146 | a := &v |
| 147 | b := any(a) |
| 148 | c := any(&b) |
| 149 | t.Run("returned as is", func(t *testing.T) { |
| 150 | output, err := expr.Eval(`c`, map[string]any{ |
| 151 | "c": c, |
| 152 | }) |
| 153 | require.NoError(t, err) |
| 154 | require.Equal(t, c, output) |
| 155 | require.IsType(t, (*interface{})(nil), output) |
| 156 | }) |
| 157 | t.Run("+ works", func(t *testing.T) { |
| 158 | output, err := expr.Eval(`c+2`, map[string]any{ |
| 159 | "c": c, |
| 160 | }) |
| 161 | require.NoError(t, err) |
| 162 | require.Equal(t, 44, output) |
| 163 | }) |
| 164 | } |
| 165 | |
| 166 | func TestDeref_nil(t *testing.T) { |
| 167 | var b *int = nil |