Lazily deserialize default member initializers.
authorRichard Smith <richard@metafoo.co.uk>
Wed, 5 Apr 2023 21:28:57 +0000 (14:28 -0700)
committerRichard Smith <richard@metafoo.co.uk>
Wed, 5 Apr 2023 22:46:13 +0000 (15:46 -0700)
commit32429341910d0a48336215be13c7c9140dd26da4
tree58a08cb2a11e4f25d655b989c94bd09a24f6e4f8
parent7907fd49619f121df6feafd8ca524840bcb6d5da
Lazily deserialize default member initializers.

This is important to break deserialization cycles, where a lambda in a
default member initializer can refer to the field as its context
declaration, and the initializer of the field can refer back to the
lambda.

This is a follow-up to bc73ef0031b5, which applied the same fix to
variable declarations for the same reason.
clang/include/clang/AST/Decl.h
clang/lib/AST/Decl.cpp
clang/lib/Serialization/ASTCommon.cpp
clang/lib/Serialization/ASTReaderDecl.cpp
clang/lib/Serialization/ASTWriterDecl.cpp
clang/test/Modules/merge-lambdas.cpp