@@ -1772,6 +1772,45 @@ func TestRun_NilCoalescingOperator(t *testing.T) {
1772
1772
})
1773
1773
}
1774
1774
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
+
1775
1814
// Mock types
1776
1815
1777
1816
type mockEnv struct {
0 commit comments