diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2014-10-02 17:57:26 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2014-10-02 17:57:26 +0000 |
commit | ce72e63d1156ff0c7a2b2295900ce06846a2e6d1 (patch) | |
tree | 18665110d44df641c0b3c9adb66e004216f08b17 /clang/lib/Parse/ParseDecl.cpp | |
parent | 7efd054479b0df398af773c415f5f8aa5052f8cf (diff) | |
download | bcm5719-llvm-ce72e63d1156ff0c7a2b2295900ce06846a2e6d1.tar.gz bcm5719-llvm-ce72e63d1156ff0c7a2b2295900ce06846a2e6d1.zip |
Diagnose mixed use of '_' and '.' as version
separators in my previous patch.
llvm-svn: 218895
Diffstat (limited to 'clang/lib/Parse/ParseDecl.cpp')
-rw-r--r-- | clang/lib/Parse/ParseDecl.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp index f9747d9e0b9..7e6751c0500 100644 --- a/clang/lib/Parse/ParseDecl.cpp +++ b/clang/lib/Parse/ParseDecl.cpp @@ -688,7 +688,8 @@ VersionTuple Parser::ParseVersionTuple(SourceRange &Range) { return VersionTuple(Major); } - if (!VersionNumberSeparator(ThisTokBegin[AfterMajor]) + const char AfterMajorSeparator = ThisTokBegin[AfterMajor]; + if (!VersionNumberSeparator(AfterMajorSeparator) || (AfterMajor + 1 == ActualLength)) { Diag(Tok, diag::err_expected_version); SkipUntil(tok::comma, tok::r_paren, @@ -716,13 +717,17 @@ VersionTuple Parser::ParseVersionTuple(SourceRange &Range) { return VersionTuple(Major, Minor); } + const char AfterMinorSeparator = ThisTokBegin[AfterMinor]; // If what follows is not a '.' or '_', we have a problem. - if (!VersionNumberSeparator(ThisTokBegin[AfterMinor])) { + if (!VersionNumberSeparator(AfterMinorSeparator)) { Diag(Tok, diag::err_expected_version); SkipUntil(tok::comma, tok::r_paren, StopAtSemi | StopBeforeMatch | StopAtCodeCompletion); return VersionTuple(); } + + if (AfterMajorSeparator != AfterMinorSeparator) + Diag(Tok, diag::warn_expected_consistent_version_separator); // Parse the subminor version. unsigned AfterSubminor = AfterMinor + 1; |