aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--preprocess.c13
-rw-r--r--tests/075.sh16
2 files changed, 28 insertions, 1 deletions
diff --git a/preprocess.c b/preprocess.c
index b43732b..36885ab 100644
--- a/preprocess.c
+++ b/preprocess.c
@@ -320,7 +320,18 @@ void pp_tokenize_all(Preprocessor* pp) {
tok->raw.len = pp->pos - start;
tok->raw.data = pp->src + pp->pos - tok->raw.len;
} else if (pp->src[pp->pos] == '*') {
- unimplemented();
+ start = pp->pos - 1;
+ ++pp->pos;
+ while (pp->src[pp->pos]) {
+ if (pp->src[pp->pos] == '*' && pp->src[pp->pos + 1] == '/') {
+ pp->pos += 2;
+ break;
+ }
+ ++pp->pos;
+ }
+ tok->kind = PpTokenKind_whitespace;
+ tok->raw.len = pp->pos - start;
+ tok->raw.data = pp->src + pp->pos - tok->raw.len;
} else {
tok->kind = PpTokenKind_punctuator;
tok->raw.len = 1;
diff --git a/tests/075.sh b/tests/075.sh
new file mode 100644
index 0000000..12cf004
--- /dev/null
+++ b/tests/075.sh
@@ -0,0 +1,16 @@
+set -e
+
+cat <<'EOF' > expected
+EOF
+
+bash ../../test_diff.sh <<'EOF'
+/* lorem ipsum */
+/*
+lorem ipsum
+*/
+// /*
+/* /*
+ */
+int/**/main() {
+}
+EOF