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