summaryrefslogtreecommitdiffstats
path: root/clang/include
diff options
context:
space:
mode:
authorAlexander Kornienko <alexfh@google.com>2013-06-28 12:51:24 +0000
committerAlexander Kornienko <alexfh@google.com>2013-06-28 12:51:24 +0000
commit1e80887d6314e3d34b0f1c4aa6ffef9999fba8ec (patch)
tree95b6fc8726f3ece5862b9f9c5f91b347657b451e /clang/include
parent002d764f215717f75e40f7e23139a6048bd5c1a3 (diff)
downloadbcm5719-llvm-1e80887d6314e3d34b0f1c4aa6ffef9999fba8ec.tar.gz
bcm5719-llvm-1e80887d6314e3d34b0f1c4aa6ffef9999fba8ec.zip
Use lexing mode based on FormatStyle.Standard.
Summary: Some valid pre-C++11 constructs change meaning when lexed in C++11 mode, e.g. #define x(_a) printf("foo"_a); (example from http://llvm.org/bugs/show_bug.cgi?id=16342). "foo"_a is treated as a user-defined string literal when parsed in C++11 mode. In order to deal with this correctly, we need to set lexing mode according to which standard the code conforms to. We already have a configuration value for this (FormatStyle.Standard), which seems to be appropriate to use in this case as well. Reviewers: klimek CC: cfe-commits, gribozavr Differential Revision: http://llvm-reviews.chandlerc.com/D1028 llvm-svn: 185149
Diffstat (limited to 'clang/include')
-rw-r--r--clang/include/clang/Format/Format.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/clang/include/clang/Format/Format.h b/clang/include/clang/Format/Format.h
index 24eeb76d068..d03b8796feb 100644
--- a/clang/include/clang/Format/Format.h
+++ b/clang/include/clang/Format/Format.h
@@ -218,7 +218,11 @@ tooling::Replacements reformat(const FormatStyle &Style, StringRef Code,
StringRef FileName = "<stdin>");
/// \brief Returns the \c LangOpts that the formatter expects you to set.
-LangOptions getFormattingLangOpts();
+///
+/// \param Standard determines lexing mode: LC_Cpp11 and LS_Auto turn on C++11
+/// lexing mode, LS_Cpp03 - C++03 mode.
+LangOptions getFormattingLangOpts(FormatStyle::LanguageStandard Standard =
+ FormatStyle::LS_Cpp11);
} // end namespace format
} // end namespace clang
OpenPOWER on IntegriCloud