aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-10-18 08:00:31 +0000
committer_ov4 <ov4@ov4.org>2026-10-18 08:00:31 +0000
commite7320359c12b97ccb85ebfb06b2540124630df7b (patch)
treefe8740cf489cea87cccea26adb62997d10b7fe9d /tests
parent2141916363d7f33a7a22adf6846f77276d7c4da3 (diff)
feat(lexer): support C++ escape sequences in literals
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/i/escape-sequences/case.json1
-rw-r--r--tests/i/escape-sequences/expected.txt4
-rw-r--r--tests/i/escape-sequences/program.cps4
-rw-r--r--tests/iii/escape-hex/case.json8
-rw-r--r--tests/iii/escape-hex/program.cps1
-rw-r--r--tests/iii/escape-octal/case.json8
-rw-r--r--tests/iii/escape-octal/program.cps1
-rw-r--r--tests/iii/escape-surrogate/case.json8
-rw-r--r--tests/iii/escape-surrogate/program.cps1
-rw-r--r--tests/iii/escape-unicode-char/case.json8
-rw-r--r--tests/iii/escape-unicode-char/program.cps1
-rw-r--r--tests/iii/escape-unknown/case.json8
-rw-r--r--tests/iii/escape-unknown/program.cps1
13 files changed, 54 insertions, 0 deletions
diff --git a/tests/i/escape-sequences/case.json b/tests/i/escape-sequences/case.json
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/tests/i/escape-sequences/case.json
@@ -0,0 +1 @@
+{}
diff --git a/tests/i/escape-sequences/expected.txt b/tests/i/escape-sequences/expected.txt
new file mode 100644
index 0000000..da16637
--- /dev/null
+++ b/tests/i/escape-sequences/expected.txt
@@ -0,0 +1,4 @@
+quote:" slash:\ question:?
+AABé😀
+10:9:255
+a
diff --git a/tests/i/escape-sequences/program.cps b/tests/i/escape-sequences/program.cps
new file mode 100644
index 0000000..a616449
--- /dev/null
+++ b/tests/i/escape-sequences/program.cps
@@ -0,0 +1,4 @@
+OUTPUT "quote:\" slash:\\ question:\?"
+OUTPUT "A\101\x42\u00e9\U0001f600"
+OUTPUT ASC('\n'), ":", ASC('\t'), ":", ASC('\377')
+OUTPUT "a\0b"
diff --git a/tests/iii/escape-hex/case.json b/tests/iii/escape-hex/case.json
new file mode 100644
index 0000000..a40e503
--- /dev/null
+++ b/tests/iii/escape-hex/case.json
@@ -0,0 +1,8 @@
+{
+ "errors": [
+ {
+ "reason": "exceeds one byte",
+ "line": 1
+ }
+ ]
+}
diff --git a/tests/iii/escape-hex/program.cps b/tests/iii/escape-hex/program.cps
new file mode 100644
index 0000000..3769c04
--- /dev/null
+++ b/tests/iii/escape-hex/program.cps
@@ -0,0 +1 @@
+OUTPUT "\x100"
diff --git a/tests/iii/escape-octal/case.json b/tests/iii/escape-octal/case.json
new file mode 100644
index 0000000..a40e503
--- /dev/null
+++ b/tests/iii/escape-octal/case.json
@@ -0,0 +1,8 @@
+{
+ "errors": [
+ {
+ "reason": "exceeds one byte",
+ "line": 1
+ }
+ ]
+}
diff --git a/tests/iii/escape-octal/program.cps b/tests/iii/escape-octal/program.cps
new file mode 100644
index 0000000..7e56ef1
--- /dev/null
+++ b/tests/iii/escape-octal/program.cps
@@ -0,0 +1 @@
+OUTPUT "\400"
diff --git a/tests/iii/escape-surrogate/case.json b/tests/iii/escape-surrogate/case.json
new file mode 100644
index 0000000..eb1882d
--- /dev/null
+++ b/tests/iii/escape-surrogate/case.json
@@ -0,0 +1,8 @@
+{
+ "errors": [
+ {
+ "reason": "Invalid Unicode",
+ "line": 1
+ }
+ ]
+}
diff --git a/tests/iii/escape-surrogate/program.cps b/tests/iii/escape-surrogate/program.cps
new file mode 100644
index 0000000..bee5004
--- /dev/null
+++ b/tests/iii/escape-surrogate/program.cps
@@ -0,0 +1 @@
+OUTPUT "\ud800"
diff --git a/tests/iii/escape-unicode-char/case.json b/tests/iii/escape-unicode-char/case.json
new file mode 100644
index 0000000..7bc1560
--- /dev/null
+++ b/tests/iii/escape-unicode-char/case.json
@@ -0,0 +1,8 @@
+{
+ "errors": [
+ {
+ "reason": "must be ASCII",
+ "line": 1
+ }
+ ]
+}
diff --git a/tests/iii/escape-unicode-char/program.cps b/tests/iii/escape-unicode-char/program.cps
new file mode 100644
index 0000000..258852a
--- /dev/null
+++ b/tests/iii/escape-unicode-char/program.cps
@@ -0,0 +1 @@
+OUTPUT '\u00e9'
diff --git a/tests/iii/escape-unknown/case.json b/tests/iii/escape-unknown/case.json
new file mode 100644
index 0000000..2ba3033
--- /dev/null
+++ b/tests/iii/escape-unknown/case.json
@@ -0,0 +1,8 @@
+{
+ "errors": [
+ {
+ "reason": "Unknown escape",
+ "line": 1
+ }
+ ]
+}
diff --git a/tests/iii/escape-unknown/program.cps b/tests/iii/escape-unknown/program.cps
new file mode 100644
index 0000000..25a4b1d
--- /dev/null
+++ b/tests/iii/escape-unknown/program.cps
@@ -0,0 +1 @@
+OUTPUT "\q"