Index: third_party/scons/scons-local/SCons/Tool/JavaCommon.py |
=================================================================== |
--- third_party/scons/scons-local/SCons/Tool/JavaCommon.py (revision 7505) |
+++ third_party/scons/scons-local/SCons/Tool/JavaCommon.py (working copy) |
@@ -27,7 +27,7 @@ |
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
# |
-__revision__ = "src/engine/SCons/Tool/JavaCommon.py 3603 2008/10/10 05:46:45 scons" |
+__revision__ = "src/engine/SCons/Tool/JavaCommon.py 3842 2008/12/20 22:59:52 scons" |
import os |
import os.path |
@@ -75,6 +75,7 @@ |
self.stackBrackets = [] |
self.brackets = 0 |
self.nextAnon = 1 |
+ self.localClasses = [] |
self.stackAnonClassBrackets = [] |
self.anonStacksStack = [[0]] |
self.package = None |
@@ -126,6 +127,7 @@ |
if len(self.stackBrackets) and \ |
self.brackets == self.stackBrackets[-1]: |
self.listOutputs.append(string.join(self.listClasses, '$')) |
+ self.localClasses.pop() |
self.listClasses.pop() |
self.anonStacksStack.pop() |
self.stackBrackets.pop() |
@@ -240,6 +242,20 @@ |
# the next non-whitespace token should be the name of the class |
if token == '\n': |
return self |
+ # If that's an inner class which is declared in a method, it |
+ # requires an index prepended to the class-name, e.g. |
+ # 'Foo$1Inner' (Tigris Issue 2087) |
+ if self.outer_state.localClasses and \ |
+ self.outer_state.stackBrackets[-1] > \ |
+ self.outer_state.stackBrackets[-2]+1: |
+ locals = self.outer_state.localClasses[-1] |
+ try: |
+ idx = locals[token] |
+ locals[token] = locals[token]+1 |
+ except KeyError: |
+ locals[token] = 1 |
+ token = str(locals[token]) + token |
+ self.outer_state.localClasses.append({}) |
self.outer_state.listClasses.append(token) |
self.outer_state.anonStacksStack.append([0]) |
return self.outer_state |