[Scons-users] IndexError in Java parser with anonymous classes
    William Keith 
    wak at kaon.co.uk
       
    Wed Oct  7 11:10:45 EDT 2015
    
    
  
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20151007/6f47c34e/attachment.html>
    
    
More information about the Scons-users
mailing list