diff options
Diffstat (limited to 'clang/unittests/AST/Language.cpp')
-rw-r--r-- | clang/unittests/AST/Language.cpp | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/clang/unittests/AST/Language.cpp b/clang/unittests/AST/Language.cpp new file mode 100644 index 00000000000..972c2a5495a --- /dev/null +++ b/clang/unittests/AST/Language.cpp @@ -0,0 +1,60 @@ +//===------ unittest/AST/Language.cpp - AST unit test support -------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file defines language options for AST unittests. +// +//===----------------------------------------------------------------------===// + +#include "Language.h" + +namespace clang { +namespace ast_matchers { + +ArgVector getBasicRunOptionsForLanguage(Language Lang) { + ArgVector BasicArgs; + // Test with basic arguments. + switch (Lang) { + case Lang_C: + BasicArgs = {"-x", "c", "-std=c99"}; + break; + case Lang_C89: + BasicArgs = {"-x", "c", "-std=c89"}; + break; + case Lang_CXX: + BasicArgs = {"-std=c++98", "-frtti"}; + break; + case Lang_CXX11: + BasicArgs = {"-std=c++11", "-frtti"}; + break; + case Lang_CXX14: + BasicArgs = {"-std=c++14", "-frtti"}; + break; + case Lang_OpenCL: + case Lang_OBJCXX: + llvm_unreachable("Not implemented yet!"); + } + return BasicArgs; +} + +RunOptions getRunOptionsForLanguage(Language Lang) { + ArgVector BasicArgs = getBasicRunOptionsForLanguage(Lang); + + // For C++, test with "-fdelayed-template-parsing" enabled to handle MSVC + // default behaviour. + if (isCXX(Lang)) { + ArgVector ArgsForDelayedTemplateParse = BasicArgs; + ArgsForDelayedTemplateParse.emplace_back("-fdelayed-template-parsing"); + return {BasicArgs, ArgsForDelayedTemplateParse}; + } + + return {BasicArgs}; +} + +} // end namespace ast_matchers +} // end namespace clang |