logic: Fixed C language setting not propagated to Parser and added all supported language standards for C/C++
This commit is contained in:
@@ -122,7 +122,7 @@ Parser::Arguments CxxProject::getParserArguments() const
|
|||||||
utility::append(args.frameworkSearchPaths, m_projectSettings->getAbsoluteFrameworkSearchPaths());
|
utility::append(args.frameworkSearchPaths, m_projectSettings->getAbsoluteFrameworkSearchPaths());
|
||||||
utility::append(args.frameworkSearchPaths, appSettings->getFrameworkSearchPathsExpanded());
|
utility::append(args.frameworkSearchPaths, appSettings->getFrameworkSearchPathsExpanded());
|
||||||
|
|
||||||
args.language = m_projectSettings->getLanguage();
|
args.language = languageTypeToString(m_projectSettings->getLanguage());
|
||||||
args.languageStandard = m_projectSettings->getStandard();
|
args.languageStandard = m_projectSettings->getStandard();
|
||||||
args.compilationDatabasePath = m_projectSettings->getCompilationDatabasePath();
|
args.compilationDatabasePath = m_projectSettings->getCompilationDatabasePath();
|
||||||
|
|
||||||
|
|||||||
@@ -43,22 +43,52 @@ std::vector<std::string> CxxProjectSettings::getLanguageStandards() const
|
|||||||
switch (getLanguage())
|
switch (getLanguage())
|
||||||
{
|
{
|
||||||
case LANGUAGE_CPP:
|
case LANGUAGE_CPP:
|
||||||
standards.push_back("1z");
|
standards.push_back("c++1z");
|
||||||
standards.push_back("14");
|
standards.push_back("gnu++1z");
|
||||||
standards.push_back("1y");
|
|
||||||
standards.push_back("11");
|
standards.push_back("c++14");
|
||||||
standards.push_back("0x");
|
standards.push_back("gnu++14");
|
||||||
standards.push_back("03");
|
|
||||||
standards.push_back("98");
|
standards.push_back("c++1y");
|
||||||
|
standards.push_back("gnu++1y");
|
||||||
|
|
||||||
|
standards.push_back("c++11");
|
||||||
|
standards.push_back("gnu++11");
|
||||||
|
|
||||||
|
standards.push_back("c++0x");
|
||||||
|
standards.push_back("gnu++0x");
|
||||||
|
|
||||||
|
standards.push_back("c++03");
|
||||||
|
|
||||||
|
standards.push_back("c++98");
|
||||||
|
standards.push_back("gnu++98");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case LANGUAGE_C:
|
case LANGUAGE_C:
|
||||||
standards.push_back("1x");
|
standards.push_back("c1x");
|
||||||
standards.push_back("11");
|
standards.push_back("gnu1x");
|
||||||
standards.push_back("9x");
|
standards.push_back("iso9899:201x");
|
||||||
standards.push_back("99");
|
|
||||||
standards.push_back("90");
|
standards.push_back("c11");
|
||||||
standards.push_back("89");
|
standards.push_back("gnu11");
|
||||||
|
standards.push_back("iso9899:2011");
|
||||||
|
|
||||||
|
standards.push_back("c9x");
|
||||||
|
standards.push_back("gnu9x");
|
||||||
|
standards.push_back("iso9899:199x");
|
||||||
|
|
||||||
|
standards.push_back("c99");
|
||||||
|
standards.push_back("gnu99");
|
||||||
|
standards.push_back("iso9899:1999");
|
||||||
|
|
||||||
|
standards.push_back("iso9899:199409");
|
||||||
|
|
||||||
|
standards.push_back("c90");
|
||||||
|
standards.push_back("gnu90");
|
||||||
|
standards.push_back("iso9899:1990");
|
||||||
|
|
||||||
|
standards.push_back("c89");
|
||||||
|
standards.push_back("gnu89");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|||||||
@@ -135,15 +135,8 @@ std::vector<std::string> CxxParser::getCommandlineArguments(const Arguments& arg
|
|||||||
{
|
{
|
||||||
std::vector<std::string> args = getCommandlineArgumentsEssential(arguments);
|
std::vector<std::string> args = getCommandlineArgumentsEssential(arguments);
|
||||||
|
|
||||||
// The option '-x c++' treats subsequent input files as C++.
|
|
||||||
args.push_back("-x");
|
|
||||||
std::string language = getLanguageArgument(arguments.language);
|
|
||||||
args.push_back(language);
|
|
||||||
|
|
||||||
// Set language standard
|
// Set language standard
|
||||||
std::string standard = "-std=";
|
std::string standard = "-std=" + arguments.languageStandard;
|
||||||
standard += language;
|
|
||||||
standard += arguments.languageStandard;
|
|
||||||
args.push_back(standard);
|
args.push_back(standard);
|
||||||
|
|
||||||
return args;
|
return args;
|
||||||
@@ -232,17 +225,3 @@ ParserClient* CxxParser::getParserClient()
|
|||||||
{
|
{
|
||||||
return m_client;
|
return m_client;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string CxxParser::getLanguageArgument(const std::string& language) const
|
|
||||||
{
|
|
||||||
std::string result = language;
|
|
||||||
|
|
||||||
boost::algorithm::to_lower(result);
|
|
||||||
|
|
||||||
if (result != "c++" && result != "c")
|
|
||||||
{
|
|
||||||
result = "c++";
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -36,8 +36,6 @@ private:
|
|||||||
FileRegister* getFileRegister();
|
FileRegister* getFileRegister();
|
||||||
ParserClient* getParserClient();
|
ParserClient* getParserClient();
|
||||||
|
|
||||||
std::string getLanguageArgument(const std::string& language) const;
|
|
||||||
|
|
||||||
friend class TaskParseCxx;
|
friend class TaskParseCxx;
|
||||||
|
|
||||||
std::shared_ptr<FileRegister> m_fileRegister;
|
std::shared_ptr<FileRegister> m_fileRegister;
|
||||||
|
|||||||
@@ -2885,7 +2885,7 @@ public:
|
|||||||
|
|
||||||
Parser::Arguments args;
|
Parser::Arguments args;
|
||||||
args.language = "c++";
|
args.language = "c++";
|
||||||
args.languageStandard = "1z";
|
args.languageStandard = "c++1z";
|
||||||
|
|
||||||
parser.parseFiles(filePaths, args);
|
parser.parseFiles(filePaths, args);
|
||||||
|
|
||||||
@@ -3222,7 +3222,7 @@ private:
|
|||||||
|
|
||||||
m_args.logErrors = logErrors;
|
m_args.logErrors = logErrors;
|
||||||
m_args.language = "c++";
|
m_args.language = "c++";
|
||||||
m_args.languageStandard = "1z";
|
m_args.languageStandard = "c++1z";
|
||||||
|
|
||||||
TestFileManager fm;
|
TestFileManager fm;
|
||||||
std::shared_ptr<FileRegister> fr = std::make_shared<FileRegister>(&fm, false);
|
std::shared_ptr<FileRegister> fr = std::make_shared<FileRegister>(&fm, false);
|
||||||
|
|||||||
Reference in New Issue
Block a user