File tree Expand file tree Collapse file tree 3 files changed +17
-2
lines changed Expand file tree Collapse file tree 3 files changed +17
-2
lines changed Original file line number Diff line number Diff line change @@ -932,6 +932,7 @@ Bug Fixes to C++ Support
932
932
through its address (``(&Foo::bar<baz>)() ``).
933
933
- Correctly handle allocations in the condition of a ``if constexpr ``.(#GH120197) (#GH134820)
934
934
- Fixed a crash when handling invalid member using-declaration in C++20+ mode. (#GH63254)
935
+ - Fixed parsing of lambda expressions that appear after ``* `` or ``& `` in contexts where a declaration can appear. (#GH63880)
935
936
- Fix name lookup in lambda appearing in the body of a requires expression. (#GH147650)
936
937
- Fix a crash when trying to instantiate an ambiguous specialization. (#GH51866)
937
938
- Improved handling of variables with ``consteval `` constructors, to
Original file line number Diff line number Diff line change @@ -735,10 +735,12 @@ bool Parser::TrySkipAttributes() {
735
735
tok::kw_alignas) ||
736
736
Tok.isRegularKeywordAttribute ()) {
737
737
if (Tok.is (tok::l_square)) {
738
+ if (!NextToken ().is (tok::l_square))
739
+ return true ;
740
+
738
741
ConsumeBracket ();
739
- if (Tok.isNot (tok::l_square))
740
- return false ;
741
742
ConsumeBracket ();
743
+
742
744
if (!SkipUntil (tok::r_square) || Tok.isNot (tok::r_square))
743
745
return false ;
744
746
// Note that explicitly checking for `[[` and `]]` allows to fail as
Original file line number Diff line number Diff line change @@ -159,3 +159,15 @@ struct U {
159
159
template <typename T>
160
160
void m_fn1 (T x = 0 [0 ); // expected-error{{expected ']'}} expected-note{{to match this '['}}
161
161
} *U;
162
+
163
+
164
+
165
+ namespace GH63880 {
166
+ void f () {
167
+ char * i (*[] { return new int ; }());
168
+ // expected-error@-1{{cannot initialize a variable of type 'char *' with an lvalue of type 'int'}}
169
+
170
+ char * j (&[]() -> int & { return *new int ; }());
171
+ // expected-error@-1{{cannot initialize a variable of type 'char *' with an rvalue of type 'int *'}}
172
+ }
173
+ }
You can’t perform that action at this time.
0 commit comments