From: Chris Lattner Date: Tue, 24 Feb 2009 05:29:33 +0000 (+0000) Subject: Fix PR3635 by handling ## magically X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f0b26b1d9dee57c84e55f05200802658a7312683;p=clang Fix PR3635 by handling ## magically git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65374 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Rewrite/HTMLRewrite.cpp b/lib/Rewrite/HTMLRewrite.cpp index cf49701a1d..0ef998deb1 100644 --- a/lib/Rewrite/HTMLRewrite.cpp +++ b/lib/Rewrite/HTMLRewrite.cpp @@ -437,6 +437,11 @@ void html::HighlightMacros(Rewriter &R, FileID FID, Preprocessor& PP) { // preprocessor directives. if (Tok.is(tok::hash) && Tok.isAtStartOfLine()) continue; + + // If this is a ## token, change its kind to unknown so that repreprocessing + // it will not produce an error. + if (Tok.is(tok::hashhash)) + Tok.setKind(tok::unknown); // If this raw token is an identifier, the raw lexer won't have looked up // the corresponding identifier info for it. Do this now so that it will be diff --git a/test/Misc/emit-html.c b/test/Misc/emit-html.c index 1bcab12dbc..c4a184584b 100644 --- a/test/Misc/emit-html.c +++ b/test/Misc/emit-html.c @@ -3,3 +3,9 @@ // rdar://6562329 #line 42 "foo.c" +// PR3635 +#define F(fmt, ...) fmt, ## __VA_ARGS__ +int main(int argc, char **argv) { + return F(argc, 1); +} +