[LLVMbugs] [Bug 13421] Clang fails to build unity-2d

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Fri Jul 20 08:28:17 PDT 2012


http://llvm.org/bugs/show_bug.cgi?id=13421

Douglas Gregor <dgregor at apple.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |INVALID

--- Comment #3 from Douglas Gregor <dgregor at apple.com> 2012-07-20 10:28:17 CDT ---
(In reply to comment #0)
> When building unity-2d with clang i get the following error
> 
> In file included from
> /home/tsdgeos_work/unity-2d/unity-2d_trunk/libunity-2d-private/src/unity2ddeclarativeview.cpp:17:
> /home/tsdgeos_work/unity-2d/unity-2d_trunk/libunity-2d-private/src/unity2ddeclarativeview.h:58:124:
> error: expected ')'
>     void setSource(const QUrl& source, const QMap<const char*, QVariant>
> &rootObjectProperties = QMap<const char*, QVariant>());
>                                                                                
>                                            ^

This is actually ill-formed code. Essentially, the rule for parsing default
arguments is that you parse all of the tokens up to the first non-nested ','.
So, according to C++, the default argument for rootObjectProperties is just

  QMap<const char*

and then the program is detected as ill-formed whe

  QVariant>(

doesn't parse properly as a third parameter.

GCC didn't (still doesn't? I don't know) implement this rule, because it was a
fairly recent clarification to the language.

The fix is to wrap the default argument in parentheses, so that the comma is
"nested":

void setSource(const QUrl& source, const QMap<const char*, QVariant>
 &rootObjectProperties = (QMap<const char*, QVariant>()));

-- 
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