Uploaded image for project: 'Groovy'
  1. Groovy
  2. GROOVY-10589

TypeChecked/CompileStatic Incompatible generic argument types regression for List.sort(boolean, Comparator)

    XMLWordPrintableJSON

Details

    Description

      import groovy.transform.*
      import java.time.Instant
      
      @CompileStatic
      class Reproducer {
          static final Comparator<Record> RECORD_COMPARATOR = { Record a, Record b -> a.timestamp <=> b.timestamp }
          
          List<Record> records = []
          
          
          List<Record> getSortedRecords() {
              records.sort(false, RECORD_COMPARATOR)
          }
      }
      
      @TupleConstructor
      @CompileStatic
      class Record {
         final Instant timestamp
      }
      

      fails with

      [Static type checking] - Incompatible generic argument types. Cannot assign java.util.List<? extends Record> to: java.util.List<Record>
       @ line 12, column 9.
      

      Groovy Web Console

      Attachments

        Activity

          People

            Unassigned Unassigned
            leonard84 Leonard Brünings
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: