diff --git a/checker/checker_test.go b/checker/checker_test.go index c0f4c1885..b8f49ff05 100644 --- a/checker/checker_test.go +++ b/checker/checker_test.go @@ -733,3 +733,15 @@ func TestCheck_CallFastTyped_Method(t *testing.T) { require.False(t, tree.Node.(*ast.CallNode).Fast) require.Equal(t, 42, tree.Node.(*ast.CallNode).Typed) } + +func TestCheck_works_with_nil_types(t *testing.T) { + env := map[string]interface{}{ + "null": nil, + } + + tree, err := parser.Parse("null") + require.NoError(t, err) + + _, err = checker.Check(tree, conf.New(env)) + require.NoError(t, err) +} diff --git a/checker/types.go b/checker/types.go index 3df3f8f53..ada925eda 100644 --- a/checker/types.go +++ b/checker/types.go @@ -204,6 +204,9 @@ func fetchField(t reflect.Type, name string) (reflect.StructField, bool) { } func deref(t reflect.Type) (reflect.Type, bool) { + if t == nil { + return nil, false + } if t.Kind() == reflect.Interface { return t, true }