aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sources/shiboken6/ApiExtractor/apiextractor.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/sources/shiboken6/ApiExtractor/apiextractor.cpp b/sources/shiboken6/ApiExtractor/apiextractor.cpp
index 7b8ddf340..cf1b59b88 100644
--- a/sources/shiboken6/ApiExtractor/apiextractor.cpp
+++ b/sources/shiboken6/ApiExtractor/apiextractor.cpp
@@ -103,6 +103,8 @@ private:
void ApiExtractorOptionsParser::parseIncludePathOption(const QString &value,
HeaderType headerType)
{
+ if (value.isEmpty())
+ throw Exception(u"Empty value passed to include path option"_s);
const auto path = QFile::encodeName(QDir::cleanPath(value));
m_options->m_includePaths.append(HeaderPath{path, headerType});
}
@@ -174,19 +176,22 @@ bool ApiExtractorOptionsParser::handleOption(const QString &key, const QString &
return true;
}
if (key == u"clang-options") {
- m_options->m_clangOptions.append(value.split(u','));
+ m_options->m_clangOptions.append(value.split(u',', Qt::SkipEmptyParts));
return true;
}
if (key == u"include-paths") {
- parseIncludePathOption(value.split(QDir::listSeparator()), HeaderType::Standard);
+ parseIncludePathOption(value.split(QDir::listSeparator(), Qt::SkipEmptyParts),
+ HeaderType::Standard);
return true;
}
if (key == u"framework-include-paths") {
- parseIncludePathOption(value.split(QDir::listSeparator()), HeaderType::Framework);
+ parseIncludePathOption(value.split(QDir::listSeparator(), Qt::SkipEmptyParts),
+ HeaderType::Framework);
return true;
}
if (key == u"system-include-paths") {
- parseIncludePathOption(value.split(QDir::listSeparator()), HeaderType::System);
+ parseIncludePathOption(value.split(QDir::listSeparator(), Qt::SkipEmptyParts),
+ HeaderType::System);
return true;
}
if (key == u"language-level") {
@@ -376,16 +381,16 @@ bool ApiExtractorPrivate::runHelper(ApiExtractorFlags flags)
for (const HeaderPath &headerPath : std::as_const(m_includePaths))
arguments.append(HeaderPath::includeOption(headerPath));
+ if (flags.testFlag(ApiExtractorFlag::UsePySideExtensions))
+ addPySideExtensions(&arguments);
arguments.append(QFile::encodeName(preprocessedCppFileName));
+
if (ReportHandler::isDebug(ReportHandler::SparseDebug)) {
qCInfo(lcShiboken).noquote().nospace()
<< "clang language level: " << int(m_languageLevel)
<< "\nclang arguments: " << arguments;
}
- if (flags.testFlag(ApiExtractorFlag::UsePySideExtensions))
- addPySideExtensions(&arguments);
-
const bool result = m_builder->build(arguments, flags, addCompilerSupportArguments,
m_languageLevel);
if (!result)