@@ -1772,6 +1772,45 @@ func TestRun_NilCoalescingOperator(t *testing.T) {
17721772 })
17731773}
17741774
1775+ func TestEval_nil_in_maps (t * testing.T ) {
1776+ env := map [string ]interface {}{
1777+ "m" : map [interface {}]interface {}{nil : "bar" },
1778+ "empty" : map [interface {}]interface {}{},
1779+ }
1780+ t .Run ("nil key exists" , func (t * testing.T ) {
1781+ p , err := expr .Compile (`m[nil]` , expr .Env (env ))
1782+ assert .NoError (t , err )
1783+
1784+ out , err := expr .Run (p , env )
1785+ assert .NoError (t , err )
1786+ assert .Equal (t , "bar" , out )
1787+ })
1788+ t .Run ("no nil key" , func (t * testing.T ) {
1789+ p , err := expr .Compile (`empty[nil]` , expr .Env (env ))
1790+ assert .NoError (t , err )
1791+
1792+ out , err := expr .Run (p , env )
1793+ assert .NoError (t , err )
1794+ assert .Equal (t , nil , out )
1795+ })
1796+ t .Run ("nil in m" , func (t * testing.T ) {
1797+ p , err := expr .Compile (`nil in m` , expr .Env (env ))
1798+ assert .NoError (t , err )
1799+
1800+ out , err := expr .Run (p , env )
1801+ assert .NoError (t , err )
1802+ assert .Equal (t , true , out )
1803+ })
1804+ t .Run ("nil in empty" , func (t * testing.T ) {
1805+ p , err := expr .Compile (`nil in empty` , expr .Env (env ))
1806+ assert .NoError (t , err )
1807+
1808+ out , err := expr .Run (p , env )
1809+ assert .NoError (t , err )
1810+ assert .Equal (t , false , out )
1811+ })
1812+ }
1813+
17751814// Mock types
17761815
17771816type mockEnv struct {
0 commit comments