forked from qt-creator/qt-creator
CppEditor: Consider project part language
... when creating compiler command line for header files. In particular, make sure we do not use "objective-c++-header" for Objective-C headers in a C project part. Fixes: QTCREATORBUG-28368 Change-Id: I1e5067a939e037df53a318af2b15dec7295fcd46 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -125,7 +125,7 @@ static QJsonObject createFileObject(const FilePath &buildDir,
|
||||
args.append("/TP");
|
||||
} else {
|
||||
QStringList langOption
|
||||
= createLanguageOptionGcc(kind,
|
||||
= createLanguageOptionGcc(projectPart.language, kind,
|
||||
projectPart.languageExtensions
|
||||
& LanguageExtension::ObjectiveC);
|
||||
for (const QString &langOptionPart : langOption)
|
||||
|
||||
@@ -167,7 +167,7 @@ void CompilerOptionsBuilder::addSyntaxOnly()
|
||||
isClStyle() ? add("/Zs") : add("-fsyntax-only");
|
||||
}
|
||||
|
||||
QStringList createLanguageOptionGcc(ProjectFile::Kind fileKind, bool objcExt)
|
||||
QStringList createLanguageOptionGcc(Language language, ProjectFile::Kind fileKind, bool objcExt)
|
||||
{
|
||||
QStringList options;
|
||||
|
||||
@@ -176,23 +176,22 @@ QStringList createLanguageOptionGcc(ProjectFile::Kind fileKind, bool objcExt)
|
||||
case ProjectFile::Unsupported:
|
||||
break;
|
||||
case ProjectFile::CHeader:
|
||||
if (objcExt)
|
||||
options += "objective-c-header";
|
||||
else
|
||||
options += "c-header";
|
||||
case ProjectFile::AmbiguousHeader:
|
||||
if (language == Language::C)
|
||||
options += QLatin1String(objcExt ? "objective-c-header" : "c-header");
|
||||
else if (language == Language::Cxx)
|
||||
options += QLatin1String(objcExt ? "objective-c++-header" : "c++-header");
|
||||
break;
|
||||
case ProjectFile::CXXHeader:
|
||||
default:
|
||||
if (!objcExt) {
|
||||
options += "c++-header";
|
||||
options += QLatin1String(objcExt ? "objective-c++-header" : "c++-header");
|
||||
break;
|
||||
}
|
||||
Q_FALLTHROUGH();
|
||||
case ProjectFile::ObjCHeader:
|
||||
options += QLatin1String(language == Language::C ? "objective-c-header"
|
||||
: "objective-c++-header");
|
||||
break;
|
||||
case ProjectFile::ObjCXXHeader:
|
||||
options += "objective-c++-header";
|
||||
break;
|
||||
|
||||
case ProjectFile::CSource:
|
||||
if (!objcExt) {
|
||||
options += "c";
|
||||
@@ -447,7 +446,7 @@ void CompilerOptionsBuilder::updateFileLanguage(ProjectFile::Kind fileKind)
|
||||
}
|
||||
|
||||
const bool objcExt = m_projectPart.languageExtensions & LanguageExtension::ObjectiveC;
|
||||
const QStringList options = createLanguageOptionGcc(fileKind, objcExt);
|
||||
const QStringList options = createLanguageOptionGcc(m_projectPart.language, fileKind, objcExt);
|
||||
if (options.isEmpty())
|
||||
return;
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ enum class UseBuildSystemWarnings : char { Yes, No };
|
||||
|
||||
CPPEDITOR_EXPORT QStringList XclangArgs(const QStringList &args);
|
||||
CPPEDITOR_EXPORT QStringList clangArgsForCl(const QStringList &args);
|
||||
CPPEDITOR_EXPORT QStringList createLanguageOptionGcc(ProjectFile::Kind fileKind, bool objcExt);
|
||||
CPPEDITOR_EXPORT QStringList createLanguageOptionGcc(Utils::Language language, ProjectFile::Kind fileKind, bool objcExt);
|
||||
|
||||
class CPPEDITOR_EXPORT CompilerOptionsBuilder
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user