diff options
Diffstat (limited to 'sources/shiboken2/ApiExtractor/messages.cpp')
-rw-r--r-- | sources/shiboken2/ApiExtractor/messages.cpp | 198 |
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, |