groovy

One-arg methods have implicit default parameter of null

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Minor Minor
  • Resolution: Won't Fix
  • Affects Version/s: None
  • Fix Version/s: 1.5.5
  • Component/s: None
  • Labels:
    None
  • Environment:
    v1.0 on Java 1.6.0 on WinXP prof edn
  • Number of attachments :
    0

Description

When a method, whether static or instance, has one and only one parameter of non-primitive type, it has an implicit default value of null. Is this intended?

class A{
  static g2( Integer i ){ i }
  def g3( Integer i ){ i }
  static g4( int i ){ i }
  static g5( Integer i, Integer j ){ [ i, j ] }
}

//When no args supplied for one arg static method, default value of null assumed...
assert A.g2( new Integer(7) ) == 7
assert A.g2() == null

//Ditto for instance method...
assert new A().g3( new Integer(8) ) == 8
assert new A().g3() == null

//If parameter is primitive type, argument is mandatory as in Java...
assert A.g4( 7 ) == 7
try{ A.g4(); assert false }catch(Throwable e){ assert e instanceof IllegalArgumentException }

//When there's more than one parameter, both arguments also mandatory...
assert A.g5( new Integer(7), new Integer(8) ) == [ 7, 8 ]
try{ A.g5( new Integer(7) ); assert false }catch(Throwable e){ assert e instanceof MissingMethodException }
try{ A.g5(); assert false }catch(Throwable e){ assert e instanceof MissingMethodException }

Activity

Hide
Colin Howe added a comment -

Can anyone let us know if this is a design decision or not?

We're encountering problems when our developers incorrectly call a function without parameters. They get unexpected behaviour due to forgetting to pass in a parameter and this can take some time to track down when the function allows null as a parameter.

Show
Colin Howe added a comment - Can anyone let us know if this is a design decision or not? We're encountering problems when our developers incorrectly call a function without parameters. They get unexpected behaviour due to forgetting to pass in a parameter and this can take some time to track down when the function allows null as a parameter.
Hide
blackdrag blackdrag added a comment -

it was a design decision.. before Groovy 2.0 there is no way to change this

Show
blackdrag blackdrag added a comment - it was a design decision.. before Groovy 2.0 there is no way to change this

People

Vote (1)
Watch (1)

Dates

  • Created:
    Updated:
    Resolved: