]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
scanner: Accept \R and \N escape sequences in regex literals
authorRico Tzschichholz <ricotz@ubuntu.com>
Mon, 14 May 2018 07:31:32 +0000 (09:31 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Mon, 14 May 2018 07:31:32 +0000 (09:31 +0200)
https://bugzilla.gnome.org/show_bug.cgi?id=749576

tests/Makefile.am
tests/parser/bug749576.vala [new file with mode: 0644]
vala/valageniescanner.vala
vala/valascanner.vala

index 1658f92529c6f41f37d822e1e3fd03f443a71175..764ca197f8730a3494ccc26e575ac7b95f236a93 100644 (file)
@@ -456,6 +456,7 @@ TESTS = \
        parser/unsupported-property-async.test \
        parser/unsupported-property-throws.test \
        parser/yield-method.test \
+       parser/bug749576.vala \
        semantic/constant-extern.test \
        semantic/constant-value.test \
        semantic/constant-value-missing.test \
diff --git a/tests/parser/bug749576.vala b/tests/parser/bug749576.vala
new file mode 100644 (file)
index 0000000..8aa961a
--- /dev/null
@@ -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 {
+       }
+}
index 177f2b0277853b99582fdef072644d25ba0a665b..de49d9df2d28c9235d2983204beb6da92f9ffa19 100644 (file)
@@ -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':
index 2cb705064afd77aa905f468336836d5558ec05c5..9af17dc64fec864f873d8aa8230398765c4c411f 100644 (file)
@@ -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':