This revision was automatically updated to reflect the committed changes. Closed by commit rGbd63977ca96a: [Parser] Fix attr infloop on "int x [[c" (authored by sammccall).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D107693/new/ https://reviews.llvm.org/D107693 Files: clang/lib/Parse/ParseDeclCXX.cpp clang/test/Parser/cxx-attributes.cpp Index: clang/test/Parser/cxx-attributes.cpp =================================================================== --- clang/test/Parser/cxx-attributes.cpp +++ clang/test/Parser/cxx-attributes.cpp @@ -42,3 +42,6 @@ [[,,maybe_unused,]] int Commas4; // ok [[foo bar]] int NoComma; // expected-error {{expected ','}} \ // expected-warning {{unknown attribute 'foo' ignored}} +// expected-error@+2 2 {{expected ']'}} +// expected-error@+1 {{expected external declaration}} +[[foo Index: clang/lib/Parse/ParseDeclCXX.cpp =================================================================== --- clang/lib/Parse/ParseDeclCXX.cpp +++ clang/lib/Parse/ParseDeclCXX.cpp @@ -4385,7 +4385,7 @@ llvm::SmallDenseMap<IdentifierInfo*, SourceLocation, 4> SeenAttrs; bool AttrParsed = false; - while (!Tok.isOneOf(tok::r_square, tok::semi)) { + while (!Tok.isOneOf(tok::r_square, tok::semi, tok::eof)) { if (AttrParsed) { // If we parsed an attribute, a comma is required before parsing any // additional attributes.
Index: clang/test/Parser/cxx-attributes.cpp =================================================================== --- clang/test/Parser/cxx-attributes.cpp +++ clang/test/Parser/cxx-attributes.cpp @@ -42,3 +42,6 @@ [[,,maybe_unused,]] int Commas4; // ok [[foo bar]] int NoComma; // expected-error {{expected ','}} \ // expected-warning {{unknown attribute 'foo' ignored}} +// expected-error@+2 2 {{expected ']'}} +// expected-error@+1 {{expected external declaration}} +[[foo Index: clang/lib/Parse/ParseDeclCXX.cpp =================================================================== --- clang/lib/Parse/ParseDeclCXX.cpp +++ clang/lib/Parse/ParseDeclCXX.cpp @@ -4385,7 +4385,7 @@ llvm::SmallDenseMap<IdentifierInfo*, SourceLocation, 4> SeenAttrs; bool AttrParsed = false; - while (!Tok.isOneOf(tok::r_square, tok::semi)) { + while (!Tok.isOneOf(tok::r_square, tok::semi, tok::eof)) { if (AttrParsed) { // If we parsed an attribute, a comma is required before parsing any // additional attributes.
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits