@@ -660,7 +660,7 @@ func (v *checker) functionReturnType(node *ast.CallNode) Nature {
660
660
func (v * checker ) BuiltinNode (node * ast.BuiltinNode ) Nature {
661
661
switch node .Name {
662
662
case "all" , "none" , "any" , "one" :
663
- collection := v .visit (node .Arguments [0 ])
663
+ collection := v .visit (node .Arguments [0 ]). Deref ()
664
664
if ! isArray (collection ) && ! isUnknown (collection ) {
665
665
return v .error (node .Arguments [0 ], "builtin %v takes only array (got %v)" , node .Name , collection )
666
666
}
@@ -681,7 +681,7 @@ func (v *checker) BuiltinNode(node *ast.BuiltinNode) Nature {
681
681
return v .error (node .Arguments [1 ], "predicate should has one input and one output param" )
682
682
683
683
case "filter" :
684
- collection := v .visit (node .Arguments [0 ])
684
+ collection := v .visit (node .Arguments [0 ]). Deref ()
685
685
if ! isArray (collection ) && ! isUnknown (collection ) {
686
686
return v .error (node .Arguments [0 ], "builtin %v takes only array (got %v)" , node .Name , collection )
687
687
}
@@ -705,7 +705,7 @@ func (v *checker) BuiltinNode(node *ast.BuiltinNode) Nature {
705
705
return v .error (node .Arguments [1 ], "predicate should has one input and one output param" )
706
706
707
707
case "map" :
708
- collection := v .visit (node .Arguments [0 ])
708
+ collection := v .visit (node .Arguments [0 ]). Deref ()
709
709
if ! isArray (collection ) && ! isUnknown (collection ) {
710
710
return v .error (node .Arguments [0 ], "builtin %v takes only array (got %v)" , node .Name , collection )
711
711
}
@@ -723,7 +723,7 @@ func (v *checker) BuiltinNode(node *ast.BuiltinNode) Nature {
723
723
return v .error (node .Arguments [1 ], "predicate should has one input and one output param" )
724
724
725
725
case "count" :
726
- collection := v .visit (node .Arguments [0 ])
726
+ collection := v .visit (node .Arguments [0 ]). Deref ()
727
727
if ! isArray (collection ) && ! isUnknown (collection ) {
728
728
return v .error (node .Arguments [0 ], "builtin %v takes only array (got %v)" , node .Name , collection )
729
729
}
@@ -748,7 +748,7 @@ func (v *checker) BuiltinNode(node *ast.BuiltinNode) Nature {
748
748
return v .error (node .Arguments [1 ], "predicate should has one input and one output param" )
749
749
750
750
case "sum" :
751
- collection := v .visit (node .Arguments [0 ])
751
+ collection := v .visit (node .Arguments [0 ]). Deref ()
752
752
if ! isArray (collection ) && ! isUnknown (collection ) {
753
753
return v .error (node .Arguments [0 ], "builtin %v takes only array (got %v)" , node .Name , collection )
754
754
}
@@ -771,7 +771,7 @@ func (v *checker) BuiltinNode(node *ast.BuiltinNode) Nature {
771
771
}
772
772
773
773
case "find" , "findLast" :
774
- collection := v .visit (node .Arguments [0 ])
774
+ collection := v .visit (node .Arguments [0 ]). Deref ()
775
775
if ! isArray (collection ) && ! isUnknown (collection ) {
776
776
return v .error (node .Arguments [0 ], "builtin %v takes only array (got %v)" , node .Name , collection )
777
777
}
@@ -795,7 +795,7 @@ func (v *checker) BuiltinNode(node *ast.BuiltinNode) Nature {
795
795
return v .error (node .Arguments [1 ], "predicate should has one input and one output param" )
796
796
797
797
case "findIndex" , "findLastIndex" :
798
- collection := v .visit (node .Arguments [0 ])
798
+ collection := v .visit (node .Arguments [0 ]). Deref ()
799
799
if ! isArray (collection ) && ! isUnknown (collection ) {
800
800
return v .error (node .Arguments [0 ], "builtin %v takes only array (got %v)" , node .Name , collection )
801
801
}
@@ -816,7 +816,7 @@ func (v *checker) BuiltinNode(node *ast.BuiltinNode) Nature {
816
816
return v .error (node .Arguments [1 ], "predicate should has one input and one output param" )
817
817
818
818
case "groupBy" :
819
- collection := v .visit (node .Arguments [0 ])
819
+ collection := v .visit (node .Arguments [0 ]). Deref ()
820
820
if ! isArray (collection ) && ! isUnknown (collection ) {
821
821
return v .error (node .Arguments [0 ], "builtin %v takes only array (got %v)" , node .Name , collection )
822
822
}
@@ -835,7 +835,7 @@ func (v *checker) BuiltinNode(node *ast.BuiltinNode) Nature {
835
835
return v .error (node .Arguments [1 ], "predicate should has one input and one output param" )
836
836
837
837
case "sortBy" :
838
- collection := v .visit (node .Arguments [0 ])
838
+ collection := v .visit (node .Arguments [0 ]). Deref ()
839
839
if ! isArray (collection ) && ! isUnknown (collection ) {
840
840
return v .error (node .Arguments [0 ], "builtin %v takes only array (got %v)" , node .Name , collection )
841
841
}
@@ -857,7 +857,7 @@ func (v *checker) BuiltinNode(node *ast.BuiltinNode) Nature {
857
857
return v .error (node .Arguments [1 ], "predicate should has one input and one output param" )
858
858
859
859
case "reduce" :
860
- collection := v .visit (node .Arguments [0 ])
860
+ collection := v .visit (node .Arguments [0 ]). Deref ()
861
861
if ! isArray (collection ) && ! isUnknown (collection ) {
862
862
return v .error (node .Arguments [0 ], "builtin %v takes only array (got %v)" , node .Name , collection )
863
863
}
0 commit comments