From 37b86df09ff381bcc4f60802d43e57bd9bfcac73 Mon Sep 17 00:00:00 2001 From: Ori Bernstein Date: Tue, 17 Mar 2020 22:03:25 -0700 Subject: Improve the posix preprocessor. This fixes token pasting, making it expand when it should expand, and paste before expansion when it should paste before expanding. #define CAT(a, b) a ## b #define BAR 3 #define FOO CAT(BAR, 3) FOO now produces 33, while #define CAT(a, b) a ## b #define EOF (-1) #define NOP(x) x NOP(CAT(foo, EOF)) CAT(,EOF) CAT(,) produces fooEOF (-1) respectively. --- sys/src/cmd/cpp/cpp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'sys/src/cmd/cpp/cpp.c') diff --git a/sys/src/cmd/cpp/cpp.c b/sys/src/cmd/cpp/cpp.c index c7b6146bb..2a49ea8bc 100644 --- a/sys/src/cmd/cpp/cpp.c +++ b/sys/src/cmd/cpp/cpp.c @@ -68,7 +68,7 @@ process(Tokenrow *trp) trp->tp += 1; control(trp); } else if (!skipping && anymacros) - expandrow(trp, NULL, Notinmacro); + expandrow(trp, NULL); if (skipping) setempty(trp); puttokens(trp); @@ -217,7 +217,7 @@ control(Tokenrow *trp) case KLINE: trp->tp = tp+1; - expandrow(trp, "", Notinmacro); + expandrow(trp, ""); tp = trp->bp+2; kline: if (tp+1>=trp->lp || tp->type!=NUMBER || tp+3lp -- cgit v1.2.3