diff options
author | Steven Knight <knight@baldmt.com> | 2004-12-03 19:30:28 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2004-12-03 19:30:28 (GMT) |
commit | 52aaecf21cacdd3d1589d184ca5c26942bd6d2b1 (patch) | |
tree | 01f95c39526696363fcaddefebbebc8e18d57a16 | |
parent | f0c3476fdae7032e6232d112864518934ba8a13e (diff) | |
download | SCons-52aaecf21cacdd3d1589d184ca5c26942bd6d2b1.zip SCons-52aaecf21cacdd3d1589d184ca5c26942bd6d2b1.tar.gz SCons-52aaecf21cacdd3d1589d184ca5c26942bd6d2b1.tar.bz2 |
Fix Java parsing when creating an array of class instances.
-rw-r--r-- | src/CHANGES.txt | 5 | ||||
-rw-r--r-- | src/engine/SCons/Tool/JavaCommon.py | 7 | ||||
-rw-r--r-- | src/engine/SCons/Tool/JavaCommonTests.py | 16 |
3 files changed, 25 insertions, 3 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt index 021d1d4..507245a 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -10,6 +10,11 @@ RELEASE 0.97 - XXX + From Anonymous: + + - Fix Java parsing to avoid erroneously identifying a new array + of class instances as an anonymous inner class. + From Chad Austin: - Allow Help() to be called multiple times, appending to the help diff --git a/src/engine/SCons/Tool/JavaCommon.py b/src/engine/SCons/Tool/JavaCommon.py index 72196e3..5c46288 100644 --- a/src/engine/SCons/Tool/JavaCommon.py +++ b/src/engine/SCons/Tool/JavaCommon.py @@ -45,10 +45,11 @@ if java_parsing: # A regular expression that will find, in a java file: newlines; # any alphanumeric token (keyword, class name, specifier); open or # close brackets; a single-line comment "//"; the multi-line comment - # begin and end tokens /* and */; single or double quotes; and - # single or double quotes preceeded by a backslash. + # begin and end tokens /* and */; single or double quotes; + # single or double quotes preceeded by a backslash; array + # declarations "[]". _reToken = re.compile(r'(\n|//|\\[\'"]|[\'"\{\}]|[A-Za-z_][\w\.]*|' + - r'/\*|\*/)') + r'/\*|\*/|\[\])') class OuterState: """The initial state for parsing a Java file for classes, diff --git a/src/engine/SCons/Tool/JavaCommonTests.py b/src/engine/SCons/Tool/JavaCommonTests.py index 46d1955..05d0fad 100644 --- a/src/engine/SCons/Tool/JavaCommonTests.py +++ b/src/engine/SCons/Tool/JavaCommonTests.py @@ -171,6 +171,22 @@ public class Example1 extends UnicastRemoteObject implements Hello { assert pkg_dir == os.path.join('com', 'sub', 'foo'), pkg_dir assert classes == ['Example1'], classes + def test_arrays(self): + """Test arrays of class instances""" + + pkg_dir, classes = SCons.Tool.JavaCommon.parse_java("""\ +public class Test { + MyClass abc = new MyClass(); + MyClass xyz = new MyClass(); + MyClass _array[] = new MyClass[] { + abc, + xyz + } +} +""") + assert pkg_dir == None, pkg_dir + assert classes == ['Test'], classes + if __name__ == "__main__": suite = unittest.TestSuite() tclasses = [ parse_javaTestCase ] |