aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Woehlke <matthew.woehlke@kitware.com>2013-10-02 16:40:47 -0400
committerJohn Cummings <jcummings2@users.sf.net>2013-10-09 15:04:47 +0200
commita4bfd1948ba4e8f20d7bcd116fb756fc3559e078 (patch)
tree475b86934e7f4eb826a3d4dc15fa46e817ccb3e4
parentcdd1bdc5f0f56cbb2a0a1172d4cd947417fed163 (diff)
Don't warn when inheriting from container
Change AbstractMetaBuilder::setupInheritance to not warn about classes that inherit from known container types, even if the container type does not have a corresponding wrapper class (which in many or most cases it won't). Remove now-unneeded suppression for the same in 'sample'. Change-Id: I0a45636791eba36cf070ea082eb6ead6cb5947ef Reviewed-by: John Cummings <jcummings2@users.sf.net>
-rw-r--r--ApiExtractor/abstractmetabuilder.cpp15
-rw-r--r--tests/samplebinding/typesystem_sample.xml2
2 files changed, 10 insertions, 7 deletions
diff --git a/ApiExtractor/abstractmetabuilder.cpp b/ApiExtractor/abstractmetabuilder.cpp
index d72c27f74..a5c31bf38 100644
--- a/ApiExtractor/abstractmetabuilder.cpp
+++ b/ApiExtractor/abstractmetabuilder.cpp
@@ -1634,12 +1634,17 @@ bool AbstractMetaBuilder::setupInheritance(AbstractMetaClass *metaClass)
return true;
}
- // Container types are not necessarily wrapped as 'real' classes, but
- // there may still be classes derived from them. In such case, we still
- // need to set the base container type in order to generate correct
- // code for type conversion checking.
- if (baseContainerType)
+ if (baseContainerType) {
+ // Container types are not necessarily wrapped as 'real' classes,
+ // but there may still be classes derived from them. In such case,
+ // we still need to set the base container type in order to
+ // generate correct code for type conversion checking.
+ //
+ // Additionally, we consider this case as successfully setting up
+ // inheritance.
metaClass->typeEntry()->setBaseContainerType(baseContainerType);
+ return true;
+ }
ReportHandler::warning(QString("template baseclass '%1' of '%2' is not known")
.arg(baseClasses.first())
diff --git a/tests/samplebinding/typesystem_sample.xml b/tests/samplebinding/typesystem_sample.xml
index 824697f23..233a756ce 100644
--- a/tests/samplebinding/typesystem_sample.xml
+++ b/tests/samplebinding/typesystem_sample.xml
@@ -2406,8 +2406,6 @@
<suppress-warning text="hiding of function 'takeChild' in class 'ObjectView'" />
<suppress-warning text="visibility of function 'publicMethod' modified in class 'MDerived3'" />
<suppress-warning text="skipping function 'InjectCode::toStr', unmatched parameter type 'T const&amp;'" />
- <suppress-warning text="template baseclass 'std::list&lt;T>' of 'QList' is not known" />
- <suppress-warning text="template baseclass 'std::list&lt;Str>' of 'StrList' is not known" />
<!-- Do not fix this warning, the generator should be able to handle this situation for Object Types. -->
<suppress-warning text="Argument in position 1 of added function 'SampleNamespace::passReferenceToObjectType(ObjectType * arg__1)', has a type that is not a reference, while the argument in the corresponding position in C++ function 'SampleNamespace::passReferenceToObjectType(const ObjectType &amp; obj, int multiplier)' is a reference." />