groovy

Change compiler error message "Closure expression looks like it may be an isolated open block" to make it more clear

Details

  • Type: Improvement Improvement
  • Status: Closed Closed
  • Priority: Trivial Trivial
  • Resolution: Fixed
  • Affects Version/s: 1.0
  • Fix Version/s: 1.5.2
  • Component/s: None
  • Labels:
    None
  • Number of attachments :
    0

Description

Running

{ println "foo" }

in the groovyConsole results in the compiler error message "Closure expression looks like it may be an isolated open block.;
solution: Add an explicit parameter list, as in {it -> ...}, or label it as L:{...}.". For me as a groovy newbie it wasn't clear that the first solution marks the code as closure while the second marks it as block, I thought that both would result in a closure. Perhaps the wording should be changed to something like this:

"Expression could be either a closure expression or an isolated open block. Solution: Add an explicit parameter list, as in {it -> ...}, to create a closure or label it as L:{...} to mark it as block."

Activity

Hide
Russel Winder added a comment -

Is there anything that can usefully be done to improve Groovy with respect to this issue?

Show
Russel Winder added a comment - Is there anything that can usefully be done to improve Groovy with respect to this issue?
Hide
Russel Winder added a comment -

This also affects 1.5.0.

Is there a phrasing of the message that makes things clearer?

Show
Russel Winder added a comment - This also affects 1.5.0. Is there a phrasing of the message that makes things clearer?
Hide
Paul King added a comment -

Now says:

Ambiguous expression could be either a parameterless closure expression or an isolated open code block;
   solution: Add an explicit closure parameter list, e.g. {it -> ...}, or force it to be treated as an open block by giving it a label, e.g. L:{...}

not perfect but probably as good as we will get for now.

Show
Paul King added a comment - Now says:
Ambiguous expression could be either a parameterless closure expression or an isolated open code block;
   solution: Add an explicit closure parameter list, e.g. {it -> ...}, or force it to be treated as an open block by giving it a label, e.g. L:{...}
not perfect but probably as good as we will get for now.
Hide
Paul King added a comment -

close off release 1.5.4

Show
Paul King added a comment - close off release 1.5.4

People

Vote (0)
Watch (0)

Dates

  • Created:
    Updated:
    Resolved: