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

One-arg methods have implicit default parameter of null

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Won't Fix
    • None
    • 1.5.5
    • None
    • None
    • v1.0 on Java 1.6.0 on WinXP prof edn

    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 }
      

      Attachments

        Activity

          People

            blackdrag Jochen Theodorou
            gavingrover Gavin Grover
            Votes:
            1 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: