Reduce "multiple Java method" warnings in unambiguous cases
-----------------------------------------------------------
Key: JRUBY-4734
URL: http://jira.codehaus.org/browse/JRUBY-4734
Project: JRuby
Issue Type: Bug
Components: Java Integration
Affects Versions: JRuby 1.5
Environment: jruby 1.5.0.RC1 (ruby 1.8.7 patchlevel 249) (2010-04-18
0387574) (Java HotSpot(TM) Client VM 1.6.0_19)
Reporter: David Kellum
Priority: Minor
JRUBY-4726 addressed eliminating these warnings in cases where there is only
one java method with matching arity. However this warning is still emitted in
matching arity cases where the types involved are not ambiguous (one
appropriate mapping, or to_java(<:TYPE>) used to specify the specific type.
Note that this warning output is pretty lengthy, and while the "-w" flag is
optional at the jruby level, in practice common test launchers like "rake test"
supply the -w flag by default.
See test case example below and its lengthy output. Here it looks like Java
superclass methods overridden in a subclass are still output as candidate
methods (though if these were true candidates there would seem to be a flaw in
Java dispatch.)
Would it be possible to relax these warnings and output volume for only cases
where an exact to_java, etc. match can not be found?
{noformat}
#!/opt/bin/jruby -vw
#.hashdot.profile += jruby-shortlived
require 'test/unit'
class TestMultiWarning < Test::Unit::TestCase
def test_with_string_builder
b = Java::java.lang.StringBuilder.new
b.append( "string: ".to_java(:string) )
b.append( 0.5.to_java(:float) )
assert_equal( "string: 0.5", b.to_s )
end
end
{noformat}
{noformat}
% test_multi_warnings.rb
jruby 1.5.0.RC1 (ruby 1.8.7 patchlevel 249) (2010-04-18 0387574) (Java
HotSpot(TM) Client VM 1.6.0_19) [i386-java]
Loaded suite ./test_multi_warnings
Started
./test_multi_warnings.rb:9 warning: multiple Java methods found for argument
types ([Java::JavaLang::String]): [public
java.lang.AbstractStringBuilder
java.lang.AbstractStringBuilder.append(java.lang.String), public
java.lang.AbstractStringBuilder
java.lang.StringBuilder.append(java.lang.String), public java.lang.StringBuilder
java.lang.StringBuilder.append(java.lang.String), public java.lang.Appendable
java.lang.AbstractStringBuilder.append(java.lang.CharSequence) throws
java.io.IOException, public
java.lang.AbstractStringBuilder
java.lang.AbstractStringBuilder.append(java.lang.CharSequence), public
java.lang.AbstractStringBuilder
java.lang.AbstractStringBuilder.append(java.lang.Object), public
java.lang.Appendable
java.lang.StringBuilder.append(java.lang.CharSequence) throws
java.io.IOException, public
java.lang.AbstractStringBuilder
java.lang.StringBuilder.append(java.lang.Object), public
java.lang.AbstractStringBuilder
java.lang.StringBuilder.append(java.lang.CharSequence), public
java.lang.StringBuilder
java.lang.StringBuilder.append(java.lang.CharSequence), public
java.lang.StringBuilder
java.lang.StringBuilder.append(java.lang.Object)]
./test_multi_warnings.rb:10 warning: multiple Java methods found for argument
types ([Java::JavaLang::Float]): [public
java.lang.AbstractStringBuilder java.lang.AbstractStringBuilder.append(double),
public java.lang.AbstractStringBuilder
java.lang.AbstractStringBuilder.append(float), public
java.lang.AbstractStringBuilder
java.lang.StringBuilder.append(float), public java.lang.AbstractStringBuilder
java.lang.StringBuilder.append(double),
public java.lang.StringBuilder java.lang.StringBuilder.append(double), public
java.lang.StringBuilder
java.lang.StringBuilder.append(float), public java.lang.Appendable
java.lang.AbstractStringBuilder.append(char) throws
java.io.IOException, public java.lang.AbstractStringBuilder
java.lang.AbstractStringBuilder.append(long), public
java.lang.AbstractStringBuilder java.lang.AbstractStringBuilder.append(int),
public java.lang.AbstractStringBuilder
java.lang.AbstractStringBuilder.append(char), public
java.lang.AbstractStringBuilder
java.lang.AbstractStringBuilder.append(java.lang.Object), public
java.lang.Appendable
java.lang.StringBuilder.append(char) throws java.io.IOException, public
java.lang.AbstractStringBuilder
java.lang.StringBuilder.append(java.lang.Object), public
java.lang.AbstractStringBuilder
java.lang.StringBuilder.append(char), public java.lang.AbstractStringBuilder
java.lang.StringBuilder.append(int), public
java.lang.AbstractStringBuilder java.lang.StringBuilder.append(long), public
java.lang.StringBuilder
java.lang.StringBuilder.append(long), public java.lang.StringBuilder
java.lang.StringBuilder.append(int), public
java.lang.StringBuilder java.lang.StringBuilder.append(char), public
java.lang.StringBuilder
java.lang.StringBuilder.append(java.lang.Object)] . Finished in 0.293 seconds.
1 tests, 1 assertions, 0 failures, 0 errors
{noformat}
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email