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");
|
args.append("/TP");
|
||||||
} else {
|
} else {
|
||||||
QStringList langOption
|
QStringList langOption
|
||||||
= createLanguageOptionGcc(kind,
|
= createLanguageOptionGcc(projectPart.language, kind,
|
||||||
projectPart.languageExtensions
|
projectPart.languageExtensions
|
||||||
& LanguageExtension::ObjectiveC);
|
& LanguageExtension::ObjectiveC);
|
||||||
for (const QString &langOptionPart : langOption)
|
for (const QString &langOptionPart : langOption)
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ void CompilerOptionsBuilder::addSyntaxOnly()
|
|||||||
isClStyle() ? add("/Zs") : add("-fsyntax-only");
|
isClStyle() ? add("/Zs") : add("-fsyntax-only");
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList createLanguageOptionGcc(ProjectFile::Kind fileKind, bool objcExt)
|
QStringList createLanguageOptionGcc(Language language, ProjectFile::Kind fileKind, bool objcExt)
|
||||||
{
|
{
|
||||||
QStringList options;
|
QStringList options;
|
||||||
|
|
||||||
@@ -176,23 +176,22 @@ QStringList createLanguageOptionGcc(ProjectFile::Kind fileKind, bool objcExt)
|
|||||||
case ProjectFile::Unsupported:
|
case ProjectFile::Unsupported:
|
||||||
break;
|
break;
|
||||||
case ProjectFile::CHeader:
|
case ProjectFile::CHeader:
|
||||||
if (objcExt)
|
case ProjectFile::AmbiguousHeader:
|
||||||
options += "objective-c-header";
|
if (language == Language::C)
|
||||||
else
|
options += QLatin1String(objcExt ? "objective-c-header" : "c-header");
|
||||||
options += "c-header";
|
else if (language == Language::Cxx)
|
||||||
|
options += QLatin1String(objcExt ? "objective-c++-header" : "c++-header");
|
||||||
break;
|
break;
|
||||||
case ProjectFile::CXXHeader:
|
case ProjectFile::CXXHeader:
|
||||||
default:
|
options += QLatin1String(objcExt ? "objective-c++-header" : "c++-header");
|
||||||
if (!objcExt) {
|
|
||||||
options += "c++-header";
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
Q_FALLTHROUGH();
|
|
||||||
case ProjectFile::ObjCHeader:
|
case ProjectFile::ObjCHeader:
|
||||||
|
options += QLatin1String(language == Language::C ? "objective-c-header"
|
||||||
|
: "objective-c++-header");
|
||||||
|
break;
|
||||||
case ProjectFile::ObjCXXHeader:
|
case ProjectFile::ObjCXXHeader:
|
||||||
options += "objective-c++-header";
|
options += "objective-c++-header";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ProjectFile::CSource:
|
case ProjectFile::CSource:
|
||||||
if (!objcExt) {
|
if (!objcExt) {
|
||||||
options += "c";
|
options += "c";
|
||||||
@@ -447,7 +446,7 @@ void CompilerOptionsBuilder::updateFileLanguage(ProjectFile::Kind fileKind)
|
|||||||
}
|
}
|
||||||
|
|
||||||
const bool objcExt = m_projectPart.languageExtensions & LanguageExtension::ObjectiveC;
|
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())
|
if (options.isEmpty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ enum class UseBuildSystemWarnings : char { Yes, No };
|
|||||||
|
|
||||||
CPPEDITOR_EXPORT QStringList XclangArgs(const QStringList &args);
|
CPPEDITOR_EXPORT QStringList XclangArgs(const QStringList &args);
|
||||||
CPPEDITOR_EXPORT QStringList clangArgsForCl(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
|
class CPPEDITOR_EXPORT CompilerOptionsBuilder
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user