================
@@ -18,26 +18,68 @@
#include "clang/AST/NestedNameSpecifierBase.h"
#include "clang/AST/TemplateBase.h"
#include "clang/Basic/OptionalUnsigned.h"
+#include "clang/Basic/PartialDiagnostic.h"
#include "clang/Basic/SourceLocation.h"
#include "llvm/ADT/FoldingSet.h"
#include "llvm/ADT/PointerUnion.h"
#include "llvm/ADT/SmallVector.h"
+#include "llvm/Support/TrailingObjects.h"
#include <utility>
namespace clang {
+class ASTContext;
class ConceptDecl;
class TemplateDecl;
class ConceptReference;
class Expr;
class NamedDecl;
struct PrintingPolicy;
+/// A compact, trivially-destructible stand-in for \c PartialDiagnostic
suitable
+/// for storage on the AST and for serialization.
+///
+/// Unlike \c PartialDiagnostic it doesn't own a \c DiagnosticStorage and is
not
+/// tied to a \c DiagStorageAllocator: only part of the arguments that are
+/// currently used by SFINAE diagnostics are kept.
+///
+class ASTPartialDiagnostic final
+ : private llvm::TrailingObjects<ASTPartialDiagnostic, uint64_t, uint32_t,
+ CharSourceRange> {
+ friend TrailingObjects;
+
+ /// Low bits of each packed word hold the ArgumentKind; the rest is the
+ /// (string) text length.
----------------
erichkeane wrote:
What is going on here?
A lot of stuff in the trailing objects too? Can you better explain the layout
here?
https://github.com/llvm/llvm-project/pull/211767
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits