Github user ottobackwards commented on the issue:

    https://github.com/apache/metron/pull/814
  
    So for example:
    
    ```java
     /*
              curr is the current value on the stack.  This is the non-deferred 
actual evaluation for this expression
              and with the current context.
               */
              Token<?> curr = instanceDeque.peek();
              if (curr != null && curr.getValue() != null && curr.getValue() 
instanceof Boolean
                  && 
ShortCircuitOp.class.isAssignableFrom(token.getUnderlyingType())) {
                //if we have a boolean as the current value and the next 
non-contextual token is a short circuit op
                //then we need to short circuit possibly
                if (token.getUnderlyingType() == BooleanArg.class) {
    ```
    
    with this function: 
    
    ```java
     @Test
      @SuppressWarnings("unchecked")
      public void testVariableOnlyCheckWithDefault() {
        Assert.assertEquals("a",  run("match{ foo : 'a', default : 'b' }",
            new HashMap() {{
              put("foo", true);
            }}));
      }
    ```
    
    When we get to that point, because of the validation of vars to null `curr` 
IS null.  So even though token IS a short circuit token, we do not process it 
as we should. 


---

Reply via email to