[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