summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2005-05-30 18:52:46 (GMT)
committerSteven Knight <knight@baldmt.com>2005-05-30 18:52:46 (GMT)
commit883dffbfbd1f02b6eaa7f4adf505b01392c1c008 (patch)
tree657d49ed7df6d37d16a4c110b714cf65eea2dae0
parentfe975c11ffad1cf7b2521425669ee9b3d909e5c0 (diff)
downloadSCons-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.txt4
-rw-r--r--src/engine/SCons/Tool/JavaCommon.py2
-rw-r--r--src/engine/SCons/Tool/JavaCommonTests.py15
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 ]