[Bug c++/54198] New: [4.8 Regression] "error: invalid use of incomplete type" when building Chromium
markus at trippelsdorf dot de
gcc-bugzilla@gcc.gnu.org
Wed Aug 8 10:22:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54198
Bug #: 54198
Summary: [4.8 Regression] "error: invalid use of incomplete
type" when building Chromium
Classification: Unclassified
Product: gcc
Version: 4.8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: markus@trippelsdorf.de
Chromium (22.0.1229.0) fails to build with current gcc trunk:
In file included from third_party/WebKit/Source/WTF/wtf/RefPtr.h:28:0,
from third_party/WebKit/Source/WTF/wtf/VectorTraits.h:25,
from third_party/WebKit/Source/WTF/wtf/Vector.h:30,
from third_party/WebKit/Source/WTF/wtf/text/StringImpl.h:31,
from third_party/WebKit/Source/WTF/wtf/text/WTFString.h:29,
from
third_party/WebKit/Source/WebCore/platform/text/PlatformString.h:28,
from third_party/WebKit/Source/WebCore/platform/KURL.h:30,
from third_party/WebKit/Source/WebCore/platform/KURLHash.h:29,
from third_party/WebKit/Source/WebCore/css/CSSRule.h:26,
from third_party/WebKit/Source/WebCore/css/CSSImportRule.h:25,
from out/Release/obj/gen/webkit/bindings/V8CSSImportRule.h:24,
from
out/Release/obj/gen/webcore/bindings/V8CSSImportRule.cpp:22,
from
out/Release/obj/gen/webkit/bindings/V8DerivedSources03.cpp:31:
third_party/WebKit/Source/WTF/wtf/PassRefPtr.h: In instantiation of ‘void
WTF::refIfNotNull(T*) [with T = WebCore::MetadataCallback]’:
third_party/WebKit/Source/WTF/wtf/PassRefPtr.h:60:43: required from
‘WTF::PassRefPtr<T>::PassRefPtr(T*) [with T = WebCore::MetadataCallback]’
third_party/WebKit/Source/WebCore/Modules/filesystem/Entry.h:54:69: required
from here
third_party/WebKit/Source/WTF/wtf/PassRefPtr.h:46:13: error: invalid use of
incomplete type ‘class WebCore::MetadataCallback’
ptr->ref();
^
In file included from
third_party/WebKit/Source/WebCore/Modules/filesystem/DOMFileSystem.h:37:0,
from out/Release/obj/gen/webkit/bindings/V8DOMFileSystem.h:26,
from
out/Release/obj/gen/webcore/bindings/V8DOMFileSystem.cpp:22,
from
out/Release/obj/gen/webkit/bindings/V8DerivedSources03.cpp:54:
third_party/WebKit/Source/WebCore/Modules/filesystem/DOMFileSystemBase.h:52:7:
error: forward declaration of ‘class WebCore::MetadataCallback’
class MetadataCallback;
^
The testcase is too big to attach (416KB bziped).
I've reduced it with C-reduce:
markus@x4 tmp % cat test.ii
template <typename T> void
refIfNotNull (T* p1)
{
p1->ref;
}
template <typename T> struct A
{
A (T* p1)
{
refIfNotNull (p1);
}
};
class B;
class C
{
void getParent (A <B> = 0);
};
markus@x4 tmp % g++ -c test.ii
test.ii: In instantiation of ‘void refIfNotNull(T*) [with T = B]’:
test.ii:10:9: required from ‘A<T>::A(T*) [with T = B]’
test.ii:16:29: required from here
test.ii:4:5: error: invalid use of incomplete type ‘class B’
p1->ref;
^
test.ii:13:7: error: forward declaration of ‘class B’
class B;
^
More information about the Gcc-bugs
mailing list