summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons
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 /src/engine/SCons
parentfe975c11ffad1cf7b2521425669ee9b3d909e5c0 (diff)
downloadSCons-883dffbfbd1f02b6eaa7f4adf505b01392c1c008.zip
SCons-883dffbfbd1f02b6eaa7f4adf505b01392c1c008.tar.gz
SCons-883dffbfbd1f02b6eaa7f4adf505b01392c1c008.tar.bz2
Fix the Java parser's handling of backslashes. (Leanid Nazdrynau)
Diffstat (limited to 'src/engine/SCons')
-rw-r--r--src/engine/SCons/Tool/JavaCommon.py2
-rw-r--r--src/engine/SCons/Tool/JavaCommonTests.py15
2 files changed, 16 insertions, 1 deletions
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 ]