[Scons-users] IndexError in Java parser with anonymous classes

William Keith wak at kaon.co.uk
Wed Oct 7 12:04:05 EDT 2015


Bill,

I knew there was something I forgot to mention :)

Version 2.3.1

Will

On 7 October 2015 at 16:50, Bill Deegan <bill at baddogconsulting.com> wrote:

> Will,
>
> What version of SCons are you running?
>
> -Bill
>
> On Wed, Oct 7, 2015 at 11:10 AM, William Keith <wak at kaon.co.uk> wrote:
>
>> Hello,
>>
>> I am trying to use SCons to build the following Java file:
>>
>> class MyApp
>> {
>>     private static class MyInnerClass
>>     {
>>         private void blah()
>>         {
>>             new Something(new SomethingElse()
>>                 {
>>                 });
>>         }
>>     }
>>
>>     private static void doStuff()
>>     {
>>         new Foo<Bar<Baz>>() {
>>                 @Override
>>                 public void boz()
>>                 {
>>                 }
>>             };
>>     }
>>
>>     public static void main(String[] args)
>>     {
>>         new Whatsit()
>>             {
>>             };
>>     }
>> }
>>
>> My SConstruct is as follows:
>>
>> app_classes = Java(target='build/classes', source='src',
>> JAVAVERSION='1.7')
>> jar_sources = app_classes
>> Jar(target='build/target.jar', source=jar_sources)
>>
>> Running scons with the above results in an IndexError with the following
>> stack trace:
>>
>> scons: Reading SConscript files ...
>> IndexError: list index out of range:
>>   File "/home/projects/scons_java_test/SConstruct", line 7:
>>     app_classes = Java(target='build/classes', source='src',
>> JAVAVERSION='1.7')
>>   File "/usr/lib/scons/SCons/Script/SConscript.py", line 609:
>>     return method(*args, **kw)
>>   File "/usr/lib/scons/SCons/Environment.py", line 224:
>>     return self.method(*nargs, **kwargs)
>>   File "/usr/lib/scons/SCons/Tool/javac.py", line 195:
>>     result.extend(b(t, s, *args, **kw))
>>   File "/usr/lib/scons/SCons/Environment.py", line 260:
>>     return MethodWrapper.__call__(self, target, source, *args, **kw)
>>   File "/usr/lib/scons/SCons/Environment.py", line 224:
>>     return self.method(*nargs, **kwargs)
>>   File "/usr/lib/scons/SCons/Builder.py", line 633:
>>     return self._execute(env, target, source, OverrideWarner(kw), ekw)
>>   File "/usr/lib/scons/SCons/Builder.py", line 554:
>>     tlist, slist = self._create_nodes(env, target, source)
>>   File "/usr/lib/scons/SCons/Builder.py", line 518:
>>     target, source = self.emitter(target=tlist, source=slist, env=env)
>>   File "/usr/lib/scons/SCons/Tool/javac.py", line 97:
>>     pkg_dir, classes = parse_java_file(f.rfile().get_abspath(), version)
>>   File "/usr/lib/scons/SCons/Tool/JavaCommon.py", line 286:
>>     return parse_java(open(fn, 'r').read(), version)
>>   File "/usr/lib/scons/SCons/Tool/JavaCommon.py", line 300:
>>     currstate = currstate.parseToken(token)
>>   File "/usr/lib/scons/SCons/Tool/JavaCommon.py", line 221:
>>     self.outer_state.addAnonClass()
>>   File "/usr/lib/scons/SCons/Tool/JavaCommon.py", line 178:
>>     self.__getAnonStack()[-1] = self.__getAnonStack()[-1] + 1
>>
>> Note that I have attempted to pare the example down to just what is
>> essential to reproduce this issue. Apart from some missing symbols, it
>> should be valid Java. The original (un-pared-down) version compiles cleanly
>> with javac but produces the same exception in SCons' Java parser.
>>
>> I am fairly sure this is a new bug. Can someone please advise?
>>
>> Thanks,
>>
>> Will
>>
>> _______________________________________________
>> Scons-users mailing list
>> Scons-users at scons.org
>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>
>>
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20151007/f44bd2de/attachment-0001.html>


More information about the Scons-users mailing list