There seems to be a parse bug here. Not error in parsing, an actual incorrect parse. I am somewhat sure the left hand side should also be a declaration, not an expression.

This mapping is unfinished: 1 of 9010 nodes are still unmarked.

This mapping has 6 multi-map groups: several pairings are equally correct there. The code view shows one arbitrary valid pairing, not the only one.

Code view:

A painting is a person's account of this edit as text, recorded independently of the node mapping - a rendering often has several equally defensible answers where the mapping has one. Deletions and insertions carry no position on the opposite side in a painting, so that panel draws no caret for them.

Before

…lines 1–41 unchanged (41 lines)
42 upb_Arena* arena;
43 upb_strtable syms; // full_name -> packed def ptr
44 upb_strtable files; // file_name -> (upb_FileDef*)
45 upb_inttable exts; // (upb_MiniTableExtension*) -> (upb_FieldDef*)
46 upb_ExtensionRegistry* extreg;
47 const upb_GeneratedRegistryRef* generated_extreg;
48 const UPB_DESC(FeatureSetDefaults) * feature_set_defaults;
49 upb_MiniTablePlatform platform;
50 void* scratch_data;
51 size_t scratch_size;
52 size_t bytes_loaded;
53 bool disable_closed_enum_checking;
54};
…lines 55–106 unchanged (52 lines)
107}
108
109bool upb_DefPool_ClosedEnumCheckingDisabled(const upb_DefPool* s) {
110 return s->disable_closed_enum_checking;
111}
112
113const UPB_DESC(FeatureSetDefaults) *
114 upb_DefPool_FeatureSetDefaults(const upb_DefPool* s) {
115 return s->feature_set_defaults;
116}
117
118bool upb_DefPool_SetFeatureSetDefaults(upb_DefPool* s,
119 const char* serialized_defaults,
120 size_t serialized_len,
121 upb_Status* status) {
122 const UPB_DESC(FeatureSetDefaults)* defaults = UPB_DESC(
123 FeatureSetDefaults_parse)(serialized_defaults, serialized_len, s->arena);
124 if (!defaults) {
125 upb_Status_SetErrorFormat(status, "Failed to parse defaults");
126 return false;
127 }
128 if (upb_strtable_count(&s->files) > 0) {
129 upb_Status_SetErrorFormat(status,
130 "Feature set defaults can't be changed once the "
131 "pool has started building");
132 return false;
133 }
134 int min_edition = UPB_DESC(FeatureSetDefaults_minimum_edition(defaults));
135 int max_edition = UPB_DESC(FeatureSetDefaults_maximum_edition(defaults));
136 if (min_edition > max_edition) {
137 upb_Status_SetErrorFormat(status, "Invalid edition range %s to %s",
138 upb_FileDef_EditionName(min_edition),
139 upb_FileDef_EditionName(max_edition));
140 return false;
141 }
142 size_t size;
143 const UPB_DESC(
144 FeatureSetDefaults_FeatureSetEditionDefault)* const* default_list =
145 UPB_DESC(FeatureSetDefaults_defaults(defaults, &size));
146 int prev_edition = UPB_DESC(EDITION_UNKNOWN);
147 for (size_t i = 0; i < size; ++i) {
148 int edition = UPB_DESC(
149 FeatureSetDefaults_FeatureSetEditionDefault_edition(default_list[i]));
150 if (edition == UPB_DESC(EDITION_UNKNOWN)) {
151 upb_Status_SetErrorFormat(status, "Invalid edition UNKNOWN specified");
152 return false;
153 }
154 if (edition <= prev_edition) {
155 upb_Status_SetErrorFormat(status,
156 "Feature set defaults are not strictly "
157 "increasing, %s is greater than or equal to %s",
158 upb_FileDef_EditionName(prev_edition),
159 upb_FileDef_EditionName(edition));
…lines 160–374 unchanged (215 lines)
375 if (f == file) upb_strtable_removeiter(&s->syms, &iter);
376 }
377}
378
379static const upb_FileDef* upb_DefBuilder_AddFileToPool(
380 upb_DefBuilder* const builder, upb_DefPool* const s,
381 const UPB_DESC(FileDescriptorProto) * const file_proto,
382 const upb_StringView name, upb_Status* const status) {
383 if (UPB_SETJMP(builder->err) != 0) {
384 UPB_ASSERT(!upb_Status_IsOk(status));
385 if (builder->file) {
386 remove_filedef(s, builder->file);
387 builder->file = NULL;
388 }
389 } else if (!builder->arena || !builder->tmp_arena ||
390 !upb_strtable_init(&builder->feature_cache, 16,
391 builder->tmp_arena) ||
392 !(builder->legacy_features =
393 UPB_DESC(FeatureSet_new)(builder->tmp_arena))) {
394 _upb_DefBuilder_OomErr(builder);
395 } else {
396 _upb_FileDef_Create(builder, file_proto);
397 upb_strtable_insert(&s->files, name.data, name.size,
398 upb_value_constptr(builder->file), builder->arena);
399 UPB_ASSERT(upb_Status_IsOk(status));
400 upb_Arena_Fuse(s->arena, builder->arena);
401 }
402
403 if (builder->arena) upb_Arena_Free(builder->arena);
404 if (builder->tmp_arena) upb_Arena_Free(builder->tmp_arena);
405 return builder->file;
406}
407
408static const upb_FileDef* _upb_DefPool_AddFile(
409 upb_DefPool* s, const UPB_DESC(FileDescriptorProto) * file_proto,
410 const upb_MiniTableFile* layout, upb_Status* status) {
411 const upb_StringView name = UPB_DESC(FileDescriptorProto_name)(file_proto);
412
413 // Determine whether we already know about this file.
414 {
415 upb_value v;
416 if (upb_strtable_lookup2(&s->files, name.data, name.size, &v)) {
417 upb_Status_SetErrorFormat(status,
…lines 418–435 unchanged (18 lines)
436 .tmp_arena = upb_Arena_New(),
437 };
438
439 return upb_DefBuilder_AddFileToPool(&ctx, s, file_proto, name, status);
440}
441
442const upb_FileDef* upb_DefPool_AddFile(upb_DefPool* s,
443 const UPB_DESC(FileDescriptorProto) *
444 file_proto,
445 upb_Status* status) {
446 return _upb_DefPool_AddFile(s, file_proto, NULL, status);
447}
448
449bool _upb_DefPool_LoadDefInitEx(upb_DefPool* s, const _upb_DefPool_Init* init,
450 bool rebuild_minitable) {
451 /* Since this function should never fail (it would indicate a bug in upb) we
452 * print errors to stderr instead of returning error status to the user. */
453 _upb_DefPool_Init** deps = init->deps;
454 UPB_DESC(FileDescriptorProto) * file;
455 upb_Arena* arena;
456 upb_Status status;
457
458 upb_Status_Clear(&status);
459
460 if (upb_DefPool_FindFileByName(s, init->filename)) {
461 return true;
462 }
463
464 arena = upb_Arena_New();
465
466 for (; *deps; deps++) {
467 if (!_upb_DefPool_LoadDefInitEx(s, *deps, rebuild_minitable)) goto err;
468 }
469
470 file = UPB_DESC(FileDescriptorProto_parse_ex)(
471 init->descriptor.data, init->descriptor.size, NULL,
472 kUpb_DecodeOption_AliasString, arena);
473 s->bytes_loaded += init->descriptor.size;
474
475 if (!file) {
476 upb_Status_SetErrorFormat(
477 &status,
478 "Failed to parse compiled-in descriptor for file '%s'. This should "
…lines 479–562 unchanged (84 lines)

After

…lines 1–41 unchanged (41 lines)
42 upb_Arena* arena;
43 upb_strtable syms; // full_name -> packed def ptr
44 upb_strtable files; // file_name -> (upb_FileDef*)
45 upb_inttable exts; // (upb_MiniTableExtension*) -> (upb_FieldDef*)
46 upb_ExtensionRegistry* extreg;
47 const upb_GeneratedRegistryRef* generated_extreg;
48 const google_protobuf_FeatureSetDefaults* feature_set_defaults;
49 upb_MiniTablePlatform platform;
50 void* scratch_data;
51 size_t scratch_size;
52 size_t bytes_loaded;
53 bool disable_closed_enum_checking;
54};
…lines 55–106 unchanged (52 lines)
107}
108
109bool upb_DefPool_ClosedEnumCheckingDisabled(const upb_DefPool* s) {
110 return s->disable_closed_enum_checking;
111}
112
113const google_protobuf_FeatureSetDefaults* upb_DefPool_FeatureSetDefaults(
114 const upb_DefPool* s) {
115 return s->feature_set_defaults;
116}
117
118bool upb_DefPool_SetFeatureSetDefaults(upb_DefPool* s,
119 const char* serialized_defaults,
120 size_t serialized_len,
121 upb_Status* status) {
122 const google_protobuf_FeatureSetDefaults* defaults = google_protobuf_FeatureSetDefaults_parse(
123 serialized_defaults, serialized_len, s->arena);
124 if (!defaults) {
125 upb_Status_SetErrorFormat(status, "Failed to parse defaults");
126 return false;
127 }
128 if (upb_strtable_count(&s->files) > 0) {
129 upb_Status_SetErrorFormat(status,
130 "Feature set defaults can't be changed once the "
131 "pool has started building");
132 return false;
133 }
134 int min_edition = google_protobuf_FeatureSetDefaults_minimum_edition(defaults);
135 int max_edition = google_protobuf_FeatureSetDefaults_maximum_edition(defaults);
136 if (min_edition > max_edition) {
137 upb_Status_SetErrorFormat(status, "Invalid edition range %s to %s",
138 upb_FileDef_EditionName(min_edition),
139 upb_FileDef_EditionName(max_edition));
140 return false;
141 }
142 size_t size;
143 const google_protobuf_FeatureSetDefaults_FeatureSetEditionDefault* const*
144 default_list = google_protobuf_FeatureSetDefaults_defaults(defaults, &size);
145 int prev_edition = google_protobuf_EDITION_UNKNOWN;
146 for (size_t i = 0; i < size; ++i) {
147 int edition = google_protobuf_FeatureSetDefaults_FeatureSetEditionDefault_edition(
148 default_list[i]);
149 if (edition == google_protobuf_EDITION_UNKNOWN) {
150 upb_Status_SetErrorFormat(status, "Invalid edition UNKNOWN specified");
151 return false;
152 }
153 if (edition <= prev_edition) {
154 upb_Status_SetErrorFormat(status,
155 "Feature set defaults are not strictly "
156 "increasing, %s is greater than or equal to %s",
157 upb_FileDef_EditionName(prev_edition),
158 upb_FileDef_EditionName(edition));
…lines 159–373 unchanged (215 lines)
374 if (f == file) upb_strtable_removeiter(&s->syms, &iter);
375 }
376}
377
378static const upb_FileDef* upb_DefBuilder_AddFileToPool(
379 upb_DefBuilder* const builder, upb_DefPool* const s,
380 const google_protobuf_FileDescriptorProto* const file_proto,
381 const upb_StringView name, upb_Status* const status) {
382 if (UPB_SETJMP(builder->err) != 0) {
383 UPB_ASSERT(!upb_Status_IsOk(status));
384 if (builder->file) {
385 remove_filedef(s, builder->file);
386 builder->file = NULL;
387 }
388 } else if (!builder->arena || !builder->tmp_arena ||
389 !upb_strtable_init(&builder->feature_cache, 16,
390 builder->tmp_arena) ||
391 !(builder->legacy_features =
392 google_protobuf_FeatureSet_new(builder->tmp_arena))) {
393 _upb_DefBuilder_OomErr(builder);
394 } else {
395 _upb_FileDef_Create(builder, file_proto);
396 upb_strtable_insert(&s->files, name.data, name.size,
397 upb_value_constptr(builder->file), builder->arena);
398 UPB_ASSERT(upb_Status_IsOk(status));
399 upb_Arena_Fuse(s->arena, builder->arena);
400 }
401
402 if (builder->arena) upb_Arena_Free(builder->arena);
403 if (builder->tmp_arena) upb_Arena_Free(builder->tmp_arena);
404 return builder->file;
405}
406
407static const upb_FileDef* _upb_DefPool_AddFile(
408 upb_DefPool* s, const google_protobuf_FileDescriptorProto* file_proto,
409 const upb_MiniTableFile* layout, upb_Status* status) {
410 const upb_StringView name = google_protobuf_FileDescriptorProto_name(file_proto);
411
412 // Determine whether we already know about this file.
413 {
414 upb_value v;
415 if (upb_strtable_lookup2(&s->files, name.data, name.size, &v)) {
416 upb_Status_SetErrorFormat(status,
…lines 417–435 unchanged (19 lines)
436 };
437
438 return upb_DefBuilder_AddFileToPool(&ctx, s, file_proto, name, status);
439}
440
441const upb_FileDef* upb_DefPool_AddFile(
442 upb_DefPool* s, const google_protobuf_FileDescriptorProto* file_proto,
443 upb_Status* status) {
444 return _upb_DefPool_AddFile(s, file_proto, NULL, status);
445}
446
447bool _upb_DefPool_LoadDefInitEx(upb_DefPool* s, const _upb_DefPool_Init* init,
448 bool rebuild_minitable) {
449 /* Since this function should never fail (it would indicate a bug in upb) we
450 * print errors to stderr instead of returning error status to the user. */
451 _upb_DefPool_Init** deps = init->deps;
452 google_protobuf_FileDescriptorProto* file;
453 upb_Arena* arena;
454 upb_Status status;
455
456 upb_Status_Clear(&status);
457
458 if (upb_DefPool_FindFileByName(s, init->filename)) {
459 return true;
460 }
461
462 arena = upb_Arena_New();
463
464 for (; *deps; deps++) {
465 if (!_upb_DefPool_LoadDefInitEx(s, *deps, rebuild_minitable)) goto err;
466 }
467
468 file = google_protobuf_FileDescriptorProto_parse_ex(
469 init->descriptor.data, init->descriptor.size, NULL,
470 kUpb_DecodeOption_AliasString, arena);
471 s->bytes_loaded += init->descriptor.size;
472
473 if (!file) {
474 upb_Status_SetErrorFormat(
475 &status,
476 "Failed to parse compiled-in descriptor for file '%s'. This should "
…lines 477–560 unchanged (84 lines)

Before

translation_unit
comment "// Protocol Buffers - Google's data interchange format"
comment "// Copyright 2023 Google LLC. All rights reserved."
comment "//"
comment "// Use of this source code is governed by a BSD-style"
comment "// license that can be found in the LICENSE file or at"
comment "// https://developers.google.com/open-source/licenses/bsd"
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/reflection/internal/def_pool.h"
" "\""
preproc_include
#include "#include"
system_lib_string "<assert.h>"
preproc_include
#include "#include"
system_lib_string "<stddef.h>"
preproc_include
#include "#include"
system_lib_string "<stdint.h>"
preproc_include
#include "#include"
system_lib_string "<stdio.h>"
preproc_include
#include "#include"
system_lib_string "<string.h>"
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/base/status.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/base/string_view.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/hash/common.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/hash/int_table.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/hash/str_table.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/mem/alloc.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/mem/arena.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/mini_descriptor/decode.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/mini_table/extension.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/mini_table/extension_registry.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/mini_table/file.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/mini_table/generated_registry.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/mini_table/message.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/reflection/def.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/reflection/def_type.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/reflection/file_def.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/reflection/internal/def_builder.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/reflection/internal/file_def.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/reflection/internal/message_def.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/reflection/internal/upb_edition_defaults.h"
" "\""
comment "// Must be last."
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/port/def.inc"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/wire/decode.h"
" "\""
struct_specifier
struct "struct"
type_identifier "upb_DefPool"
field_declaration_list
{ "{"
field_declaration
type_identifier "upb_Arena"
pointer_declarator
* "*"
field_identifier "arena"
; ";"
field_declaration
type_identifier "upb_strtable"
field_identifier "syms"
; ";"
comment "// full_name -> packed def ptr"
field_declaration
type_identifier "upb_strtable"
field_identifier "files"
; ";"
comment "// file_name -> (upb_FileDef*)"
field_declaration
type_identifier "upb_inttable"
field_identifier "exts"
; ";"
comment "// (upb_MiniTableExtension*) -> (upb_FieldDef*)"
field_declaration
type_identifier "upb_ExtensionRegistry"
pointer_declarator
* "*"
field_identifier "extreg"
; ";"
field_declaration
type_qualifier
const "const"
type_identifier "upb_GeneratedRegistryRef"
pointer_declarator
* "*"
field_identifier "generated_extreg"
; ";"
field_declaration
type_qualifier
const "const"
macro_type_specifier
identifier "UPB_DESC"
( "("
type_descriptor
type_identifier "FeatureSetDefaults"
) ")"
pointer_declarator
* "*"
field_identifier "feature_set_defaults"
; ";"
field_declaration
type_identifier "upb_MiniTablePlatform"
field_identifier "platform"
; ";"
field_declaration
primitive_type "void"
pointer_declarator
* "*"
field_identifier "scratch_data"
; ";"
field_declaration
primitive_type "size_t"
field_identifier "scratch_size"
; ";"
field_declaration
primitive_type "size_t"
field_identifier "bytes_loaded"
; ";"
field_declaration
primitive_type "bool"
field_identifier "disable_closed_enum_checking"
; ";"
} "}"
; ";"
function_definition (+56 nodes collapsed)
declaration
storage_class_specifier
static "static"
type_qualifier
const "const"
primitive_type "char"
init_declarator
array_declarator
identifier "serialized_defaults"
[ "["
] "]"
= "="
identifier "UPB_INTERNAL_UPB_EDITION_DEFAULTS"
; ";"
function_definition (+349 nodes collapsed)
function_definition (+45 nodes collapsed)
function_definition (+24 nodes collapsed)
function_definition
type_qualifier
const "const"
macro_type_specifier
identifier "UPB_DESC"
( "("
type_descriptor
type_identifier "FeatureSetDefaults"
) ")"
pointer_declarator
* "*"
function_declarator
identifier "upb_DefPool_FeatureSetDefaults"
parameter_list
( "("
parameter_declaration
type_qualifier
const "const"
type_identifier "upb_DefPool"
pointer_declarator
* "*"
identifier "s"
) ")"
compound_statement
{ "{"
return_statement
return "return"
field_expression
identifier "s"
-> "->"
field_identifier "feature_set_defaults"
; ";"
} "}"
function_definition
primitive_type "bool"
function_declarator (+28 nodes collapsed)
compound_statement
{ "{"
declaration
type_qualifier
const "const"
macro_type_specifier
identifier "UPB_DESC"
( "("
type_descriptor
type_identifier "FeatureSetDefaults"
) ")"
init_declarator
pointer_declarator
* "*"
identifier "defaults"
= "="
call_expression
call_expression
identifier "UPB_DESC"
argument_list
( "("
identifier "FeatureSetDefaults_parse"
) ")"
argument_list
( "("
identifier "serialized_defaults"
, ","
identifier "serialized_len"
, ","
field_expression
identifier "s"
-> "->"
field_identifier "arena"
) ")"
; ";"
if_statement (+28 nodes collapsed)
if_statement (+44 nodes collapsed)
declaration
primitive_type "int"
init_declarator
identifier "min_edition"
= "="
call_expression any 2:1
identifier "UPB_DESC"
argument_list
( "("
call_expression any 2:1
identifier "FeatureSetDefaults_minimum_edition"
argument_list
( "("
identifier "defaults"
) ")"
) ")"
; ";"
declaration
primitive_type "int"
init_declarator
identifier "max_edition"
= "="
call_expression any 2:1
identifier "UPB_DESC"
argument_list
( "("
call_expression any 2:1
identifier "FeatureSetDefaults_maximum_edition"
argument_list
( "("
identifier "defaults"
) ")"
) ")"
; ";"
if_statement (+43 nodes collapsed)
declaration
primitive_type "size_t"
identifier "size"
; ";"
declaration
type_qualifier
const "const"
macro_type_specifier
identifier "UPB_DESC"
( "("
type_descriptor
type_identifier "FeatureSetDefaults_FeatureSetEditionDefault"
) ")"
init_declarator
pointer_declarator
* "*"
type_qualifier
const "const"
pointer_declarator
* "*"
identifier "default_list"
= "="
call_expression any 2:1
identifier "UPB_DESC"
argument_list
( "("
call_expression any 2:1
identifier "FeatureSetDefaults_defaults"
argument_list
( "("
identifier "defaults"
, ","
pointer_expression
& "&"
identifier "size"
) ")"
) ")"
; ";"
declaration
primitive_type "int"
init_declarator
identifier "prev_edition"
= "="
call_expression
identifier "UPB_DESC"
argument_list
( "("
identifier "EDITION_UNKNOWN"
) ")"
; ";"
for_statement
for "for"
( "("
declaration
primitive_type "size_t"
init_declarator
identifier "i"
= "="
number_literal "0"
; ";"
binary_expression
identifier "i"
< "<"
identifier "size"
; ";"
update_expression
++ "++"
identifier "i"
) ")"
compound_statement
{ "{"
declaration
primitive_type "int"
init_declarator
identifier "edition"
= "="
call_expression any 2:1
identifier "UPB_DESC"
argument_list
( "("
call_expression any 2:1
identifier "FeatureSetDefaults_FeatureSetEditionDefault_edition"
argument_list
( "("
subscript_expression
identifier "default_list"
[ "["
identifier "i"
] "]"
) ")"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "edition"
== "=="
call_expression
identifier "UPB_DESC"
argument_list
( "("
identifier "EDITION_UNKNOWN"
) ")"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "upb_Status_SetErrorFormat"
argument_list
( "("
identifier "status"
, ","
string_literal
" "\""
string_content "Invalid edition UNKNOWN specified"
" "\""
) ")"
; ";"
return_statement
return "return"
false "false"
; ";"
} "}"
if_statement (+48 nodes collapsed)
expression_statement
assignment_expression
identifier "prev_edition"
= "="
identifier "edition"
; ";"
} "}"
comment "// Copy the defaults into the pool."
expression_statement
assignment_expression
field_expression
identifier "s"
-> "->"
field_identifier "feature_set_defaults"
= "="
identifier "defaults"
; ";"
return_statement
return "return"
true "true"
; ";"
} "}"
function_definition (+64 nodes collapsed)
function_definition (+144 nodes collapsed)
function_definition (+78 nodes collapsed)
function_definition (+55 nodes collapsed)
function_definition (+26 nodes collapsed)
function_definition (+39 nodes collapsed)
function_definition (+35 nodes collapsed)
function_definition (+49 nodes collapsed)
function_definition (+49 nodes collapsed)
function_definition (+48 nodes collapsed)
function_definition (+49 nodes collapsed)
function_definition (+49 nodes collapsed)
function_definition (+64 nodes collapsed)
function_definition (+70 nodes collapsed)
function_definition (+218 nodes collapsed)
function_definition (+47 nodes collapsed)
function_definition (+49 nodes collapsed)
function_definition (+48 nodes collapsed)
function_definition (+377 nodes collapsed)
function_definition (+257 nodes collapsed)
function_definition
storage_class_specifier
static "static"
type_qualifier
const "const"
type_identifier "upb_FileDef"
pointer_declarator
* "*"
function_declarator
identifier "upb_DefBuilder_AddFileToPool"
parameter_list
( "("
parameter_declaration
type_identifier "upb_DefBuilder"
pointer_declarator
* "*"
type_qualifier
const "const"
identifier "builder"
, ","
parameter_declaration
type_identifier "upb_DefPool"
pointer_declarator
* "*"
type_qualifier
const "const"
identifier "s"
, ","
parameter_declaration
type_qualifier
const "const"
macro_type_specifier
identifier "UPB_DESC"
( "("
type_descriptor
type_identifier "FileDescriptorProto"
) ")"
pointer_declarator
* "*"
type_qualifier
const "const"
identifier "file_proto"
, ","
parameter_declaration
type_qualifier
const "const"
type_identifier "upb_StringView"
identifier "name"
, ","
parameter_declaration
type_identifier "upb_Status"
pointer_declarator
* "*"
type_qualifier
const "const"
identifier "status"
) ")"
compound_statement
{ "{"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
call_expression
identifier "UPB_SETJMP"
argument_list
( "("
field_expression
identifier "builder"
-> "->"
field_identifier "err"
) ")"
!= "!="
number_literal "0"
) ")"
compound_statement (+53 nodes collapsed)
else_clause
else "else"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
binary_expression (+36 nodes collapsed)
|| "||"
unary_expression
! "!"
parenthesized_expression
( "("
assignment_expression
field_expression
identifier "builder"
-> "->"
field_identifier "legacy_features"
= "="
call_expression any 2:1
call_expression any 2:1
identifier "UPB_DESC"
argument_list
( "("
identifier "FeatureSet_new"
) ")"
argument_list
( "("
field_expression
identifier "builder"
-> "->"
field_identifier "tmp_arena"
) ")"
) ")"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "_upb_DefBuilder_OomErr"
argument_list
( "("
identifier "builder"
) ")"
; ";"
} "}"
else_clause (+82 nodes collapsed)
if_statement
if "if"
parenthesized_expression
( "("
field_expression
identifier "builder"
-> "->"
field_identifier "arena"
) ")"
expression_statement
call_expression
identifier "upb_Arena_Free"
argument_list
( "("
field_expression
identifier "builder"
-> "->"
field_identifier "arena"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
field_expression
identifier "builder"
-> "->"
field_identifier "tmp_arena"
) ")"
expression_statement
call_expression
identifier "upb_Arena_Free"
argument_list
( "("
field_expression
identifier "builder"
-> "->"
field_identifier "tmp_arena"
) ")"
; ";"
return_statement
return "return"
field_expression
identifier "builder"
-> "->"
field_identifier "file"
; ";"
} "}"
function_definition
storage_class_specifier
static "static"
type_qualifier
const "const"
type_identifier "upb_FileDef"
pointer_declarator
* "*"
function_declarator
identifier "_upb_DefPool_AddFile"
parameter_list
( "("
parameter_declaration
type_identifier "upb_DefPool"
pointer_declarator
* "*"
identifier "s"
, ","
parameter_declaration
type_qualifier
const "const"
macro_type_specifier
identifier "UPB_DESC"
( "("
type_descriptor
type_identifier "FileDescriptorProto"
) ")"
pointer_declarator
* "*"
identifier "file_proto"
, ","
parameter_declaration
type_qualifier
const "const"
type_identifier "upb_MiniTableFile"
pointer_declarator
* "*"
identifier "layout"
, ","
parameter_declaration
type_identifier "upb_Status"
pointer_declarator
* "*"
identifier "status"
) ")"
compound_statement
{ "{"
declaration
type_qualifier
const "const"
type_identifier "upb_StringView"
init_declarator
identifier "name"
= "="
call_expression
call_expression
identifier "UPB_DESC"
argument_list
( "("
identifier "FileDescriptorProto_name"
) ")"
argument_list
( "("
identifier "file_proto"
) ")"
; ";"
comment "// Determine whether we already know about this file."
compound_statement (+67 nodes collapsed)
declaration (+106 nodes collapsed)
return_statement
return "return"
call_expression
identifier "upb_DefBuilder_AddFileToPool"
argument_list
( "("
pointer_expression
& "&"
identifier "ctx"
, ","
identifier "s"
, ","
identifier "file_proto"
, ","
identifier "name"
, ","
identifier "status"
) ")"
; ";"
} "}"
function_definition
type_qualifier
const "const"
type_identifier "upb_FileDef"
pointer_declarator
* "*"
function_declarator
identifier "upb_DefPool_AddFile"
parameter_list
( "("
parameter_declaration
type_identifier "upb_DefPool"
pointer_declarator
* "*"
identifier "s"
, ","
parameter_declaration
type_qualifier
const "const"
macro_type_specifier
identifier "UPB_DESC"
( "("
type_descriptor
type_identifier "FileDescriptorProto"
) ")"
pointer_declarator
* "*"
identifier "file_proto"
, ","
parameter_declaration
type_identifier "upb_Status"
pointer_declarator
* "*"
identifier "status"
) ")"
compound_statement
{ "{"
return_statement
return "return"
call_expression
identifier "_upb_DefPool_AddFile"
argument_list
( "("
identifier "s"
, ","
identifier "file_proto"
, ","
null
NULL "NULL"
, ","
identifier "status"
) ")"
; ";"
} "}"
function_definition
primitive_type "bool"
function_declarator (+22 nodes collapsed)
compound_statement
{ "{"
comment "/* Since this function should never fail (it would indicate "...
declaration
type_identifier "_upb_DefPool_Init"
init_declarator
pointer_declarator
* "*"
pointer_declarator
* "*"
identifier "deps"
= "="
field_expression
identifier "init"
-> "->"
field_identifier "deps"
; ";"
expression_statement
binary_expression
call_expression
identifier "UPB_DESC"
argument_list
( "("
identifier "FileDescriptorProto"
) ")"
* "*"
identifier "file"
; ";"
declaration
type_identifier "upb_Arena"
pointer_declarator
* "*"
identifier "arena"
; ";"
declaration
type_identifier "upb_Status"
identifier "status"
; ";"
expression_statement
call_expression
identifier "upb_Status_Clear"
argument_list
( "("
pointer_expression
& "&"
identifier "status"
) ")"
; ";"
if_statement (+23 nodes collapsed)
expression_statement
assignment_expression
identifier "arena"
= "="
call_expression
identifier "upb_Arena_New"
argument_list
( "("
) ")"
; ";"
for_statement (+38 nodes collapsed)
expression_statement
assignment_expression
identifier "file"
= "="
call_expression any 2:1
call_expression any 2:1
identifier "UPB_DESC"
argument_list
( "("
identifier "FileDescriptorProto_parse_ex"
) ")"
argument_list (+25 nodes collapsed)
; ";"
expression_statement
assignment_expression
field_expression
identifier "s"
-> "->"
field_identifier "bytes_loaded"
+= "+="
field_expression
field_expression
identifier "init"
-> "->"
field_identifier "descriptor"
. "."
field_identifier "size"
; ";"
if_statement (+40 nodes collapsed)
declaration
type_qualifier
const "const"
type_identifier "upb_MiniTableFile"
init_declarator
pointer_declarator
* "*"
identifier "mt"
= "="
conditional_expression
identifier "rebuild_minitable"
? "?"
null
NULL "NULL"
: ":"
field_expression
identifier "init"
-> "->"
field_identifier "layout"
; ";"
if_statement (+28 nodes collapsed)
expression_statement
call_expression
identifier "upb_Arena_Free"
argument_list
( "("
identifier "arena"
) ")"
; ";"
return_statement
return "return"
true "true"
; ";"
labeled_statement (+36 nodes collapsed)
expression_statement
call_expression
identifier "upb_Arena_Free"
argument_list
( "("
identifier "arena"
) ")"
; ";"
return_statement
return "return"
false "false"
; ";"
} "}"
function_definition (+24 nodes collapsed)
function_definition (+26 nodes collapsed)
function_definition (+78 nodes collapsed)
function_definition (+89 nodes collapsed)
function_definition (+28 nodes collapsed)
function_definition (+254 nodes collapsed)
function_definition (+36 nodes collapsed)
function_definition (+33 nodes collapsed)

After

translation_unit
comment "// Protocol Buffers - Google's data interchange format"
comment "// Copyright 2023 Google LLC. All rights reserved."
comment "//"
comment "// Use of this source code is governed by a BSD-style"
comment "// license that can be found in the LICENSE file or at"
comment "// https://developers.google.com/open-source/licenses/bsd"
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/reflection/internal/def_pool.h"
" "\""
preproc_include
#include "#include"
system_lib_string "<assert.h>"
preproc_include
#include "#include"
system_lib_string "<stddef.h>"
preproc_include
#include "#include"
system_lib_string "<stdint.h>"
preproc_include
#include "#include"
system_lib_string "<stdio.h>"
preproc_include
#include "#include"
system_lib_string "<string.h>"
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/base/status.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/base/string_view.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/hash/common.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/hash/int_table.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/hash/str_table.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/mem/alloc.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/mem/arena.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/mini_descriptor/decode.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/mini_table/extension.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/mini_table/extension_registry.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/mini_table/file.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/mini_table/generated_registry.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/mini_table/message.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/reflection/def.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/reflection/def_type.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/reflection/file_def.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/reflection/internal/def_builder.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/reflection/internal/file_def.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/reflection/internal/message_def.h"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/reflection/internal/upb_edition_defaults.h"
" "\""
comment "// Must be last."
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/port/def.inc"
" "\""
preproc_include
#include "#include"
string_literal
" "\""
string_content "upb/wire/decode.h"
" "\""
struct_specifier
struct "struct"
type_identifier "upb_DefPool"
field_declaration_list
{ "{"
field_declaration
type_identifier "upb_Arena"
pointer_declarator
* "*"
field_identifier "arena"
; ";"
field_declaration
type_identifier "upb_strtable"
field_identifier "syms"
; ";"
comment "// full_name -> packed def ptr"
field_declaration
type_identifier "upb_strtable"
field_identifier "files"
; ";"
comment "// file_name -> (upb_FileDef*)"
field_declaration
type_identifier "upb_inttable"
field_identifier "exts"
; ";"
comment "// (upb_MiniTableExtension*) -> (upb_FieldDef*)"
field_declaration
type_identifier "upb_ExtensionRegistry"
pointer_declarator
* "*"
field_identifier "extreg"
; ";"
field_declaration
type_qualifier
const "const"
type_identifier "upb_GeneratedRegistryRef"
pointer_declarator
* "*"
field_identifier "generated_extreg"
; ";"
field_declaration
type_qualifier
const "const"
type_identifier "google_protobuf_FeatureSetDefaults"
pointer_declarator
* "*"
field_identifier "feature_set_defaults"
; ";"
field_declaration
type_identifier "upb_MiniTablePlatform"
field_identifier "platform"
; ";"
field_declaration
primitive_type "void"
pointer_declarator
* "*"
field_identifier "scratch_data"
; ";"
field_declaration
primitive_type "size_t"
field_identifier "scratch_size"
; ";"
field_declaration
primitive_type "size_t"
field_identifier "bytes_loaded"
; ";"
field_declaration
primitive_type "bool"
field_identifier "disable_closed_enum_checking"
; ";"
} "}"
; ";"
function_definition (+56 nodes collapsed)
declaration
storage_class_specifier
static "static"
type_qualifier
const "const"
primitive_type "char"
init_declarator
array_declarator
identifier "serialized_defaults"
[ "["
] "]"
= "="
identifier "UPB_INTERNAL_UPB_EDITION_DEFAULTS"
; ";"
function_definition (+349 nodes collapsed)
function_definition (+45 nodes collapsed)
function_definition (+24 nodes collapsed)
function_definition
type_qualifier
const "const"
type_identifier "google_protobuf_FeatureSetDefaults"
pointer_declarator
* "*"
function_declarator
identifier "upb_DefPool_FeatureSetDefaults"
parameter_list
( "("
parameter_declaration
type_qualifier
const "const"
type_identifier "upb_DefPool"
pointer_declarator
* "*"
identifier "s"
) ")"
compound_statement
{ "{"
return_statement
return "return"
field_expression
identifier "s"
-> "->"
field_identifier "feature_set_defaults"
; ";"
} "}"
function_definition
primitive_type "bool"
function_declarator (+28 nodes collapsed)
compound_statement
{ "{"
declaration
type_qualifier
const "const"
type_identifier "google_protobuf_FeatureSetDefaults"
init_declarator
pointer_declarator
* "*"
identifier "defaults"
= "="
call_expression
identifier "google_protobuf_FeatureSetDefaults_parse"
argument_list
( "("
identifier "serialized_defaults"
, ","
identifier "serialized_len"
, ","
field_expression
identifier "s"
-> "->"
field_identifier "arena"
) ")"
; ";"
if_statement (+28 nodes collapsed)
if_statement (+44 nodes collapsed)
declaration
primitive_type "int"
init_declarator
identifier "min_edition"
= "="
call_expression any 2:1
identifier "google_protobuf_FeatureSetDefaults_minimum_edition"
argument_list
( "("
identifier "defaults"
) ")"
; ";"
declaration
primitive_type "int"
init_declarator
identifier "max_edition"
= "="
call_expression any 2:1
identifier "google_protobuf_FeatureSetDefaults_maximum_edition"
argument_list
( "("
identifier "defaults"
) ")"
; ";"
if_statement (+43 nodes collapsed)
declaration
primitive_type "size_t"
identifier "size"
; ";"
declaration
type_qualifier
const "const"
type_identifier "google_protobuf_FeatureSetDefaults_FeatureSetEditionDefault"
init_declarator
pointer_declarator
* "*"
type_qualifier
const "const"
pointer_declarator
* "*"
identifier "default_list"
= "="
call_expression any 2:1
identifier "google_protobuf_FeatureSetDefaults_defaults"
argument_list
( "("
identifier "defaults"
, ","
pointer_expression
& "&"
identifier "size"
) ")"
; ";"
declaration
primitive_type "int"
init_declarator
identifier "prev_edition"
= "="
identifier "google_protobuf_EDITION_UNKNOWN"
; ";"
for_statement
for "for"
( "("
declaration
primitive_type "size_t"
init_declarator
identifier "i"
= "="
number_literal "0"
; ";"
binary_expression
identifier "i"
< "<"
identifier "size"
; ";"
update_expression
++ "++"
identifier "i"
) ")"
compound_statement
{ "{"
declaration
primitive_type "int"
init_declarator
identifier "edition"
= "="
call_expression any 2:1
identifier "google_protobuf_FeatureSetDefaults_FeatureSetEditionDefault_"...
argument_list
( "("
subscript_expression
identifier "default_list"
[ "["
identifier "i"
] "]"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
identifier "edition"
== "=="
identifier "google_protobuf_EDITION_UNKNOWN"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "upb_Status_SetErrorFormat"
argument_list
( "("
identifier "status"
, ","
string_literal
" "\""
string_content "Invalid edition UNKNOWN specified"
" "\""
) ")"
; ";"
return_statement
return "return"
false "false"
; ";"
} "}"
if_statement (+48 nodes collapsed)
expression_statement
assignment_expression
identifier "prev_edition"
= "="
identifier "edition"
; ";"
} "}"
comment "// Copy the defaults into the pool."
expression_statement
assignment_expression
field_expression
identifier "s"
-> "->"
field_identifier "feature_set_defaults"
= "="
identifier "defaults"
; ";"
return_statement
return "return"
true "true"
; ";"
} "}"
function_definition (+64 nodes collapsed)
function_definition (+144 nodes collapsed)
function_definition (+78 nodes collapsed)
function_definition (+55 nodes collapsed)
function_definition (+26 nodes collapsed)
function_definition (+39 nodes collapsed)
function_definition (+35 nodes collapsed)
function_definition (+49 nodes collapsed)
function_definition (+49 nodes collapsed)
function_definition (+48 nodes collapsed)
function_definition (+49 nodes collapsed)
function_definition (+49 nodes collapsed)
function_definition (+64 nodes collapsed)
function_definition (+70 nodes collapsed)
function_definition (+218 nodes collapsed)
function_definition (+47 nodes collapsed)
function_definition (+49 nodes collapsed)
function_definition (+48 nodes collapsed)
function_definition (+377 nodes collapsed)
function_definition (+257 nodes collapsed)
function_definition
storage_class_specifier
static "static"
type_qualifier
const "const"
type_identifier "upb_FileDef"
pointer_declarator
* "*"
function_declarator
identifier "upb_DefBuilder_AddFileToPool"
parameter_list
( "("
parameter_declaration
type_identifier "upb_DefBuilder"
pointer_declarator
* "*"
type_qualifier
const "const"
identifier "builder"
, ","
parameter_declaration
type_identifier "upb_DefPool"
pointer_declarator
* "*"
type_qualifier
const "const"
identifier "s"
, ","
parameter_declaration
type_qualifier
const "const"
type_identifier "google_protobuf_FileDescriptorProto"
pointer_declarator
* "*"
type_qualifier
const "const"
identifier "file_proto"
, ","
parameter_declaration
type_qualifier
const "const"
type_identifier "upb_StringView"
identifier "name"
, ","
parameter_declaration
type_identifier "upb_Status"
pointer_declarator
* "*"
type_qualifier
const "const"
identifier "status"
) ")"
compound_statement
{ "{"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
call_expression
identifier "UPB_SETJMP"
argument_list
( "("
field_expression
identifier "builder"
-> "->"
field_identifier "err"
) ")"
!= "!="
number_literal "0"
) ")"
compound_statement (+53 nodes collapsed)
else_clause
else "else"
if_statement
if "if"
parenthesized_expression
( "("
binary_expression
binary_expression (+36 nodes collapsed)
|| "||"
unary_expression
! "!"
parenthesized_expression
( "("
assignment_expression
field_expression
identifier "builder"
-> "->"
field_identifier "legacy_features"
= "="
call_expression any 2:1
identifier "google_protobuf_FeatureSet_new"
argument_list
( "("
field_expression
identifier "builder"
-> "->"
field_identifier "tmp_arena"
) ")"
) ")"
) ")"
compound_statement
{ "{"
expression_statement
call_expression
identifier "_upb_DefBuilder_OomErr"
argument_list
( "("
identifier "builder"
) ")"
; ";"
} "}"
else_clause (+82 nodes collapsed)
if_statement
if "if"
parenthesized_expression
( "("
field_expression
identifier "builder"
-> "->"
field_identifier "arena"
) ")"
expression_statement
call_expression
identifier "upb_Arena_Free"
argument_list
( "("
field_expression
identifier "builder"
-> "->"
field_identifier "arena"
) ")"
; ";"
if_statement
if "if"
parenthesized_expression
( "("
field_expression
identifier "builder"
-> "->"
field_identifier "tmp_arena"
) ")"
expression_statement
call_expression
identifier "upb_Arena_Free"
argument_list
( "("
field_expression
identifier "builder"
-> "->"
field_identifier "tmp_arena"
) ")"
; ";"
return_statement
return "return"
field_expression
identifier "builder"
-> "->"
field_identifier "file"
; ";"
} "}"
function_definition
storage_class_specifier
static "static"
type_qualifier
const "const"
type_identifier "upb_FileDef"
pointer_declarator
* "*"
function_declarator
identifier "_upb_DefPool_AddFile"
parameter_list
( "("
parameter_declaration
type_identifier "upb_DefPool"
pointer_declarator
* "*"
identifier "s"
, ","
parameter_declaration
type_qualifier
const "const"
type_identifier "google_protobuf_FileDescriptorProto"
pointer_declarator
* "*"
identifier "file_proto"
, ","
parameter_declaration
type_qualifier
const "const"
type_identifier "upb_MiniTableFile"
pointer_declarator
* "*"
identifier "layout"
, ","
parameter_declaration
type_identifier "upb_Status"
pointer_declarator
* "*"
identifier "status"
) ")"
compound_statement
{ "{"
declaration
type_qualifier
const "const"
type_identifier "upb_StringView"
init_declarator
identifier "name"
= "="
call_expression
identifier "google_protobuf_FileDescriptorProto_name"
argument_list
( "("
identifier "file_proto"
) ")"
; ";"
comment "// Determine whether we already know about this file."
compound_statement (+67 nodes collapsed)
declaration (+106 nodes collapsed)
return_statement
return "return"
call_expression
identifier "upb_DefBuilder_AddFileToPool"
argument_list
( "("
pointer_expression
& "&"
identifier "ctx"
, ","
identifier "s"
, ","
identifier "file_proto"
, ","
identifier "name"
, ","
identifier "status"
) ")"
; ";"
} "}"
function_definition
type_qualifier
const "const"
type_identifier "upb_FileDef"
pointer_declarator
* "*"
function_declarator
identifier "upb_DefPool_AddFile"
parameter_list
( "("
parameter_declaration
type_identifier "upb_DefPool"
pointer_declarator
* "*"
identifier "s"
, ","
parameter_declaration
type_qualifier
const "const"
type_identifier "google_protobuf_FileDescriptorProto"
pointer_declarator
* "*"
identifier "file_proto"
, ","
parameter_declaration
type_identifier "upb_Status"
pointer_declarator
* "*"
identifier "status"
) ")"
compound_statement
{ "{"
return_statement
return "return"
call_expression
identifier "_upb_DefPool_AddFile"
argument_list
( "("
identifier "s"
, ","
identifier "file_proto"
, ","
null
NULL "NULL"
, ","
identifier "status"
) ")"
; ";"
} "}"
function_definition
primitive_type "bool"
function_declarator (+22 nodes collapsed)
compound_statement
{ "{"
comment "/* Since this function should never fail (it would indicate "...
declaration
type_identifier "_upb_DefPool_Init"
init_declarator
pointer_declarator
* "*"
pointer_declarator
* "*"
identifier "deps"
= "="
field_expression
identifier "init"
-> "->"
field_identifier "deps"
; ";"
declaration
type_identifier "google_protobuf_FileDescriptorProto"
pointer_declarator
* "*"
identifier "file"
; ";"
declaration
type_identifier "upb_Arena"
pointer_declarator
* "*"
identifier "arena"
; ";"
declaration
type_identifier "upb_Status"
identifier "status"
; ";"
expression_statement
call_expression
identifier "upb_Status_Clear"
argument_list
( "("
pointer_expression
& "&"
identifier "status"
) ")"
; ";"
if_statement (+23 nodes collapsed)
expression_statement
assignment_expression
identifier "arena"
= "="
call_expression
identifier "upb_Arena_New"
argument_list
( "("
) ")"
; ";"
for_statement (+38 nodes collapsed)
expression_statement
assignment_expression
identifier "file"
= "="
call_expression any 2:1
identifier "google_protobuf_FileDescriptorProto_parse_ex"
argument_list (+25 nodes collapsed)
; ";"
expression_statement
assignment_expression
field_expression
identifier "s"
-> "->"
field_identifier "bytes_loaded"
+= "+="
field_expression
field_expression
identifier "init"
-> "->"
field_identifier "descriptor"
. "."
field_identifier "size"
; ";"
if_statement (+40 nodes collapsed)
declaration
type_qualifier
const "const"
type_identifier "upb_MiniTableFile"
init_declarator
pointer_declarator
* "*"
identifier "mt"
= "="
conditional_expression
identifier "rebuild_minitable"
? "?"
null
NULL "NULL"
: ":"
field_expression
identifier "init"
-> "->"
field_identifier "layout"
; ";"
if_statement (+28 nodes collapsed)
expression_statement
call_expression
identifier "upb_Arena_Free"
argument_list
( "("
identifier "arena"
) ")"
; ";"
return_statement
return "return"
true "true"
; ";"
labeled_statement (+36 nodes collapsed)
expression_statement
call_expression
identifier "upb_Arena_Free"
argument_list
( "("
identifier "arena"
) ")"
; ";"
return_statement
return "return"
false "false"
; ";"
} "}"
function_definition (+24 nodes collapsed)
function_definition (+26 nodes collapsed)
function_definition (+78 nodes collapsed)
function_definition (+89 nodes collapsed)
function_definition (+28 nodes collapsed)
function_definition (+254 nodes collapsed)
function_definition (+36 nodes collapsed)
function_definition (+33 nodes collapsed)