<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">
<div><i>Incorrectly originally posted to llvm-commits . Hopefully someone can take a look at this and see that it is a very small, simple patch that will allow easier porting to Win32 under MinGW .</i></div>
<div><br>
</div>
<div>LLDB is attempting to use clang, and ran into a conflict attempting to port to MinGW .</div>
<div><br>
</div>
<div>Attached, please find a 1-line patch to tools/clang/include/clang/Basic/Attrs.td</div>
<div><br>
</div>
<div>It is used to generate tools/clang/includes/clang/AST/Attrs.inc, which gets #included by Attr.h (which in turn is getting #included several nested levels deep in our effort to build lldb under MinGW ).</div>
<div><br>
</div>
<div>Without this change, one of the classes to be generated defined "Args=Interface".</div>
<div><br>
</div>
<div>This causes the generated class to contain a private member named "interface".</div>
<div><br>
</div>
<div>Under MinGW, when code #includes Attr.h and "basetyps.h" from MinGW before it, a conflict results, because MinGW's basetyps.h will (under certain circumstances) pull in windows headers which have the following macro definition:</div>
<div><br>
</div>
<div>#define interface struct</div>
<div><br>
</div>
<div>This is a fairly common win32 occurrence.</div>
<div><br>
</div>
<div>The patch shows that 'Interface' is simply changed to 'InterFace' (with the F capitalized) so that the private member variable that gets generated becomes "interFace".</div>
<div><br>
</div>
<div>This mimics style elsewhere in Attrs.td (e.g. "Args=>FormatIdx" causes a private member formatIdx to be generated).</div>
<div><br>
</div>
<div>The capitalization difference leads to the resolution of the conflict with MinGW's basetyps.h .</div>
<div><br>
</div>
<div>Thanks in advance for any review/comments/feedback.</div>
<div><br>
</div>
<div><br>
</div>
<div>
<div><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 11px;">Index: include/clang/Basic/Attr.td</span></font></div>
<div><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 11px;">===================================================================</span></font></div>
<div><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 11px;">--- include/clang/Basic/Attr.td</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 11px;">
</span></font></span><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 11px;">(revision 123723)</span></font></div>
<div><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 11px;">+++ include/clang/Basic/Attr.td</span></font><span class="Apple-tab-span" style="white-space:pre"><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 11px;">
</span></font></span><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 11px;">(working copy)</span></font></div>
<div><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 11px;">@@ -258,7 +258,7 @@</span></font></div>
<div><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 11px;"> </span></font></div>
<div><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 11px;"> def IBOutletCollection : Attr {</span></font></div>
<div><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 11px;"> let Spellings = ["iboutletcollection"];</span></font></div>
<div><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 11px;">- let Args = [TypeArgument<"Interface">];</span></font></div>
<div><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 11px;">+ let Args = [TypeArgument<"InterFace">];</span></font></div>
<div><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 11px;"> }</span></font></div>
<div><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 11px;"> </span></font></div>
<div><font class="Apple-style-span" face="'Courier New'" size="3"><span class="Apple-style-span" style="font-size: 11px;"> def Malloc : Attr {</span></font></div>
</div>
<div><br>
</div>
<div><br>
</div>
<div><br>
</div>
<div></div>
</body>
</html>