From 33fa48314f06936f83859852feb3c0ce68b08c0c Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Wed, 1 Jan 2014 00:37:42 +0000 Subject: Vendor import of clang RELEASE_34/final tag r197956 (effectively, 3.4 release): https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_34/final@197956 --- docs/ReleaseNotes.rst | 29 ++++++++++++++--------------- lib/Basic/Version.cpp | 2 +- lib/Parse/ParseDeclCXX.cpp | 8 +++++++- test/Parser/recovery.cpp | 6 ++++++ 4 files changed, 28 insertions(+), 17 deletions(-) diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst index ec0dbffed079a..453110e650aa2 100644 --- a/docs/ReleaseNotes.rst +++ b/docs/ReleaseNotes.rst @@ -18,23 +18,22 @@ documentation `_. All LLVM releases may be downloaded from the `LLVM releases web site `_. -For more information about Clang or LLVM, including information about -the latest release, please check out the main `Clang Web -Site `_ or the `LLVM Web -Site `_. +For more information about Clang or LLVM, including information about the +latest release, please check out the main `Clang Web Site +`_ or the `LLVM Web Site `_. -Note that if you are reading this file from a Subversion checkout or the -main Clang web page, this document applies to the *next* release, not -the current one. To see the release notes for a specific release, please -see the `releases page `_. +Note that if you are reading this file from a Subversion checkout or the main +Clang web page, this document applies to the *next* release, not the current +one. To see the release notes for a specific release, please see the `releases +page `_. What's New in Clang 3.4? ======================== -Some of the major new features and improvements to Clang are listed -here. Generic improvements to Clang as a whole or to its underlying -infrastructure are described first, followed by language-specific -sections with improvements to Clang's support for those languages. +Some of the major new features and improvements to Clang are listed here. +Generic improvements to Clang as a whole or to its underlying infrastructure +are described first, followed by language-specific sections with improvements +to Clang's support for those languages. Last release which will build as C++98 -------------------------------------- @@ -58,9 +57,9 @@ Major New Features Improvements to Clang's diagnostics ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -Clang's diagnostics are constantly being improved to catch more issues, -explain them more clearly, and provide more accurate source information -about them. The improvements since the 3.3 release include: +Clang's diagnostics are constantly being improved to catch more issues, explain +them more clearly, and provide more accurate source information about them. The +improvements since the 3.3 release include: - -Wheader-guard warns on mismatches between the #ifndef and #define lines in a header guard. diff --git a/lib/Basic/Version.cpp b/lib/Basic/Version.cpp index 4a2b1fccb24e5..77e4ad5bc4aa8 100644 --- a/lib/Basic/Version.cpp +++ b/lib/Basic/Version.cpp @@ -36,7 +36,7 @@ std::string getClangRepositoryPath() { // If the SVN_REPOSITORY is empty, try to use the SVN keyword. This helps us // pick up a tag in an SVN export, for example. - StringRef SVNRepository("$URL: https://llvm.org/svn/llvm-project/cfe/branches/release_34/lib/Basic/Version.cpp $"); + StringRef SVNRepository("$URL: https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_34/final/lib/Basic/Version.cpp $"); if (URL.empty()) { URL = SVNRepository.slice(SVNRepository.find(':'), SVNRepository.find("/lib/Basic")); diff --git a/lib/Parse/ParseDeclCXX.cpp b/lib/Parse/ParseDeclCXX.cpp index 16d06d7d152c9..dd29f99ffc71a 100644 --- a/lib/Parse/ParseDeclCXX.cpp +++ b/lib/Parse/ParseDeclCXX.cpp @@ -1427,7 +1427,13 @@ void Parser::ParseClassSpecifier(tok::TokenKind TagTokKind, << DeclSpec::getSpecifierName(TagType); } - SkipUntil(tok::comma, StopAtSemi); + // If we are parsing a definition and stop at a base-clause, continue on + // until the semicolon. Continuing from the comma will just trick us into + // thinking we are seeing a variable declaration. + if (TUK == Sema::TUK_Definition && Tok.is(tok::colon)) + SkipUntil(tok::semi, StopBeforeMatch); + else + SkipUntil(tok::comma, StopAtSemi); return; } diff --git a/test/Parser/recovery.cpp b/test/Parser/recovery.cpp index b5b09484ad9ed..4bed2570fcbaf 100644 --- a/test/Parser/recovery.cpp +++ b/test/Parser/recovery.cpp @@ -119,3 +119,9 @@ void MissingSemiInFunction() { struct Inner4 {} // ok, no missing ';' here Inner5; } + +namespace PR17084 { +enum class EnumID {}; +template struct TempID; +template <> struct TempID : BadType, EnumID::Garbage; // expected-error{{use of undeclared identifier 'BadType'}} +} -- cgit v1.2.3