diff options
author | Steven Knight <knight@baldmt.com> | 2005-05-30 18:52:46 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2005-05-30 18:52:46 (GMT) |
commit | 883dffbfbd1f02b6eaa7f4adf505b01392c1c008 (patch) | |
tree | 657d49ed7df6d37d16a4c110b714cf65eea2dae0 | |
parent | fe975c11ffad1cf7b2521425669ee9b3d909e5c0 (diff) | |
download | SCons-883dffbfbd1f02b6eaa7f4adf505b01392c1c008.zip SCons-883dffbfbd1f02b6eaa7f4adf505b01392c1c008.tar.gz SCons-883dffbfbd1f02b6eaa7f4adf505b01392c1c008.tar.bz2 |
Fix the Java parser's handling of backslashes. (Leanid Nazdrynau)
-rw-r--r-- | src/CHANGES.txt | 4 | ||||
-rw-r--r-- | src/engine/SCons/Tool/JavaCommon.py | 2 | ||||
-rw-r--r-- | src/engine/SCons/Tool/JavaCommonTests.py | 15 |
3 files changed, 20 insertions, 1 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt index 51fdbc3..9a202a3 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -326,6 +326,10 @@ RELEASE 0.97 - XXX - Supply the help text when -h is used with the -u, -U or -D options. + From Leanid Nazdrynau: + + - Fix the Java parser's handling of backslashes in strings. + From Christian Neeb: - Fix the Java parser's handling of string definitions to avoid ignoring diff --git a/src/engine/SCons/Tool/JavaCommon.py b/src/engine/SCons/Tool/JavaCommon.py index 5c46288..96d6486 100644 --- a/src/engine/SCons/Tool/JavaCommon.py +++ b/src/engine/SCons/Tool/JavaCommon.py @@ -48,7 +48,7 @@ if java_parsing: # 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\.]*|' + + _reToken = re.compile(r'(\n|\\\\|//|\\[\'"]|[\'"\{\}]|[A-Za-z_][\w\.]*|' + r'/\*|\*/|\[\])') class OuterState: diff --git a/src/engine/SCons/Tool/JavaCommonTests.py b/src/engine/SCons/Tool/JavaCommonTests.py index 05d0fad..352b7ee 100644 --- a/src/engine/SCons/Tool/JavaCommonTests.py +++ b/src/engine/SCons/Tool/JavaCommonTests.py @@ -187,6 +187,21 @@ public class Test { assert pkg_dir == None, pkg_dir assert classes == ['Test'], classes + def test_backslash(self): + """Test backslash handling""" + + pkg_dir, classes = SCons.Tool.JavaCommon.parse_java("""\ +public class MyTabs +{ + private class MyInternal + { + } + private final static String PATH = "images\\\\"; +} +""") + assert pkg_dir == None, pkg_dir + assert classes == ['MyTabs$MyInternal', 'MyTabs'], classes + if __name__ == "__main__": suite = unittest.TestSuite() tclasses = [ parse_javaTestCase ] |