in facebook-clang-plugins/libtooling/ASTExporter.h [4169:4198]
void ASTExporter<ATDWriter>::VisitCXXNewExpr(const CXXNewExpr *Node) {
VisitExpr(Node);
bool IsArray = Node->isArray();
bool HasArraySize = Node->getArraySize().hasValue();
bool HasInitializer = Node->hasInitializer();
unsigned PlacementArgs = Node->getNumPlacementArgs();
bool HasPlacementArgs = PlacementArgs > 0;
ObjectScope Scope(
OF, 0 + IsArray + HasArraySize + HasInitializer + HasPlacementArgs);
// ?should_null_check : bool;
// OF.emitFlag("should_null_check", Node->shouldNullCheckAllocation());
OF.emitFlag("is_array", IsArray);
if (HasArraySize) {
OF.emitTag("array_size_expr");
dumpPointer(Node->getArraySize().getValue());
}
if (HasInitializer) {
OF.emitTag("initializer_expr");
dumpPointer(Node->getInitializer());
}
if (HasPlacementArgs) {
OF.emitTag("placement_args");
ArrayScope aScope(OF, PlacementArgs);
for (auto arg : Node->placement_arguments()) {
dumpPointer(arg);
}
}
}