File tree Expand file tree Collapse file tree 3 files changed +47
-0
lines changed Expand file tree Collapse file tree 3 files changed +47
-0
lines changed Original file line number Diff line number Diff line change @@ -374,6 +374,10 @@ func get(params ...any) (out any, err error) {
374374 i := params [1 ]
375375 v := reflect .ValueOf (from )
376376
377+ if from == nil {
378+ return nil , nil
379+ }
380+
377381 if v .Kind () == reflect .Invalid {
378382 panic (fmt .Sprintf ("cannot fetch %v from %T" , i , from ))
379383 }
Original file line number Diff line number Diff line change @@ -7221,6 +7221,11 @@ get(true ? i64 : greet, i32)
72217221get(true ? score : true, half)?.half
72227222get(true ? true : i, f64)
72237223get({"foo": foo, "bar": false}, type(i))
7224+ get(nil, "a")
7225+ get({}, "a")
7226+ get(nil, "a") == nil
7227+ get({}, "a") == nil
7228+ ({} | get("a") | get("b")) == nil
72247229greet
72257230greet != greet
72267231greet != greet != ok
Original file line number Diff line number Diff line change 1+ package issue_test
2+
3+ import (
4+ "testing"
5+
6+ "github.com/expr-lang/expr"
7+ "github.com/expr-lang/expr/internal/testify/require"
8+ )
9+
10+ func TestIssue785 (t * testing.T ) {
11+ emptyMap := map [string ]any {}
12+
13+ env := map [string ]interface {}{
14+ "empty_map" : emptyMap ,
15+ }
16+
17+ {
18+ code := `get(empty_map, "non_existing_key") | get("some_key") | get("another_key") | get("yet_another_key") | get("last_key")`
19+
20+ program , err := expr .Compile (code , expr .Env (env ))
21+ require .NoError (t , err )
22+
23+ output , err := expr .Run (program , env )
24+ require .NoError (t , err )
25+ require .Equal (t , nil , output )
26+ }
27+
28+ {
29+ code := `{} | get("non_existing_key") | get("some_key") | get("another_key") | get("yet_another_key") | get("last_key")`
30+
31+ program , err := expr .Compile (code , expr .Env (env ))
32+ require .NoError (t , err )
33+
34+ output , err := expr .Run (program , env )
35+ require .NoError (t , err )
36+ require .Equal (t , nil , output )
37+ }
38+ }
You can’t perform that action at this time.
0 commit comments