diff --git a/src/Type.cc b/src/Type.cc index 6b39ef9198..97fb94ea03 100644 --- a/src/Type.cc +++ b/src/Type.cc @@ -1043,6 +1043,17 @@ const char* RecordType::AddFields(const type_decl_list& others, TableVal::SaveParseTimeTableState(this); + AddFieldsDirectly(others, add_log_attr); + + RecordVal::ResizeParseTimeRecords(this); + TableVal::RebuildParseTimeTables(); + + return nullptr; + } + +void RecordType::AddFieldsDirectly(const type_decl_list& others, + bool add_log_attr) + { for ( const auto& td : others ) { if ( add_log_attr ) @@ -1059,9 +1070,6 @@ const char* RecordType::AddFields(const type_decl_list& others, } num_fields = types->length(); - RecordVal::ResizeParseTimeRecords(this); - TableVal::RebuildParseTimeTables(); - return nullptr; } void RecordType::DescribeFields(ODesc* d) const diff --git a/src/Type.h b/src/Type.h index 09689ecf90..5a16463263 100644 --- a/src/Type.h +++ b/src/Type.h @@ -623,6 +623,9 @@ public: const char* AddFields(const type_decl_list& types, bool add_log_attr = false); + void AddFieldsDirectly(const type_decl_list& types, + bool add_log_attr = false); + void Describe(ODesc* d) const override; void DescribeReST(ODesc* d, bool roles_only = false) const override; void DescribeFields(ODesc* d) const;