yronglin wrote: Sorry for the very late update, I had some troubles in the past two months.
This update check the number of C++11 in-class-initializer in the class and update `CXXRecordDecl::DefinitionData::HasInClassInitializer` when calling `FieldDecl::hasInClassInitializer()`. I think we might go futhur to create `RecoveryExpr` for invalid in-class-initializer in `FieldDecl`, but this will interrupt the processing of the rest class members. e.g. The "default member initializer for 'r' needed" will missing because `FibTree *l` is invalid in the following: ```C++ namespace use_self { struct FibTree { int n; FibTree *l = // expected-note {{declared here}} n > 1 ? new FibTree{n-1} : &fib0; // expected-error {{default member initializer for 'l' needed}} FibTree *r = // expected-note {{declared here}} n > 2 ? new FibTree{n-2} : &fib0; // expected-error {{default member initializer for 'r' needed}} int v = l->v + r->v; static FibTree fib0; }; FibTree FibTree::fib0{0, nullptr, nullptr, 1}; int fib(int n) { return FibTree{n}.v; } } ``` The `hadError` flag will be true after filled in `FibTree *l`. https://github.com/llvm/llvm-project/blob/fce917d39d97b8697e04fc52b1727307fc341212/clang/lib/Sema/SemaInit.cpp#L895-L912 https://github.com/llvm/llvm-project/pull/113049 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits