[jira] [Updated] (GROOVY-7037) getAt as Operator Throws if given Fixed and Variable Arguments

2021-11-19 Thread Eric Milles (Jira)


 [ 
https://issues.apache.org/jira/browse/GROOVY-7037?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Eric Milles updated GROOVY-7037:

Labels: varargs  (was: )

> getAt as Operator Throws if given Fixed and Variable Arguments
> --
>
> Key: GROOVY-7037
> URL: https://issues.apache.org/jira/browse/GROOVY-7037
> Project: Groovy
>  Issue Type: Bug
>Affects Versions: 2.3.6, 2.4.0-beta-2
> Environment: RHEL 6.5 x64
>Reporter: Steve Amerige
>Priority: Minor
>  Labels: varargs
> Attachments: Test.groovy
>
>
> The getAt method for indexing fails when variable arguments are used with [] 
> if any fixed arguments are present.  For example:
> {code}
> class Test
> {
>def getAt(String s) { return s }
>def getAt(String s, Integer x) { return "$s $x" }   
>// def getAt(Object... o) { return o }   // This would succeed
>def getAt(String s, Object... a) { return "$s $a" }
>static void main(String[] args)
>{
>   Test t = new Test()
>   assert t['a'] == 'a'
>   assert t['b', 2] == 'b 2'
>   assert t.getAt('c', 3, true) == 'c [3, true]'
>   assert t['c', 3, true] == 'c [3, true]'   // This throws an exception
>}
> }
> {code}
> The above produces:
> {noformat}
> Exception thrown
> java.lang.IllegalArgumentException: wrong number of arguments
>   at Test.main(ConsoleScript42:14)
> {noformat}
> Workaround: do not use fixed and variable arguments at the same time and use 
> only variable arguments as in the case shown commented out above: 
> getAt(Object... o).  This is less-than desirable, however, because it 
> restricts the user from using method overloading to separate out 
> distinctly-different logic and forces the user to do runtime checks and 
> implement control structure when using the single varargs method.  In this 
> case, however, the bug severity is mitigated by the fact that the user can 
> explicitly use the "getAt" invocation instead of using the [ ] operator 
> notation.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)


[jira] [Updated] (GROOVY-7037) getAt as Operator Throws if given Fixed and Variable Arguments

2016-08-28 Thread Paul King (JIRA)

 [ 
https://issues.apache.org/jira/browse/GROOVY-7037?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Paul King updated GROOVY-7037:
--
Description: 
The getAt method for indexing fails when variable arguments are used with [] if 
any fixed arguments are present.  For example:
{code}
class Test
{
   def getAt(String s) { return s }
   def getAt(String s, Integer x) { return "$s $x" }   
   // def getAt(Object... o) { return o }   // This would succeed
   def getAt(String s, Object... a) { return "$s $a" }

   static void main(String[] args)
   {
  Test t = new Test()
  assert t['a'] == 'a'
  assert t['b', 2] == 'b 2'
  assert t.getAt('c', 3, true) == 'c [3, true]'
  assert t['c', 3, true] == 'c [3, true]'   // This throws an exception
   }
}
{code}
The above produces:
{noformat}
Exception thrown
java.lang.IllegalArgumentException: wrong number of arguments
at Test.main(ConsoleScript42:14)
{noformat}

Workaround: do not use fixed and variable arguments at the same time and use 
only variable arguments as in the case shown commented out above: 
getAt(Object... o).  This is less-than desirable, however, because it restricts 
the user from using method overloading to separate out distinctly-different 
logic and forces the user to do runtime checks and implement control structure 
when using the single varargs method.  In this case, however, the bug severity 
is mitigated by the fact that the user can explicitly use the "getAt" 
invocation instead of using the [ ] operator notation.

  was:
The getAt method for indexing fails when variable arguments are used with [] if 
any fixed arguments are present.  For example:

class Test
{
   def getAt(String s) { return s }
   def getAt(String s, Integer x) { return "$s $x" }   
   // def getAt(Object... o) { return o }   // This would succeed
   def getAt(String s, Object... a) { return "$s $a" }

   static void main(String[] args)
   {
  Test t = new Test()
  assert t['a'] == 'a'
  assert t['b', 2] == 'b 2'
  assert t.getAt('c', 3, true) == 'c [3, true]'
  assert t['c', 3, true] == 'c [3, true]'   // This throws an exception
   }
}

The above produces:

Exception thrown

java.lang.IllegalArgumentException: wrong number of arguments

at Test.main(ConsoleScript42:14)

Workaround: do not use fixed and variable arguments at the same time and use 
only variable arguments as in the case shown commented out above: 
getAt(Object... o).  This is less-than desirable, however, because it restricts 
the user from using method overloading to separate out distinctly-different 
logic and forces the user to do runtime checks and implement control structure 
when using the single varargs method.  In this case, however, the bug severity 
is mitigated by the fact that the user can explicitly use the "getAt" 
invocation instead of using the [ ] operator notation.


> getAt as Operator Throws if given Fixed and Variable Arguments
> --
>
> Key: GROOVY-7037
> URL: https://issues.apache.org/jira/browse/GROOVY-7037
> Project: Groovy
>  Issue Type: Bug
>Affects Versions: 2.3.6, 2.4.0-beta-2
> Environment: RHEL 6.5 x64
>Reporter: Steve Amerige
>Priority: Minor
> Attachments: Test.groovy
>
>
> The getAt method for indexing fails when variable arguments are used with [] 
> if any fixed arguments are present.  For example:
> {code}
> class Test
> {
>def getAt(String s) { return s }
>def getAt(String s, Integer x) { return "$s $x" }   
>// def getAt(Object... o) { return o }   // This would succeed
>def getAt(String s, Object... a) { return "$s $a" }
>static void main(String[] args)
>{
>   Test t = new Test()
>   assert t['a'] == 'a'
>   assert t['b', 2] == 'b 2'
>   assert t.getAt('c', 3, true) == 'c [3, true]'
>   assert t['c', 3, true] == 'c [3, true]'   // This throws an exception
>}
> }
> {code}
> The above produces:
> {noformat}
> Exception thrown
> java.lang.IllegalArgumentException: wrong number of arguments
>   at Test.main(ConsoleScript42:14)
> {noformat}
> Workaround: do not use fixed and variable arguments at the same time and use 
> only variable arguments as in the case shown commented out above: 
> getAt(Object... o).  This is less-than desirable, however, because it 
> restricts the user from using method overloading to separate out 
> distinctly-different logic and forces the user to do runtime checks and 
> implement control structure when using the single varargs method.  In this 
> case, however, the bug severity is mitigated by the fact that the user can 
> explicitly use the "getAt" invocation instead of using the [ ] operator 
> notation.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)