regularise more code, switch one test from die to warn verification
Matt S Trout [Sat, 8 Sep 2018 18:15:00 +0000 (18:15 +0000)]
lib/SQL/Abstract.pm
t/01generate.t

index cd58ba7..f20a241 100644 (file)
@@ -605,6 +605,11 @@ sub _expand_expr_hashpair {
     if (my ($rest) = $k =~/^-not[_ ](.*)$/) {
       return $self->_expand_expr({ -not => { "-${rest}", $v } }, $logic);
     }
+    if (my ($logic) = $k =~ /^-(and|or)$/) {
+      if (ref($v) eq 'HASH') {
+        return $self->_expand_expr($v, $logic);
+      }
+    }
   } else {
     unless (defined($v)) {
       my $orig_op = my $op = $self->{cmp};
index 5437493..3e55f15 100644 (file)
@@ -726,9 +726,6 @@ for my $lhs (undef, '') {
     [ foo => "bar", $lhs => \["baz"], bizz => "buzz" ],
     [ $lhs => \"baz" ],
     [ $lhs => \["baz"] ],
-
-    # except for this one, that is automagically arrayified
-    { foo => "bar", -or => { $lhs => \"baz" }, bizz => "buzz" },
   ) {
     push @tests, {
       func => 'where',
@@ -741,6 +738,7 @@ for my $lhs (undef, '') {
 ## deprecations - sorta worked, likely abused by folks
   for my $where_arg (
     # the arrayref forms of this never worked and throw above
+    { foo => "bar", -or => { $lhs => \"baz" }, bizz => "buzz" },
     { foo => "bar", -and => { $lhs => \"baz" }, bizz => "buzz" },
     { foo => "bar", $lhs => \"baz", bizz => "buzz" },
     { foo => "bar", $lhs => \["baz"], bizz => "buzz" },