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

STC: different errors for map[k] and map.getAt(k)

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 3.0.2
    • Component/s: Static Type Checker
    • Labels:
      None

      Description

      Follow up to GROOVY-6668. Explicit getAt call produces different error from square-bracket version. Could they both produce the same error? I prefer "Cannot call ... with arguments [groovy.lang.GString]" over the recently introduced "Cannot find matching method ..."

      @groovy.transform.CompileStatic
      void meth() {
        def key = "${'key'}"
        Map<String, String> map = [:]
      
        map[key].toUpperCase() // Cannot find matching method java.lang.Object#toUpperCase(). Please check if the declared type is correct and if the method exists.
        map.getAt(key).toUpperCase() // Cannot call <K,V> java.util.LinkedHashMap <java.lang.String, java.lang.String>#getAt(java.lang.String) with arguments [groovy.lang.GString] 
      }
      

      It appears that the square-bracket version may have selected extension method static Object getAt(Object self, String property).

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              emilles Eric Milles
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: