]> granicus.if.org Git - clang/commit
Compatibility macro detection for the -Wimplicit-fallthrough diagnostic.
authorAlexander Kornienko <alexfh@google.com>
Fri, 28 Sep 2012 22:24:03 +0000 (22:24 +0000)
committerAlexander Kornienko <alexfh@google.com>
Fri, 28 Sep 2012 22:24:03 +0000 (22:24 +0000)
commit66da0abf7ab7cd449bb1d5134b2ef97d9d34d812
tree0db2b50ad18241bdfb606f50a3228613ed024137
parent3437daad71d8694d4ddd25418751f2763c0f8979
Compatibility macro detection for the -Wimplicit-fallthrough diagnostic.

Summary:
When issuing a diagnostic message for the -Wimplicit-fallthrough diagnostics, always try to find the latest macro, defined at the point of fallthrough, which is immediately expanded to "[[clang::fallthrough]]", and use it's name instead of the actual sequence.

Known issues:
  * uses PP.getSpelling() to compare macro definition with a string (anyone can suggest a convenient way to fill a token array, or maybe lex it in runtime?);
  * this can be generalized and used in other similar cases, any ideas where it should reside then?

Reviewers: doug.gregor, rsmith

Reviewed By: rsmith

CC: cfe-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D50

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164858 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/Basic/DiagnosticSemaKinds.td
include/clang/Basic/TokenKinds.h
include/clang/Lex/MacroInfo.h
include/clang/Lex/Token.h
lib/Lex/MacroInfo.cpp
lib/Sema/AnalysisBasedWarnings.cpp
test/SemaCXX/switch-implicit-fallthrough-macro.cpp [new file with mode: 0644]