aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/ApiExtractor/messages.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken2/ApiExtractor/messages.cpp')
-rw-r--r--sources/shiboken2/ApiExtractor/messages.cpp198
1 files changed, 192 insertions, 6 deletions
diff --git a/sources/shiboken2/ApiExtractor/messages.cpp b/sources/shiboken2/ApiExtractor/messages.cpp
index 5b3a57fcc..95dcda558 100644
--- a/sources/shiboken2/ApiExtractor/messages.cpp
+++ b/sources/shiboken2/ApiExtractor/messages.cpp
@@ -1,4 +1,4 @@
-/****************************************************************************
+/****************************************************************************
**
** Copyright (C) 2018 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
@@ -28,6 +28,8 @@
#include "messages.h"
#include "abstractmetalang.h"
+#include "sourcelocation.h"
+#include "typedatabase.h"
#include "typesystem.h"
#include <codemodel.h>
@@ -42,19 +44,20 @@ static inline QString colonColon() { return QStringLiteral("::"); }
// abstractmetabuilder.cpp
-QString msgNoFunctionForModification(const QString &signature,
+QString msgNoFunctionForModification(const AbstractMetaClass *klass,
+ const QString &signature,
const QString &originalSignature,
- const QString &className,
const QStringList &possibleSignatures,
const AbstractMetaFunctionList &allFunctions)
{
QString result;
QTextStream str(&result);
- str << "signature '" << signature << '\'';
+ str << klass->typeEntry()->sourceLocation() << "signature '"
+ << signature << '\'';
if (!originalSignature.isEmpty() && originalSignature != signature)
str << " (specified as '" << originalSignature << "')";
str << " for function modification in '"
- << className << "' not found.";
+ << klass->qualifiedCppName() << "' not found.";
if (!possibleSignatures.isEmpty()) {
str << "\n Possible candidates:\n";
for (const auto &s : possibleSignatures)
@@ -107,11 +110,34 @@ static void msgFormatEnumType(Stream &str,
str << " (class: " << className << ')';
}
+QString msgAddedFunctionInvalidArgType(const QString &addedFuncName,
+ const QString &typeName,
+ int pos, const QString &why)
+{
+ QString result;
+ QTextStream str(&result);
+ str << "Unable to translate type \"" << typeName << "\" of argument "
+ << pos << " of added function \"" << addedFuncName << "\": " << why;
+ return result;
+}
+
+QString msgAddedFunctionInvalidReturnType(const QString &addedFuncName,
+ const QString &typeName, const QString &why)
+{
+ QString result;
+ QTextStream str(&result);
+ str << "Unable to translate return type \"" << typeName
+ << "\" of added function \"" << addedFuncName << "\": "
+ << why;
+ return result;
+}
+
QString msgNoEnumTypeEntry(const EnumModelItem &enumItem,
const QString &className)
{
QString result;
QTextStream str(&result);
+ str << enumItem->sourceLocation();
msgFormatEnumType(str, enumItem, className);
str << " does not have a type entry";
return result;
@@ -125,11 +151,38 @@ QString msgNoEnumTypeConflict(const EnumModelItem &enumItem,
QDebug debug(&result); // Use the debug operator for TypeEntry::Type
debug.noquote();
debug.nospace();
+ debug << enumItem->sourceLocation().toString();
msgFormatEnumType(debug, enumItem, className);
debug << " is not an enum (type: " << t->type() << ')';
return result;
}
+QString msgNamespaceNoTypeEntry(const NamespaceModelItem &item,
+ const QString &fullName)
+{
+ QString result;
+ QTextStream str(&result);
+ str << item->sourceLocation() << "namespace '" << fullName
+ << "' does not have a type entry";
+ return result;
+}
+
+QString msgAmbiguousVaryingTypesFound(const QString &qualifiedName, const TypeEntries &te)
+{
+ QString result = QLatin1String("Ambiguous types of varying types found for \"") + qualifiedName
+ + QLatin1String("\": ");
+ QDebug(&result) << te;
+ return result;
+}
+
+QString msgAmbiguousTypesFound(const QString &qualifiedName, const TypeEntries &te)
+{
+ QString result = QLatin1String("Ambiguous types found for \"") + qualifiedName
+ + QLatin1String("\": ");
+ QDebug(&result) << te;
+ return result;
+}
+
QString msgUnmatchedParameterType(const ArgumentModelItem &arg, int n,
const QString &why)
{
@@ -156,7 +209,7 @@ QString msgSkippingFunction(const FunctionModelItem &functionItem,
{
QString result;
QTextStream str(&result);
- str << "skipping ";
+ str << functionItem->sourceLocation() << "skipping ";
if (functionItem->isAbstract())
str << "abstract ";
str << "function '" << signature << "', " << why;
@@ -167,6 +220,80 @@ QString msgSkippingFunction(const FunctionModelItem &functionItem,
return result;
}
+QString msgSkippingField(const VariableModelItem &field, const QString &className,
+ const QString &type)
+{
+ QString result;
+ QTextStream str(&result);
+ str << field->sourceLocation() << "skipping field '" << className
+ << "::" << field->name() << "' with unmatched type '" << type << '\'';
+ return result;
+}
+
+static const char msgCompilationError[] =
+ "This could potentially lead to compilation errors.";
+
+QString msgTypeNotDefined(const TypeEntry *entry)
+{
+ QString result;
+ QTextStream str(&result);
+ str << entry->sourceLocation() << "type '" <<entry->qualifiedCppName()
+ << "' is specified in typesystem, but not defined. " << msgCompilationError;
+ return result;
+}
+
+QString msgGlobalFunctionNotDefined(const FunctionTypeEntry *fte,
+ const QString &signature)
+{
+ QString result;
+ QTextStream str(&result);
+ str << fte->sourceLocation() << "Global function '" << signature
+ << "' is specified in typesystem, but not defined. " << msgCompilationError;
+ return result;
+}
+
+QString msgStrippingArgument(const FunctionModelItem &f, int i,
+ const QString &originalSignature,
+ const ArgumentModelItem &arg)
+{
+ QString result;
+ QTextStream str(&result);
+ str << f->sourceLocation() << "Stripping argument #" << (i + 1) << " of "
+ << originalSignature << " due to unmatched type \""
+ << arg->type().toString() << "\" with default expression \""
+ << arg->defaultValueExpression() << "\".";
+ return result;
+}
+
+QString msgEnumNotDefined(const EnumTypeEntry *t)
+{
+ QString result;
+ QTextStream str(&result);
+ str << t->sourceLocation() << "enum '" << t->qualifiedCppName()
+ << "' is specified in typesystem, but not declared.";
+ return result;
+}
+
+QString msgUnknownBase(const AbstractMetaClass *metaClass, const QString &baseClassName)
+{
+ QString result;
+ QTextStream str(&result);
+ str << metaClass->sourceLocation() << "class '" << metaClass->name()
+ << "' inherits from unknown base class '" << baseClassName << "'";
+ return result;
+}
+
+QString msgArrayModificationFailed(const FunctionModelItem &functionItem,
+ const QString &className,
+ const QString &errorMessage)
+{
+ QString result;
+ QTextStream str(&result);
+ str << functionItem->sourceLocation() << "While traversing " << className
+ << ": " << errorMessage;
+ return result;
+}
+
QString msgCannotResolveEntity(const QString &name, const QString &reason)
{
return QLatin1String("Cannot resolve entity \"") + name
@@ -196,6 +323,23 @@ QString msgCannotFindTypeEntry(const QString &t)
return QLatin1String("Cannot find type entry for \"") + t + QLatin1String("\".");
}
+QString msgCannotFindTypeEntryForSmartPointer(const QString &t, const QString &smartPointerType)
+{
+ return QLatin1String("Cannot find type entry \"") + t
+ + QLatin1String("\" for instantiation of \"") + smartPointerType + QLatin1String("\".");
+}
+
+QString msgInvalidSmartPointerType(const TypeInfo &i)
+{
+ return QLatin1String("Invalid smart pointer type \"") + i.toString() + QLatin1String("\".");
+}
+
+QString msgCannotFindSmartPointerInstantion(const TypeInfo &i)
+{
+ return QLatin1String("Cannot find instantiation of smart pointer type for \"")
+ + i.toString() + QLatin1String("\".");
+}
+
QString msgCannotTranslateTemplateArgument(int i,
const TypeInfo &typeInfo,
const QString &why)
@@ -224,6 +368,23 @@ QString msgNamespaceToBeExtendedNotFound(const QString &namespaceName, const QSt
+ packageName + QLatin1Char('.');
}
+QString msgPropertyTypeParsingFailed(const QString &name, const QString &typeName,
+ const QString &why)
+{
+ QString result;
+ QTextStream str(&result);
+ str << "Unable to decide type of property: \"" << name << "\" (" << typeName
+ << "): " << why;
+ return result;
+}
+
+QString msgPropertyExists(const QString &className, const QString &name)
+{
+ return QLatin1String("class ") + className
+ + QLatin1String(" already has a property \"") + name
+ + QLatin1String("\" (defined by Q_PROPERTY).");
+}
+
// docparser.cpp
QString msgCannotFindDocumentation(const QString &fileName,
@@ -328,6 +489,20 @@ QString msgConversionTypesDiffer(const QString &varType, const QString &conversi
return result;
}
+QString msgCannotFindSmartPointer(const QString &instantiationType,
+ const AbstractMetaClassList &pointers)
+{
+ QString result;
+ QTextStream str(&result);
+ str << "Unable to find smart pointer type for " << instantiationType << " (known types:";
+ for (auto t : pointers) {
+ auto typeEntry = t->typeEntry();
+ str << ' ' << typeEntry->targetLangName() << '/' << typeEntry->qualifiedCppName();
+ }
+ str << ").";
+ return result;
+}
+
// main.cpp
QString msgLeftOverArguments(const QMap<QString, QString> &remainingArgs)
@@ -463,6 +638,17 @@ QString msgInvalidRegularExpression(const QString &pattern, const QString &why)
return QLatin1String("Invalid pattern \"") + pattern + QLatin1String("\": ") + why;
}
+QString msgNoRootTypeSystemEntry()
+{
+ return QLatin1String("Type system entry appears out of order, there does not seem to be a root type system element.");
+}
+
+QString msgIncorrectlyNestedName(const QString &name)
+{
+ return QLatin1String("Nesting types by specifying '::' is no longer supported (")
+ + name + QLatin1String(").");
+}
+
// qtdocgenerator.cpp
QString msgTagWarning(const QXmlStreamReader &reader, const QString &context,