You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Damir Murat (Jira)" <ji...@apache.org> on 2021/10/19 11:39:00 UTC

[jira] [Created] (GROOVY-10318) Weird behavior of !in operator

Damir Murat created GROOVY-10318:
------------------------------------

             Summary: Weird behavior of !in operator
                 Key: GROOVY-10318
                 URL: https://issues.apache.org/jira/browse/GROOVY-10318
             Project: Groovy
          Issue Type: Improvement
    Affects Versions: 3.0.9
            Reporter: Damir Murat


After upgrading to 3.0.9, I've noticed some unexpected behavior around the "!in" operator. Consider the following example:
{code:java}
import groovy.transform.CompileStatic@CompileStatic

class MyPogo {
  String firstName
  String lastName
}

@CompileStatic
class Test {
  void testMe() {
    MyPogo myPogo = new MyPogo(firstName: "My First Name", lastName: "My Last Name")
    Map<String, ?> filteredProperties = myPogo.properties.findAll { 
      Boolean result = it.key as String !in ["class"]
      result
    }
    println filteredProperties
    assert filteredProperties.size() == 2
    
    filteredProperties = myPogo.properties.findAll { 
      (it.key as String !in ["class"]) as Boolean
    }    
    println filteredProperties
    assert filteredProperties.size() == 2
    
    filteredProperties = myPogo.properties.findAll { 
      it.key as String !in ["class"]
    }    
    println filteredProperties
    assert filteredProperties.size() == 2
  }
}

new Test().testMe()
{code}
When running it in GroocyConsole, the third assertion will fail without apparent reason.
It looks like for "!in" to work correctly, some additional operation is required.

The same code works for the 3.0.8 and 3.0.7 versions.
Tnx




--
This message was sent by Atlassian Jira
(v8.3.4#803005)