harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mikhail Loenko" <mloe...@gmail.com>
Subject Re: [classlib] Enum ready to go
Date Wed, 07 Jun 2006 10:39:29 GMT
javac and java are from the same distrib (javac does not print
detailed version info,
that is why I''m mentioning java version),
so it is javac 1.5.0_b64

so I compile with JDK 1.5.0_b64, run on Harmony and it fails

Thanks,
Mikhail

2006/6/7, Jimmy, Jing Lv <firepure@gmail.com>:
> Mikhail Loenko wrote:
> > 2006/6/7, Tim Ellison <t.p.ellison@gmail.com>:
> >> The Sun 1.5.0_06 compiler was driven directly by our build scripts (so
> >> using jsr14) and the Eclipse 3.2RC4 compiler has source 1.5 target 1.4
> >> set.
> >>
> >> I could throw an IAE from Enum#valueOf(Class, null) when the Enum is
> >> empty, but seems a bit of a drag to work around the compilers.
> >>
> >> (which version of BEA javac?)
> >
> > javac -version prints just "1.5.0"
> > java -version prints "build 1.5.0-b64"
> >
>
> I would bet the tests shall pass if using javac of java-version "build
> 1.5.0_01" or later :)
> And as the tests also fail on RI of "build 1.5.0-b64" (I've just find
> one:) ), I guess it is a bug of RI, which was fixed in the later version.
>
> What's more, shall we also suggest that everyone use a latest version of
> javac to avoid such problem?
>
>
> >
> >>
> >> Regards,
> >> Tim
> >>
> >> Mikhail Loenko wrote:
> >> > Are you compiling with "jsr14" as our build does?
> >> >
> >> > I'm using BEA javac with "jsr14" it compiles to something like this:
> >> > for(i=0; i < values.length; i++ )
> >> >   if( values[i].name().equals(argument) )
> >> >      return values[i].name().equals(argument)
> >> > throw IAE
> >> >
> >> > 2006/6/7, Tim Ellison <t.p.ellison@gmail.com>:
> >> >> Maybe compiler specific.
> >> >>
> >> >> Looking at Proxy.Type it appears that the Sun compiler 1.5.0_06
> >> >> delegates to the Enum type:
> >> >>
> >> >> public static Type valueOf(String name)
> >> >> {
> >> >>   return (Type)Enum.valueOf(
> >> >>      Proxy.class$java$net$Proxy$Type != null ?
> >> >>         Proxy.class$java$net$Proxy$Type :
> >> >>         (
> >> >>           Proxy.class$java$net$Proxy$Type =
> >> >>           Proxy._mthclass$("java.net.Proxy$Type")
> >> >>         ),
> >> >>      name);
> >> >> }
> >> >>
> >> >>
> >> >> and the Eclipse compiler 3.2RC4 looks up the constant itself:
> >> >>
> >> >> public static Type valueOf(String s)
> >> >> {
> >> >>   Type atype[];
> >> >>   Type type1;
> >> >>   for(int i = (atype = ENUM$VALUES).length; --i >= 0;)
> >> >>      if(s.equals((type1 = atype[i]).name()))
> >> >>         return type1;
> >> >>   throw new IllegalArgumentException(s);
> >> >> }
> >> >>
> >> >>
> >> >> In the Sun compiler a null name argument gets passed to
> >> >> Enum#valueOf(Class, String) where I check and throw NPE.
> >> >>
> >> >> In the Eclipse compiler the line if(s.equals(...)... will cause a NPE
> >> >> iff there are entries in the VALUES array (otherwise it doesn't go
> >> into
> >> >> the for-loop) and throws an IAE without going into my code.
> >> >>
> >> >> Maybe I can withdraw the null name test while we settle this?
> >> >
> >> > We now have 3 tests failing
> >> >
> >> > Thanks,
> >> > Mikhail
> >> >
> >> >
> >> >
> >> >>
> >> >> Regards,
> >> >> Tim
> >> >>
> >> >>
> >> >> Andrew Zhang wrote:
> >> >> > Hi, Stepan,
> >> >> >
> >> >> > The test you metioned is passed in my environment:
> >> >> > RI version: 1.5.0_02.
> >> >> > Linux: Read hat Enterprise Linux AS(2.4.21-15.EL)
> >> >> >
> >> >> > Is the problem caused by earlier version javac?
> >> >> >
> >> >> > I remember that RI of earlier verion throws IAE instead of NPE
> >> when the
> >> >> > arguement is null.
> >> >> >
> >> >> > Would you please check "java" version?
> >> >> >
> >> >> > Thanks.
> >> >> >
> >> >> >
> >> >> >
> >> >> >
> >> >> >
> >> >> > On 6/7/06, Stepan Mishura <stepan.mishura@gmail.com> wrote:
> >> >> >>
> >> >> >> I found the reason - tests expect NPE when valueOf(null) is
invoked
> >> >> but
> >> >> >> IAE
> >> >> >> is thrown instead. For example,
> >> >> >>
> >> >> >> java.lang.IllegalArgumentException
> >> >> >> at org.apache.harmony.tests.java.lang.EnumTest$Sample.valueOf(
> >> >> >> EnumTest.java
> >> >> >> :22)
> >> >> >> at
> >> >> >>
> >> >>
> >> org.apache.harmony.tests.java.lang.EnumTest.test_valueOfLjava_lang_String
> >> >> >> (EnumTest.java :113)
> >> >> >> at
> >> >> java.lang.reflect.AccessibleObject.invokeV(AccessibleObject.java:205)
> >> >> >>
> >> >> >> Thanks,
> >> >> >> Stepan.
> >> >> >>
> >> >> >> On 6/7/06, Andrew Zhang wrote:
> >> >> >> >
> >> >> >> > Hello Stepan and Mikhail,
> >> >> >> >
> >> >> >> > All tests passed on my machine.
> >> >> >> >
> >> >> >> > Which test case was failed in your environment, on RI
or Harmony?
> >> >> >> >
> >> >> >> > Thanks!
> >> >> >> >
> >> >> >> >
> >> >> >> > On 6/7/06, Stepan Mishura <stepan.mishura@gmail.com
> wrote:
> >> >> >> > >
> >> >> >> > > Hi Tim,
> >> >> >> > >
> >> >> >> > > On 6/7/06, Tim Ellison wrote:
> >> >> >> > > >
> >> >> >> > > > Heads up that I completed the implementation
of j.l.Enum
> >> >> today; so
> >> >> >> you
> >> >> >> > > > can go mad and use enum types in classlib code
for real now.
> >> >> >> > >
> >> >> >> > >
> >> >> >> > > Cool!
> >> >> >> > >
> >> >> >> > > I wrote a bunch of tests but if you could hammer
on it and
> >> try to
> >> >> >> break
> >> >> >> > > > it that would be good :-)
> >> >> >> > >
> >> >> >> > >
> >> >> >> > > And did you run it? :-) It fails for me :-(
> >> >> >> > >
> >> >> >> > > Thanks,
> >> >> >> > > Stepan.
> >> >> >> > >
> >> >> >> > > If you take a look at the implementation [1] of
valueOf(Class,
> >> >> >> String)
> >> >> >> > > > it uses reflection to get the enum constant
values.  I'm not
> >> >> sure
> >> >> >> how
> >> >> >> > > > 'popular' the valueOf() method is, but since
the values don't
> >> >> >> change
> >> >> >> > > > they are a good candidate for being cached
if it proves to be
> >> >> >> called
> >> >> >> > > > frequently.  I'm happy to do that if people
think it is
> >> >> worthwhile.
> >> >> >> > > >
> >> >> >> > > > Regards,
> >> >> >> > > > Tim
> >> >> >> > > >
> >> >> >> > > >
> >> >> >> > > > [1]
> >> >> >> > > >
> >> >> >> > > >
> >> >> >> > >
> >> >> >> >
> >> >> >>
> >> >>
> >> http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Enum.java?revision=412166&view=markup
> >>
> >> >>
> >> >> >>
> >> >> >> > > >
> >> >> >> >
> >> >> >> >
> >> >> >> >
> >> >> >>
> >> >> >>
> >> >> >> ------------------------------------------------------
> >> >> >> Terms of use : http://incubator.apache.org/harmony/mailing.html
> >> >> >> To unsubscribe, e-mail:
> >> harmony-dev-unsubscribe@incubator.apache.org
> >> >> >> For additional commands, e-mail:
> >> harmony-dev-help@incubator.apache.org
> >> >> >>
> >> >> >>
> >> >> >
> >> >> >
> >> >>
> >> >> --
> >> >>
> >> >> Tim Ellison (t.p.ellison@gmail.com)
> >> >> IBM Java technology centre, UK.
> >> >>
> >> >> ---------------------------------------------------------------------
> >> >> Terms of use : http://incubator.apache.org/harmony/mailing.html
> >> >> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> >> >> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> >> >>
> >> >>
> >> >
> >> > ---------------------------------------------------------------------
> >> > Terms of use : http://incubator.apache.org/harmony/mailing.html
> >> > To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> >> > For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> >> >
> >> >
> >>
> >> --
> >>
> >> Tim Ellison (t.p.ellison@gmail.com)
> >> IBM Java technology centre, UK.
> >>
> >> ---------------------------------------------------------------------
> >> Terms of use : http://incubator.apache.org/harmony/mailing.html
> >> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> >> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> >>
> >>
> >
> > ---------------------------------------------------------------------
> > Terms of use : http://incubator.apache.org/harmony/mailing.html
> > To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> > For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> >
> >
>
>
> --
>
> Best Regards!
>
> Jimmy, Jing Lv
> China Software Development Lab, IBM
>
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
>
>

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Mime
View raw message