RESOLVED FIXED 45157
[Qt] V8 port: Fix "WTF::String::utf8" returns incomplete type WTF::CString
https://bugs.webkit.org/show_bug.cgi?id=45157
Summary [Qt] V8 port: Fix "WTF::String::utf8" returns incomplete type WTF::CString
Vlad
Reported 2010-09-02 18:47:56 PDT
Eliminate ambiguous inclusion of animation.h and CString.h
Attachments
Eliminate ambiguous inclusion of animation.h and CString.h for Symbian (1.59 KB, patch)
2010-09-02 18:53 PDT, Vlad
darin: review-
added CString.h to QT section of WTFString.h (1005 bytes, patch)
2010-09-03 19:16 PDT, Vlad
abarth: review-
Proposed patch (2.38 KB, patch)
2010-09-11 11:23 PDT, Andreas Kling
no flags
Vlad
Comment 1 2010-09-02 18:53:39 PDT
Created attachment 66453 [details] Eliminate ambiguous inclusion of animation.h and CString.h for Symbian
Andreas Kling
Comment 2 2010-09-03 05:02:51 PDT
Comment on attachment 66453 [details] Eliminate ambiguous inclusion of animation.h and CString.h for Symbian > +#if PLATFORM(QT) > +#include <platform/animation/Animation.h> > +#else > #include "Animation.h" > +#endif Does this really need to be Qt-specific? > +#include <wtf/text/CString.h> Why is this necessary? CString.h is always referenced by wtf/text/CString.h AFAIK.
Laszlo Gombos
Comment 3 2010-09-03 06:38:18 PDT
I agree with Andreas comments. Also I think these changes are not just for V8 but perhaps generally needed to make reliable builds on Symbian with JSC.
Darin Adler
Comment 4 2010-09-03 09:38:14 PDT
Comment on attachment 66453 [details] Eliminate ambiguous inclusion of animation.h and CString.h for Symbian > +#if PLATFORM(QT) > +#include <platform/animation/Animation.h> > +#else > #include "Animation.h" > +#endif This is a bad direction -- it does not seem like a good long-term solution to have platform-specific different ways of including header files. Can we instead fix the paths passed in to the compiler so that WebCore compiles will find WebCore headers first, before system headers? > +#include <wtf/text/CString.h> We don't want every single file that includes PlatformString to also include CString. Why is this a good idea?
Vlad
Comment 5 2010-09-03 11:13:01 PDT
Animation.h and cstring.h files are present in Symbian system include folders as well. At the time of the port there was conflict between system includes and webkit. It is fixed now by include order... (In reply to comment #2) > (From update of attachment 66453 [details]) > > +#if PLATFORM(QT) > > +#include <platform/animation/Animation.h> > > +#else > > #include "Animation.h" > > +#endif > This one prevents v8 binding compilation errors on symbian. "WebCore\bindings\v8\V8Proxy.cpp", line 196: Error: #409: function "WTF::String::utf8" returns incomplete type "WTF::CString" targetDocument->url().string().utf8().data() ^ Otherwise I need to include #include <wtf/text/CString.h> in many v8 binding files > Does this really need to be Qt-specific? > > > +#include <wtf/text/CString.h> > > Why is this necessary? CString.h is always referenced by wtf/text/CString.h AFAIK.
Vlad
Comment 6 2010-09-03 11:40:38 PDT
Tried #include <wtf/text/CString.h> in V8Proxy.h. Bindings compile fine, but generated files not :(
Vlad
Comment 7 2010-09-03 18:51:26 PDT
(In reply to comment #6) RVCT complains about incomplete type: FAILED compile for armv5_urel: generated\InspectorBackendDispatcher.cpp mmp: WebCore_0x200267C2.mmp "\webkit\WebCore\generated\InspectorBackendDispatcher.cpp", line 3688: Error: #409: function "WTF::String::utf8" returns incomplete type WTF::CString" reportProtocolError(callId, String::format("Protocol Error: Invalid command was received. '%s' wasn't found.", command.utf8().data())); ^ X:\webkit.trunk1\WebCore\generated\InspectorBackendDispatcher.cpp: 0 warnings, 1 error > Tried #include <wtf/text/CString.h> in V8Proxy.h. Bindings compile fine, but generated files not :(
Vlad
Comment 8 2010-09-03 19:16:42 PDT
Created attachment 66579 [details] added CString.h to QT section of WTFString.h I think I found compromise - added CString.h to QT section of WTFString.h
Andreas Kling
Comment 9 2010-09-05 17:55:23 PDT
(In reply to comment #6) > Tried #include <wtf/text/CString.h> in V8Proxy.h. Bindings compile fine, but generated files not :( If this is indeed the problem, it would be better to modify the code generator script(s) to include the necessary header instead of messing with WTFString.h
Adam Barth
Comment 10 2010-09-05 23:24:09 PDT
Comment on attachment 66579 [details] added CString.h to QT section of WTFString.h I agree with kling. This doesn't seem like the right place to include the header. If it were the right place, we should do so unconditionally anyway.
Andreas Kling
Comment 11 2010-09-11 11:23:10 PDT
Created attachment 67311 [details] Proposed patch
Simon Hausmann
Comment 12 2010-09-11 11:24:21 PDT
Comment on attachment 67311 [details] Proposed patch r=me Explicit inclusion is better than implicit :)
Andreas Kling
Comment 13 2010-09-11 11:28:58 PDT
Comment on attachment 67311 [details] Proposed patch Clearing flags on attachment: 67311 Committed r67308: <http://trac.webkit.org/changeset/67308>
Andreas Kling
Comment 14 2010-09-11 11:29:08 PDT
All reviewed patches have been landed. Closing bug.
WebKit Review Bot
Comment 15 2010-09-11 13:12:14 PDT
http://trac.webkit.org/changeset/67308 might have broken GTK Linux 32-bit Debug
Note You need to log in before you can comment on or make changes to this bug.