From 980d103632d9affec2c3e8a15419936e5b7e4389 Mon Sep 17 00:00:00 2001 From: Denys Smirnov Date: Mon, 7 Oct 2019 20:09:10 +0300 Subject: [PATCH] gizmo: return error when calling filter() with a wrong type; fixes #833 --- query/gizmo/gizmo_test.go | 7 +++++++ query/gizmo/traversals.go | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/query/gizmo/gizmo_test.go b/query/gizmo/gizmo_test.go index 2bd3269d6..da192ff63 100644 --- a/query/gizmo/gizmo_test.go +++ b/query/gizmo/gizmo_test.go @@ -193,6 +193,13 @@ var testQueries = []struct { `, expect: []string{""}, }, + { + message: "filter with a wrong type", + query: ` + g.V().filter(//).all() + `, + err: true, + }, { message: "use .both()", query: ` diff --git a/query/gizmo/traversals.go b/query/gizmo/traversals.go index 7d710f80a..e56e75b5a 100644 --- a/query/gizmo/traversals.go +++ b/query/gizmo/traversals.go @@ -17,6 +17,7 @@ package gizmo // Adds special traversal functions to JS Gizmo objects. Most of these just build the chain of objects, and won't often need the session. import ( + "errors" "fmt" "github.com/dop251/goja" @@ -644,6 +645,9 @@ func (p *pathObject) Filter(args ...valFilter) (*pathObject, error) { } filt := make([]shape.ValueFilter, 0, len(args)) for _, f := range args { + if f.f == nil { + return nil, errors.New("invalid argument type in filter()") + } filt = append(filt, f.f) } np := p.clonePath().Filters(filt...)