Jan Hackel created GROOVY-11258:
-----------------------------------

             Summary: AssertJ collection mapping is badly supported
                 Key: GROOVY-11258
                 URL: https://issues.apache.org/jira/browse/GROOVY-11258
             Project: Groovy
          Issue Type: Bug
          Components: Static Type Checker
    Affects Versions: 4.0.17
            Reporter: Jan Hackel


The following code will fail with the message 

{noformat}
[Static type checking] - No such property: x for class: java.lang.Object
 @ line 8, column 13.
         .map{ it.x }
               ^
{noformat}

{code:groovy}
@groovy.transform.CompileStatic
class AssertJCollectionMappingTest {

  @org.junit.jupiter.api.Test
  void mapping() {
    def texts = somePojos()
    org.assertj.core.api.Assertions.assertThat(texts)
      .map{ it.x }
      .containsExactlyInAnyOrderElementsOf(['a', 'b'])
  }

  private static Collection<Pojo> somePojos() {
    return [new Pojo(x: 'a'), new Pojo(x: 'b')]
  }

  static class Pojo {
    String x
  }
}
{code}

Changing the line  to  

{noformat}
.map({ it.x } as Function<Pojo, String>) 
{noformat}

makes it compile but it is clumsy for more complicated types.

It would be nice if Groovy was able to resolve the types without hints.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to