[LLVMbugs] [Bug 12698] New: HTMLRewrite generates bogus information for macros
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Sun Apr 29 17:33:44 PDT 2012
http://llvm.org/bugs/show_bug.cgi?id=12698
Bug #: 12698
Summary: HTMLRewrite generates bogus information for macros
Product: clang
Version: trunk
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P
Component: -New Bugs
AssignedTo: unassignedclangbugs at nondot.org
ReportedBy: oneill+llvmbugs at cs.hmc.edu
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
Created attachment 8475
--> http://llvm.org/bugs/attachment.cgi?id=8475
Sample problematic file
tools/clang/lib/Rewrite/HTMLRewrite.cpp contains the following comment:
/// SyntaxHighlight - Relex the specified FileID and annotate the HTML with
/// information about keywords, macro expansions etc. This uses the macro
/// table state from the end of the file, so it won't be perfectly perfect,
/// but it will be reasonably close.
Unfortunately, for some uses of macros, "reasonably close" is actually
"completely and utterly wrong". Generally speaking, I think it's much better
to say nothing than say something wrong with no indication that it's wrong.
In particular, if the code uses #undef or has macro args that shadow
preexisting macros (using a macro argument max when max already exists as a
macro), the output will be misleadingly wrong.
e.g.,
run clang -cc1 -emit-html on
#define FOO aaa
int FOO () { return 0; }
#define BAR(FOO) FOO
#undef FOO
#define FOO zzz
This code claim the function defined is zzz, not aaa, and that in BAR(FOO), the
body will expand to zzz, which it won't.
I understand that this was written as a quick hack, but people look to this
code for how to do things. Wouldn't it be more sensible to actually use the
AST to find the macro expansions, since that would actually be correct...?
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list