summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2018-05-14 09:31:32 +0200
committerRico Tzschichholz <ricotz@ubuntu.com>2018-05-21 21:13:48 +0200
commit974d126fd7a2aaa72cc9dee0f6c3a153c3218d17 (patch)
tree8ff4ab5a91d1ba8c257490ee3f638af9f3175ac4
parentd21ba22e0f36230df1b454191ce4aa57b451f382 (diff)
downloadvala-974d126fd7a2aaa72cc9dee0f6c3a153c3218d17.tar.gz
scanner: Accept \R and \N escape sequences in regex literals
https://bugzilla.gnome.org/show_bug.cgi?id=749576
-rw-r--r--tests/Makefile.am1
-rw-r--r--tests/parser/bug749576.vala29
-rw-r--r--vala/valageniescanner.vala2
-rw-r--r--vala/valascanner.vala2
4 files changed, 34 insertions, 0 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 8bdd1d754..f27cd25a6 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -268,6 +268,7 @@ TESTS = \
gir/bug742012.test \
gir/bug788775.test \
gir/delegate-alias-without-target.test \
+ parser/bug749576.vala \
$(NULL)
NON_NULL_TESTS = \
diff --git a/tests/parser/bug749576.vala b/tests/parser/bug749576.vala
new file mode 100644
index 000000000..8aa961af0
--- /dev/null
+++ b/tests/parser/bug749576.vala
@@ -0,0 +1,29 @@
+void main() {
+ unowned string a = "first line\nnext line";
+ unowned string b = "first line\rnext line";
+ unowned string c = "first \tline\r\nnext \tline";
+
+ assert (/\Rnext/.match (a));
+ assert (/\Rnext/.match (b));
+ assert (/\Rnext/.match (c));
+
+ try {
+ var r = new Regex ("\\Rnext");
+ assert (r.match (a));
+
+ var r2 = new Regex ("""\Rnext""");
+ assert (r2.match (a));
+ } catch {
+ }
+
+ assert (/\Nline/.match (c));
+
+ try {
+ var r = new Regex ("\\Nline");
+ assert (r.match (c));
+
+ var r2 = new Regex ("""\Nline""");
+ assert (r2.match (c));
+ } catch {
+ }
+}
diff --git a/vala/valageniescanner.vala b/vala/valageniescanner.vala
index 95a89842d..8de367c36 100644
--- a/vala/valageniescanner.vala
+++ b/vala/valageniescanner.vala
@@ -208,7 +208,9 @@ public class Vala.Genie.Scanner {
case 'B':
case 'f':
case 'n':
+ case 'N':
case 'r':
+ case 'R':
case 't':
case 'a':
case 'A':
diff --git a/vala/valascanner.vala b/vala/valascanner.vala
index 8b50a59d4..7c4c75c0c 100644
--- a/vala/valascanner.vala
+++ b/vala/valascanner.vala
@@ -193,7 +193,9 @@ public class Vala.Scanner {
case 'B':
case 'f':
case 'n':
+ case 'N':
case 'r':
+ case 'R':
case 't':
case 'v':
case 'a':