../src/flecs/distr/flecs.c:1452:32: error: expected unqualified-id before ‘;’ token
 1452 |         ecs_query_and_ctx_t and;
      |                                ^
../src/flecs/distr/flecs.c:1485:28: error: expected unqualified-id before ‘;’ token
 1485 |     ecs_query_and_ctx_t and;
      |                            ^
../src/flecs/distr/flecs.c:1533:28: error: expected unqualified-id before ‘;’ token
 1533 |     ecs_query_and_ctx_t and;
      |                            ^
../src/flecs/distr/flecs.c:1558:32: error: expected unqualified-id before ‘;’ token
 1558 |         ecs_query_and_ctx_t and;
      |                                ^
../src/flecs/distr/flecs.c: In function ‘void flecs_register_trait(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:3601:35: error: invalid conversion from ‘void*’ to ‘ecs_on_trait_ctx_t*’ [-fpermissive]
 3601 |     ecs_on_trait_ctx_t *ctx = it->ctx;
      |                               ~~~~^~~
      |                                   |
      |                                   void*
../src/flecs/distr/flecs.c: In function ‘void flecs_register_trait_pair(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:3608:35: error: invalid conversion from ‘void*’ to ‘ecs_on_trait_ctx_t*’ [-fpermissive]
 3608 |     ecs_on_trait_ctx_t *ctx = it->ctx;
      |                               ~~~~^~~
      |                                   |
      |                                   void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_register_symmetric(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:3665:41: error: taking address of rvalue [-fpermissive]
 3665 |             .entity = ecs_entity(world, { .parent = r }),
      |                                         ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:53: note: in definition of macro ‘ecs_observer’
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                     ^~~~~~~~~~~
../src/flecs/distr/flecs.c:3665:23: note: in expansion of macro ‘ecs_entity’
 3665 |             .entity = ecs_entity(world, { .parent = r }),
      |                       ^~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:3664:9: note: in expansion of macro ‘ecs_observer’
 3664 |         ecs_observer(world, {
      |         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_bootstrap_builtin(ecs_world_t*, ecs_table_t*, ecs_entity_t, const char*, ecs_size_t, ecs_size_t)’:
../src/flecs/distr/flecs.c:3802:42: error: invalid conversion from ‘void*’ to ‘EcsComponent*’ [-fpermissive]
 3802 |     EcsComponent *component = columns[0].data;
      |                               ~~~~~~~~~~~^~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.c:3810:42: error: invalid conversion from ‘void*’ to ‘EcsIdentifier*’ [-fpermissive]
 3810 |     EcsIdentifier *name_col = columns[1].data;
      |                               ~~~~~~~~~~~^~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.c:3820:44: error: invalid conversion from ‘void*’ to ‘EcsIdentifier*’ [-fpermissive]
 3820 |     EcsIdentifier *symbol_col = columns[2].data;
      |                                 ~~~~~~~~~~~^~~~
      |                                            |
      |                                            void*
../src/flecs/distr/flecs.c: In function ‘ecs_table_t* flecs_bootstrap_component_table(ecs_world_t*)’:
../src/flecs/distr/flecs.c:3902:40: error: invalid conversion from ‘void*’ to ‘ecs_entity_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 3902 |     result->data.entities = v_entities.array;
      |                             ~~~~~~~~~~~^~~~~
      |                                        |
      |                                        void*
../src/flecs/distr/flecs.c: In function ‘void flecs_bootstrap(ecs_world_t*)’:
../src/flecs/distr/flecs.c:3968:47: error: taking address of rvalue [-fpermissive]
 3968 |     flecs_type_info_init(world, EcsComponent, {
      |                                               ^
 3969 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~            
 3970 |         .on_set = flecs_on_component,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
 3971 |         .on_remove = flecs_on_component
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        
 3972 |     });
      |     ~                                          
../src/flecs/distr/flecs.c:2849:28: note: in definition of macro ‘flecs_type_info_init’
 2849 |         &(ecs_type_hooks_t)__VA_ARGS__)
      |                            ^~~~~~~~~~~
../src/flecs/distr/flecs.c:3974:48: error: taking address of rvalue [-fpermissive]
 3974 |     flecs_type_info_init(world, EcsIdentifier, {
      |                                                ^
 3975 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~             
 3976 |         .dtor = ecs_dtor(EcsIdentifier),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        
 3977 |         .copy = ecs_copy(EcsIdentifier),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        
 3978 |         .move = ecs_move(EcsIdentifier),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        
 3979 |         .on_set = ecs_on_set(EcsIdentifier),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 3980 |         .on_remove = ecs_on_set(EcsIdentifier)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
 3981 |     });
      |     ~                                           
../src/flecs/distr/flecs.c:2849:28: note: in definition of macro ‘flecs_type_info_init’
 2849 |         &(ecs_type_hooks_t)__VA_ARGS__)
      |                            ^~~~~~~~~~~
../src/flecs/distr/flecs.c:3988:5: error: designator order for field ‘ecs_type_hooks_t::dtor’ does not match declaration order in ‘ecs_type_hooks_t’
 3988 |     });
      |     ^
../src/flecs/distr/flecs.c:2849:28: note: in definition of macro ‘flecs_type_info_init’
 2849 |         &(ecs_type_hooks_t)__VA_ARGS__)
      |                            ^~~~~~~~~~~
../src/flecs/distr/flecs.c:3983:42: error: taking address of rvalue [-fpermissive]
 3983 |     flecs_type_info_init(world, EcsPoly, {
      |                                          ^
 3984 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~       
 3985 |         .copy = ecs_copy(EcsPoly),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~        
 3986 |         .move = ecs_move(EcsPoly),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~        
 3987 |         .dtor = ecs_dtor(EcsPoly)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~         
 3988 |     });
      |     ~                                     
../src/flecs/distr/flecs.c:2849:28: note: in definition of macro ‘flecs_type_info_init’
 2849 |         &(ecs_type_hooks_t)__VA_ARGS__)
      |                            ^~~~~~~~~~~
../src/flecs/distr/flecs.c:3990:59: error: taking address of rvalue [-fpermissive]
 3990 |     flecs_type_info_init(world, EcsDefaultChildComponent, {
      |                                                           ^
 3991 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~                        
 3992 |     });
      |     ~                                                      
../src/flecs/distr/flecs.c:2849:28: note: in definition of macro ‘flecs_type_info_init’
 2849 |         &(ecs_type_hooks_t)__VA_ARGS__)
      |                            ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:4017:37: error: taking address of rvalue [-fpermissive]
 4017 |         .entity = ecs_entity(world, { .parent = EcsFlecsInternals }),
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:53: note: in definition of macro ‘ecs_observer’
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                     ^~~~~~~~~~~
../src/flecs/distr/flecs.c:4017:19: note: in expansion of macro ‘ecs_entity’
 4017 |         .entity = ecs_entity(world, { .parent = EcsFlecsInternals }),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:4016:5: note: in expansion of macro ‘ecs_observer’
 4016 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:4171:5: note: in expansion of macro ‘ecs_observer’
 4171 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:4178:5: note: in expansion of macro ‘ecs_observer’
 4178 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:4187:5: note: in expansion of macro ‘ecs_observer’
 4187 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:4196:5: note: in expansion of macro ‘ecs_observer’
 4196 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:4205:5: note: in expansion of macro ‘ecs_observer’
 4205 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:4213:5: note: in expansion of macro ‘ecs_observer’
 4213 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:4222:5: note: in expansion of macro ‘ecs_observer’
 4222 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:4231:5: note: in expansion of macro ‘ecs_observer’
 4231 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:4240:5: note: in expansion of macro ‘ecs_observer’
 4240 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:4251:5: note: in expansion of macro ‘ecs_observer’
 4251 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:4260:5: note: in expansion of macro ‘ecs_observer’
 4260 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:4270:5: note: in expansion of macro ‘ecs_observer’
 4270 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:4281:5: note: in expansion of macro ‘ecs_observer’
 4281 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:4289:5: note: in expansion of macro ‘ecs_observer’
 4289 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:4299:5: note: in expansion of macro ‘ecs_observer’
 4299 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_iter_t ecs_each_id(const ecs_world_t*, ecs_id_t)’:
../src/flecs/distr/flecs.c:4379:5: error: designator order for field ‘ecs_iter_t::world’ does not match declaration order in ‘ecs_iter_t’
 4379 |     };
      |     ^
../src/flecs/distr/flecs.c:4398:1: error: jump to label ‘error’
 4398 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:4368:5: note: in expansion of macro ‘ecs_check’
 4368 |     ecs_check(id != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:4386:22: note:   crosses initialization of ‘ecs_each_iter_t* each_iter’
 4386 |     ecs_each_iter_t *each_iter = &it.priv_.iter.each;
      |                      ^~~~~~~~~
../src/flecs/distr/flecs.c:4381:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
 4381 |     ecs_id_record_t *idr = flecs_id_record_get(world, id);
      |                      ^~~
../src/flecs/distr/flecs.c:4374:16: note:   crosses initialization of ‘ecs_iter_t it’
 4374 |     ecs_iter_t it = {
      |                ^~
../src/flecs/distr/flecs.c:4370:24: note:   crosses initialization of ‘const ecs_world_t* world’
 4370 |     const ecs_world_t *world = ecs_get_world(stage);
      |                        ^~~~~
../src/flecs/distr/flecs.c:4398:1: error: jump to label ‘error’
 4398 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:4367:5: note: in expansion of macro ‘ecs_check’
 4367 |     ecs_check(stage != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:4386:22: note:   crosses initialization of ‘ecs_each_iter_t* each_iter’
 4386 |     ecs_each_iter_t *each_iter = &it.priv_.iter.each;
      |                      ^~~~~~~~~
../src/flecs/distr/flecs.c:4381:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
 4381 |     ecs_id_record_t *idr = flecs_id_record_get(world, id);
      |                      ^~~
../src/flecs/distr/flecs.c:4374:16: note:   crosses initialization of ‘ecs_iter_t it’
 4374 |     ecs_iter_t it = {
      |                ^~
../src/flecs/distr/flecs.c:4370:24: note:   crosses initialization of ‘const ecs_world_t* world’
 4370 |     const ecs_world_t *world = ecs_get_world(stage);
      |                        ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘bool ecs_each_next(ecs_iter_t*)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:4406:38: note: in expansion of macro ‘flecs_table_cache_next’
 4406 |     const ecs_table_record_t *next = flecs_table_cache_next(
      |                                      ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: At global scope:
../src/flecs/distr/flecs.c:4885:28: error: expected unqualified-id before ‘template’
 4885 |     ecs_script_template_t *template;
      |                            ^~~~~~~~
../src/flecs/distr/flecs.c:4889:15: error: expected unqualified-id before ‘using’
 4889 |     ecs_vec_t using;
      |               ^~~~~
../src/flecs/distr/flecs.c:4929:33: error: expected ‘,’ or ‘...’ before ‘template’
 4929 |     ecs_script_template_node_t *template);
      |                                 ^~~~~~~~
../src/flecs/distr/flecs.c:4936:28: error: expected ‘,’ or ‘...’ before ‘template’
 4936 |     ecs_script_template_t *template);
      |                            ^~~~~~~~
../src/flecs/distr/flecs.c: In function ‘flecs_component_ptr_t flecs_table_get_component(ecs_table_t*, int32_t, int32_t)’:
../src/flecs/distr/flecs.c:5038:1: error: jump to label ‘error’
 5038 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:5032:5: note: in expansion of macro ‘ecs_check’
 5032 |     ecs_check(column_index < table->column_count, ECS_NOT_A_COMPONENT, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:5033:19: note:   crosses initialization of ‘ecs_column_t* column’
 5033 |     ecs_column_t *column = &table->data.columns[column_index];
      |                   ^~~~~~
../src/flecs/distr/flecs.c: In function ‘flecs_component_ptr_t flecs_get_component_ptr(ecs_table_t*, int32_t, ecs_id_record_t*)’:
../src/flecs/distr/flecs.c:5058:46: error: invalid conversion from ‘void*’ to ‘const ecs_sparse_t*’ [-fpermissive]
 5058 |             .ptr = flecs_sparse_get_any(idr->sparse, 0, entity)
      |                                         ~~~~~^~~~~~
      |                                              |
      |                                              void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:1411:25: note:   initializing argument 1 of ‘void* flecs_sparse_get_any(const ecs_sparse_t*, ecs_size_t, uint64_t)’
 1411 |     const ecs_sparse_t *sparse,
      |     ~~~~~~~~~~~~~~~~~~~~^~~~~~
../src/flecs/distr/flecs.c: In function ‘void* flecs_get_base_component(const ecs_world_t*, ecs_table_t*, ecs_id_t, ecs_id_record_t*, int32_t)’:
../src/flecs/distr/flecs.c:5132:50: error: invalid conversion from ‘void*’ to ‘const ecs_sparse_t*’ [-fpermissive]
 5132 |                 return flecs_sparse_get_any(idr->sparse, 0, base);
      |                                             ~~~~~^~~~~~
      |                                                  |
      |                                                  void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:1411:25: note:   initializing argument 1 of ‘void* flecs_sparse_get_any(const ecs_sparse_t*, ecs_size_t, uint64_t)’
 1411 |     const ecs_sparse_t *sparse,
      |     ~~~~~~~~~~~~~~~~~~~~^~~~~~
../src/flecs/distr/flecs.c:5141:1: error: jump to label ‘error’
 5141 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:5107:5: note: in expansion of macro ‘ecs_check’
 5107 |     ecs_check(tr_isa != NULL, ECS_INTERNAL_ERROR, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:5112:11: note:   crosses initialization of ‘void* ptr’
 5112 |     void *ptr = NULL;
      |           ^~~
../src/flecs/distr/flecs.c:5111:32: note:   crosses initialization of ‘int32_t end’
 5111 |     int32_t i = tr_isa->index, end = tr_isa->count + tr_isa->index;
      |                                ^~~
../src/flecs/distr/flecs.c:5111:13: note:   crosses initialization of ‘int32_t i’
 5111 |     int32_t i = tr_isa->index, end = tr_isa->count + tr_isa->index;
      |             ^
../src/flecs/distr/flecs.c:5110:15: note:   crosses initialization of ‘ecs_id_t* ids’
 5110 |     ecs_id_t *ids = type.array;
      |               ^~~
../src/flecs/distr/flecs.c:5109:16: note:   crosses initialization of ‘ecs_type_t type’
 5109 |     ecs_type_t type = table->type;
      |                ^~~~
../src/flecs/distr/flecs.c:5141:1: error: jump to label ‘error’
 5141 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:5086:5: note: in expansion of macro ‘ecs_check’
 5086 |     ecs_check(recur_depth < ECS_MAX_RECURSION, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:5112:11: note:   crosses initialization of ‘void* ptr’
 5112 |     void *ptr = NULL;
      |           ^~~
../src/flecs/distr/flecs.c:5111:32: note:   crosses initialization of ‘int32_t end’
 5111 |     int32_t i = tr_isa->index, end = tr_isa->count + tr_isa->index;
      |                                ^~~
../src/flecs/distr/flecs.c:5111:13: note:   crosses initialization of ‘int32_t i’
 5111 |     int32_t i = tr_isa->index, end = tr_isa->count + tr_isa->index;
      |             ^
../src/flecs/distr/flecs.c:5110:15: note:   crosses initialization of ‘ecs_id_t* ids’
 5110 |     ecs_id_t *ids = type.array;
      |               ^~~
../src/flecs/distr/flecs.c:5109:16: note:   crosses initialization of ‘ecs_type_t type’
 5109 |     ecs_type_t type = table->type;
      |                ^~~~
../src/flecs/distr/flecs.c:5105:25: note:   crosses initialization of ‘ecs_table_record_t* tr_isa’
 5105 |     ecs_table_record_t *tr_isa = flecs_id_record_get_table(
      |                         ^~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_instantiate_children(ecs_world_t*, ecs_entity_t, ecs_table_t*, int32_t, int32_t, ecs_table_t*, const ecs_instantiate_ctx_t*)’:
../src/flecs/distr/flecs.h:2001:42: error: invalid conversion from ‘void*’ to ‘ecs_entity_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 2001 | #define flecs_alloc(a, size) flecs_balloc(flecs_allocator_get(a, size))
      |                              ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.h:2003:36: note: in expansion of macro ‘flecs_alloc’
 2003 | #define flecs_alloc_n(a, T, count) flecs_alloc(a, ECS_SIZEOF(T) * (count))
      |                                    ^~~~~~~~~~~
../src/flecs/distr/flecs.c:2905:5: note: in expansion of macro ‘flecs_alloc_n’
 2905 |     flecs_alloc_n(&world->allocator, T, count)
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:5396:31: note: in expansion of macro ‘flecs_walloc_n’
 5396 |     ecs_entity_t *child_ids = flecs_walloc_n(world, ecs_entity_t, child_count);
      |                               ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_instantiate(ecs_world_t*, ecs_entity_t, ecs_table_t*, int32_t, int32_t, const ecs_instantiate_ctx_t*)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:5513:22: note: in expansion of macro ‘flecs_table_cache_next’
 5513 |         while ((tr = flecs_table_cache_next(&it, ecs_table_record_t))) {
      |                      ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_sparse_on_add(ecs_world_t*, ecs_table_t*, int32_t, int32_t, const ecs_type_t*, bool)’:
../src/flecs/distr/flecs.c:5541:54: error: invalid conversion from ‘void*’ to ‘ecs_sparse_t*’ [-fpermissive]
 5541 |                 void *ptr = flecs_sparse_ensure(idr->sparse, 0, e);
      |                                                 ~~~~~^~~~~~
      |                                                      |
      |                                                      void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:1421:19: note:   initializing argument 1 of ‘void* flecs_sparse_ensure(ecs_sparse_t*, ecs_size_t, uint64_t)’
 1421 |     ecs_sparse_t *sparse,
      |     ~~~~~~~~~~~~~~^~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_sparse_on_remove(ecs_world_t*, ecs_table_t*, int32_t, int32_t, const ecs_type_t*)’:
../src/flecs/distr/flecs.c:5583:59: error: invalid conversion from ‘void*’ to ‘ecs_sparse_t*’ [-fpermissive]
 5583 |                 void *ptr = flecs_sparse_remove_fast(idr->sparse, 0, e);
      |                                                      ~~~~~^~~~~~
      |                                                           |
      |                                                           void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:1361:19: note:   initializing argument 1 of ‘void* flecs_sparse_remove_fast(ecs_sparse_t*, ecs_size_t, uint64_t)’
 1361 |     ecs_sparse_t *sparse,
      |     ~~~~~~~~~~~~~~^~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_union_on_add(ecs_world_t*, ecs_table_t*, int32_t, int32_t, const ecs_type_t*)’:
../src/flecs/distr/flecs.c:5612:30: error: invalid conversion from ‘void*’ to ‘ecs_switch_t*’ [-fpermissive]
 5612 |                         idr->sparse, (uint32_t)e, ecs_pair_second(world, id));
      |                         ~~~~~^~~~~~
      |                              |
      |                              void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:1912:19: note:   initializing argument 1 of ‘bool flecs_switch_set(ecs_switch_t*, uint32_t, uint64_t)’
 1912 |     ecs_switch_t *sw,
      |     ~~~~~~~~~~~~~~^~
../src/flecs/distr/flecs.c: In function ‘void flecs_union_on_remove(ecs_world_t*, ecs_table_t*, int32_t, int32_t, const ecs_type_t*)’:
../src/flecs/distr/flecs.c:5637:45: error: invalid conversion from ‘void*’ to ‘ecs_switch_t*’ [-fpermissive]
 5637 |                     flecs_switch_reset(idr->sparse, (uint32_t)e);
      |                                        ~~~~~^~~~~~
      |                                             |
      |                                             void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:1919:19: note:   initializing argument 1 of ‘bool flecs_switch_reset(ecs_switch_t*, uint32_t)’
 1919 |     ecs_switch_t *sw,
      |     ~~~~~~~~~~~~~~^~
../src/flecs/distr/flecs.c: In function ‘void flecs_notify_on_add(ecs_world_t*, ecs_table_t*, ecs_table_t*, int32_t, int32_t, const ecs_table_diff_t*, ecs_flags32_t, ecs_flags64_t, bool, bool)’:
../src/flecs/distr/flecs.c:5676:67: error: taking address of rvalue [-fpermissive]
 5676 |             flecs_emit(world, world, set_mask, &(ecs_event_desc_t){
      |                                                                   ^
 5677 |                 .event = EcsOnAdd,
      |                 ~~~~~~~~~~~~~~~~~~                                 
 5678 |                 .ids = added,
      |                 ~~~~~~~~~~~~~                                      
 5679 |                 .table = table,
      |                 ~~~~~~~~~~~~~~~                                    
 5680 |                 .other_table = other_table,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~                        
 5681 |                 .offset = row,
      |                 ~~~~~~~~~~~~~~                                     
 5682 |                 .count = count,
      |                 ~~~~~~~~~~~~~~~                                    
 5683 |                 .observable = world,
      |                 ~~~~~~~~~~~~~~~~~~~~                               
 5684 |                 .flags = flags
      |                 ~~~~~~~~~~~~~~                                     
 5685 |             });
      |             ~                                                      
../src/flecs/distr/flecs.c: In function ‘void flecs_notify_on_remove(ecs_world_t*, ecs_table_t*, ecs_table_t*, int32_t, int32_t, const ecs_table_diff_t*)’:
../src/flecs/distr/flecs.c:5714:61: error: taking address of rvalue [-fpermissive]
 5714 |             flecs_emit(world, world, 0, &(ecs_event_desc_t) {
      |                                                             ^
 5715 |                 .event = EcsOnRemove,
      |                 ~~~~~~~~~~~~~~~~~~~~~                        
 5716 |                 .ids = removed,
      |                 ~~~~~~~~~~~~~~~                              
 5717 |                 .table = table,
      |                 ~~~~~~~~~~~~~~~                              
 5718 |                 .other_table = other_table,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~                  
 5719 |                 .offset = row,
      |                 ~~~~~~~~~~~~~~                               
 5720 |                 .count = count,
      |                 ~~~~~~~~~~~~~~~                              
 5721 |                 .observable = world
      |                 ~~~~~~~~~~~~~~~~~~~                          
 5722 |             });
      |             ~                                                
../src/flecs/distr/flecs.c: In function ‘void flecs_move_entity(ecs_world_t*, ecs_entity_t, ecs_record_t*, ecs_table_t*, ecs_table_diff_t*, bool, ecs_flags32_t)’:
../src/flecs/distr/flecs.c:5851:1: error: jump to label ‘error’
 5851 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:5822:5: note: in expansion of macro ‘ecs_check’
 5822 |     ecs_check(ecs_is_alive(world, entity), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:5829:13: note:   crosses initialization of ‘int32_t dst_row’
 5829 |     int32_t dst_row = flecs_table_append(world, dst_table, entity,
      |             ^~~~~~~
../src/flecs/distr/flecs.c: In function ‘flecs_component_ptr_t flecs_ensure(ecs_world_t*, ecs_entity_t, ecs_entity_t, ecs_record_t*)’:
../src/flecs/distr/flecs.c:6197:57: error: invalid conversion from ‘void*’ to ‘const ecs_sparse_t*’ [-fpermissive]
 6197 |                     dst.ptr = flecs_sparse_get_any(idr->sparse, 0, entity);
      |                                                    ~~~~~^~~~~~
      |                                                         |
      |                                                         void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:1411:25: note:   initializing argument 1 of ‘void* flecs_sparse_get_any(const ecs_sparse_t*, ecs_size_t, uint64_t)’
 1411 |     const ecs_sparse_t *sparse,
      |     ~~~~~~~~~~~~~~~~~~~~^~~~~~
../src/flecs/distr/flecs.c:6225:1: error: jump to label ‘error’
 6225 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6176:5: note: in expansion of macro ‘ecs_check’
 6176 |     ecs_check((id & ECS_COMPONENT_MASK) == id ||
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:6180:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
 6180 |     ecs_id_record_t *idr = NULL;
      |                      ^~~
../src/flecs/distr/flecs.c:6225:1: error: jump to label ‘error’
 6225 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6175:5: note: in expansion of macro ‘ecs_check’
 6175 |     ecs_check(r != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:6180:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
 6180 |     ecs_id_record_t *idr = NULL;
      |                      ^~~
../src/flecs/distr/flecs.c:6225:1: error: jump to label ‘error’
 6225 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6174:5: note: in expansion of macro ‘ecs_check’
 6174 |     ecs_check(id != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:6180:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
 6180 |     ecs_id_record_t *idr = NULL;
      |                      ^~~
../src/flecs/distr/flecs.c: In function ‘void flecs_notify_on_set(ecs_world_t*, ecs_table_t*, int32_t, int32_t, ecs_type_t*, bool)’:
../src/flecs/distr/flecs.c:6321:57: error: taking address of rvalue [-fpermissive]
 6321 |         flecs_emit(world, world, 0, &(ecs_event_desc_t) {
      |                                                         ^
 6322 |             .event = EcsOnSet,
      |             ~~~~~~~~~~~~~~~~~~                           
 6323 |             .ids = ids,
      |             ~~~~~~~~~~~                                  
 6324 |             .table = table,
      |             ~~~~~~~~~~~~~~~                              
 6325 |             .offset = row,
      |             ~~~~~~~~~~~~~~                               
 6326 |             .count = count,
      |             ~~~~~~~~~~~~~~~                              
 6327 |             .observable = world
      |             ~~~~~~~~~~~~~~~~~~~                          
 6328 |         });
      |         ~                                                
../src/flecs/distr/flecs.c: In function ‘bool ecs_commit(ecs_world_t*, ecs_entity_t, ecs_record_t*, ecs_table_t*, const ecs_type_t*, const ecs_type_t*)’:
../src/flecs/distr/flecs.c:6395:1: error: jump to label ‘error’
 6395 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6368:5: note: in expansion of macro ‘ecs_check’
 6368 |     ecs_check(!ecs_is_deferred(world), ECS_INVALID_OPERATION,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:6377:22: note:   crosses initialization of ‘ecs_table_diff_t diff’
 6377 |     ecs_table_diff_t diff = ECS_TABLE_DIFF_INIT;
      |                      ^~~~
../src/flecs/distr/flecs.c:6371:18: note:   crosses initialization of ‘ecs_table_t* src_table’
 6371 |     ecs_table_t *src_table = NULL;
      |                  ^~~~~~~~~
../src/flecs/distr/flecs.c:6395:1: error: jump to label ‘error’
 6395 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6367:5: note: in expansion of macro ‘ecs_check’
 6367 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:6377:22: note:   crosses initialization of ‘ecs_table_diff_t diff’
 6377 |     ecs_table_diff_t diff = ECS_TABLE_DIFF_INIT;
      |                      ^~~~
../src/flecs/distr/flecs.c:6371:18: note:   crosses initialization of ‘ecs_table_t* src_table’
 6371 |     ecs_table_t *src_table = NULL;
      |                  ^~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_set_with(ecs_world_t*, ecs_id_t)’:
../src/flecs/distr/flecs.c:6408:1: error: jump to label ‘error’
 6408 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6403:5: note: in expansion of macro ‘ecs_check’
 6403 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:6405:14: note:   crosses initialization of ‘ecs_id_t prev’
 6405 |     ecs_id_t prev = stage->with;
      |              ^~~~
../src/flecs/distr/flecs.c:6404:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 6404 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_id_t ecs_get_with(const ecs_world_t*)’:
../src/flecs/distr/flecs.c:6418:1: error: jump to label ‘error’
 6418 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6415:5: note: in expansion of macro ‘ecs_check’
 6415 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:6416:24: note:   crosses initialization of ‘const ecs_stage_t* stage’
 6416 |     const ecs_stage_t *stage = flecs_stage_from_readonly_world(world);
      |                        ^~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_new(ecs_world_t*)’:
../src/flecs/distr/flecs.c:6457:1: error: jump to label ‘error’
 6457 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6425:5: note: in expansion of macro ‘ecs_check’
 6425 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:6431:18: note:   crosses initialization of ‘ecs_world_t* unsafe_world’
 6431 |     ecs_world_t *unsafe_world =
      |                  ^~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_new_low_id(ecs_world_t*)’:
../src/flecs/distr/flecs.c:6495:1: error: jump to label ‘error’
 6495 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6474:9: note: in expansion of macro ‘ecs_check’
 6474 |         ecs_check(ecs_get_stage_count(world) <= 1,
      |         ^~~~~~~~~
../src/flecs/distr/flecs.c:6478:18: note:   crosses initialization of ‘ecs_entity_t id’
 6478 |     ecs_entity_t id = 0;
      |                  ^~
../src/flecs/distr/flecs.c:6495:1: error: jump to label ‘error’
 6495 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6464:5: note: in expansion of macro ‘ecs_check’
 6464 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:6478:18: note:   crosses initialization of ‘ecs_entity_t id’
 6478 |     ecs_entity_t id = 0;
      |                  ^~
../src/flecs/distr/flecs.c:6470:18: note:   crosses initialization of ‘ecs_world_t* unsafe_world’
 6470 |     ecs_world_t *unsafe_world =
      |                  ^~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_new_w_id(ecs_world_t*, ecs_id_t)’:
../src/flecs/distr/flecs.c:6528:1: error: jump to label ‘error’
 6528 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6504:5: note: in expansion of macro ‘ecs_check’
 6504 |     ecs_check(ecs_id_is_valid(world, id), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:6521:19: note:   crosses initialization of ‘ecs_record_t* r’
 6521 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:6515:18: note:   crosses initialization of ‘ecs_table_t* table’
 6515 |     ecs_table_t *table = flecs_find_table_add(
      |                  ^~~~~
../src/flecs/distr/flecs.c:6513:30: note:   crosses initialization of ‘ecs_table_diff_builder_t diff_builder’
 6513 |     ecs_table_diff_builder_t diff_builder = ECS_TABLE_DIFF_INIT;
      |                              ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:6507:18: note:   crosses initialization of ‘ecs_entity_t entity’
 6507 |     ecs_entity_t entity = ecs_new(world);
      |                  ^~~~~~
../src/flecs/distr/flecs.c:6506:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 6506 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:6528:1: error: jump to label ‘error’
 6528 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6503:5: note: in expansion of macro ‘ecs_check’
 6503 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:6521:19: note:   crosses initialization of ‘ecs_record_t* r’
 6521 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:6515:18: note:   crosses initialization of ‘ecs_table_t* table’
 6515 |     ecs_table_t *table = flecs_find_table_add(
      |                  ^~~~~
../src/flecs/distr/flecs.c:6513:30: note:   crosses initialization of ‘ecs_table_diff_builder_t diff_builder’
 6513 |     ecs_table_diff_builder_t diff_builder = ECS_TABLE_DIFF_INIT;
      |                              ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:6507:18: note:   crosses initialization of ‘ecs_entity_t entity’
 6507 |     ecs_entity_t entity = ecs_new(world);
      |                  ^~~~~~
../src/flecs/distr/flecs.c:6506:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 6506 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_new_w_table(ecs_world_t*, ecs_table_t*)’:
../src/flecs/distr/flecs.c:6555:1: error: jump to label ‘error’
 6555 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6537:5: note: in expansion of macro ‘ecs_check’
 6537 |     ecs_check(table != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:6547:22: note:   crosses initialization of ‘ecs_table_diff_t table_diff’
 6547 |     ecs_table_diff_t table_diff = {
      |                      ^~~~~~~~~~
../src/flecs/distr/flecs.c:6542:19: note:   crosses initialization of ‘ecs_flags32_t flags’
 6542 |     ecs_flags32_t flags = table->flags & EcsTableAddEdgeFlags;
      |                   ^~~~~
../src/flecs/distr/flecs.c:6541:19: note:   crosses initialization of ‘ecs_record_t* r’
 6541 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:6540:18: note:   crosses initialization of ‘ecs_entity_t entity’
 6540 |     ecs_entity_t entity = ecs_new(world);
      |                  ^~~~~~
../src/flecs/distr/flecs.c:6555:1: error: jump to label ‘error’
 6555 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6536:5: note: in expansion of macro ‘ecs_check’
 6536 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:6547:22: note:   crosses initialization of ‘ecs_table_diff_t table_diff’
 6547 |     ecs_table_diff_t table_diff = {
      |                      ^~~~~~~~~~
../src/flecs/distr/flecs.c:6542:19: note:   crosses initialization of ‘ecs_flags32_t flags’
 6542 |     ecs_flags32_t flags = table->flags & EcsTableAddEdgeFlags;
      |                   ^~~~~
../src/flecs/distr/flecs.c:6541:19: note:   crosses initialization of ‘ecs_record_t* r’
 6541 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:6540:18: note:   crosses initialization of ‘ecs_entity_t entity’
 6540 |     ecs_entity_t entity = ecs_new(world);
      |                  ^~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_copy_id(ecs_world_t*, ecs_record_t*, ecs_id_t, size_t, void*, void*, const ecs_type_info_t*)’:
../src/flecs/distr/flecs.c:6587:1: error: jump to label ‘error’
 6587 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6570:5: note: in expansion of macro ‘ecs_check’
 6570 |     ecs_check(src_ptr != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:6581:18: note:   crosses initialization of ‘ecs_table_t* table’
 6581 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:6572:16: note:   crosses initialization of ‘void (* copy)(void*, const void*, int32_t, const ecs_type_info_t*)’
 6572 |     ecs_copy_t copy = ti->hooks.copy;
      |                ^~~~
../src/flecs/distr/flecs.c:6587:1: error: jump to label ‘error’
 6587 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6569:5: note: in expansion of macro ‘ecs_check’
 6569 |     ecs_check(dst_ptr != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:6581:18: note:   crosses initialization of ‘ecs_table_t* table’
 6581 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:6572:16: note:   crosses initialization of ‘void (* copy)(void*, const void*, int32_t, const ecs_type_info_t*)’
 6572 |     ecs_copy_t copy = ti->hooks.copy;
      |                ^~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_traverse_add(ecs_world_t*, ecs_entity_t, const char*, const ecs_entity_desc_t*, ecs_entity_t, ecs_id_t, bool, bool)’:
../src/flecs/distr/flecs.c:6740:43: error: invalid conversion from ‘void*’ to ‘ecs_id_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 6740 |         ecs_id_t *expr_ids = ecs_vec_first(&ids);
      |                              ~~~~~~~~~~~~~^~~~~~
      |                                           |
      |                                           void*
../src/flecs/distr/flecs.c:6797:1: error: jump to label ‘error’
 6797 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:6690:18: note:   from here
 6690 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:6714:19: note:   crosses initialization of ‘ecs_record_t* r’
 6714 |     ecs_record_t *r = flecs_entities_get(world, result);
      |                   ^
../src/flecs/distr/flecs.c:6713:37: note:   crosses initialization of ‘ecs_table_t* table’
 6713 |     ecs_table_t *src_table = NULL, *table = NULL;
      |                                     ^~~~~
../src/flecs/distr/flecs.c:6713:18: note:   crosses initialization of ‘ecs_table_t* src_table’
 6713 |     ecs_table_t *src_table = NULL, *table = NULL;
      |                  ^~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_entity_init(ecs_world_t*, const ecs_entity_desc_t*)’:
../src/flecs/distr/flecs.c:7060:1: error: jump to label ‘error’
 7060 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6915:21: note: in expansion of macro ‘ecs_check’
 6915 |                     ecs_check(false, ECS_INVALID_PARAMETER, "%s: cannot set parent in "
      |                     ^~~~~~~~~
../src/flecs/distr/flecs.c:6961:17: note:   crosses initialization of ‘const char* prefix’
 6961 |     const char *prefix = world->info.name_prefix;
      |                 ^~~~~~
../src/flecs/distr/flecs.c:6952:10: note:   crosses initialization of ‘bool name_assigned’
 6952 |     bool name_assigned = false;
      |          ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6951:10: note:   crosses initialization of ‘bool flecs_new_entity’
 6951 |     bool flecs_new_entity = false;
      |          ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6950:17: note:   crosses initialization of ‘const char* root_sep’
 6950 |     const char *root_sep = desc->root_sep;
      |                 ^~~~~~~~
../src/flecs/distr/flecs.c:6928:17: note:   crosses initialization of ‘const char* sep’
 6928 |     const char *sep = desc->sep;
      |                 ^~~
../src/flecs/distr/flecs.c:6927:17: note:   crosses initialization of ‘const char* name’
 6927 |     const char *name = desc->name;
      |                 ^~~~
../src/flecs/distr/flecs.c:7060:1: error: jump to label ‘error’
 7060 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6898:5: note: in expansion of macro ‘ecs_check’
 6898 |     ecs_check(desc->_canary == 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:6961:17: note:   crosses initialization of ‘const char* prefix’
 6961 |     const char *prefix = world->info.name_prefix;
      |                 ^~~~~~
../src/flecs/distr/flecs.c:6952:10: note:   crosses initialization of ‘bool name_assigned’
 6952 |     bool name_assigned = false;
      |          ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6951:10: note:   crosses initialization of ‘bool flecs_new_entity’
 6951 |     bool flecs_new_entity = false;
      |          ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6950:17: note:   crosses initialization of ‘const char* root_sep’
 6950 |     const char *root_sep = desc->root_sep;
      |                 ^~~~~~~~
../src/flecs/distr/flecs.c:6928:17: note:   crosses initialization of ‘const char* sep’
 6928 |     const char *sep = desc->sep;
      |                 ^~~
../src/flecs/distr/flecs.c:6927:17: note:   crosses initialization of ‘const char* name’
 6927 |     const char *name = desc->name;
      |                 ^~~~
../src/flecs/distr/flecs.c:6904:18: note:   crosses initialization of ‘ecs_entity_t result’
 6904 |     ecs_entity_t result = desc->id;
      |                  ^~~~~~
../src/flecs/distr/flecs.c:6903:14: note:   crosses initialization of ‘ecs_id_t with’
 6903 |     ecs_id_t with = ecs_get_with(world);
      |              ^~~~
../src/flecs/distr/flecs.c:6902:18: note:   crosses initialization of ‘ecs_entity_t scope’
 6902 |     ecs_entity_t scope = stage->scope;
      |                  ^~~~~
../src/flecs/distr/flecs.c:6901:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 6901 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:7060:1: error: jump to label ‘error’
 7060 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6897:5: note: in expansion of macro ‘ecs_check’
 6897 |     ecs_check(desc != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:6961:17: note:   crosses initialization of ‘const char* prefix’
 6961 |     const char *prefix = world->info.name_prefix;
      |                 ^~~~~~
../src/flecs/distr/flecs.c:6952:10: note:   crosses initialization of ‘bool name_assigned’
 6952 |     bool name_assigned = false;
      |          ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6951:10: note:   crosses initialization of ‘bool flecs_new_entity’
 6951 |     bool flecs_new_entity = false;
      |          ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6950:17: note:   crosses initialization of ‘const char* root_sep’
 6950 |     const char *root_sep = desc->root_sep;
      |                 ^~~~~~~~
../src/flecs/distr/flecs.c:6928:17: note:   crosses initialization of ‘const char* sep’
 6928 |     const char *sep = desc->sep;
      |                 ^~~
../src/flecs/distr/flecs.c:6927:17: note:   crosses initialization of ‘const char* name’
 6927 |     const char *name = desc->name;
      |                 ^~~~
../src/flecs/distr/flecs.c:6904:18: note:   crosses initialization of ‘ecs_entity_t result’
 6904 |     ecs_entity_t result = desc->id;
      |                  ^~~~~~
../src/flecs/distr/flecs.c:6903:14: note:   crosses initialization of ‘ecs_id_t with’
 6903 |     ecs_id_t with = ecs_get_with(world);
      |              ^~~~
../src/flecs/distr/flecs.c:6902:18: note:   crosses initialization of ‘ecs_entity_t scope’
 6902 |     ecs_entity_t scope = stage->scope;
      |                  ^~~~~
../src/flecs/distr/flecs.c:6901:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 6901 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:7060:1: error: jump to label ‘error’
 7060 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6896:5: note: in expansion of macro ‘ecs_check’
 6896 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:6961:17: note:   crosses initialization of ‘const char* prefix’
 6961 |     const char *prefix = world->info.name_prefix;
      |                 ^~~~~~
../src/flecs/distr/flecs.c:6952:10: note:   crosses initialization of ‘bool name_assigned’
 6952 |     bool name_assigned = false;
      |          ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6951:10: note:   crosses initialization of ‘bool flecs_new_entity’
 6951 |     bool flecs_new_entity = false;
      |          ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:6950:17: note:   crosses initialization of ‘const char* root_sep’
 6950 |     const char *root_sep = desc->root_sep;
      |                 ^~~~~~~~
../src/flecs/distr/flecs.c:6928:17: note:   crosses initialization of ‘const char* sep’
 6928 |     const char *sep = desc->sep;
      |                 ^~~
../src/flecs/distr/flecs.c:6927:17: note:   crosses initialization of ‘const char* name’
 6927 |     const char *name = desc->name;
      |                 ^~~~
../src/flecs/distr/flecs.c:6904:18: note:   crosses initialization of ‘ecs_entity_t result’
 6904 |     ecs_entity_t result = desc->id;
      |                  ^~~~~~
../src/flecs/distr/flecs.c:6903:14: note:   crosses initialization of ‘ecs_id_t with’
 6903 |     ecs_id_t with = ecs_get_with(world);
      |              ^~~~
../src/flecs/distr/flecs.c:6902:18: note:   crosses initialization of ‘ecs_entity_t scope’
 6902 |     ecs_entity_t scope = stage->scope;
      |                  ^~~~~
../src/flecs/distr/flecs.c:6901:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 6901 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘const ecs_entity_t* ecs_bulk_init(ecs_world_t*, const ecs_bulk_desc_t*)’:
../src/flecs/distr/flecs.c:7112:13: error: expected primary-expression before ‘.’ token
 7112 |             .added.array = table->type.array,
      |             ^
../src/flecs/distr/flecs.c:7113:13: error: expected primary-expression before ‘.’ token
 7113 |             .added.count = table->type.count
      |             ^
../src/flecs/distr/flecs.c:7127:1: error: jump to label ‘error’
 7127 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:7071:5: note: in expansion of macro ‘ecs_check’
 7071 |     ecs_check(desc->_canary == 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:7090:18: note:   crosses initialization of ‘ecs_table_t* table’
 7090 |     ecs_table_t *table = desc->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:7077:13: note:   crosses initialization of ‘int32_t sparse_count’
 7077 |     int32_t sparse_count = 0;
      |             ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:7075:13: note:   crosses initialization of ‘int32_t count’
 7075 |     int32_t count = desc->count;
      |             ^~~~~
../src/flecs/distr/flecs.c:7074:25: note:   crosses initialization of ‘const ecs_entity_t* entities’
 7074 |     const ecs_entity_t *entities = desc->entities;
      |                         ^~~~~~~~
../src/flecs/distr/flecs.c:7127:1: error: jump to label ‘error’
 7127 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:7070:5: note: in expansion of macro ‘ecs_check’
 7070 |     ecs_check(desc != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:7090:18: note:   crosses initialization of ‘ecs_table_t* table’
 7090 |     ecs_table_t *table = desc->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:7077:13: note:   crosses initialization of ‘int32_t sparse_count’
 7077 |     int32_t sparse_count = 0;
      |             ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:7075:13: note:   crosses initialization of ‘int32_t count’
 7075 |     int32_t count = desc->count;
      |             ^~~~~
../src/flecs/distr/flecs.c:7074:25: note:   crosses initialization of ‘const ecs_entity_t* entities’
 7074 |     const ecs_entity_t *entities = desc->entities;
      |                         ^~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_component_init(ecs_world_t*, const ecs_component_desc_t*)’:
../src/flecs/distr/flecs.c:7205:27: error: taking address of rvalue [-fpermissive]
 7205 |         ecs_entity(world, { .id = result, .name = desc->type.name });
      |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:7227:1: error: jump to label ‘error’
 7227 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:7157:5: note: in expansion of macro ‘ecs_check’
 7157 |     ecs_check(desc->_canary == 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:7185:19: note:   crosses initialization of ‘EcsComponent* ptr’
 7185 |     EcsComponent *ptr = ecs_ensure(world, result, EcsComponent);
      |                   ^~~
../src/flecs/distr/flecs.c:7177:10: note:   crosses initialization of ‘bool new_component’
 7177 |     bool new_component = true;
      |          ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:7164:18: note:   crosses initialization of ‘ecs_entity_t result’
 7164 |     ecs_entity_t result = desc->entity;
      |                  ^~~~~~
../src/flecs/distr/flecs.c:7227:1: error: jump to label ‘error’
 7227 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:7156:5: note: in expansion of macro ‘ecs_check’
 7156 |     ecs_check(desc != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:7185:19: note:   crosses initialization of ‘EcsComponent* ptr’
 7185 |     EcsComponent *ptr = ecs_ensure(world, result, EcsComponent);
      |                   ^~~
../src/flecs/distr/flecs.c:7177:10: note:   crosses initialization of ‘bool new_component’
 7177 |     bool new_component = true;
      |          ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:7164:18: note:   crosses initialization of ‘ecs_entity_t result’
 7164 |     ecs_entity_t result = desc->entity;
      |                  ^~~~~~
../src/flecs/distr/flecs.c:7227:1: error: jump to label ‘error’
 7227 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:7155:5: note: in expansion of macro ‘ecs_check’
 7155 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:7185:19: note:   crosses initialization of ‘EcsComponent* ptr’
 7185 |     EcsComponent *ptr = ecs_ensure(world, result, EcsComponent);
      |                   ^~~
../src/flecs/distr/flecs.c:7177:10: note:   crosses initialization of ‘bool new_component’
 7177 |     bool new_component = true;
      |          ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:7164:18: note:   crosses initialization of ‘ecs_entity_t result’
 7164 |     ecs_entity_t result = desc->entity;
      |                  ^~~~~~
../src/flecs/distr/flecs.c: In function ‘const ecs_entity_t* ecs_bulk_new_w_id(ecs_world_t*, ecs_id_t, int32_t)’:
../src/flecs/distr/flecs.c:7259:1: error: jump to label ‘error’
 7259 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:7236:5: note: in expansion of macro ‘ecs_check’
 7236 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:7245:30: note:   crosses initialization of ‘ecs_table_diff_builder_t diff’
 7245 |     ecs_table_diff_builder_t diff = ECS_TABLE_DIFF_INIT;
      |                              ^~~~
../src/flecs/distr/flecs.c:7244:18: note:   crosses initialization of ‘ecs_table_t* table’
 7244 |     ecs_table_t *table = &world->store.root;
      |                  ^~~~~
../src/flecs/distr/flecs.c:7237:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 7237 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘void ecs_clear(ecs_world_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.c:7294:1: error: jump to label ‘error’
 7294 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:7268:5: note: in expansion of macro ‘ecs_check’
 7268 |     ecs_check(ecs_is_valid(world, entity), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:7278:18: note:   crosses initialization of ‘ecs_table_t* table’
 7278 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:7275:19: note:   crosses initialization of ‘ecs_record_t* r’
 7275 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:7270:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 7270 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:7294:1: error: jump to label ‘error’
 7294 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:7267:5: note: in expansion of macro ‘ecs_check’
 7267 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:7278:18: note:   crosses initialization of ‘ecs_table_t* table’
 7278 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:7275:19: note:   crosses initialization of ‘ecs_record_t* r’
 7275 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:7270:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 7270 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_update_monitors_for_delete(ecs_world_t*, ecs_id_t)’:
../src/flecs/distr/flecs.c:7448:30: error: taking address of temporary array
 7448 |         .array = (ecs_id_t[]){id},
      |                              ^~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_id_mark_for_delete(ecs_world_t*, ecs_id_record_t*, ecs_entity_t, bool)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:7475:22: note: in expansion of macro ‘flecs_table_cache_next’
 7475 |         while ((tr = flecs_table_cache_next(&it, ecs_table_record_t))) {
      |                      ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:7499:22: note: in expansion of macro ‘flecs_table_cache_next’
 7499 |         while ((tr = flecs_table_cache_next(&it, ecs_table_record_t))) {
      |                      ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_remove_from_table(ecs_world_t*, ecs_table_t*)’:
../src/flecs/distr/flecs.c:7570:41: error: invalid conversion from ‘void*’ to ‘ecs_marked_id_t*’ [-fpermissive]
 7570 |     ecs_marked_id_t *ids = ecs_vec_first(&world->store.marked_ids);
      |                            ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                         |
      |                                         void*
../src/flecs/distr/flecs.c: In function ‘bool flecs_on_delete_clear_tables(ecs_world_t*)’:
../src/flecs/distr/flecs.c:7622:41: error: invalid conversion from ‘void*’ to ‘ecs_marked_id_t*’ [-fpermissive]
 7622 |     ecs_marked_id_t *ids = ecs_vec_first(&world->store.marked_ids);
      |                            ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                         |
      |                                         void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:7633:34: note: in expansion of macro ‘flecs_table_cache_next’
 7633 |                     while ((tr = flecs_table_cache_next(&it, ecs_table_record_t))) {
      |                                  ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:7658:32: error: invalid conversion from ‘void*’ to ‘ecs_marked_id_t*’ [-fpermissive]
 7658 |             ids = ecs_vec_first(&world->store.marked_ids);
      |                   ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                |
      |                                void*
../src/flecs/distr/flecs.c: In function ‘bool flecs_on_delete_clear_ids(ecs_world_t*)’:
../src/flecs/distr/flecs.c:7681:41: error: invalid conversion from ‘void*’ to ‘ecs_marked_id_t*’ [-fpermissive]
 7681 |     ecs_marked_id_t *ids = ecs_vec_first(&world->store.marked_ids);
      |                            ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                         |
      |                                         void*
../src/flecs/distr/flecs.c: In function ‘void flecs_on_delete(ecs_world_t*, ecs_id_t, ecs_entity_t, bool)’:
../src/flecs/distr/flecs.c:7762:45: error: invalid conversion from ‘void*’ to ‘ecs_marked_id_t*’ [-fpermissive]
 7762 |         ecs_marked_id_t *ids = ecs_vec_first(&world->store.marked_ids);
      |                                ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                             |
      |                                             void*
../src/flecs/distr/flecs.c: In function ‘void ecs_delete(ecs_world_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.c:7873:1: error: jump to label ‘error’
 7873 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:7817:5: note: in expansion of macro ‘ecs_check’
 7817 |     ecs_check(entity != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:7826:19: note:   crosses initialization of ‘ecs_record_t* r’
 7826 |     ecs_record_t *r = flecs_entities_try(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:7819:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 7819 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:7873:1: error: jump to label ‘error’
 7873 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:7816:5: note: in expansion of macro ‘ecs_check’
 7816 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:7826:19: note:   crosses initialization of ‘ecs_record_t* r’
 7826 |     ecs_record_t *r = flecs_entities_try(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:7819:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 7819 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_clone(ecs_world_t*, ecs_entity_t, ecs_entity_t, bool)’:
../src/flecs/distr/flecs.c:7974:1: error: jump to label ‘done’
 7974 | done:
      | ^~~~
../src/flecs/distr/flecs.c:7940:14: note:   from here
 7940 |         goto done;
      |              ^~~~
../src/flecs/distr/flecs.c:7958:13: note:   crosses initialization of ‘int32_t row’
 7958 |     int32_t row = ECS_RECORD_TO_ROW(dst_r->row);
      |             ^~~
../src/flecs/distr/flecs.c:7954:19: note:   crosses initialization of ‘ecs_record_t* dst_r’
 7954 |     ecs_record_t *dst_r = flecs_entities_get(world, dst);
      |                   ^~~~~
../src/flecs/distr/flecs.c:7950:22: note:   crosses initialization of ‘ecs_table_diff_t diff’
 7950 |     ecs_table_diff_t diff = {
      |                      ^~~~
../src/flecs/distr/flecs.c:7949:16: note:   crosses initialization of ‘ecs_type_t dst_type’
 7949 |     ecs_type_t dst_type = dst_table->type;
      |                ^~~~~~~~
../src/flecs/distr/flecs.c:7943:18: note:   crosses initialization of ‘ecs_table_t* dst_table’
 7943 |     ecs_table_t *dst_table = src_table;
      |                  ^~~~~~~~~
../src/flecs/distr/flecs.c:7977:1: error: jump to label ‘error’
 7977 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:7925:5: note: in expansion of macro ‘ecs_check’
 7925 |     ecs_check(!dst || !ecs_get_table(world, dst), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:7958:13: note:   crosses initialization of ‘int32_t row’
 7958 |     int32_t row = ECS_RECORD_TO_ROW(dst_r->row);
      |             ^~~
../src/flecs/distr/flecs.c:7954:19: note:   crosses initialization of ‘ecs_record_t* dst_r’
 7954 |     ecs_record_t *dst_r = flecs_entities_get(world, dst);
      |                   ^~~~~
../src/flecs/distr/flecs.c:7950:22: note:   crosses initialization of ‘ecs_table_diff_t diff’
 7950 |     ecs_table_diff_t diff = {
      |                      ^~~~
../src/flecs/distr/flecs.c:7949:16: note:   crosses initialization of ‘ecs_type_t dst_type’
 7949 |     ecs_type_t dst_type = dst_table->type;
      |                ^~~~~~~~
../src/flecs/distr/flecs.c:7943:18: note:   crosses initialization of ‘ecs_table_t* dst_table’
 7943 |     ecs_table_t *dst_table = src_table;
      |                  ^~~~~~~~~
../src/flecs/distr/flecs.c:7938:18: note:   crosses initialization of ‘ecs_table_t* src_table’
 7938 |     ecs_table_t *src_table = src_r->table;
      |                  ^~~~~~~~~
../src/flecs/distr/flecs.c:7936:19: note:   crosses initialization of ‘ecs_record_t* src_r’
 7936 |     ecs_record_t *src_r = flecs_entities_get(world, src);
      |                   ^~~~~
../src/flecs/distr/flecs.c:7927:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 7927 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:7977:1: error: jump to label ‘error’
 7977 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:7924:5: note: in expansion of macro ‘ecs_check’
 7924 |     ecs_check(ecs_is_alive(world, src), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:7958:13: note:   crosses initialization of ‘int32_t row’
 7958 |     int32_t row = ECS_RECORD_TO_ROW(dst_r->row);
      |             ^~~
../src/flecs/distr/flecs.c:7954:19: note:   crosses initialization of ‘ecs_record_t* dst_r’
 7954 |     ecs_record_t *dst_r = flecs_entities_get(world, dst);
      |                   ^~~~~
../src/flecs/distr/flecs.c:7950:22: note:   crosses initialization of ‘ecs_table_diff_t diff’
 7950 |     ecs_table_diff_t diff = {
      |                      ^~~~
../src/flecs/distr/flecs.c:7949:16: note:   crosses initialization of ‘ecs_type_t dst_type’
 7949 |     ecs_type_t dst_type = dst_table->type;
      |                ^~~~~~~~
../src/flecs/distr/flecs.c:7943:18: note:   crosses initialization of ‘ecs_table_t* dst_table’
 7943 |     ecs_table_t *dst_table = src_table;
      |                  ^~~~~~~~~
../src/flecs/distr/flecs.c:7938:18: note:   crosses initialization of ‘ecs_table_t* src_table’
 7938 |     ecs_table_t *src_table = src_r->table;
      |                  ^~~~~~~~~
../src/flecs/distr/flecs.c:7936:19: note:   crosses initialization of ‘ecs_record_t* src_r’
 7936 |     ecs_record_t *src_r = flecs_entities_get(world, src);
      |                   ^~~~~
../src/flecs/distr/flecs.c:7927:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 7927 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:7977:1: error: jump to label ‘error’
 7977 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:7923:5: note: in expansion of macro ‘ecs_check’
 7923 |     ecs_check(src != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:7958:13: note:   crosses initialization of ‘int32_t row’
 7958 |     int32_t row = ECS_RECORD_TO_ROW(dst_r->row);
      |             ^~~
../src/flecs/distr/flecs.c:7954:19: note:   crosses initialization of ‘ecs_record_t* dst_r’
 7954 |     ecs_record_t *dst_r = flecs_entities_get(world, dst);
      |                   ^~~~~
../src/flecs/distr/flecs.c:7950:22: note:   crosses initialization of ‘ecs_table_diff_t diff’
 7950 |     ecs_table_diff_t diff = {
      |                      ^~~~
../src/flecs/distr/flecs.c:7949:16: note:   crosses initialization of ‘ecs_type_t dst_type’
 7949 |     ecs_type_t dst_type = dst_table->type;
      |                ^~~~~~~~
../src/flecs/distr/flecs.c:7943:18: note:   crosses initialization of ‘ecs_table_t* dst_table’
 7943 |     ecs_table_t *dst_table = src_table;
      |                  ^~~~~~~~~
../src/flecs/distr/flecs.c:7938:18: note:   crosses initialization of ‘ecs_table_t* src_table’
 7938 |     ecs_table_t *src_table = src_r->table;
      |                  ^~~~~~~~~
../src/flecs/distr/flecs.c:7936:19: note:   crosses initialization of ‘ecs_record_t* src_r’
 7936 |     ecs_record_t *src_r = flecs_entities_get(world, src);
      |                   ^~~~~
../src/flecs/distr/flecs.c:7927:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 7927 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:7977:1: error: jump to label ‘error’
 7977 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:7922:5: note: in expansion of macro ‘ecs_check’
 7922 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:7958:13: note:   crosses initialization of ‘int32_t row’
 7958 |     int32_t row = ECS_RECORD_TO_ROW(dst_r->row);
      |             ^~~
../src/flecs/distr/flecs.c:7954:19: note:   crosses initialization of ‘ecs_record_t* dst_r’
 7954 |     ecs_record_t *dst_r = flecs_entities_get(world, dst);
      |                   ^~~~~
../src/flecs/distr/flecs.c:7950:22: note:   crosses initialization of ‘ecs_table_diff_t diff’
 7950 |     ecs_table_diff_t diff = {
      |                      ^~~~
../src/flecs/distr/flecs.c:7949:16: note:   crosses initialization of ‘ecs_type_t dst_type’
 7949 |     ecs_type_t dst_type = dst_table->type;
      |                ^~~~~~~~
../src/flecs/distr/flecs.c:7943:18: note:   crosses initialization of ‘ecs_table_t* dst_table’
 7943 |     ecs_table_t *dst_table = src_table;
      |                  ^~~~~~~~~
../src/flecs/distr/flecs.c:7938:18: note:   crosses initialization of ‘ecs_table_t* src_table’
 7938 |     ecs_table_t *src_table = src_r->table;
      |                  ^~~~~~~~~
../src/flecs/distr/flecs.c:7936:19: note:   crosses initialization of ‘ecs_record_t* src_r’
 7936 |     ecs_record_t *src_r = flecs_entities_get(world, src);
      |                   ^~~~~
../src/flecs/distr/flecs.c:7927:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 7927 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘const void* ecs_get_id(const ecs_world_t*, ecs_entity_t, ecs_id_t)’:
../src/flecs/distr/flecs.c:7993:46: error: invalid conversion from ‘void*’ to ‘const ecs_sparse_t*’ [-fpermissive]
 7993 |             return flecs_sparse_get_any(idr->sparse, 0, entity);\
      |                                         ~~~~~^~~~~~
      |                                              |
      |                                              void*
../src/flecs/distr/flecs.c:8016:9: note: in expansion of macro ‘ecs_get_low_id’
 8016 |         ecs_get_low_id(table, r, id);
      |         ^~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:1411:25: note:   initializing argument 1 of ‘void* flecs_sparse_get_any(const ecs_sparse_t*, ecs_size_t, uint64_t)’
 1411 |     const ecs_sparse_t *sparse,
      |     ~~~~~~~~~~~~~~~~~~~~^~~~~~
../src/flecs/distr/flecs.c:8032:46: error: invalid conversion from ‘void*’ to ‘const ecs_sparse_t*’ [-fpermissive]
 8032 |             return flecs_sparse_get_any(idr->sparse, 0, entity);
      |                                         ~~~~~^~~~~~
      |                                              |
      |                                              void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:1411:25: note:   initializing argument 1 of ‘void* flecs_sparse_get_any(const ecs_sparse_t*, ecs_size_t, uint64_t)’
 1411 |     const ecs_sparse_t *sparse,
      |     ~~~~~~~~~~~~~~~~~~~~^~~~~~
../src/flecs/distr/flecs.c:8039:1: error: jump to label ‘error’
 8039 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8034:9: note: in expansion of macro ‘ecs_check’
 8034 |         ecs_check(tr->column != -1, ECS_NOT_A_COMPONENT, NULL);
      |         ^~~~~~~~~
../src/flecs/distr/flecs.c:8037:13: note:   crosses initialization of ‘int32_t row’
 8037 |     int32_t row = ECS_RECORD_TO_ROW(r->row);
      |             ^~~
../src/flecs/distr/flecs.c:8039:1: error: jump to label ‘error’
 8039 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8003:5: note: in expansion of macro ‘ecs_check’
 8003 |     ecs_check(ecs_is_alive(world, entity), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8037:13: note:   crosses initialization of ‘int32_t row’
 8037 |     int32_t row = ECS_RECORD_TO_ROW(r->row);
      |             ^~~
../src/flecs/distr/flecs.c:8027:31: note:   crosses initialization of ‘const ecs_table_record_t* tr’
 8027 |     const ecs_table_record_t *tr = flecs_id_record_get_table(idr, table);
      |                               ^~
../src/flecs/distr/flecs.c:8022:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
 8022 |     ecs_id_record_t *idr = flecs_id_record_get(world, id);
      |                      ^~~
../src/flecs/distr/flecs.c:8010:18: note:   crosses initialization of ‘ecs_table_t* table’
 8010 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8007:19: note:   crosses initialization of ‘ecs_record_t* r’
 8007 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8039:1: error: jump to label ‘error’
 8039 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8002:5: note: in expansion of macro ‘ecs_check’
 8002 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8037:13: note:   crosses initialization of ‘int32_t row’
 8037 |     int32_t row = ECS_RECORD_TO_ROW(r->row);
      |             ^~~
../src/flecs/distr/flecs.c:8027:31: note:   crosses initialization of ‘const ecs_table_record_t* tr’
 8027 |     const ecs_table_record_t *tr = flecs_id_record_get_table(idr, table);
      |                               ^~
../src/flecs/distr/flecs.c:8022:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
 8022 |     ecs_id_record_t *idr = flecs_id_record_get(world, id);
      |                      ^~~
../src/flecs/distr/flecs.c:8010:18: note:   crosses initialization of ‘ecs_table_t* table’
 8010 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8007:19: note:   crosses initialization of ‘ecs_record_t* r’
 8007 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c: In function ‘void* ecs_get_mut_id(const ecs_world_t*, ecs_entity_t, ecs_id_t)’:
../src/flecs/distr/flecs.c:7993:46: error: invalid conversion from ‘void*’ to ‘const ecs_sparse_t*’ [-fpermissive]
 7993 |             return flecs_sparse_get_any(idr->sparse, 0, entity);\
      |                                         ~~~~~^~~~~~
      |                                              |
      |                                              void*
../src/flecs/distr/flecs.c:8062:9: note: in expansion of macro ‘ecs_get_low_id’
 8062 |         ecs_get_low_id(table, r, id);
      |         ^~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:1411:25: note:   initializing argument 1 of ‘void* flecs_sparse_get_any(const ecs_sparse_t*, ecs_size_t, uint64_t)’
 1411 |     const ecs_sparse_t *sparse,
      |     ~~~~~~~~~~~~~~~~~~~~^~~~~~
../src/flecs/distr/flecs.c:8069:1: error: jump to label ‘error’
 8069 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8049:5: note: in expansion of macro ‘ecs_check’
 8049 |     ecs_check(ecs_is_alive(world, entity), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8067:13: note:   crosses initialization of ‘int32_t row’
 8067 |     int32_t row = ECS_RECORD_TO_ROW(r->row);
      |             ^~~
../src/flecs/distr/flecs.c:8066:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
 8066 |     ecs_id_record_t *idr = flecs_id_record_get(world, id);
      |                      ^~~
../src/flecs/distr/flecs.c:8056:18: note:   crosses initialization of ‘ecs_table_t* table’
 8056 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8053:19: note:   crosses initialization of ‘ecs_record_t* r’
 8053 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8069:1: error: jump to label ‘error’
 8069 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8048:5: note: in expansion of macro ‘ecs_check’
 8048 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8067:13: note:   crosses initialization of ‘int32_t row’
 8067 |     int32_t row = ECS_RECORD_TO_ROW(r->row);
      |             ^~~
../src/flecs/distr/flecs.c:8066:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
 8066 |     ecs_id_record_t *idr = flecs_id_record_get(world, id);
      |                      ^~~
../src/flecs/distr/flecs.c:8056:18: note:   crosses initialization of ‘ecs_table_t* table’
 8056 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8053:19: note:   crosses initialization of ‘ecs_record_t* r’
 8053 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c: In function ‘void* ecs_ensure_id(ecs_world_t*, ecs_entity_t, ecs_id_t)’:
../src/flecs/distr/flecs.c:8095:1: error: jump to label ‘error’
 8095 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8080:5: note: in expansion of macro ‘ecs_check’
 8080 |     ecs_check(ecs_id_is_valid(world, id), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8090:11: note:   crosses initialization of ‘void* result’
 8090 |     void *result = flecs_ensure(world, entity, id, r).ptr;
      |           ^~~~~~
../src/flecs/distr/flecs.c:8088:19: note:   crosses initialization of ‘ecs_record_t* r’
 8088 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8082:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 8082 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:8095:1: error: jump to label ‘error’
 8095 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8079:5: note: in expansion of macro ‘ecs_check’
 8079 |     ecs_check(ecs_is_alive(world, entity), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8090:11: note:   crosses initialization of ‘void* result’
 8090 |     void *result = flecs_ensure(world, entity, id, r).ptr;
      |           ^~~~~~
../src/flecs/distr/flecs.c:8088:19: note:   crosses initialization of ‘ecs_record_t* r’
 8088 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8082:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 8082 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:8095:1: error: jump to label ‘error’
 8095 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8078:5: note: in expansion of macro ‘ecs_check’
 8078 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8090:11: note:   crosses initialization of ‘void* result’
 8090 |     void *result = flecs_ensure(world, entity, id, r).ptr;
      |           ^~~~~~
../src/flecs/distr/flecs.c:8088:19: note:   crosses initialization of ‘ecs_record_t* r’
 8088 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8082:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 8082 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘void* ecs_ensure_modified_id(ecs_world_t*, ecs_entity_t, ecs_id_t)’:
../src/flecs/distr/flecs.c:8112:1: error: jump to label ‘error’
 8112 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8106:5: note: in expansion of macro ‘ecs_check’
 8106 |     ecs_check(ecs_id_is_valid(world, id), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8108:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 8108 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:8112:1: error: jump to label ‘error’
 8112 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8105:5: note: in expansion of macro ‘ecs_check’
 8105 |     ecs_check(ecs_is_alive(world, entity), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8108:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 8108 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:8112:1: error: jump to label ‘error’
 8112 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8104:5: note: in expansion of macro ‘ecs_check’
 8104 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8108:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 8108 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_record_t* flecs_access_begin(ecs_world_t*, ecs_entity_t, bool)’:
../src/flecs/distr/flecs.c:8140:1: error: jump to label ‘error’
 8140 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8122:5: note: in expansion of macro ‘ecs_check’
 8122 |     ecs_check(ecs_os_has_threading(), ECS_MISSING_OS_API, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8133:13: note:   crosses initialization of ‘int32_t count’
 8133 |     int32_t count = ecs_os_ainc(&table->_->lock);
      |             ^~~~~
../src/flecs/distr/flecs.c:8125:19: note:   crosses initialization of ‘ecs_record_t* r’
 8125 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8124:24: note:   crosses initialization of ‘const ecs_world_t* world’
 8124 |     const ecs_world_t *world = ecs_get_world(stage);
      |                        ^~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_access_end(const ecs_record_t*, bool)’:
../src/flecs/distr/flecs.c:8159:1: error: jump to label ‘error’
 8159 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8151:5: note: in expansion of macro ‘ecs_check’
 8151 |     ecs_check(r->table != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8152:13: note:   crosses initialization of ‘int32_t count’
 8152 |     int32_t count = ecs_os_adec(&r->table->_->lock);
      |             ^~~~~
../src/flecs/distr/flecs.c:8159:1: error: jump to label ‘error’
 8159 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8150:5: note: in expansion of macro ‘ecs_check’
 8150 |     ecs_check(r != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8152:13: note:   crosses initialization of ‘int32_t count’
 8152 |     int32_t count = ecs_os_adec(&r->table->_->lock);
      |             ^~~~~
../src/flecs/distr/flecs.c:8159:1: error: jump to label ‘error’
 8159 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8149:5: note: in expansion of macro ‘ecs_check’
 8149 |     ecs_check(ecs_os_has_threading(), ECS_MISSING_OS_API, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8152:13: note:   crosses initialization of ‘int32_t count’
 8152 |     int32_t count = ecs_os_adec(&r->table->_->lock);
      |             ^~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_record_get_entity(const ecs_record_t*)’:
../src/flecs/distr/flecs.c:8199:1: error: jump to label ‘error’
 8199 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8192:5: note: in expansion of macro ‘ecs_check’
 8192 |     ecs_check(record != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8193:18: note:   crosses initialization of ‘ecs_table_t* table’
 8193 |     ecs_table_t *table = record->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_ref_t ecs_ref_init_id(const ecs_world_t*, ecs_entity_t, ecs_id_t)’:
../src/flecs/distr/flecs.c:8262:1: error: jump to label ‘error’
 8262 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8246:5: note: in expansion of macro ‘ecs_check’
 8246 |     ecs_check(record != NULL, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8255:18: note:   crosses initialization of ‘ecs_table_t* table’
 8255 |     ecs_table_t *table = record->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8249:15: note:   crosses initialization of ‘ecs_ref_t result’
 8249 |     ecs_ref_t result = {
      |               ^~~~~~
../src/flecs/distr/flecs.c:8262:1: error: jump to label ‘error’
 8262 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8241:5: note: in expansion of macro ‘ecs_check’
 8241 |     ecs_check(ecs_id_is_valid(world, id), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8255:18: note:   crosses initialization of ‘ecs_table_t* table’
 8255 |     ecs_table_t *table = record->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8249:15: note:   crosses initialization of ‘ecs_ref_t result’
 8249 |     ecs_ref_t result = {
      |               ^~~~~~
../src/flecs/distr/flecs.c:8245:19: note:   crosses initialization of ‘ecs_record_t* record’
 8245 |     ecs_record_t *record = flecs_entities_get(world, entity);
      |                   ^~~~~~
../src/flecs/distr/flecs.c:8262:1: error: jump to label ‘error’
 8262 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8240:5: note: in expansion of macro ‘ecs_check’
 8240 |     ecs_check(ecs_is_alive(world, entity), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8255:18: note:   crosses initialization of ‘ecs_table_t* table’
 8255 |     ecs_table_t *table = record->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8249:15: note:   crosses initialization of ‘ecs_ref_t result’
 8249 |     ecs_ref_t result = {
      |               ^~~~~~
../src/flecs/distr/flecs.c:8245:19: note:   crosses initialization of ‘ecs_record_t* record’
 8245 |     ecs_record_t *record = flecs_entities_get(world, entity);
      |                   ^~~~~~
../src/flecs/distr/flecs.c: In function ‘void ecs_ref_update(const ecs_world_t*, ecs_ref_t*)’:
../src/flecs/distr/flecs.c:8303:1: error: jump to label ‘error’
 8303 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8285:5: note: in expansion of macro ‘ecs_check’
 8285 |     ecs_check(ref->record != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8293:25: note:   crosses initialization of ‘ecs_table_record_t* tr’
 8293 |     ecs_table_record_t *tr = ref->tr;
      |                         ^~
../src/flecs/distr/flecs.c:8288:18: note:   crosses initialization of ‘ecs_table_t* table’
 8288 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8287:19: note:   crosses initialization of ‘ecs_record_t* r’
 8287 |     ecs_record_t *r = ref->record;
      |                   ^
../src/flecs/distr/flecs.c:8303:1: error: jump to label ‘error’
 8303 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8284:5: note: in expansion of macro ‘ecs_check’
 8284 |     ecs_check(ref->id != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8293:25: note:   crosses initialization of ‘ecs_table_record_t* tr’
 8293 |     ecs_table_record_t *tr = ref->tr;
      |                         ^~
../src/flecs/distr/flecs.c:8288:18: note:   crosses initialization of ‘ecs_table_t* table’
 8288 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8287:19: note:   crosses initialization of ‘ecs_record_t* r’
 8287 |     ecs_record_t *r = ref->record;
      |                   ^
../src/flecs/distr/flecs.c:8303:1: error: jump to label ‘error’
 8303 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8283:5: note: in expansion of macro ‘ecs_check’
 8283 |     ecs_check(ref->entity != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8293:25: note:   crosses initialization of ‘ecs_table_record_t* tr’
 8293 |     ecs_table_record_t *tr = ref->tr;
      |                         ^~
../src/flecs/distr/flecs.c:8288:18: note:   crosses initialization of ‘ecs_table_t* table’
 8288 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8287:19: note:   crosses initialization of ‘ecs_record_t* r’
 8287 |     ecs_record_t *r = ref->record;
      |                   ^
../src/flecs/distr/flecs.c:8303:1: error: jump to label ‘error’
 8303 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8282:5: note: in expansion of macro ‘ecs_check’
 8282 |     ecs_check(ref != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8293:25: note:   crosses initialization of ‘ecs_table_record_t* tr’
 8293 |     ecs_table_record_t *tr = ref->tr;
      |                         ^~
../src/flecs/distr/flecs.c:8288:18: note:   crosses initialization of ‘ecs_table_t* table’
 8288 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8287:19: note:   crosses initialization of ‘ecs_record_t* r’
 8287 |     ecs_record_t *r = ref->record;
      |                   ^
../src/flecs/distr/flecs.c:8303:1: error: jump to label ‘error’
 8303 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8281:5: note: in expansion of macro ‘ecs_check’
 8281 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8293:25: note:   crosses initialization of ‘ecs_table_record_t* tr’
 8293 |     ecs_table_record_t *tr = ref->tr;
      |                         ^~
../src/flecs/distr/flecs.c:8288:18: note:   crosses initialization of ‘ecs_table_t* table’
 8288 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8287:19: note:   crosses initialization of ‘ecs_record_t* r’
 8287 |     ecs_record_t *r = ref->record;
      |                   ^
../src/flecs/distr/flecs.c: In function ‘void* ecs_ref_get_id(const ecs_world_t*, ecs_ref_t*, ecs_id_t)’:
../src/flecs/distr/flecs.c:8343:46: error: invalid conversion from ‘void*’ to ‘const ecs_sparse_t*’ [-fpermissive]
 8343 |             return flecs_sparse_get_any(idr->sparse, 0, ref->entity);
      |                                         ~~~~~^~~~~~
      |                                              |
      |                                              void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:1411:25: note:   initializing argument 1 of ‘void* flecs_sparse_get_any(const ecs_sparse_t*, ecs_size_t, uint64_t)’
 1411 |     const ecs_sparse_t *sparse,
      |     ~~~~~~~~~~~~~~~~~~~~^~~~~~
../src/flecs/distr/flecs.c:8347:1: error: jump to label ‘error’
 8347 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8326:5: note: in expansion of macro ‘ecs_check’
 8326 |     ecs_check(row < ecs_table_count(table), ECS_INTERNAL_ERROR, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8339:13: note:   crosses initialization of ‘int32_t column’
 8339 |     int32_t column = tr->column;
      |             ^~~~~~
../src/flecs/distr/flecs.c:8328:25: note:   crosses initialization of ‘ecs_table_record_t* tr’
 8328 |     ecs_table_record_t *tr = ref->tr;
      |                         ^~
../src/flecs/distr/flecs.c:8347:1: error: jump to label ‘error’
 8347 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8317:5: note: in expansion of macro ‘ecs_check’
 8317 |     ecs_check(id == ref->id, ECS_INVALID_PARAMETER, "ref not initialized");
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8339:13: note:   crosses initialization of ‘int32_t column’
 8339 |     int32_t column = tr->column;
      |             ^~~~~~
../src/flecs/distr/flecs.c:8328:25: note:   crosses initialization of ‘ecs_table_record_t* tr’
 8328 |     ecs_table_record_t *tr = ref->tr;
      |                         ^~
../src/flecs/distr/flecs.c:8325:13: note:   crosses initialization of ‘int32_t row’
 8325 |     int32_t row = ECS_RECORD_TO_ROW(r->row);
      |             ^~~
../src/flecs/distr/flecs.c:8320:18: note:   crosses initialization of ‘ecs_table_t* table’
 8320 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8319:19: note:   crosses initialization of ‘ecs_record_t* r’
 8319 |     ecs_record_t *r = ref->record;
      |                   ^
../src/flecs/distr/flecs.c:8347:1: error: jump to label ‘error’
 8347 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8316:5: note: in expansion of macro ‘ecs_check’
 8316 |     ecs_check(ref->record != NULL, ECS_INVALID_PARAMETER, "ref not initialized");
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8339:13: note:   crosses initialization of ‘int32_t column’
 8339 |     int32_t column = tr->column;
      |             ^~~~~~
../src/flecs/distr/flecs.c:8328:25: note:   crosses initialization of ‘ecs_table_record_t* tr’
 8328 |     ecs_table_record_t *tr = ref->tr;
      |                         ^~
../src/flecs/distr/flecs.c:8325:13: note:   crosses initialization of ‘int32_t row’
 8325 |     int32_t row = ECS_RECORD_TO_ROW(r->row);
      |             ^~~
../src/flecs/distr/flecs.c:8320:18: note:   crosses initialization of ‘ecs_table_t* table’
 8320 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8319:19: note:   crosses initialization of ‘ecs_record_t* r’
 8319 |     ecs_record_t *r = ref->record;
      |                   ^
../src/flecs/distr/flecs.c:8347:1: error: jump to label ‘error’
 8347 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8315:5: note: in expansion of macro ‘ecs_check’
 8315 |     ecs_check(ref->id != 0, ECS_INVALID_PARAMETER, "ref not initialized");
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8339:13: note:   crosses initialization of ‘int32_t column’
 8339 |     int32_t column = tr->column;
      |             ^~~~~~
../src/flecs/distr/flecs.c:8328:25: note:   crosses initialization of ‘ecs_table_record_t* tr’
 8328 |     ecs_table_record_t *tr = ref->tr;
      |                         ^~
../src/flecs/distr/flecs.c:8325:13: note:   crosses initialization of ‘int32_t row’
 8325 |     int32_t row = ECS_RECORD_TO_ROW(r->row);
      |             ^~~
../src/flecs/distr/flecs.c:8320:18: note:   crosses initialization of ‘ecs_table_t* table’
 8320 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8319:19: note:   crosses initialization of ‘ecs_record_t* r’
 8319 |     ecs_record_t *r = ref->record;
      |                   ^
../src/flecs/distr/flecs.c:8347:1: error: jump to label ‘error’
 8347 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8314:5: note: in expansion of macro ‘ecs_check’
 8314 |     ecs_check(ref->entity != 0, ECS_INVALID_PARAMETER, "ref not initialized");
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8339:13: note:   crosses initialization of ‘int32_t column’
 8339 |     int32_t column = tr->column;
      |             ^~~~~~
../src/flecs/distr/flecs.c:8328:25: note:   crosses initialization of ‘ecs_table_record_t* tr’
 8328 |     ecs_table_record_t *tr = ref->tr;
      |                         ^~
../src/flecs/distr/flecs.c:8325:13: note:   crosses initialization of ‘int32_t row’
 8325 |     int32_t row = ECS_RECORD_TO_ROW(r->row);
      |             ^~~
../src/flecs/distr/flecs.c:8320:18: note:   crosses initialization of ‘ecs_table_t* table’
 8320 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8319:19: note:   crosses initialization of ‘ecs_record_t* r’
 8319 |     ecs_record_t *r = ref->record;
      |                   ^
../src/flecs/distr/flecs.c:8347:1: error: jump to label ‘error’
 8347 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8313:5: note: in expansion of macro ‘ecs_check’
 8313 |     ecs_check(ref != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8339:13: note:   crosses initialization of ‘int32_t column’
 8339 |     int32_t column = tr->column;
      |             ^~~~~~
../src/flecs/distr/flecs.c:8328:25: note:   crosses initialization of ‘ecs_table_record_t* tr’
 8328 |     ecs_table_record_t *tr = ref->tr;
      |                         ^~
../src/flecs/distr/flecs.c:8325:13: note:   crosses initialization of ‘int32_t row’
 8325 |     int32_t row = ECS_RECORD_TO_ROW(r->row);
      |             ^~~
../src/flecs/distr/flecs.c:8320:18: note:   crosses initialization of ‘ecs_table_t* table’
 8320 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8319:19: note:   crosses initialization of ‘ecs_record_t* r’
 8319 |     ecs_record_t *r = ref->record;
      |                   ^
../src/flecs/distr/flecs.c:8347:1: error: jump to label ‘error’
 8347 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8312:5: note: in expansion of macro ‘ecs_check’
 8312 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8339:13: note:   crosses initialization of ‘int32_t column’
 8339 |     int32_t column = tr->column;
      |             ^~~~~~
../src/flecs/distr/flecs.c:8328:25: note:   crosses initialization of ‘ecs_table_record_t* tr’
 8328 |     ecs_table_record_t *tr = ref->tr;
      |                         ^~
../src/flecs/distr/flecs.c:8325:13: note:   crosses initialization of ‘int32_t row’
 8325 |     int32_t row = ECS_RECORD_TO_ROW(r->row);
      |             ^~~
../src/flecs/distr/flecs.c:8320:18: note:   crosses initialization of ‘ecs_table_t* table’
 8320 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8319:19: note:   crosses initialization of ‘ecs_record_t* r’
 8319 |     ecs_record_t *r = ref->record;
      |                   ^
../src/flecs/distr/flecs.c: In function ‘void* ecs_emplace_id(ecs_world_t*, ecs_entity_t, ecs_id_t, bool*)’:
../src/flecs/distr/flecs.c:8387:1: error: jump to label ‘error’
 8387 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8368:5: note: in expansion of macro ‘ecs_check’
 8368 |     ecs_check(is_new || !ecs_has_id(world, entity, id), ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8377:11: note:   crosses initialization of ‘void* ptr’
 8377 |     void *ptr = flecs_get_component(r->table, ECS_RECORD_TO_ROW(r->row), idr);
      |           ^~~
../src/flecs/distr/flecs.c:8376:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
 8376 |     ecs_id_record_t *idr = flecs_id_record_get(world, id);
      |                      ^~~
../src/flecs/distr/flecs.c:8372:18: note:   crosses initialization of ‘ecs_table_t* table’
 8372 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8371:19: note:   crosses initialization of ‘ecs_record_t* r’
 8371 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8387:1: error: jump to label ‘error’
 8387 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8359:5: note: in expansion of macro ‘ecs_check’
 8359 |     ecs_check(ecs_id_is_valid(world, id), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8377:11: note:   crosses initialization of ‘void* ptr’
 8377 |     void *ptr = flecs_get_component(r->table, ECS_RECORD_TO_ROW(r->row), idr);
      |           ^~~
../src/flecs/distr/flecs.c:8376:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
 8376 |     ecs_id_record_t *idr = flecs_id_record_get(world, id);
      |                      ^~~
../src/flecs/distr/flecs.c:8372:18: note:   crosses initialization of ‘ecs_table_t* table’
 8372 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8371:19: note:   crosses initialization of ‘ecs_record_t* r’
 8371 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8361:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 8361 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:8387:1: error: jump to label ‘error’
 8387 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8358:5: note: in expansion of macro ‘ecs_check’
 8358 |     ecs_check(ecs_is_alive(world, entity), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8377:11: note:   crosses initialization of ‘void* ptr’
 8377 |     void *ptr = flecs_get_component(r->table, ECS_RECORD_TO_ROW(r->row), idr);
      |           ^~~
../src/flecs/distr/flecs.c:8376:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
 8376 |     ecs_id_record_t *idr = flecs_id_record_get(world, id);
      |                      ^~~
../src/flecs/distr/flecs.c:8372:18: note:   crosses initialization of ‘ecs_table_t* table’
 8372 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8371:19: note:   crosses initialization of ‘ecs_record_t* r’
 8371 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8361:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 8361 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:8387:1: error: jump to label ‘error’
 8387 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8357:5: note: in expansion of macro ‘ecs_check’
 8357 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8377:11: note:   crosses initialization of ‘void* ptr’
 8377 |     void *ptr = flecs_get_component(r->table, ECS_RECORD_TO_ROW(r->row), idr);
      |           ^~~
../src/flecs/distr/flecs.c:8376:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
 8376 |     ecs_id_record_t *idr = flecs_id_record_get(world, id);
      |                      ^~~
../src/flecs/distr/flecs.c:8372:18: note:   crosses initialization of ‘ecs_table_t* table’
 8372 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8371:19: note:   crosses initialization of ‘ecs_record_t* r’
 8371 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8361:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 8361 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_modified_id_if(ecs_world_t*, ecs_entity_t, ecs_id_t, bool)’:
../src/flecs/distr/flecs.c:8420:1: error: jump to label ‘error’
 8420 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8400:5: note: in expansion of macro ‘ecs_check’
 8400 |     ecs_check(ecs_id_is_valid(world, id), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8415:16: note:   crosses initialization of ‘ecs_type_t ids’
 8415 |     ecs_type_t ids = { .array = &id, .count = 1 };
      |                ^~~
../src/flecs/distr/flecs.c:8409:18: note:   crosses initialization of ‘ecs_table_t* table’
 8409 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8408:19: note:   crosses initialization of ‘ecs_record_t* r’
 8408 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8402:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 8402 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:8420:1: error: jump to label ‘error’
 8420 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8399:5: note: in expansion of macro ‘ecs_check’
 8399 |     ecs_check(ecs_is_alive(world, entity), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8415:16: note:   crosses initialization of ‘ecs_type_t ids’
 8415 |     ecs_type_t ids = { .array = &id, .count = 1 };
      |                ^~~
../src/flecs/distr/flecs.c:8409:18: note:   crosses initialization of ‘ecs_table_t* table’
 8409 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8408:19: note:   crosses initialization of ‘ecs_record_t* r’
 8408 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8402:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 8402 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:8420:1: error: jump to label ‘error’
 8420 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8398:5: note: in expansion of macro ‘ecs_check’
 8398 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8415:16: note:   crosses initialization of ‘ecs_type_t ids’
 8415 |     ecs_type_t ids = { .array = &id, .count = 1 };
      |                ^~~
../src/flecs/distr/flecs.c:8409:18: note:   crosses initialization of ‘ecs_table_t* table’
 8409 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8408:19: note:   crosses initialization of ‘ecs_record_t* r’
 8408 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8402:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 8402 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘void ecs_modified_id(ecs_world_t*, ecs_entity_t, ecs_id_t)’:
../src/flecs/distr/flecs.c:8452:1: error: jump to label ‘error’
 8452 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8443:5: note: in expansion of macro ‘ecs_check’
 8443 |     ecs_check(ecs_has_id(world, entity, id), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8447:16: note:   crosses initialization of ‘ecs_type_t ids’
 8447 |     ecs_type_t ids = { .array = &id, .count = 1 };
      |                ^~~
../src/flecs/distr/flecs.c:8446:18: note:   crosses initialization of ‘ecs_table_t* table’
 8446 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8445:19: note:   crosses initialization of ‘ecs_record_t* r’
 8445 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8452:1: error: jump to label ‘error’
 8452 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8431:5: note: in expansion of macro ‘ecs_check’
 8431 |     ecs_check(ecs_id_is_valid(world, id), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8447:16: note:   crosses initialization of ‘ecs_type_t ids’
 8447 |     ecs_type_t ids = { .array = &id, .count = 1 };
      |                ^~~
../src/flecs/distr/flecs.c:8446:18: note:   crosses initialization of ‘ecs_table_t* table’
 8446 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8445:19: note:   crosses initialization of ‘ecs_record_t* r’
 8445 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8433:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 8433 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:8452:1: error: jump to label ‘error’
 8452 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8430:5: note: in expansion of macro ‘ecs_check’
 8430 |     ecs_check(ecs_is_alive(world, entity), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8447:16: note:   crosses initialization of ‘ecs_type_t ids’
 8447 |     ecs_type_t ids = { .array = &id, .count = 1 };
      |                ^~~
../src/flecs/distr/flecs.c:8446:18: note:   crosses initialization of ‘ecs_table_t* table’
 8446 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8445:19: note:   crosses initialization of ‘ecs_record_t* r’
 8445 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8433:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 8433 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:8452:1: error: jump to label ‘error’
 8452 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8429:5: note: in expansion of macro ‘ecs_check’
 8429 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8447:16: note:   crosses initialization of ‘ecs_type_t ids’
 8447 |     ecs_type_t ids = { .array = &id, .count = 1 };
      |                ^~~
../src/flecs/distr/flecs.c:8446:18: note:   crosses initialization of ‘ecs_table_t* table’
 8446 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8445:19: note:   crosses initialization of ‘ecs_record_t* r’
 8445 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8433:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 8433 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_set_id_move(ecs_world_t*, ecs_stage_t*, ecs_entity_t, ecs_id_t, size_t, void*, ecs_cmd_kind_t)’:
../src/flecs/distr/flecs.c:8526:1: error: jump to label ‘error’
 8526 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8497:5: note: in expansion of macro ‘ecs_check’
 8497 |     ecs_check(dst.ptr != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8499:28: note:   crosses initialization of ‘const ecs_type_info_t* ti’
 8499 |     const ecs_type_info_t *ti = dst.ti;
      |                            ^~
../src/flecs/distr/flecs.c: In function ‘void ecs_set_id(ecs_world_t*, ecs_entity_t, ecs_id_t, size_t, const void*)’:
../src/flecs/distr/flecs.c:8546:1: error: jump to label ‘error’
 8546 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8539:5: note: in expansion of macro ‘ecs_check’
 8539 |     ecs_check(ecs_id_is_valid(world, id), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8541:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 8541 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:8546:1: error: jump to label ‘error’
 8546 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8538:5: note: in expansion of macro ‘ecs_check’
 8538 |     ecs_check(ecs_is_alive(world, entity), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8541:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 8541 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:8546:1: error: jump to label ‘error’
 8546 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8537:5: note: in expansion of macro ‘ecs_check’
 8537 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8541:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 8541 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘void ecs_enable_id(ecs_world_t*, ecs_entity_t, ecs_id_t, bool)’:
../src/flecs/distr/flecs.c:8610:1: error: jump to label ‘error’
 8610 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8576:5: note: in expansion of macro ‘ecs_check’
 8576 |     ecs_check(flecs_can_toggle(world, id), ECS_INVALID_OPERATION,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8604:19: note:   crosses initialization of ‘ecs_bitset_t* bs’
 8604 |     ecs_bitset_t *bs = &table->_->bs_columns[index];
      |                   ^~
../src/flecs/distr/flecs.c:8587:13: note:   crosses initialization of ‘int32_t index’
 8587 |     int32_t index = -1;
      |             ^~~~~
../src/flecs/distr/flecs.c:8586:18: note:   crosses initialization of ‘ecs_table_t* table’
 8586 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8584:18: note:   crosses initialization of ‘ecs_entity_t bs_id’
 8584 |     ecs_entity_t bs_id = id | ECS_TOGGLE;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8583:19: note:   crosses initialization of ‘ecs_record_t* r’
 8583 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8610:1: error: jump to label ‘error’
 8610 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8575:5: note: in expansion of macro ‘ecs_check’
 8575 |     ecs_check(ecs_id_is_valid(world, id), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8604:19: note:   crosses initialization of ‘ecs_bitset_t* bs’
 8604 |     ecs_bitset_t *bs = &table->_->bs_columns[index];
      |                   ^~
../src/flecs/distr/flecs.c:8587:13: note:   crosses initialization of ‘int32_t index’
 8587 |     int32_t index = -1;
      |             ^~~~~
../src/flecs/distr/flecs.c:8586:18: note:   crosses initialization of ‘ecs_table_t* table’
 8586 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8584:18: note:   crosses initialization of ‘ecs_entity_t bs_id’
 8584 |     ecs_entity_t bs_id = id | ECS_TOGGLE;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8583:19: note:   crosses initialization of ‘ecs_record_t* r’
 8583 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8610:1: error: jump to label ‘error’
 8610 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8574:5: note: in expansion of macro ‘ecs_check’
 8574 |     ecs_check(ecs_is_valid(world, entity), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8604:19: note:   crosses initialization of ‘ecs_bitset_t* bs’
 8604 |     ecs_bitset_t *bs = &table->_->bs_columns[index];
      |                   ^~
../src/flecs/distr/flecs.c:8587:13: note:   crosses initialization of ‘int32_t index’
 8587 |     int32_t index = -1;
      |             ^~~~~
../src/flecs/distr/flecs.c:8586:18: note:   crosses initialization of ‘ecs_table_t* table’
 8586 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8584:18: note:   crosses initialization of ‘ecs_entity_t bs_id’
 8584 |     ecs_entity_t bs_id = id | ECS_TOGGLE;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8583:19: note:   crosses initialization of ‘ecs_record_t* r’
 8583 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8610:1: error: jump to label ‘error’
 8610 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8571:5: note: in expansion of macro ‘ecs_check’
 8571 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8604:19: note:   crosses initialization of ‘ecs_bitset_t* bs’
 8604 |     ecs_bitset_t *bs = &table->_->bs_columns[index];
      |                   ^~
../src/flecs/distr/flecs.c:8587:13: note:   crosses initialization of ‘int32_t index’
 8587 |     int32_t index = -1;
      |             ^~~~~
../src/flecs/distr/flecs.c:8586:18: note:   crosses initialization of ‘ecs_table_t* table’
 8586 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8584:18: note:   crosses initialization of ‘ecs_entity_t bs_id’
 8584 |     ecs_entity_t bs_id = id | ECS_TOGGLE;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8583:19: note:   crosses initialization of ‘ecs_record_t* r’
 8583 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8572:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 8572 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘bool ecs_is_enabled_id(const ecs_world_t*, ecs_entity_t, ecs_id_t)’:
../src/flecs/distr/flecs.c:8647:1: error: jump to label ‘error’
 8647 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8621:5: note: in expansion of macro ‘ecs_check’
 8621 |     ecs_check(ecs_id_is_valid(world, id), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8644:19: note:   crosses initialization of ‘ecs_bitset_t* bs’
 8644 |     ecs_bitset_t *bs = &table->_->bs_columns[index];
      |                   ^~
../src/flecs/distr/flecs.c:8634:13: note:   crosses initialization of ‘int32_t index’
 8634 |     int32_t index = ecs_table_get_type_index(world, table, bs_id);
      |             ^~~~~
../src/flecs/distr/flecs.c:8633:18: note:   crosses initialization of ‘ecs_entity_t bs_id’
 8633 |     ecs_entity_t bs_id = id | ECS_TOGGLE;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8628:18: note:   crosses initialization of ‘ecs_table_t* table’
 8628 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8626:19: note:   crosses initialization of ‘ecs_record_t* r’
 8626 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8647:1: error: jump to label ‘error’
 8647 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8620:5: note: in expansion of macro ‘ecs_check’
 8620 |     ecs_check(ecs_is_alive(world, entity), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8644:19: note:   crosses initialization of ‘ecs_bitset_t* bs’
 8644 |     ecs_bitset_t *bs = &table->_->bs_columns[index];
      |                   ^~
../src/flecs/distr/flecs.c:8634:13: note:   crosses initialization of ‘int32_t index’
 8634 |     int32_t index = ecs_table_get_type_index(world, table, bs_id);
      |             ^~~~~
../src/flecs/distr/flecs.c:8633:18: note:   crosses initialization of ‘ecs_entity_t bs_id’
 8633 |     ecs_entity_t bs_id = id | ECS_TOGGLE;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8628:18: note:   crosses initialization of ‘ecs_table_t* table’
 8628 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8626:19: note:   crosses initialization of ‘ecs_record_t* r’
 8626 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8647:1: error: jump to label ‘error’
 8647 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8619:5: note: in expansion of macro ‘ecs_check’
 8619 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8644:19: note:   crosses initialization of ‘ecs_bitset_t* bs’
 8644 |     ecs_bitset_t *bs = &table->_->bs_columns[index];
      |                   ^~
../src/flecs/distr/flecs.c:8634:13: note:   crosses initialization of ‘int32_t index’
 8634 |     int32_t index = ecs_table_get_type_index(world, table, bs_id);
      |             ^~~~~
../src/flecs/distr/flecs.c:8633:18: note:   crosses initialization of ‘ecs_entity_t bs_id’
 8633 |     ecs_entity_t bs_id = id | ECS_TOGGLE;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8628:18: note:   crosses initialization of ‘ecs_table_t* table’
 8628 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8626:19: note:   crosses initialization of ‘ecs_record_t* r’
 8626 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c: In function ‘bool ecs_has_id(const ecs_world_t*, ecs_entity_t, ecs_id_t)’:
../src/flecs/distr/flecs.c:8692:52: error: invalid conversion from ‘void*’ to ‘const ecs_switch_t*’ [-fpermissive]
 8692 |             uint64_t cur = flecs_switch_get(u_idr->sparse, (uint32_t)entity);
      |                                             ~~~~~~~^~~~~~
      |                                                    |
      |                                                    void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:1925:25: note:   initializing argument 1 of ‘uint64_t flecs_switch_get(const ecs_switch_t*, uint32_t)’
 1925 |     const ecs_switch_t *sw,
      |     ~~~~~~~~~~~~~~~~~~~~^~
../src/flecs/distr/flecs.c:8705:1: error: jump to label ‘error’
 8705 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8658:5: note: in expansion of macro ‘ecs_check’
 8658 |     ecs_check(id != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8698:13: note:   crosses initialization of ‘int32_t column’
 8698 |     int32_t column = ecs_search_relation(world, table, 0, id,
      |             ^~~~~~
../src/flecs/distr/flecs.c:8665:18: note:   crosses initialization of ‘ecs_table_t* table’
 8665 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8663:19: note:   crosses initialization of ‘ecs_record_t* r’
 8663 |     ecs_record_t *r = flecs_entities_get_any(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8705:1: error: jump to label ‘error’
 8705 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8657:5: note: in expansion of macro ‘ecs_check’
 8657 |     ecs_check(ecs_is_alive(world, entity), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8698:13: note:   crosses initialization of ‘int32_t column’
 8698 |     int32_t column = ecs_search_relation(world, table, 0, id,
      |             ^~~~~~
../src/flecs/distr/flecs.c:8665:18: note:   crosses initialization of ‘ecs_table_t* table’
 8665 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8663:19: note:   crosses initialization of ‘ecs_record_t* r’
 8663 |     ecs_record_t *r = flecs_entities_get_any(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8705:1: error: jump to label ‘error’
 8705 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8656:5: note: in expansion of macro ‘ecs_check’
 8656 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8698:13: note:   crosses initialization of ‘int32_t column’
 8698 |     int32_t column = ecs_search_relation(world, table, 0, id,
      |             ^~~~~~
../src/flecs/distr/flecs.c:8665:18: note:   crosses initialization of ‘ecs_table_t* table’
 8665 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8663:19: note:   crosses initialization of ‘ecs_record_t* r’
 8663 |     ecs_record_t *r = flecs_entities_get_any(world, entity);
      |                   ^
../src/flecs/distr/flecs.c: In function ‘bool ecs_owns_id(const ecs_world_t*, ecs_entity_t, ecs_id_t)’:
../src/flecs/distr/flecs.c:8740:1: error: jump to label ‘error’
 8740 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8716:5: note: in expansion of macro ‘ecs_check’
 8716 |     ecs_check(id != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8723:18: note:   crosses initialization of ‘ecs_table_t* table’
 8723 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8721:19: note:   crosses initialization of ‘ecs_record_t* r’
 8721 |     ecs_record_t *r = flecs_entities_get_any(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8740:1: error: jump to label ‘error’
 8740 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8715:5: note: in expansion of macro ‘ecs_check’
 8715 |     ecs_check(ecs_is_alive(world, entity), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8723:18: note:   crosses initialization of ‘ecs_table_t* table’
 8723 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8721:19: note:   crosses initialization of ‘ecs_record_t* r’
 8721 |     ecs_record_t *r = flecs_entities_get_any(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8740:1: error: jump to label ‘error’
 8740 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8714:5: note: in expansion of macro ‘ecs_check’
 8714 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8723:18: note:   crosses initialization of ‘ecs_table_t* table’
 8723 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8721:19: note:   crosses initialization of ‘ecs_record_t* r’
 8721 |     ecs_record_t *r = flecs_entities_get_any(world, entity);
      |                   ^
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_get_target(const ecs_world_t*, ecs_entity_t, ecs_entity_t, int32_t)’:
../src/flecs/distr/flecs.c:8789:43: error: invalid conversion from ‘void*’ to ‘const ecs_switch_t*’ [-fpermissive]
 8789 |         result = flecs_switch_get(wc_idr->sparse, (uint32_t)entity);
      |                                   ~~~~~~~~^~~~~~
      |                                           |
      |                                           void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:1925:25: note:   initializing argument 1 of ‘uint64_t flecs_switch_get(const ecs_switch_t*, uint32_t)’
 1925 |     const ecs_switch_t *sw,
      |     ~~~~~~~~~~~~~~~~~~~~^~
../src/flecs/distr/flecs.c:8793:1: error: jump to label ‘look_in_base’
 8793 | look_in_base:
      | ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:8779:14: note:   from here
 8779 |         goto look_in_base;
      |              ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:8782:18: note:   crosses initialization of ‘ecs_entity_t result’
 8782 |     ecs_entity_t result =
      |                  ^~~~~~
../src/flecs/distr/flecs.c:8793:1: error: jump to label ‘look_in_base’
 8793 | look_in_base:
      | ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:8771:18: note:   from here
 8771 |             goto look_in_base;
      |                  ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:8782:18: note:   crosses initialization of ‘ecs_entity_t result’
 8782 |     ecs_entity_t result =
      |                  ^~~~~~
../src/flecs/distr/flecs.c:8812:1: error: jump to label ‘not_found’
 8812 | not_found:
      | ^~~~~~~~~
../src/flecs/distr/flecs.c:8760:14: note:   from here
 8760 |         goto not_found;
      |              ^~~~~~~~~
../src/flecs/distr/flecs.c:8782:18: note:   crosses initialization of ‘ecs_entity_t result’
 8782 |     ecs_entity_t result =
      |                  ^~~~~~
../src/flecs/distr/flecs.c:8765:31: note:   crosses initialization of ‘const ecs_table_record_t* tr’
 8765 |     const ecs_table_record_t *tr = NULL;
      |                               ^~
../src/flecs/distr/flecs.c:8764:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
 8764 |     ecs_id_record_t *idr = flecs_id_record_get(world, wc);
      |                      ^~~
../src/flecs/distr/flecs.c:8763:14: note:   crosses initialization of ‘ecs_id_t wc’
 8763 |     ecs_id_t wc = ecs_pair(rel, EcsWildcard);
      |              ^~
../src/flecs/distr/flecs.c:8813:1: error: jump to label ‘error’
 8813 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8752:5: note: in expansion of macro ‘ecs_check’
 8752 |     ecs_check(rel != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8782:18: note:   crosses initialization of ‘ecs_entity_t result’
 8782 |     ecs_entity_t result =
      |                  ^~~~~~
../src/flecs/distr/flecs.c:8765:31: note:   crosses initialization of ‘const ecs_table_record_t* tr’
 8765 |     const ecs_table_record_t *tr = NULL;
      |                               ^~
../src/flecs/distr/flecs.c:8764:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
 8764 |     ecs_id_record_t *idr = flecs_id_record_get(world, wc);
      |                      ^~~
../src/flecs/distr/flecs.c:8763:14: note:   crosses initialization of ‘ecs_id_t wc’
 8763 |     ecs_id_t wc = ecs_pair(rel, EcsWildcard);
      |              ^~
../src/flecs/distr/flecs.c:8758:18: note:   crosses initialization of ‘ecs_table_t* table’
 8758 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8756:19: note:   crosses initialization of ‘ecs_record_t* r’
 8756 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8813:1: error: jump to label ‘error’
 8813 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8751:5: note: in expansion of macro ‘ecs_check’
 8751 |     ecs_check(ecs_is_alive(world, entity), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8782:18: note:   crosses initialization of ‘ecs_entity_t result’
 8782 |     ecs_entity_t result =
      |                  ^~~~~~
../src/flecs/distr/flecs.c:8765:31: note:   crosses initialization of ‘const ecs_table_record_t* tr’
 8765 |     const ecs_table_record_t *tr = NULL;
      |                               ^~
../src/flecs/distr/flecs.c:8764:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
 8764 |     ecs_id_record_t *idr = flecs_id_record_get(world, wc);
      |                      ^~~
../src/flecs/distr/flecs.c:8763:14: note:   crosses initialization of ‘ecs_id_t wc’
 8763 |     ecs_id_t wc = ecs_pair(rel, EcsWildcard);
      |              ^~
../src/flecs/distr/flecs.c:8758:18: note:   crosses initialization of ‘ecs_table_t* table’
 8758 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8756:19: note:   crosses initialization of ‘ecs_record_t* r’
 8756 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:8813:1: error: jump to label ‘error’
 8813 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8750:5: note: in expansion of macro ‘ecs_check’
 8750 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8782:18: note:   crosses initialization of ‘ecs_entity_t result’
 8782 |     ecs_entity_t result =
      |                  ^~~~~~
../src/flecs/distr/flecs.c:8765:31: note:   crosses initialization of ‘const ecs_table_record_t* tr’
 8765 |     const ecs_table_record_t *tr = NULL;
      |                               ^~
../src/flecs/distr/flecs.c:8764:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
 8764 |     ecs_id_record_t *idr = flecs_id_record_get(world, wc);
      |                      ^~~
../src/flecs/distr/flecs.c:8763:14: note:   crosses initialization of ‘ecs_id_t wc’
 8763 |     ecs_id_t wc = ecs_pair(rel, EcsWildcard);
      |              ^~
../src/flecs/distr/flecs.c:8758:18: note:   crosses initialization of ‘ecs_table_t* table’
 8758 |     ecs_table_t *table = r->table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:8756:19: note:   crosses initialization of ‘ecs_record_t* r’
 8756 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_get_target_for_id(const ecs_world_t*, ecs_entity_t, ecs_entity_t, ecs_id_t)’:
../src/flecs/distr/flecs.c:8875:1: error: jump to label ‘error’
 8875 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8831:5: note: in expansion of macro ‘ecs_check’
 8831 |     ecs_check(ecs_is_alive(world, entity), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8840:18: note:   crosses initialization of ‘ecs_entity_t subject’
 8840 |     ecs_entity_t subject = 0;
      |                  ^~~~~~~
../src/flecs/distr/flecs.c:8839:18: note:   crosses initialization of ‘ecs_table_t* table’
 8839 |     ecs_table_t *table = ecs_get_table(world, entity);
      |                  ^~~~~
../src/flecs/distr/flecs.c:8875:1: error: jump to label ‘error’
 8875 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8830:5: note: in expansion of macro ‘ecs_check’
 8830 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8840:18: note:   crosses initialization of ‘ecs_entity_t subject’
 8840 |     ecs_entity_t subject = 0;
      |                  ^~~~~~~
../src/flecs/distr/flecs.c:8839:18: note:   crosses initialization of ‘ecs_table_t* table’
 8839 |     ecs_table_t *table = ecs_get_table(world, entity);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘int32_t ecs_get_depth(const ecs_world_t*, ecs_entity_t, ecs_entity_t)’:
../src/flecs/distr/flecs.c:8895:1: error: jump to label ‘error’
 8895 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8885:5: note: in expansion of macro ‘ecs_check’
 8885 |     ecs_check(ecs_has_id(world, rel, EcsAcyclic), ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8889:18: note:   crosses initialization of ‘ecs_table_t* table’
 8889 |     ecs_table_t *table = ecs_get_table(world, entity);
      |                  ^~~~~
../src/flecs/distr/flecs.c:8895:1: error: jump to label ‘error’
 8895 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8884:5: note: in expansion of macro ‘ecs_check’
 8884 |     ecs_check(ecs_is_valid(world, rel), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8889:18: note:   crosses initialization of ‘ecs_table_t* table’
 8889 |     ecs_table_t *table = ecs_get_table(world, entity);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘const char* flecs_get_identifier(const ecs_world_t*, ecs_entity_t, ecs_entity_t)’:
../src/flecs/distr/flecs.c:8916:1: error: jump to label ‘error’
 8916 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8906:5: note: in expansion of macro ‘ecs_check’
 8906 |     ecs_check(ecs_is_alive(world, entity), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8908:26: note:   crosses initialization of ‘const EcsIdentifier* ptr’
 8908 |     const EcsIdentifier *ptr = ecs_get_pair(
      |                          ^~~
../src/flecs/distr/flecs.c:8916:1: error: jump to label ‘error’
 8916 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8905:5: note: in expansion of macro ‘ecs_check’
 8905 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8908:26: note:   crosses initialization of ‘const EcsIdentifier* ptr’
 8908 |     const EcsIdentifier *ptr = ecs_get_pair(
      |                          ^~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t flecs_set_identifier(ecs_world_t*, ecs_stage_t*, ecs_entity_t, ecs_entity_t, const char*)’:
../src/flecs/distr/flecs.c:8974:1: error: jump to label ‘error’
 8974 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8948:5: note: in expansion of macro ‘ecs_check’
 8948 |     ecs_check(entity != 0 || name != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8959:20: note:   crosses initialization of ‘EcsIdentifier* ptr’
 8959 |     EcsIdentifier *ptr = ecs_ensure_pair(world, entity, EcsIdentifier, tag);
      |                    ^~~
../src/flecs/distr/flecs.c:8974:1: error: jump to label ‘error’
 8974 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:8947:5: note: in expansion of macro ‘ecs_check’
 8947 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:8959:20: note:   crosses initialization of ‘EcsIdentifier* ptr’
 8959 |     EcsIdentifier *ptr = ecs_ensure_pair(world, entity, EcsIdentifier, tag);
      |                    ^~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_set_name(ecs_world_t*, ecs_entity_t, const char*)’:
../src/flecs/distr/flecs.c:8984:34: error: taking address of rvalue [-fpermissive]
 8984 |         return ecs_entity(world, {
      |                                  ^
 8985 |             .name = name
      |             ~~~~~~~~~~~~          
 8986 |         });
      |         ~                         
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_get_alive(const ecs_world_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.c:9101:1: error: jump to label ‘error’
 9101 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:9076:5: note: in expansion of macro ‘ecs_check’
 9076 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:9095:18: note:   crosses initialization of ‘ecs_entity_t current’
 9095 |     ecs_entity_t current = flecs_entities_get_alive(world, entity);
      |                  ^~~~~~~
../src/flecs/distr/flecs.c: In function ‘void ecs_make_alive(ecs_world_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.c:9145:1: error: jump to label ‘error’
 9145 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:9110:5: note: in expansion of macro ‘ecs_check’
 9110 |     ecs_check(entity != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:9122:18: note:   crosses initialization of ‘ecs_entity_t any’
 9122 |     ecs_entity_t any = ecs_get_alive(world, (uint32_t)entity);
      |                  ^~~
../src/flecs/distr/flecs.c: In function ‘ecs_table_t* ecs_get_table(const ecs_world_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.c:9224:1: error: jump to label ‘error’
 9224 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:9217:5: note: in expansion of macro ‘ecs_check’
 9217 |     ecs_check(ecs_is_valid(world, entity), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:9221:19: note:   crosses initialization of ‘ecs_record_t* record’
 9221 |     ecs_record_t *record = flecs_entities_get(world, entity);
      |                   ^~~~~~
../src/flecs/distr/flecs.c:9224:1: error: jump to label ‘error’
 9224 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:9216:5: note: in expansion of macro ‘ecs_check’
 9216 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:9221:19: note:   crosses initialization of ‘ecs_record_t* record’
 9221 |     ecs_record_t *record = flecs_entities_get(world, entity);
      |                   ^~~~~~
../src/flecs/distr/flecs.c: In function ‘const ecs_type_info_t* ecs_get_type_info(const ecs_world_t*, ecs_id_t)’:
../src/flecs/distr/flecs.c:9273:1: error: jump to label ‘error’
 9273 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:9245:5: note: in expansion of macro ‘ecs_check’
 9245 |     ecs_check(id != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:9249:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
 9249 |     ecs_id_record_t *idr = flecs_id_record_get(world, id);
      |                      ^~~
../src/flecs/distr/flecs.c:9273:1: error: jump to label ‘error’
 9273 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:9244:5: note: in expansion of macro ‘ecs_check’
 9244 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:9249:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
 9249 |     ecs_id_record_t *idr = flecs_id_record_get(world, id);
      |                      ^~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_get_typeid(const ecs_world_t*, ecs_id_t)’:
../src/flecs/distr/flecs.c:9287:1: error: jump to label ‘error’
 9287 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:9281:5: note: in expansion of macro ‘ecs_check’
 9281 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:9282:28: note:   crosses initialization of ‘const ecs_type_info_t* ti’
 9282 |     const ecs_type_info_t *ti = ecs_get_type_info(world, id);
      |                            ^~
../src/flecs/distr/flecs.c: In function ‘int32_t ecs_count_id(const ecs_world_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.c:9345:1: error: jump to label ‘error’
 9345 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:9332:5: note: in expansion of macro ‘ecs_check’
 9332 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:9339:16: note:   crosses initialization of ‘ecs_iter_t it’
 9339 |     ecs_iter_t it = ecs_each_id(world, id);
      |                ^~
../src/flecs/distr/flecs.c:9338:13: note:   crosses initialization of ‘int32_t count’
 9338 |     int32_t count = 0;
      |             ^~~~~
../src/flecs/distr/flecs.c: In function ‘bool ecs_defer_begin(ecs_world_t*)’:
../src/flecs/distr/flecs.c:9381:1: error: jump to label ‘error’
 9381 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:9378:5: note: in expansion of macro ‘ecs_check’
 9378 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:9379:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 9379 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘bool ecs_defer_end(ecs_world_t*)’:
../src/flecs/distr/flecs.c:9391:1: error: jump to label ‘error’
 9391 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:9388:5: note: in expansion of macro ‘ecs_check’
 9388 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:9389:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 9389 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘void ecs_defer_suspend(ecs_world_t*)’:
../src/flecs/distr/flecs.c:9405:1: error: jump to label ‘error’
 9405 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:9399:5: note: in expansion of macro ‘ecs_check’
 9399 |     ecs_check(ecs_is_deferred(world), ECS_INVALID_OPERATION,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:9401:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 9401 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:9405:1: error: jump to label ‘error’
 9405 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:9398:5: note: in expansion of macro ‘ecs_check’
 9398 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:9401:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 9401 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘void ecs_defer_resume(ecs_world_t*)’:
../src/flecs/distr/flecs.c:9417:1: error: jump to label ‘error’
 9417 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:9412:5: note: in expansion of macro ‘ecs_check’
 9412 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:9413:18: note:   crosses initialization of ‘ecs_stage_t* stage’
 9413 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘char* ecs_entity_str(const ecs_world_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.c:9557:1: error: jump to label ‘error’
 9557 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:9545:5: note: in expansion of macro ‘ecs_check’
 9545 |     ecs_check(ecs_is_alive(world, entity), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:9550:23: note:   crosses initialization of ‘const ecs_type_t* type’
 9550 |     const ecs_type_t *type = ecs_get_type(world, entity);
      |                       ^~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_discard_cmd(ecs_world_t*, ecs_cmd_t*)’:
../src/flecs/distr/flecs.c:9627:48: error: invalid conversion from ‘void*’ to ‘ecs_event_desc_t*’ [-fpermissive]
 9627 |         flecs_free_cmd_event(world, cmd->is._1.value);
      |                                     ~~~~~~~~~~~^~~~~
      |                                                |
      |                                                void*
../src/flecs/distr/flecs.c:9602:23: note:   initializing argument 2 of ‘void flecs_free_cmd_event(ecs_world_t*, ecs_event_desc_t*)’
 9602 |     ecs_event_desc_t *desc)
      |     ~~~~~~~~~~~~~~~~~~^~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_cmd_batch_for_entity(ecs_world_t*, ecs_table_diff_builder_t*, ecs_entity_t, ecs_cmd_t*, int32_t)’:
../src/flecs/distr/flecs.c:9842:41: error: invalid conversion from ‘void*’ to ‘ecs_id_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 9842 |             ecs_id_t *ids = diff->added.array;
      |                             ~~~~~~~~~~~~^~~~~
      |                                         |
      |                                         void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:1233:17: error: invalid conversion from ‘void*’ to ‘ecs_id_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 1233 |     ecs_vec_grow(allocator, vec, ECS_SIZEOF(T), elem_count)
      |     ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                 |
      |                 void*
../src/flecs/distr/flecs.c:9878:33: note: in expansion of macro ‘ecs_vec_grow_t’
 9878 |                 ecs_id_t *ids = ecs_vec_grow_t(&world->allocator,
      |                                 ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:9910:38: error: invalid conversion from ‘void*’ to ‘ecs_id_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 9910 |     ecs_type_t added = { diff->added.array, diff->added.count };
      |                          ~~~~~~~~~~~~^~~~~
      |                                      |
      |                                      void*
../src/flecs/distr/flecs.c: In function ‘bool flecs_defer_end(ecs_world_t*, ecs_stage_t*)’:
../src/flecs/distr/flecs.c:10068:44: error: invalid conversion from ‘void*’ to ‘ecs_cmd_t*’ [-fpermissive]
10068 |             ecs_cmd_t *cmds = ecs_vec_first(queue);
      |                               ~~~~~~~~~~~~~^~~~~~~
      |                                            |
      |                                            void*
../src/flecs/distr/flecs.c:10207:59: error: invalid conversion from ‘void*’ to ‘const char*’ [-fpermissive]
10207 |                         ecs_set_name(world, e, cmd->is._1.value);
      |                                                ~~~~~~~~~~~^~~~~
      |                                                           |
      |                                                           void*
../src/flecs/distr/flecs.c:8981:17: note:   initializing argument 3 of ‘ecs_entity_t ecs_set_name(ecs_world_t*, ecs_entity_t, const char*)’
 8981 |     const char *name)
      |     ~~~~~~~~~~~~^~~~
../src/flecs/distr/flecs.c:10215:57: error: invalid conversion from ‘void*’ to ‘ecs_event_desc_t*’ [-fpermissive]
10215 |                     ecs_event_desc_t *desc = cmd->is._1.value;
      |                                              ~~~~~~~~~~~^~~~~
      |                                                         |
      |                                                         void*
../src/flecs/distr/flecs.c: In function ‘bool flecs_defer_purge(ecs_world_t*, ecs_stage_t*)’:
../src/flecs/distr/flecs.c:10264:44: error: invalid conversion from ‘void*’ to ‘ecs_cmd_t*’ [-fpermissive]
10264 |             ecs_cmd_t *cmds = ecs_vec_first(&commands);
      |                               ~~~~~~~~~~~~~^~~~~~~~~~~
      |                                            |
      |                                            void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘const char* flecs_path_elem(const char*, const char*, char**, ecs_size_t*)’:
../src/flecs/distr/flecs.h:2607:47: error: invalid conversion from ‘void*’ to ‘char*’ [-fpermissive]
 2607 | #define ecs_os_malloc(size) ecs_os_api.malloc_(size)
      |                             ~~~~~~~~~~~~~~~~~~^~~~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c:10475:40: note: in expansion of macro ‘ecs_os_malloc’
10475 |                     char *new_buffer = ecs_os_malloc(size * 2 + 1);
      |                                        ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2613:54: error: invalid conversion from ‘void*’ to ‘char*’ [-fpermissive]
 2613 | #define ecs_os_realloc(ptr, size) ecs_os_api.realloc_(ptr, size)
      |                                   ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
      |                                                      |
      |                                                      void*
../src/flecs/distr/flecs.c:10479:30: note: in expansion of macro ‘ecs_os_realloc’
10479 |                     buffer = ecs_os_realloc(buffer, size * 2 + 1);
      |                              ^~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_bootstrap_hierarchy(ecs_world_t*)’:
../src/flecs/distr/flecs.c:10577:37: error: taking address of rvalue [-fpermissive]
10577 |         .entity = ecs_entity(world, { .parent = EcsFlecsInternals }),
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:53: note: in definition of macro ‘ecs_observer’
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                     ^~~~~~~~~~~
../src/flecs/distr/flecs.c:10577:19: note: in expansion of macro ‘ecs_entity’
10577 |         .entity = ecs_entity(world, { .parent = EcsFlecsInternals }),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:10576:5: note: in expansion of macro ‘ecs_observer’
10576 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_lookup_child(const ecs_world_t*, ecs_entity_t, const char*)’:
../src/flecs/distr/flecs.c:10663:1: error: jump to label ‘error’
10663 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:10643:5: note: in expansion of macro ‘ecs_check’
10643 |     ecs_check(world != NULL, ECS_INTERNAL_ERROR, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:10657:20: note:   crosses initialization of ‘ecs_hashmap_t* index’
10657 |     ecs_hashmap_t *index = flecs_id_name_index_get(world, pair);
      |                    ^~~~~
../src/flecs/distr/flecs.c:10656:14: note:   crosses initialization of ‘ecs_id_t pair’
10656 |     ecs_id_t pair = ecs_childof(parent);
      |              ^~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_lookup_symbol(const ecs_world_t*, const char*, bool, bool)’:
../src/flecs/distr/flecs.c:10697:1: error: jump to label ‘error’
10697 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:10684:5: note: in expansion of macro ‘ecs_check’
10684 |     ecs_check(world != NULL, ECS_INTERNAL_ERROR, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:10687:18: note:   crosses initialization of ‘ecs_entity_t e’
10687 |     ecs_entity_t e = 0;
      |                  ^
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_lookup_path_w_sep(const ecs_world_t*, ecs_entity_t, const char*, const char*, const char*, bool)’:
../src/flecs/distr/flecs.c:10794:1: error: jump to label ‘error’
10794 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:10713:5: note: in expansion of macro ‘ecs_check’
10713 |     ecs_check(world != NULL, ECS_INTERNAL_ERROR, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:10734:25: note:   crosses initialization of ‘const ecs_entity_t* lookup_path_cur’
10734 |     const ecs_entity_t *lookup_path_cur = lookup_path;
      |                         ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:10733:25: note:   crosses initialization of ‘const ecs_entity_t* lookup_path’
10733 |     const ecs_entity_t *lookup_path = ecs_get_lookup_path(stage);
      |                         ^~~~~~~~~~~
../src/flecs/distr/flecs.c:10731:10: note:   crosses initialization of ‘bool lookup_path_search’
10731 |     bool lookup_path_search = false;
      |          ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:10729:13: note:   crosses initialization of ‘int32_t size’
10729 |     int32_t size = ECS_NAME_BUFFER_LENGTH;
      |             ^~~~
../src/flecs/distr/flecs.c:10727:41: note:   crosses initialization of ‘char* elem’
10727 |     char buff[ECS_NAME_BUFFER_LENGTH], *elem = buff;
      |                                         ^~~~
../src/flecs/distr/flecs.c:10717:18: note:   crosses initialization of ‘ecs_entity_t e’
10717 |     ecs_entity_t e = flecs_get_builtin(path);
      |                  ^
../src/flecs/distr/flecs.c:10714:24: note:   crosses initialization of ‘const ecs_world_t* stage’
10714 |     const ecs_world_t *stage = world;
      |                        ^~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_set_scope(ecs_world_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.c:10809:1: error: jump to label ‘error’
10809 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:10802:5: note: in expansion of macro ‘ecs_check’
10802 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:10805:18: note:   crosses initialization of ‘ecs_entity_t cur’
10805 |     ecs_entity_t cur = stage->scope;
      |                  ^~~
../src/flecs/distr/flecs.c:10803:18: note:   crosses initialization of ‘ecs_stage_t* stage’
10803 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_get_scope(const ecs_world_t*)’:
../src/flecs/distr/flecs.c:10819:1: error: jump to label ‘error’
10819 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:10816:5: note: in expansion of macro ‘ecs_check’
10816 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:10817:24: note:   crosses initialization of ‘const ecs_stage_t* stage’
10817 |     const ecs_stage_t *stage = flecs_stage_from_readonly_world(world);
      |                        ^~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t* ecs_set_lookup_path(ecs_world_t*, const ecs_entity_t*)’:
../src/flecs/distr/flecs.c:10835:1: error: jump to label ‘error’
10835 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:10827:5: note: in expansion of macro ‘ecs_check’
10827 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:10831:19: note:   crosses initialization of ‘ecs_entity_t* cur’
10831 |     ecs_entity_t *cur = ECS_CONST_CAST(ecs_entity_t*, stage->lookup_path);
      |                   ^~~
../src/flecs/distr/flecs.c:10828:18: note:   crosses initialization of ‘ecs_stage_t* stage’
10828 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t* ecs_get_lookup_path(const ecs_world_t*)’:
../src/flecs/distr/flecs.c:10846:1: error: jump to label ‘error’
10846 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:10842:5: note: in expansion of macro ‘ecs_check’
10842 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:10843:24: note:   crosses initialization of ‘const ecs_stage_t* stage’
10843 |     const ecs_stage_t *stage = flecs_stage_from_readonly_world(world);
      |                        ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_add_path_w_sep(ecs_world_t*, ecs_entity_t, ecs_entity_t, const char*, const char*, const char*)’:
../src/flecs/distr/flecs.c:10955:47: error: taking address of rvalue [-fpermissive]
10955 |                         e = ecs_entity(world, {0});
      |                                               ^~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:10988:1: error: jump to label ‘error’
10988 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:10899:5: note: in expansion of macro ‘ecs_check’
10899 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:10933:11: note:   crosses initialization of ‘char* name’
10933 |     char *name = NULL;
      |           ^~~~
../src/flecs/distr/flecs.c:10932:18: note:   crosses initialization of ‘ecs_entity_t cur’
10932 |     ecs_entity_t cur = parent;
      |                  ^~~
../src/flecs/distr/flecs.c:10929:10: note:   crosses initialization of ‘bool suspend_defer’
10929 |     bool suspend_defer = ecs_is_deferred(world) &&
      |          ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:10924:13: note:   crosses initialization of ‘int32_t size’
10924 |     int32_t size = ECS_NAME_BUFFER_LENGTH;
      |             ^~~~
../src/flecs/distr/flecs.c:10923:11: note:   crosses initialization of ‘char* elem’
10923 |     char *elem = buff;
      |           ^~~~
../src/flecs/distr/flecs.c:10922:17: note:   crosses initialization of ‘const char* ptr’
10922 |     const char *ptr = path;
      |                 ^~~
../src/flecs/distr/flecs.c:10917:10: note:   crosses initialization of ‘bool root_path’
10917 |     bool root_path = flecs_is_root_path(path, prefix);
      |          ^~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_iter_init(const ecs_world_t*, ecs_iter_t*, ecs_flags8_t)’:
../src/flecs/distr/flecs.h:1650:23: error: invalid conversion from ‘void*’ to ‘ecs_id_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 1650 |     flecs_stack_calloc(stack, ECS_SIZEOF(T) * count, ECS_ALIGNOF(T))
      |     ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                       |
      |                       void*
../src/flecs/distr/flecs.c:11178:17: note: in expansion of macro ‘flecs_stack_calloc_n’
11178 |         it->f = flecs_stack_calloc_n(stack, T, count);\
      |                 ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11222:5: note: in expansion of macro ‘INIT_CACHE’
11222 |     INIT_CACHE(it, stack, fields, ids, ecs_id_t, it->field_count);
      |     ^~~~~~~~~~
../src/flecs/distr/flecs.h:1650:23: error: invalid conversion from ‘void*’ to ‘ecs_entity_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 1650 |     flecs_stack_calloc(stack, ECS_SIZEOF(T) * count, ECS_ALIGNOF(T))
      |     ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                       |
      |                       void*
../src/flecs/distr/flecs.c:11178:17: note: in expansion of macro ‘flecs_stack_calloc_n’
11178 |         it->f = flecs_stack_calloc_n(stack, T, count);\
      |                 ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11223:5: note: in expansion of macro ‘INIT_CACHE’
11223 |     INIT_CACHE(it, stack, fields, sources, ecs_entity_t, it->field_count);
      |     ^~~~~~~~~~
../src/flecs/distr/flecs.h:1650:23: error: invalid conversion from ‘void*’ to ‘const ecs_table_record_t**’ [-fpermissive]
 1650 |     flecs_stack_calloc(stack, ECS_SIZEOF(T) * count, ECS_ALIGNOF(T))
      |     ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                       |
      |                       void*
../src/flecs/distr/flecs.c:11178:17: note: in expansion of macro ‘flecs_stack_calloc_n’
11178 |         it->f = flecs_stack_calloc_n(stack, T, count);\
      |                 ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11224:5: note: in expansion of macro ‘INIT_CACHE’
11224 |     INIT_CACHE(it, stack, fields, trs, ecs_table_record_t*, it->field_count);
      |     ^~~~~~~~~~
../src/flecs/distr/flecs.h:1650:23: error: invalid conversion from ‘void*’ to ‘ecs_var_t*’ [-fpermissive]
 1650 |     flecs_stack_calloc(stack, ECS_SIZEOF(T) * count, ECS_ALIGNOF(T))
      |     ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                       |
      |                       void*
../src/flecs/distr/flecs.c:11178:17: note: in expansion of macro ‘flecs_stack_calloc_n’
11178 |         it->f = flecs_stack_calloc_n(stack, T, count);\
      |                 ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11225:5: note: in expansion of macro ‘INIT_CACHE’
11225 |     INIT_CACHE(it, stack, fields, variables, ecs_var_t, it->variable_count);
      |     ^~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void* ecs_field_w_size(const ecs_iter_t*, size_t, int8_t)’:
../src/flecs/distr/flecs.c:11312:1: error: jump to label ‘error’
11312 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11265:5: note: in expansion of macro ‘ecs_check’
11265 |     ecs_check(!size || ecs_field_size(it, index) == size ||
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11302:19: note:   crosses initialization of ‘ecs_column_t* column’
11302 |     ecs_column_t *column = &table->data.columns[column_index];
      |                   ^~~~~~
../src/flecs/distr/flecs.c:11296:13: note:   crosses initialization of ‘int32_t column_index’
11296 |     int32_t column_index = tr->column;
      |             ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:11281:18: note:   crosses initialization of ‘ecs_entity_t src’
11281 |     ecs_entity_t src = it->sources[index];
      |                  ^~~
../src/flecs/distr/flecs.c:11276:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
11276 |     ecs_id_record_t *idr = (ecs_id_record_t*)tr->hdr.cache;
      |                      ^~~
../src/flecs/distr/flecs.c:11270:31: note:   crosses initialization of ‘const ecs_table_record_t* tr’
11270 |     const ecs_table_record_t *tr = it->trs[index];
      |                               ^~
../src/flecs/distr/flecs.c:11312:1: error: jump to label ‘error’
11312 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11263:5: note: in expansion of macro ‘ecs_check’
11263 |     ecs_check(index < it->field_count, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11302:19: note:   crosses initialization of ‘ecs_column_t* column’
11302 |     ecs_column_t *column = &table->data.columns[column_index];
      |                   ^~~~~~
../src/flecs/distr/flecs.c:11296:13: note:   crosses initialization of ‘int32_t column_index’
11296 |     int32_t column_index = tr->column;
      |             ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:11281:18: note:   crosses initialization of ‘ecs_entity_t src’
11281 |     ecs_entity_t src = it->sources[index];
      |                  ^~~
../src/flecs/distr/flecs.c:11276:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
11276 |     ecs_id_record_t *idr = (ecs_id_record_t*)tr->hdr.cache;
      |                      ^~~
../src/flecs/distr/flecs.c:11270:31: note:   crosses initialization of ‘const ecs_table_record_t* tr’
11270 |     const ecs_table_record_t *tr = it->trs[index];
      |                               ^~
../src/flecs/distr/flecs.c:11312:1: error: jump to label ‘error’
11312 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11261:5: note: in expansion of macro ‘ecs_check’
11261 |     ecs_check(index >= 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11302:19: note:   crosses initialization of ‘ecs_column_t* column’
11302 |     ecs_column_t *column = &table->data.columns[column_index];
      |                   ^~~~~~
../src/flecs/distr/flecs.c:11296:13: note:   crosses initialization of ‘int32_t column_index’
11296 |     int32_t column_index = tr->column;
      |             ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:11281:18: note:   crosses initialization of ‘ecs_entity_t src’
11281 |     ecs_entity_t src = it->sources[index];
      |                  ^~~
../src/flecs/distr/flecs.c:11276:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
11276 |     ecs_id_record_t *idr = (ecs_id_record_t*)tr->hdr.cache;
      |                      ^~~
../src/flecs/distr/flecs.c:11270:31: note:   crosses initialization of ‘const ecs_table_record_t* tr’
11270 |     const ecs_table_record_t *tr = it->trs[index];
      |                               ^~
../src/flecs/distr/flecs.c:11312:1: error: jump to label ‘error’
11312 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11259:5: note: in expansion of macro ‘ecs_check’
11259 |     ecs_check(it->flags & EcsIterIsValid, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11302:19: note:   crosses initialization of ‘ecs_column_t* column’
11302 |     ecs_column_t *column = &table->data.columns[column_index];
      |                   ^~~~~~
../src/flecs/distr/flecs.c:11296:13: note:   crosses initialization of ‘int32_t column_index’
11296 |     int32_t column_index = tr->column;
      |             ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:11281:18: note:   crosses initialization of ‘ecs_entity_t src’
11281 |     ecs_entity_t src = it->sources[index];
      |                  ^~~
../src/flecs/distr/flecs.c:11276:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
11276 |     ecs_id_record_t *idr = (ecs_id_record_t*)tr->hdr.cache;
      |                      ^~~
../src/flecs/distr/flecs.c:11270:31: note:   crosses initialization of ‘const ecs_table_record_t* tr’
11270 |     const ecs_table_record_t *tr = it->trs[index];
      |                               ^~
../src/flecs/distr/flecs.c: In function ‘void* ecs_field_at_w_size(const ecs_iter_t*, size_t, int8_t, int32_t)’:
../src/flecs/distr/flecs.c:11348:38: error: invalid conversion from ‘void*’ to ‘const ecs_sparse_t*’ [-fpermissive]
11348 |     return flecs_sparse_get_any(idr->sparse, flecs_uto(int32_t, size), src);
      |                                 ~~~~~^~~~~~
      |                                      |
      |                                      void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:1411:25: note:   initializing argument 1 of ‘void* flecs_sparse_get_any(const ecs_sparse_t*, ecs_size_t, uint64_t)’
 1411 |     const ecs_sparse_t *sparse,
      |     ~~~~~~~~~~~~~~~~~~~~^~~~~~
../src/flecs/distr/flecs.c:11349:1: error: jump to label ‘error’
11349 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11328:5: note: in expansion of macro ‘ecs_check’
11328 |     ecs_check(!size || ecs_field_size(it, index) == size ||
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11343:18: note:   crosses initialization of ‘ecs_entity_t src’
11343 |     ecs_entity_t src = it->sources[index];
      |                  ^~~
../src/flecs/distr/flecs.c:11338:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
11338 |     ecs_id_record_t *idr = (ecs_id_record_t*)tr->hdr.cache;
      |                      ^~~
../src/flecs/distr/flecs.c:11332:31: note:   crosses initialization of ‘const ecs_table_record_t* tr’
11332 |     const ecs_table_record_t *tr = it->trs[index];
      |                               ^~
../src/flecs/distr/flecs.c:11349:1: error: jump to label ‘error’
11349 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11326:5: note: in expansion of macro ‘ecs_check’
11326 |     ecs_check(index < it->field_count, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11343:18: note:   crosses initialization of ‘ecs_entity_t src’
11343 |     ecs_entity_t src = it->sources[index];
      |                  ^~~
../src/flecs/distr/flecs.c:11338:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
11338 |     ecs_id_record_t *idr = (ecs_id_record_t*)tr->hdr.cache;
      |                      ^~~
../src/flecs/distr/flecs.c:11332:31: note:   crosses initialization of ‘const ecs_table_record_t* tr’
11332 |     const ecs_table_record_t *tr = it->trs[index];
      |                               ^~
../src/flecs/distr/flecs.c:11349:1: error: jump to label ‘error’
11349 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11324:5: note: in expansion of macro ‘ecs_check’
11324 |     ecs_check(index >= 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11343:18: note:   crosses initialization of ‘ecs_entity_t src’
11343 |     ecs_entity_t src = it->sources[index];
      |                  ^~~
../src/flecs/distr/flecs.c:11338:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
11338 |     ecs_id_record_t *idr = (ecs_id_record_t*)tr->hdr.cache;
      |                      ^~~
../src/flecs/distr/flecs.c:11332:31: note:   crosses initialization of ‘const ecs_table_record_t* tr’
11332 |     const ecs_table_record_t *tr = it->trs[index];
      |                               ^~
../src/flecs/distr/flecs.c:11349:1: error: jump to label ‘error’
11349 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11322:5: note: in expansion of macro ‘ecs_check’
11322 |     ecs_check(it->flags & EcsIterIsValid, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11343:18: note:   crosses initialization of ‘ecs_entity_t src’
11343 |     ecs_entity_t src = it->sources[index];
      |                  ^~~
../src/flecs/distr/flecs.c:11338:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
11338 |     ecs_id_record_t *idr = (ecs_id_record_t*)tr->hdr.cache;
      |                      ^~~
../src/flecs/distr/flecs.c:11332:31: note:   crosses initialization of ‘const ecs_table_record_t* tr’
11332 |     const ecs_table_record_t *tr = it->trs[index];
      |                               ^~
../src/flecs/distr/flecs.c: In function ‘bool ecs_field_is_readonly(const ecs_iter_t*, int8_t)’:
../src/flecs/distr/flecs.c:11380:1: error: jump to label ‘error’
11380 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11364:5: note: in expansion of macro ‘ecs_check’
11364 |     ecs_check(index < it->field_count, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11366:23: note:   crosses initialization of ‘const ecs_term_t* term’
11366 |     const ecs_term_t *term = &it->query->terms[index];
      |                       ^~~~
../src/flecs/distr/flecs.c:11380:1: error: jump to label ‘error’
11380 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11362:5: note: in expansion of macro ‘ecs_check’
11362 |     ecs_check(index >= 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11366:23: note:   crosses initialization of ‘const ecs_term_t* term’
11366 |     const ecs_term_t *term = &it->query->terms[index];
      |                       ^~~~
../src/flecs/distr/flecs.c:11380:1: error: jump to label ‘error’
11380 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11361:5: note: in expansion of macro ‘ecs_check’
11361 |     ecs_check(it->query->terms != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11366:23: note:   crosses initialization of ‘const ecs_term_t* term’
11366 |     const ecs_term_t *term = &it->query->terms[index];
      |                       ^~~~
../src/flecs/distr/flecs.c:11380:1: error: jump to label ‘error’
11380 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11359:5: note: in expansion of macro ‘ecs_check’
11359 |     ecs_check(it->query != NULL, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11366:23: note:   crosses initialization of ‘const ecs_term_t* term’
11366 |     const ecs_term_t *term = &it->query->terms[index];
      |                       ^~~~
../src/flecs/distr/flecs.c:11380:1: error: jump to label ‘error’
11380 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11357:5: note: in expansion of macro ‘ecs_check’
11357 |     ecs_check(it->flags & EcsIterIsValid, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11366:23: note:   crosses initialization of ‘const ecs_term_t* term’
11366 |     const ecs_term_t *term = &it->query->terms[index];
      |                       ^~~~
../src/flecs/distr/flecs.c: In function ‘bool ecs_field_is_writeonly(const ecs_iter_t*, int8_t)’:
../src/flecs/distr/flecs.c:11400:1: error: jump to label ‘error’
11400 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11395:5: note: in expansion of macro ‘ecs_check’
11395 |     ecs_check(index < it->field_count, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11398:23: note:   crosses initialization of ‘const ecs_term_t* term’
11398 |     const ecs_term_t *term = &it->query->terms[index];
      |                       ^~~~
../src/flecs/distr/flecs.c:11400:1: error: jump to label ‘error’
11400 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11393:5: note: in expansion of macro ‘ecs_check’
11393 |     ecs_check(index >= 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11398:23: note:   crosses initialization of ‘const ecs_term_t* term’
11398 |     const ecs_term_t *term = &it->query->terms[index];
      |                       ^~~~
../src/flecs/distr/flecs.c:11400:1: error: jump to label ‘error’
11400 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11392:5: note: in expansion of macro ‘ecs_check’
11392 |     ecs_check(it->query->terms != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11398:23: note:   crosses initialization of ‘const ecs_term_t* term’
11398 |     const ecs_term_t *term = &it->query->terms[index];
      |                       ^~~~
../src/flecs/distr/flecs.c:11400:1: error: jump to label ‘error’
11400 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11390:5: note: in expansion of macro ‘ecs_check’
11390 |     ecs_check(it->query != NULL, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11398:23: note:   crosses initialization of ‘const ecs_term_t* term’
11398 |     const ecs_term_t *term = &it->query->terms[index];
      |                       ^~~~
../src/flecs/distr/flecs.c:11400:1: error: jump to label ‘error’
11400 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11388:5: note: in expansion of macro ‘ecs_check’
11388 |     ecs_check(it->flags & EcsIterIsValid, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11398:23: note:   crosses initialization of ‘const ecs_term_t* term’
11398 |     const ecs_term_t *term = &it->query->terms[index];
      |                       ^~~~
../src/flecs/distr/flecs.c: In function ‘int32_t ecs_field_column(const ecs_iter_t*, int8_t)’:
../src/flecs/distr/flecs.c:11463:1: error: jump to label ‘error’
11463 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11454:5: note: in expansion of macro ‘ecs_check’
11454 |     ecs_check(index < it->field_count, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11457:31: note:   crosses initialization of ‘const ecs_table_record_t* tr’
11457 |     const ecs_table_record_t *tr = it->trs[index];
      |                               ^~
../src/flecs/distr/flecs.c:11463:1: error: jump to label ‘error’
11463 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11452:5: note: in expansion of macro ‘ecs_check’
11452 |     ecs_check(index >= 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11457:31: note:   crosses initialization of ‘const ecs_table_record_t* tr’
11457 |     const ecs_table_record_t *tr = it->trs[index];
      |                               ^~
../src/flecs/distr/flecs.c: In function ‘int32_t ecs_iter_count(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:11607:1: error: jump to label ‘error’
11607 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11598:5: note: in expansion of macro ‘ecs_check’
11598 |     ecs_check(it != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11602:13: note:   crosses initialization of ‘int32_t count’
11602 |     int32_t count = 0;
      |             ^~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_iter_first(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:11625:1: error: jump to label ‘error’
11625 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11614:5: note: in expansion of macro ‘ecs_check’
11614 |     ecs_check(it != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11618:18: note:   crosses initialization of ‘ecs_entity_t result’
11618 |     ecs_entity_t result = 0;
      |                  ^~~~~~
../src/flecs/distr/flecs.c: In function ‘bool ecs_iter_is_true(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:11641:1: error: jump to label ‘error’
11641 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11632:5: note: in expansion of macro ‘ecs_check’
11632 |     ecs_check(it != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11636:10: note:   crosses initialization of ‘bool result’
11636 |     bool result = ecs_iter_next(it);
      |          ^~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_iter_get_var(ecs_iter_t*, int32_t)’:
../src/flecs/distr/flecs.c:11674:1: error: jump to label ‘error’
11674 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11653:5: note: in expansion of macro ‘ecs_check’
11653 |     ecs_check(it->variables != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11656:18: note:   crosses initialization of ‘ecs_entity_t e’
11656 |     ecs_entity_t e = var->entity;
      |                  ^
../src/flecs/distr/flecs.c:11655:16: note:   crosses initialization of ‘ecs_var_t* var’
11655 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c:11674:1: error: jump to label ‘error’
11674 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11651:5: note: in expansion of macro ‘ecs_check’
11651 |     ecs_check(var_id < it->variable_count, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11656:18: note:   crosses initialization of ‘ecs_entity_t e’
11656 |     ecs_entity_t e = var->entity;
      |                  ^
../src/flecs/distr/flecs.c:11655:16: note:   crosses initialization of ‘ecs_var_t* var’
11655 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c:11674:1: error: jump to label ‘error’
11674 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11649:5: note: in expansion of macro ‘ecs_check’
11649 |     ecs_check(var_id >= 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11656:18: note:   crosses initialization of ‘ecs_entity_t e’
11656 |     ecs_entity_t e = var->entity;
      |                  ^
../src/flecs/distr/flecs.c:11655:16: note:   crosses initialization of ‘ecs_var_t* var’
11655 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c: In function ‘ecs_table_t* ecs_iter_get_var_as_table(ecs_iter_t*, int32_t)’:
../src/flecs/distr/flecs.c:11722:1: error: jump to label ‘error’
11722 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11686:5: note: in expansion of macro ‘ecs_check’
11686 |     ecs_check(it->variables != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11689:18: note:   crosses initialization of ‘ecs_table_t* table’
11689 |     ecs_table_t *table = var->range.table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:11688:16: note:   crosses initialization of ‘ecs_var_t* var’
11688 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c:11722:1: error: jump to label ‘error’
11722 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11684:5: note: in expansion of macro ‘ecs_check’
11684 |     ecs_check(var_id < it->variable_count, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11689:18: note:   crosses initialization of ‘ecs_table_t* table’
11689 |     ecs_table_t *table = var->range.table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:11688:16: note:   crosses initialization of ‘ecs_var_t* var’
11688 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c:11722:1: error: jump to label ‘error’
11722 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11682:5: note: in expansion of macro ‘ecs_check’
11682 |     ecs_check(var_id >= 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11689:18: note:   crosses initialization of ‘ecs_table_t* table’
11689 |     ecs_table_t *table = var->range.table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:11688:16: note:   crosses initialization of ‘ecs_var_t* var’
11688 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c: In function ‘ecs_table_range_t ecs_iter_get_var_as_range(ecs_iter_t*, int32_t)’:
../src/flecs/distr/flecs.c:11764:1: error: jump to label ‘error’
11764 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11734:5: note: in expansion of macro ‘ecs_check’
11734 |     ecs_check(it->variables != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11739:18: note:   crosses initialization of ‘ecs_table_t* table’
11739 |     ecs_table_t *table = var->range.table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:11738:16: note:   crosses initialization of ‘ecs_var_t* var’
11738 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c:11736:23: note:   crosses initialization of ‘ecs_table_range_t result’
11736 |     ecs_table_range_t result = { 0 };
      |                       ^~~~~~
../src/flecs/distr/flecs.c:11764:1: error: jump to label ‘error’
11764 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11732:5: note: in expansion of macro ‘ecs_check’
11732 |     ecs_check(var_id < it->variable_count, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11739:18: note:   crosses initialization of ‘ecs_table_t* table’
11739 |     ecs_table_t *table = var->range.table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:11738:16: note:   crosses initialization of ‘ecs_var_t* var’
11738 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c:11736:23: note:   crosses initialization of ‘ecs_table_range_t result’
11736 |     ecs_table_range_t result = { 0 };
      |                       ^~~~~~
../src/flecs/distr/flecs.c:11764:1: error: jump to label ‘error’
11764 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11730:5: note: in expansion of macro ‘ecs_check’
11730 |     ecs_check(var_id >= 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11739:18: note:   crosses initialization of ‘ecs_table_t* table’
11739 |     ecs_table_t *table = var->range.table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:11738:16: note:   crosses initialization of ‘ecs_var_t* var’
11738 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c:11736:23: note:   crosses initialization of ‘ecs_table_range_t result’
11736 |     ecs_table_range_t result = { 0 };
      |                       ^~~~~~
../src/flecs/distr/flecs.c: In function ‘void ecs_iter_set_var(ecs_iter_t*, int32_t, ecs_entity_t)’:
../src/flecs/distr/flecs.c:11803:1: error: jump to label ‘error’
11803 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11782:5: note: in expansion of macro ‘ecs_check’
11782 |     ecs_check(it->variables != NULL, ECS_INTERNAL_ERROR, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11787:19: note:   crosses initialization of ‘ecs_record_t* r’
11787 |     ecs_record_t *r = flecs_entities_get(it->real_world, entity);
      |                   ^
../src/flecs/distr/flecs.c:11784:16: note:   crosses initialization of ‘ecs_var_t* var’
11784 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c:11803:1: error: jump to label ‘error’
11803 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11780:5: note: in expansion of macro ‘ecs_check’
11780 |     ecs_check(!(it->flags & EcsIterIsValid), ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11787:19: note:   crosses initialization of ‘ecs_record_t* r’
11787 |     ecs_record_t *r = flecs_entities_get(it->real_world, entity);
      |                   ^
../src/flecs/distr/flecs.c:11784:16: note:   crosses initialization of ‘ecs_var_t* var’
11784 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c:11803:1: error: jump to label ‘error’
11803 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11779:5: note: in expansion of macro ‘ecs_check’
11779 |     ecs_check(entity != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11787:19: note:   crosses initialization of ‘ecs_record_t* r’
11787 |     ecs_record_t *r = flecs_entities_get(it->real_world, entity);
      |                   ^
../src/flecs/distr/flecs.c:11784:16: note:   crosses initialization of ‘ecs_var_t* var’
11784 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c:11803:1: error: jump to label ‘error’
11803 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11777:5: note: in expansion of macro ‘ecs_check’
11777 |     ecs_check(var_id < it->variable_count, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11787:19: note:   crosses initialization of ‘ecs_record_t* r’
11787 |     ecs_record_t *r = flecs_entities_get(it->real_world, entity);
      |                   ^
../src/flecs/distr/flecs.c:11784:16: note:   crosses initialization of ‘ecs_var_t* var’
11784 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c:11803:1: error: jump to label ‘error’
11803 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11776:5: note: in expansion of macro ‘ecs_check’
11776 |     ecs_check(var_id < FLECS_QUERY_VARIABLE_COUNT_MAX, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11787:19: note:   crosses initialization of ‘ecs_record_t* r’
11787 |     ecs_record_t *r = flecs_entities_get(it->real_world, entity);
      |                   ^
../src/flecs/distr/flecs.c:11784:16: note:   crosses initialization of ‘ecs_var_t* var’
11784 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c:11803:1: error: jump to label ‘error’
11803 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11774:5: note: in expansion of macro ‘ecs_check’
11774 |     ecs_check(var_id >= 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11787:19: note:   crosses initialization of ‘ecs_record_t* r’
11787 |     ecs_record_t *r = flecs_entities_get(it->real_world, entity);
      |                   ^
../src/flecs/distr/flecs.c:11784:16: note:   crosses initialization of ‘ecs_var_t* var’
11784 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c:11803:1: error: jump to label ‘error’
11803 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11773:5: note: in expansion of macro ‘ecs_check’
11773 |     ecs_check(it != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11787:19: note:   crosses initialization of ‘ecs_record_t* r’
11787 |     ecs_record_t *r = flecs_entities_get(it->real_world, entity);
      |                   ^
../src/flecs/distr/flecs.c:11784:16: note:   crosses initialization of ‘ecs_var_t* var’
11784 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c: In function ‘void ecs_iter_set_var_as_range(ecs_iter_t*, int32_t, const ecs_table_range_t*)’:
../src/flecs/distr/flecs.c:11851:1: error: jump to label ‘error’
11851 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11833:5: note: in expansion of macro ‘ecs_check’
11833 |     ecs_check(!(it->flags & EcsIterIsValid), ECS_INVALID_OPERATION,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11836:16: note:   crosses initialization of ‘ecs_var_t* var’
11836 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c:11851:1: error: jump to label ‘error’
11851 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11830:5: note: in expansion of macro ‘ecs_check’
11830 |     ecs_check((range->offset + range->count) <= ecs_table_count(range->table),
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11836:16: note:   crosses initialization of ‘ecs_var_t* var’
11836 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c:11851:1: error: jump to label ‘error’
11851 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11828:5: note: in expansion of macro ‘ecs_check’
11828 |     ecs_check(!range->offset || range->offset < ecs_table_count(range->table),
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11836:16: note:   crosses initialization of ‘ecs_var_t* var’
11836 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c:11851:1: error: jump to label ‘error’
11851 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11827:5: note: in expansion of macro ‘ecs_check’
11827 |     ecs_check(range->table != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11836:16: note:   crosses initialization of ‘ecs_var_t* var’
11836 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c:11851:1: error: jump to label ‘error’
11851 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11826:5: note: in expansion of macro ‘ecs_check’
11826 |     ecs_check(range != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11836:16: note:   crosses initialization of ‘ecs_var_t* var’
11836 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c:11851:1: error: jump to label ‘error’
11851 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11824:5: note: in expansion of macro ‘ecs_check’
11824 |     ecs_check(var_id < it->variable_count, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11836:16: note:   crosses initialization of ‘ecs_var_t* var’
11836 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c:11851:1: error: jump to label ‘error’
11851 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11822:5: note: in expansion of macro ‘ecs_check’
11822 |     ecs_check(var_id >= 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11836:16: note:   crosses initialization of ‘ecs_var_t* var’
11836 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c:11851:1: error: jump to label ‘error’
11851 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11821:5: note: in expansion of macro ‘ecs_check’
11821 |     ecs_check(it != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11836:16: note:   crosses initialization of ‘ecs_var_t* var’
11836 |     ecs_var_t *var = &it->variables[var_id];
      |                ^~~
../src/flecs/distr/flecs.c: In function ‘ecs_iter_t ecs_page_iter(const ecs_iter_t*, int32_t, int32_t)’:
../src/flecs/distr/flecs.c:11895:1: error: jump to label ‘error’
11895 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11880:5: note: in expansion of macro ‘ecs_check’
11880 |     ecs_check(it->next != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11882:16: note:   crosses initialization of ‘ecs_iter_t result’
11882 |     ecs_iter_t result = *it;
      |                ^~~~~~
../src/flecs/distr/flecs.c:11895:1: error: jump to label ‘error’
11895 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11879:5: note: in expansion of macro ‘ecs_check’
11879 |     ecs_check(it != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11882:16: note:   crosses initialization of ‘ecs_iter_t result’
11882 |     ecs_iter_t result = *it;
      |                ^~~~~~
../src/flecs/distr/flecs.c: In function ‘bool ecs_page_next(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:11971:1: error: jump to label ‘error’
11971 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11904:5: note: in expansion of macro ‘ecs_check’
11904 |     ecs_check(it->next == ecs_page_next, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11906:17: note:   crosses initialization of ‘ecs_iter_t* chain_it’
11906 |     ecs_iter_t *chain_it = it->chain_it;
      |                 ^~~~~~~~
../src/flecs/distr/flecs.c:11971:1: error: jump to label ‘error’
11971 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11903:5: note: in expansion of macro ‘ecs_check’
11903 |     ecs_check(it->chain_it != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11906:17: note:   crosses initialization of ‘ecs_iter_t* chain_it’
11906 |     ecs_iter_t *chain_it = it->chain_it;
      |                 ^~~~~~~~
../src/flecs/distr/flecs.c:11971:1: error: jump to label ‘error’
11971 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11902:5: note: in expansion of macro ‘ecs_check’
11902 |     ecs_check(it != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11906:17: note:   crosses initialization of ‘ecs_iter_t* chain_it’
11906 |     ecs_iter_t *chain_it = it->chain_it;
      |                 ^~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_iter_t ecs_worker_iter(const ecs_iter_t*, int32_t, int32_t)’:
../src/flecs/distr/flecs.c:11999:1: error: jump to label ‘error’
11999 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11985:5: note: in expansion of macro ‘ecs_check’
11985 |     ecs_check(index < count, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11987:16: note:   crosses initialization of ‘ecs_iter_t result’
11987 |     ecs_iter_t result = *it;
      |                ^~~~~~
../src/flecs/distr/flecs.c:11999:1: error: jump to label ‘error’
11999 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11983:5: note: in expansion of macro ‘ecs_check’
11983 |     ecs_check(index >= 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11987:16: note:   crosses initialization of ‘ecs_iter_t result’
11987 |     ecs_iter_t result = *it;
      |                ^~~~~~
../src/flecs/distr/flecs.c:11999:1: error: jump to label ‘error’
11999 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11982:5: note: in expansion of macro ‘ecs_check’
11982 |     ecs_check(count > 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11987:16: note:   crosses initialization of ‘ecs_iter_t result’
11987 |     ecs_iter_t result = *it;
      |                ^~~~~~
../src/flecs/distr/flecs.c:11999:1: error: jump to label ‘error’
11999 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11981:5: note: in expansion of macro ‘ecs_check’
11981 |     ecs_check(it->next != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11987:16: note:   crosses initialization of ‘ecs_iter_t result’
11987 |     ecs_iter_t result = *it;
      |                ^~~~~~
../src/flecs/distr/flecs.c:11999:1: error: jump to label ‘error’
11999 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:11980:5: note: in expansion of macro ‘ecs_check’
11980 |     ecs_check(it != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:11987:16: note:   crosses initialization of ‘ecs_iter_t result’
11987 |     ecs_iter_t result = *it;
      |                ^~~~~~
../src/flecs/distr/flecs.c: In function ‘bool ecs_worker_next(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:12056:1: error: jump to label ‘error’
12056 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:12008:5: note: in expansion of macro ‘ecs_check’
12008 |     ecs_check(it->next == ecs_worker_next, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:12012:38: note:   crosses initialization of ‘int32_t res_index’
12012 |     int32_t res_count = iter->count, res_index = iter->index;
      |                                      ^~~~~~~~~
../src/flecs/distr/flecs.c:12012:13: note:   crosses initialization of ‘int32_t res_count’
12012 |     int32_t res_count = iter->count, res_index = iter->index;
      |             ^~~~~~~~~
../src/flecs/distr/flecs.c:12011:24: note:   crosses initialization of ‘ecs_worker_iter_t* iter’
12011 |     ecs_worker_iter_t *iter = &it->priv_.iter.worker;
      |                        ^~~~
../src/flecs/distr/flecs.c:12010:17: note:   crosses initialization of ‘ecs_iter_t* chain_it’
12010 |     ecs_iter_t *chain_it = it->chain_it;
      |                 ^~~~~~~~
../src/flecs/distr/flecs.c:12056:1: error: jump to label ‘error’
12056 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:12007:5: note: in expansion of macro ‘ecs_check’
12007 |     ecs_check(it->chain_it != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:12012:38: note:   crosses initialization of ‘int32_t res_index’
12012 |     int32_t res_count = iter->count, res_index = iter->index;
      |                                      ^~~~~~~~~
../src/flecs/distr/flecs.c:12012:13: note:   crosses initialization of ‘int32_t res_count’
12012 |     int32_t res_count = iter->count, res_index = iter->index;
      |             ^~~~~~~~~
../src/flecs/distr/flecs.c:12011:24: note:   crosses initialization of ‘ecs_worker_iter_t* iter’
12011 |     ecs_worker_iter_t *iter = &it->priv_.iter.worker;
      |                        ^~~~
../src/flecs/distr/flecs.c:12010:17: note:   crosses initialization of ‘ecs_iter_t* chain_it’
12010 |     ecs_iter_t *chain_it = it->chain_it;
      |                 ^~~~~~~~
../src/flecs/distr/flecs.c:12056:1: error: jump to label ‘error’
12056 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:12006:5: note: in expansion of macro ‘ecs_check’
12006 |     ecs_check(it != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:12012:38: note:   crosses initialization of ‘int32_t res_index’
12012 |     int32_t res_count = iter->count, res_index = iter->index;
      |                                      ^~~~~~~~~
../src/flecs/distr/flecs.c:12012:13: note:   crosses initialization of ‘int32_t res_count’
12012 |     int32_t res_count = iter->count, res_index = iter->index;
      |             ^~~~~~~~~
../src/flecs/distr/flecs.c:12011:24: note:   crosses initialization of ‘ecs_worker_iter_t* iter’
12011 |     ecs_worker_iter_t *iter = &it->priv_.iter.worker;
      |                        ^~~~
../src/flecs/distr/flecs.c:12010:17: note:   crosses initialization of ‘ecs_iter_t* chain_it’
12010 |     ecs_iter_t *chain_it = it->chain_it;
      |                 ^~~~~~~~
../src/flecs/distr/flecs.c: At global scope:
../src/flecs/distr/flecs.c:12070:71: sorry, unimplemented: non-trivial designated initializers not supported
12070 |     [1] = INT8_MIN, [2] = INT16_MIN, [4] = INT32_MIN, [8] = INT64_MIN };
      |                                                                       ^
../src/flecs/distr/flecs.c:12070:71: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:12070:71: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:12070:71: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:12072:71: sorry, unimplemented: non-trivial designated initializers not supported
12072 |     [1] = INT8_MAX, [2] = INT16_MAX, [4] = INT32_MAX, [8] = INT64_MAX };
      |                                                                       ^
../src/flecs/distr/flecs.c:12072:71: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:12072:71: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:12072:71: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:12074:75: sorry, unimplemented: non-trivial designated initializers not supported
12074 |     [1] = UINT8_MAX, [2] = UINT16_MAX, [4] = UINT32_MAX, [8] = UINT64_MAX };
      |                                                                           ^
../src/flecs/distr/flecs.c:12074:75: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:12074:75: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:12074:75: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c: In function ‘uint64_t flecs_string_hash(const void*)’:
../src/flecs/distr/flecs.c:12197:38: error: invalid conversion from ‘const void*’ to ‘const ecs_hashed_string_t*’ [-fpermissive]
12197 |     const ecs_hashed_string_t *str = ptr;
      |                                      ^~~
      |                                      |
      |                                      const void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘char* flecs_load_from_file(const char*)’:
../src/flecs/distr/flecs.h:2607:47: error: invalid conversion from ‘void*’ to ‘char*’ [-fpermissive]
 2607 | #define ecs_os_malloc(size) ecs_os_api.malloc_(size)
      |                             ~~~~~~~~~~~~~~~~~~^~~~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c:12298:15: note: in expansion of macro ‘ecs_os_malloc’
12298 |     content = ecs_os_malloc(bytes + 1);
      |               ^~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_emit_propagate_id(ecs_world_t*, ecs_iter_t*, ecs_id_record_t*, ecs_id_record_t*, ecs_entity_t, ecs_event_id_record_t**, int32_t)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:12796:18: note: in expansion of macro ‘flecs_table_cache_next’
12796 |     while ((tr = flecs_table_cache_next(&idt, ecs_table_record_t))) {
      |                  ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_emit_propagate_invalidate_tables(ecs_world_t*, ecs_id_record_t*)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:12921:22: note: in expansion of macro ‘flecs_table_cache_next’
12921 |         while ((tr = flecs_table_cache_next(&idt, ecs_table_record_t))) {
      |                      ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int32_t flecs_emit_stack_at(ecs_vec_t*, ecs_id_record_t*)’:
../src/flecs/distr/flecs.c:13247:46: error: invalid conversion from ‘void*’ to ‘ecs_table_t**’ [-fpermissive]
13247 |     ecs_table_t **stack_elems = ecs_vec_first(stack);
      |                                 ~~~~~~~~~~~~~^~~~~~~
      |                                              |
      |                                              void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_emit_forward(ecs_world_t*, const ecs_event_record_t*, const ecs_event_record_t*, const ecs_type_t*, ecs_iter_t*, ecs_table_t*, ecs_id_record_t*)’:
../src/flecs/distr/flecs.h:3942:31: error: invalid conversion from ‘void*’ to ‘const ecs_entity_t*’ {aka ‘const long unsigned int*’} [-fpermissive]
 3942 | #define ECS_OFFSET(o, offset) reinterpret_cast<void*>((reinterpret_cast<uintptr_t>(o)) + (static_cast<uintptr_t>(offset)))
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.h:3948:36: note: in expansion of macro ‘ECS_OFFSET’
 3948 | #define ECS_ELEM(ptr, size, index) ECS_OFFSET(ptr, (size) * (index))
      |                                    ^~~~~~~~~~
../src/flecs/distr/flecs.h:3949:33: note: in expansion of macro ‘ECS_ELEM’
 3949 | #define ECS_ELEM_T(o, T, index) ECS_ELEM(o, ECS_SIZEOF(T), index)
      |                                 ^~~~~~~~
../src/flecs/distr/flecs.c:13581:20: note: in expansion of macro ‘ECS_ELEM_T’
13581 |         entities = ECS_ELEM_T(entities, ecs_entity_t, it->offset);
      |                    ^~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_emit(ecs_world_t*, ecs_world_t*, ecs_flags64_t, ecs_event_desc_t*)’:
../src/flecs/distr/flecs.c:13695:5: error: designator order for field ‘ecs_iter_t::table’ does not match declaration order in ‘ecs_iter_t’
13695 |     };
      |     ^
../src/flecs/distr/flecs.c:13825:38: error: invalid conversion from ‘void*’ to ‘const ecs_sparse_t*’ [-fpermissive]
13825 |                                 idr->sparse, 0, base);
      |                                 ~~~~~^~~~~~
      |                                      |
      |                                      void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:1411:25: note:   initializing argument 1 of ‘void* flecs_sparse_get_any(const ecs_sparse_t*, ecs_size_t, uint64_t)’
 1411 |     const ecs_sparse_t *sparse,
      |     ~~~~~~~~~~~~~~~~~~~~^~~~~~
../src/flecs/distr/flecs.c:13883:49: error: invalid conversion from ‘void*’ to ‘const ecs_sparse_t*’ [-fpermissive]
13883 |                     ptr = flecs_sparse_get(idr->sparse, 0, e);
      |                                            ~~~~~^~~~~~
      |                                                 |
      |                                                 void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:1391:25: note:   initializing argument 1 of ‘void* flecs_sparse_get(const ecs_sparse_t*, ecs_size_t, uint64_t)’
 1391 |     const ecs_sparse_t *sparse,
      |     ~~~~~~~~~~~~~~~~~~~~^~~~~~
../src/flecs/distr/flecs.c:13966:1: error: jump to label ‘error’
13966 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:13698:5: note: in expansion of macro ‘ecs_check’
13698 |     ecs_check(observable != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:13737:28: note:   crosses initialization of ‘ecs_event_id_record_t* iders [5]’
13737 |     ecs_event_id_record_t *iders[5] = {0};
      |                            ^~~~~
../src/flecs/distr/flecs.c:13735:10: note:   crosses initialization of ‘bool has_observed’
13735 |     bool has_observed = table_flags & EcsTableHasTraversable;
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13732:10: note:   crosses initialization of ‘bool can_forward’
13732 |     bool can_forward = event != EcsOnSet;
      |          ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13725:10: note:   crosses initialization of ‘bool can_override’
13725 |     bool can_override = count && (table_flags & EcsTableHasIsA) && (
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13720:15: note:   crosses initialization of ‘ecs_id_t* id_array’
13720 |     ecs_id_t *id_array = ids->array;
      |               ^~~~~~~~
../src/flecs/distr/flecs.c:13719:13: note:   crosses initialization of ‘int32_t id_count’
13719 |     int32_t id_count = ids->count;
      |             ^~~~~~~~
../src/flecs/distr/flecs.c:13712:19: note:   crosses initialization of ‘ecs_column_t* columns’
13712 |     ecs_column_t *columns = NULL;
      |                   ^~~~~~~
../src/flecs/distr/flecs.c:13711:17: note:   crosses initialization of ‘ecs_data_t* storage’
13711 |     ecs_data_t *storage = NULL;
      |                 ^~~~~~~
../src/flecs/distr/flecs.c:13709:31: note:   crosses initialization of ‘const ecs_event_record_t* er_onset’
13709 |     const ecs_event_record_t *er_onset = flecs_event_record_get_if(observable, EcsOnSet);
      |                               ^~~~~~~~
../src/flecs/distr/flecs.c:13708:31: note:   crosses initialization of ‘const ecs_event_record_t* wcer’
13708 |     const ecs_event_record_t *wcer = flecs_event_record_get_if(observable, EcsWildcard);
      |                               ^~~~
../src/flecs/distr/flecs.c:13707:31: note:   crosses initialization of ‘const ecs_event_record_t* er’
13707 |     const ecs_event_record_t *er = flecs_event_record_get_if(observable, event);
      |                               ^~
../src/flecs/distr/flecs.c:13966:1: error: jump to label ‘error’
13966 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:13636:5: note: in expansion of macro ‘ecs_check’
13636 |     ecs_check(desc->observable != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:13737:28: note:   crosses initialization of ‘ecs_event_id_record_t* iders [5]’
13737 |     ecs_event_id_record_t *iders[5] = {0};
      |                            ^~~~~
../src/flecs/distr/flecs.c:13735:10: note:   crosses initialization of ‘bool has_observed’
13735 |     bool has_observed = table_flags & EcsTableHasTraversable;
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13732:10: note:   crosses initialization of ‘bool can_forward’
13732 |     bool can_forward = event != EcsOnSet;
      |          ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13725:10: note:   crosses initialization of ‘bool can_override’
13725 |     bool can_override = count && (table_flags & EcsTableHasIsA) && (
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13720:15: note:   crosses initialization of ‘ecs_id_t* id_array’
13720 |     ecs_id_t *id_array = ids->array;
      |               ^~~~~~~~
../src/flecs/distr/flecs.c:13719:13: note:   crosses initialization of ‘int32_t id_count’
13719 |     int32_t id_count = ids->count;
      |             ^~~~~~~~
../src/flecs/distr/flecs.c:13712:19: note:   crosses initialization of ‘ecs_column_t* columns’
13712 |     ecs_column_t *columns = NULL;
      |                   ^~~~~~~
../src/flecs/distr/flecs.c:13711:17: note:   crosses initialization of ‘ecs_data_t* storage’
13711 |     ecs_data_t *storage = NULL;
      |                 ^~~~~~~
../src/flecs/distr/flecs.c:13709:31: note:   crosses initialization of ‘const ecs_event_record_t* er_onset’
13709 |     const ecs_event_record_t *er_onset = flecs_event_record_get_if(observable, EcsOnSet);
      |                               ^~~~~~~~
../src/flecs/distr/flecs.c:13708:31: note:   crosses initialization of ‘const ecs_event_record_t* wcer’
13708 |     const ecs_event_record_t *wcer = flecs_event_record_get_if(observable, EcsWildcard);
      |                               ^~~~
../src/flecs/distr/flecs.c:13707:31: note:   crosses initialization of ‘const ecs_event_record_t* er’
13707 |     const ecs_event_record_t *er = flecs_event_record_get_if(observable, event);
      |                               ^~
../src/flecs/distr/flecs.c:13697:23: note:   crosses initialization of ‘ecs_observable_t* observable’
13697 |     ecs_observable_t *observable = ecs_get_observable(desc->observable);
      |                       ^~~~~~~~~~
../src/flecs/distr/flecs.c:13679:16: note:   crosses initialization of ‘ecs_iter_t it’
13679 |     ecs_iter_t it = {
      |                ^~
../src/flecs/distr/flecs.c:13677:18: note:   crosses initialization of ‘ecs_entity_t sources_cache’
13677 |     ecs_entity_t sources_cache = 0;
      |                  ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:13676:31: note:   crosses initialization of ‘const ecs_table_record_t* trs_cache’
13676 |     const ecs_table_record_t* trs_cache = 0;
      |                               ^~~~~~~~~
../src/flecs/distr/flecs.c:13675:16: note:   crosses initialization of ‘ecs_size_t sizes_cache’
13675 |     ecs_size_t sizes_cache = 0;
      |                ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13674:14: note:   crosses initialization of ‘ecs_id_t ids_cache’
13674 |     ecs_id_t ids_cache = 0;
      |              ^~~~~~~~~
../src/flecs/distr/flecs.c:13672:13: note:   crosses initialization of ‘int32_t evtx’
13672 |     int32_t evtx = ++world->event_id;
      |             ^~~~
../src/flecs/distr/flecs.c:13661:10: note:   crosses initialization of ‘bool table_event’
13661 |     bool table_event = desc->flags & EcsEventTableOnly;
      |          ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13654:13: note:   crosses initialization of ‘int32_t defer’
13654 |     int32_t defer = world->stages[0]->defer;
      |             ^~~~~
../src/flecs/distr/flecs.c:13651:19: note:   crosses initialization of ‘ecs_flags32_t table_flags’
13651 |     ecs_flags32_t table_flags = table->flags;
      |                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13650:16: note:   crosses initialization of ‘int32_t count’
13650 |     int32_t i, count = desc->count;
      |                ^~~~~
../src/flecs/distr/flecs.c:13649:13: note:   crosses initialization of ‘int32_t offset’
13649 |     int32_t offset = desc->offset;
      |             ^~~~~~
../src/flecs/distr/flecs.c:13648:40: note:   crosses initialization of ‘ecs_table_t* other_table’
13648 |     ecs_table_t *table = desc->table, *other_table = desc->other_table;
      |                                        ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13648:18: note:   crosses initialization of ‘ecs_table_t* table’
13648 |     ecs_table_t *table = desc->table, *other_table = desc->other_table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:13647:18: note:   crosses initialization of ‘ecs_entity_t event’
13647 |     ecs_entity_t event = desc->event;
      |                  ^~~~~
../src/flecs/distr/flecs.c:13646:23: note:   crosses initialization of ‘const ecs_type_t* ids’
13646 |     const ecs_type_t *ids = desc->ids;
      |                       ^~~
../src/flecs/distr/flecs.c:13641:10: note:   crosses initialization of ‘bool measure_time’
13641 |     bool measure_time = world->flags & EcsWorldMeasureSystemTime;
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13640:16: note:   crosses initialization of ‘ecs_time_t t’
13640 |     ecs_time_t t = {0};
      |                ^
../src/flecs/distr/flecs.c:13966:1: error: jump to label ‘error’
13966 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:13635:5: note: in expansion of macro ‘ecs_check’
13635 |     ecs_check(desc->table != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:13737:28: note:   crosses initialization of ‘ecs_event_id_record_t* iders [5]’
13737 |     ecs_event_id_record_t *iders[5] = {0};
      |                            ^~~~~
../src/flecs/distr/flecs.c:13735:10: note:   crosses initialization of ‘bool has_observed’
13735 |     bool has_observed = table_flags & EcsTableHasTraversable;
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13732:10: note:   crosses initialization of ‘bool can_forward’
13732 |     bool can_forward = event != EcsOnSet;
      |          ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13725:10: note:   crosses initialization of ‘bool can_override’
13725 |     bool can_override = count && (table_flags & EcsTableHasIsA) && (
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13720:15: note:   crosses initialization of ‘ecs_id_t* id_array’
13720 |     ecs_id_t *id_array = ids->array;
      |               ^~~~~~~~
../src/flecs/distr/flecs.c:13719:13: note:   crosses initialization of ‘int32_t id_count’
13719 |     int32_t id_count = ids->count;
      |             ^~~~~~~~
../src/flecs/distr/flecs.c:13712:19: note:   crosses initialization of ‘ecs_column_t* columns’
13712 |     ecs_column_t *columns = NULL;
      |                   ^~~~~~~
../src/flecs/distr/flecs.c:13711:17: note:   crosses initialization of ‘ecs_data_t* storage’
13711 |     ecs_data_t *storage = NULL;
      |                 ^~~~~~~
../src/flecs/distr/flecs.c:13709:31: note:   crosses initialization of ‘const ecs_event_record_t* er_onset’
13709 |     const ecs_event_record_t *er_onset = flecs_event_record_get_if(observable, EcsOnSet);
      |                               ^~~~~~~~
../src/flecs/distr/flecs.c:13708:31: note:   crosses initialization of ‘const ecs_event_record_t* wcer’
13708 |     const ecs_event_record_t *wcer = flecs_event_record_get_if(observable, EcsWildcard);
      |                               ^~~~
../src/flecs/distr/flecs.c:13707:31: note:   crosses initialization of ‘const ecs_event_record_t* er’
13707 |     const ecs_event_record_t *er = flecs_event_record_get_if(observable, event);
      |                               ^~
../src/flecs/distr/flecs.c:13697:23: note:   crosses initialization of ‘ecs_observable_t* observable’
13697 |     ecs_observable_t *observable = ecs_get_observable(desc->observable);
      |                       ^~~~~~~~~~
../src/flecs/distr/flecs.c:13679:16: note:   crosses initialization of ‘ecs_iter_t it’
13679 |     ecs_iter_t it = {
      |                ^~
../src/flecs/distr/flecs.c:13677:18: note:   crosses initialization of ‘ecs_entity_t sources_cache’
13677 |     ecs_entity_t sources_cache = 0;
      |                  ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:13676:31: note:   crosses initialization of ‘const ecs_table_record_t* trs_cache’
13676 |     const ecs_table_record_t* trs_cache = 0;
      |                               ^~~~~~~~~
../src/flecs/distr/flecs.c:13675:16: note:   crosses initialization of ‘ecs_size_t sizes_cache’
13675 |     ecs_size_t sizes_cache = 0;
      |                ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13674:14: note:   crosses initialization of ‘ecs_id_t ids_cache’
13674 |     ecs_id_t ids_cache = 0;
      |              ^~~~~~~~~
../src/flecs/distr/flecs.c:13672:13: note:   crosses initialization of ‘int32_t evtx’
13672 |     int32_t evtx = ++world->event_id;
      |             ^~~~
../src/flecs/distr/flecs.c:13661:10: note:   crosses initialization of ‘bool table_event’
13661 |     bool table_event = desc->flags & EcsEventTableOnly;
      |          ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13654:13: note:   crosses initialization of ‘int32_t defer’
13654 |     int32_t defer = world->stages[0]->defer;
      |             ^~~~~
../src/flecs/distr/flecs.c:13651:19: note:   crosses initialization of ‘ecs_flags32_t table_flags’
13651 |     ecs_flags32_t table_flags = table->flags;
      |                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13650:16: note:   crosses initialization of ‘int32_t count’
13650 |     int32_t i, count = desc->count;
      |                ^~~~~
../src/flecs/distr/flecs.c:13649:13: note:   crosses initialization of ‘int32_t offset’
13649 |     int32_t offset = desc->offset;
      |             ^~~~~~
../src/flecs/distr/flecs.c:13648:40: note:   crosses initialization of ‘ecs_table_t* other_table’
13648 |     ecs_table_t *table = desc->table, *other_table = desc->other_table;
      |                                        ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13648:18: note:   crosses initialization of ‘ecs_table_t* table’
13648 |     ecs_table_t *table = desc->table, *other_table = desc->other_table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:13647:18: note:   crosses initialization of ‘ecs_entity_t event’
13647 |     ecs_entity_t event = desc->event;
      |                  ^~~~~
../src/flecs/distr/flecs.c:13646:23: note:   crosses initialization of ‘const ecs_type_t* ids’
13646 |     const ecs_type_t *ids = desc->ids;
      |                       ^~~
../src/flecs/distr/flecs.c:13641:10: note:   crosses initialization of ‘bool measure_time’
13641 |     bool measure_time = world->flags & EcsWorldMeasureSystemTime;
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13640:16: note:   crosses initialization of ‘ecs_time_t t’
13640 |     ecs_time_t t = {0};
      |                ^
../src/flecs/distr/flecs.c:13966:1: error: jump to label ‘error’
13966 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:13634:5: note: in expansion of macro ‘ecs_check’
13634 |     ecs_check(desc->ids->count != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:13737:28: note:   crosses initialization of ‘ecs_event_id_record_t* iders [5]’
13737 |     ecs_event_id_record_t *iders[5] = {0};
      |                            ^~~~~
../src/flecs/distr/flecs.c:13735:10: note:   crosses initialization of ‘bool has_observed’
13735 |     bool has_observed = table_flags & EcsTableHasTraversable;
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13732:10: note:   crosses initialization of ‘bool can_forward’
13732 |     bool can_forward = event != EcsOnSet;
      |          ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13725:10: note:   crosses initialization of ‘bool can_override’
13725 |     bool can_override = count && (table_flags & EcsTableHasIsA) && (
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13720:15: note:   crosses initialization of ‘ecs_id_t* id_array’
13720 |     ecs_id_t *id_array = ids->array;
      |               ^~~~~~~~
../src/flecs/distr/flecs.c:13719:13: note:   crosses initialization of ‘int32_t id_count’
13719 |     int32_t id_count = ids->count;
      |             ^~~~~~~~
../src/flecs/distr/flecs.c:13712:19: note:   crosses initialization of ‘ecs_column_t* columns’
13712 |     ecs_column_t *columns = NULL;
      |                   ^~~~~~~
../src/flecs/distr/flecs.c:13711:17: note:   crosses initialization of ‘ecs_data_t* storage’
13711 |     ecs_data_t *storage = NULL;
      |                 ^~~~~~~
../src/flecs/distr/flecs.c:13709:31: note:   crosses initialization of ‘const ecs_event_record_t* er_onset’
13709 |     const ecs_event_record_t *er_onset = flecs_event_record_get_if(observable, EcsOnSet);
      |                               ^~~~~~~~
../src/flecs/distr/flecs.c:13708:31: note:   crosses initialization of ‘const ecs_event_record_t* wcer’
13708 |     const ecs_event_record_t *wcer = flecs_event_record_get_if(observable, EcsWildcard);
      |                               ^~~~
../src/flecs/distr/flecs.c:13707:31: note:   crosses initialization of ‘const ecs_event_record_t* er’
13707 |     const ecs_event_record_t *er = flecs_event_record_get_if(observable, event);
      |                               ^~
../src/flecs/distr/flecs.c:13697:23: note:   crosses initialization of ‘ecs_observable_t* observable’
13697 |     ecs_observable_t *observable = ecs_get_observable(desc->observable);
      |                       ^~~~~~~~~~
../src/flecs/distr/flecs.c:13679:16: note:   crosses initialization of ‘ecs_iter_t it’
13679 |     ecs_iter_t it = {
      |                ^~
../src/flecs/distr/flecs.c:13677:18: note:   crosses initialization of ‘ecs_entity_t sources_cache’
13677 |     ecs_entity_t sources_cache = 0;
      |                  ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:13676:31: note:   crosses initialization of ‘const ecs_table_record_t* trs_cache’
13676 |     const ecs_table_record_t* trs_cache = 0;
      |                               ^~~~~~~~~
../src/flecs/distr/flecs.c:13675:16: note:   crosses initialization of ‘ecs_size_t sizes_cache’
13675 |     ecs_size_t sizes_cache = 0;
      |                ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13674:14: note:   crosses initialization of ‘ecs_id_t ids_cache’
13674 |     ecs_id_t ids_cache = 0;
      |              ^~~~~~~~~
../src/flecs/distr/flecs.c:13672:13: note:   crosses initialization of ‘int32_t evtx’
13672 |     int32_t evtx = ++world->event_id;
      |             ^~~~
../src/flecs/distr/flecs.c:13661:10: note:   crosses initialization of ‘bool table_event’
13661 |     bool table_event = desc->flags & EcsEventTableOnly;
      |          ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13654:13: note:   crosses initialization of ‘int32_t defer’
13654 |     int32_t defer = world->stages[0]->defer;
      |             ^~~~~
../src/flecs/distr/flecs.c:13651:19: note:   crosses initialization of ‘ecs_flags32_t table_flags’
13651 |     ecs_flags32_t table_flags = table->flags;
      |                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13650:16: note:   crosses initialization of ‘int32_t count’
13650 |     int32_t i, count = desc->count;
      |                ^~~~~
../src/flecs/distr/flecs.c:13649:13: note:   crosses initialization of ‘int32_t offset’
13649 |     int32_t offset = desc->offset;
      |             ^~~~~~
../src/flecs/distr/flecs.c:13648:40: note:   crosses initialization of ‘ecs_table_t* other_table’
13648 |     ecs_table_t *table = desc->table, *other_table = desc->other_table;
      |                                        ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13648:18: note:   crosses initialization of ‘ecs_table_t* table’
13648 |     ecs_table_t *table = desc->table, *other_table = desc->other_table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:13647:18: note:   crosses initialization of ‘ecs_entity_t event’
13647 |     ecs_entity_t event = desc->event;
      |                  ^~~~~
../src/flecs/distr/flecs.c:13646:23: note:   crosses initialization of ‘const ecs_type_t* ids’
13646 |     const ecs_type_t *ids = desc->ids;
      |                       ^~~
../src/flecs/distr/flecs.c:13641:10: note:   crosses initialization of ‘bool measure_time’
13641 |     bool measure_time = world->flags & EcsWorldMeasureSystemTime;
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13640:16: note:   crosses initialization of ‘ecs_time_t t’
13640 |     ecs_time_t t = {0};
      |                ^
../src/flecs/distr/flecs.c:13966:1: error: jump to label ‘error’
13966 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:13633:5: note: in expansion of macro ‘ecs_check’
13633 |     ecs_check(desc->ids != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:13737:28: note:   crosses initialization of ‘ecs_event_id_record_t* iders [5]’
13737 |     ecs_event_id_record_t *iders[5] = {0};
      |                            ^~~~~
../src/flecs/distr/flecs.c:13735:10: note:   crosses initialization of ‘bool has_observed’
13735 |     bool has_observed = table_flags & EcsTableHasTraversable;
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13732:10: note:   crosses initialization of ‘bool can_forward’
13732 |     bool can_forward = event != EcsOnSet;
      |          ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13725:10: note:   crosses initialization of ‘bool can_override’
13725 |     bool can_override = count && (table_flags & EcsTableHasIsA) && (
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13720:15: note:   crosses initialization of ‘ecs_id_t* id_array’
13720 |     ecs_id_t *id_array = ids->array;
      |               ^~~~~~~~
../src/flecs/distr/flecs.c:13719:13: note:   crosses initialization of ‘int32_t id_count’
13719 |     int32_t id_count = ids->count;
      |             ^~~~~~~~
../src/flecs/distr/flecs.c:13712:19: note:   crosses initialization of ‘ecs_column_t* columns’
13712 |     ecs_column_t *columns = NULL;
      |                   ^~~~~~~
../src/flecs/distr/flecs.c:13711:17: note:   crosses initialization of ‘ecs_data_t* storage’
13711 |     ecs_data_t *storage = NULL;
      |                 ^~~~~~~
../src/flecs/distr/flecs.c:13709:31: note:   crosses initialization of ‘const ecs_event_record_t* er_onset’
13709 |     const ecs_event_record_t *er_onset = flecs_event_record_get_if(observable, EcsOnSet);
      |                               ^~~~~~~~
../src/flecs/distr/flecs.c:13708:31: note:   crosses initialization of ‘const ecs_event_record_t* wcer’
13708 |     const ecs_event_record_t *wcer = flecs_event_record_get_if(observable, EcsWildcard);
      |                               ^~~~
../src/flecs/distr/flecs.c:13707:31: note:   crosses initialization of ‘const ecs_event_record_t* er’
13707 |     const ecs_event_record_t *er = flecs_event_record_get_if(observable, event);
      |                               ^~
../src/flecs/distr/flecs.c:13697:23: note:   crosses initialization of ‘ecs_observable_t* observable’
13697 |     ecs_observable_t *observable = ecs_get_observable(desc->observable);
      |                       ^~~~~~~~~~
../src/flecs/distr/flecs.c:13679:16: note:   crosses initialization of ‘ecs_iter_t it’
13679 |     ecs_iter_t it = {
      |                ^~
../src/flecs/distr/flecs.c:13677:18: note:   crosses initialization of ‘ecs_entity_t sources_cache’
13677 |     ecs_entity_t sources_cache = 0;
      |                  ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:13676:31: note:   crosses initialization of ‘const ecs_table_record_t* trs_cache’
13676 |     const ecs_table_record_t* trs_cache = 0;
      |                               ^~~~~~~~~
../src/flecs/distr/flecs.c:13675:16: note:   crosses initialization of ‘ecs_size_t sizes_cache’
13675 |     ecs_size_t sizes_cache = 0;
      |                ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13674:14: note:   crosses initialization of ‘ecs_id_t ids_cache’
13674 |     ecs_id_t ids_cache = 0;
      |              ^~~~~~~~~
../src/flecs/distr/flecs.c:13672:13: note:   crosses initialization of ‘int32_t evtx’
13672 |     int32_t evtx = ++world->event_id;
      |             ^~~~
../src/flecs/distr/flecs.c:13661:10: note:   crosses initialization of ‘bool table_event’
13661 |     bool table_event = desc->flags & EcsEventTableOnly;
      |          ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13654:13: note:   crosses initialization of ‘int32_t defer’
13654 |     int32_t defer = world->stages[0]->defer;
      |             ^~~~~
../src/flecs/distr/flecs.c:13651:19: note:   crosses initialization of ‘ecs_flags32_t table_flags’
13651 |     ecs_flags32_t table_flags = table->flags;
      |                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13650:16: note:   crosses initialization of ‘int32_t count’
13650 |     int32_t i, count = desc->count;
      |                ^~~~~
../src/flecs/distr/flecs.c:13649:13: note:   crosses initialization of ‘int32_t offset’
13649 |     int32_t offset = desc->offset;
      |             ^~~~~~
../src/flecs/distr/flecs.c:13648:40: note:   crosses initialization of ‘ecs_table_t* other_table’
13648 |     ecs_table_t *table = desc->table, *other_table = desc->other_table;
      |                                        ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13648:18: note:   crosses initialization of ‘ecs_table_t* table’
13648 |     ecs_table_t *table = desc->table, *other_table = desc->other_table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:13647:18: note:   crosses initialization of ‘ecs_entity_t event’
13647 |     ecs_entity_t event = desc->event;
      |                  ^~~~~
../src/flecs/distr/flecs.c:13646:23: note:   crosses initialization of ‘const ecs_type_t* ids’
13646 |     const ecs_type_t *ids = desc->ids;
      |                       ^~~
../src/flecs/distr/flecs.c:13641:10: note:   crosses initialization of ‘bool measure_time’
13641 |     bool measure_time = world->flags & EcsWorldMeasureSystemTime;
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13640:16: note:   crosses initialization of ‘ecs_time_t t’
13640 |     ecs_time_t t = {0};
      |                ^
../src/flecs/distr/flecs.c:13966:1: error: jump to label ‘error’
13966 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:13632:5: note: in expansion of macro ‘ecs_check’
13632 |     ecs_check(desc->event != EcsWildcard, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:13737:28: note:   crosses initialization of ‘ecs_event_id_record_t* iders [5]’
13737 |     ecs_event_id_record_t *iders[5] = {0};
      |                            ^~~~~
../src/flecs/distr/flecs.c:13735:10: note:   crosses initialization of ‘bool has_observed’
13735 |     bool has_observed = table_flags & EcsTableHasTraversable;
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13732:10: note:   crosses initialization of ‘bool can_forward’
13732 |     bool can_forward = event != EcsOnSet;
      |          ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13725:10: note:   crosses initialization of ‘bool can_override’
13725 |     bool can_override = count && (table_flags & EcsTableHasIsA) && (
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13720:15: note:   crosses initialization of ‘ecs_id_t* id_array’
13720 |     ecs_id_t *id_array = ids->array;
      |               ^~~~~~~~
../src/flecs/distr/flecs.c:13719:13: note:   crosses initialization of ‘int32_t id_count’
13719 |     int32_t id_count = ids->count;
      |             ^~~~~~~~
../src/flecs/distr/flecs.c:13712:19: note:   crosses initialization of ‘ecs_column_t* columns’
13712 |     ecs_column_t *columns = NULL;
      |                   ^~~~~~~
../src/flecs/distr/flecs.c:13711:17: note:   crosses initialization of ‘ecs_data_t* storage’
13711 |     ecs_data_t *storage = NULL;
      |                 ^~~~~~~
../src/flecs/distr/flecs.c:13709:31: note:   crosses initialization of ‘const ecs_event_record_t* er_onset’
13709 |     const ecs_event_record_t *er_onset = flecs_event_record_get_if(observable, EcsOnSet);
      |                               ^~~~~~~~
../src/flecs/distr/flecs.c:13708:31: note:   crosses initialization of ‘const ecs_event_record_t* wcer’
13708 |     const ecs_event_record_t *wcer = flecs_event_record_get_if(observable, EcsWildcard);
      |                               ^~~~
../src/flecs/distr/flecs.c:13707:31: note:   crosses initialization of ‘const ecs_event_record_t* er’
13707 |     const ecs_event_record_t *er = flecs_event_record_get_if(observable, event);
      |                               ^~
../src/flecs/distr/flecs.c:13697:23: note:   crosses initialization of ‘ecs_observable_t* observable’
13697 |     ecs_observable_t *observable = ecs_get_observable(desc->observable);
      |                       ^~~~~~~~~~
../src/flecs/distr/flecs.c:13679:16: note:   crosses initialization of ‘ecs_iter_t it’
13679 |     ecs_iter_t it = {
      |                ^~
../src/flecs/distr/flecs.c:13677:18: note:   crosses initialization of ‘ecs_entity_t sources_cache’
13677 |     ecs_entity_t sources_cache = 0;
      |                  ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:13676:31: note:   crosses initialization of ‘const ecs_table_record_t* trs_cache’
13676 |     const ecs_table_record_t* trs_cache = 0;
      |                               ^~~~~~~~~
../src/flecs/distr/flecs.c:13675:16: note:   crosses initialization of ‘ecs_size_t sizes_cache’
13675 |     ecs_size_t sizes_cache = 0;
      |                ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13674:14: note:   crosses initialization of ‘ecs_id_t ids_cache’
13674 |     ecs_id_t ids_cache = 0;
      |              ^~~~~~~~~
../src/flecs/distr/flecs.c:13672:13: note:   crosses initialization of ‘int32_t evtx’
13672 |     int32_t evtx = ++world->event_id;
      |             ^~~~
../src/flecs/distr/flecs.c:13661:10: note:   crosses initialization of ‘bool table_event’
13661 |     bool table_event = desc->flags & EcsEventTableOnly;
      |          ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13654:13: note:   crosses initialization of ‘int32_t defer’
13654 |     int32_t defer = world->stages[0]->defer;
      |             ^~~~~
../src/flecs/distr/flecs.c:13651:19: note:   crosses initialization of ‘ecs_flags32_t table_flags’
13651 |     ecs_flags32_t table_flags = table->flags;
      |                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13650:16: note:   crosses initialization of ‘int32_t count’
13650 |     int32_t i, count = desc->count;
      |                ^~~~~
../src/flecs/distr/flecs.c:13649:13: note:   crosses initialization of ‘int32_t offset’
13649 |     int32_t offset = desc->offset;
      |             ^~~~~~
../src/flecs/distr/flecs.c:13648:40: note:   crosses initialization of ‘ecs_table_t* other_table’
13648 |     ecs_table_t *table = desc->table, *other_table = desc->other_table;
      |                                        ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13648:18: note:   crosses initialization of ‘ecs_table_t* table’
13648 |     ecs_table_t *table = desc->table, *other_table = desc->other_table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:13647:18: note:   crosses initialization of ‘ecs_entity_t event’
13647 |     ecs_entity_t event = desc->event;
      |                  ^~~~~
../src/flecs/distr/flecs.c:13646:23: note:   crosses initialization of ‘const ecs_type_t* ids’
13646 |     const ecs_type_t *ids = desc->ids;
      |                       ^~~
../src/flecs/distr/flecs.c:13641:10: note:   crosses initialization of ‘bool measure_time’
13641 |     bool measure_time = world->flags & EcsWorldMeasureSystemTime;
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13640:16: note:   crosses initialization of ‘ecs_time_t t’
13640 |     ecs_time_t t = {0};
      |                ^
../src/flecs/distr/flecs.c:13966:1: error: jump to label ‘error’
13966 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:13631:5: note: in expansion of macro ‘ecs_check’
13631 |     ecs_check(desc->event != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:13737:28: note:   crosses initialization of ‘ecs_event_id_record_t* iders [5]’
13737 |     ecs_event_id_record_t *iders[5] = {0};
      |                            ^~~~~
../src/flecs/distr/flecs.c:13735:10: note:   crosses initialization of ‘bool has_observed’
13735 |     bool has_observed = table_flags & EcsTableHasTraversable;
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13732:10: note:   crosses initialization of ‘bool can_forward’
13732 |     bool can_forward = event != EcsOnSet;
      |          ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13725:10: note:   crosses initialization of ‘bool can_override’
13725 |     bool can_override = count && (table_flags & EcsTableHasIsA) && (
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13720:15: note:   crosses initialization of ‘ecs_id_t* id_array’
13720 |     ecs_id_t *id_array = ids->array;
      |               ^~~~~~~~
../src/flecs/distr/flecs.c:13719:13: note:   crosses initialization of ‘int32_t id_count’
13719 |     int32_t id_count = ids->count;
      |             ^~~~~~~~
../src/flecs/distr/flecs.c:13712:19: note:   crosses initialization of ‘ecs_column_t* columns’
13712 |     ecs_column_t *columns = NULL;
      |                   ^~~~~~~
../src/flecs/distr/flecs.c:13711:17: note:   crosses initialization of ‘ecs_data_t* storage’
13711 |     ecs_data_t *storage = NULL;
      |                 ^~~~~~~
../src/flecs/distr/flecs.c:13709:31: note:   crosses initialization of ‘const ecs_event_record_t* er_onset’
13709 |     const ecs_event_record_t *er_onset = flecs_event_record_get_if(observable, EcsOnSet);
      |                               ^~~~~~~~
../src/flecs/distr/flecs.c:13708:31: note:   crosses initialization of ‘const ecs_event_record_t* wcer’
13708 |     const ecs_event_record_t *wcer = flecs_event_record_get_if(observable, EcsWildcard);
      |                               ^~~~
../src/flecs/distr/flecs.c:13707:31: note:   crosses initialization of ‘const ecs_event_record_t* er’
13707 |     const ecs_event_record_t *er = flecs_event_record_get_if(observable, event);
      |                               ^~
../src/flecs/distr/flecs.c:13697:23: note:   crosses initialization of ‘ecs_observable_t* observable’
13697 |     ecs_observable_t *observable = ecs_get_observable(desc->observable);
      |                       ^~~~~~~~~~
../src/flecs/distr/flecs.c:13679:16: note:   crosses initialization of ‘ecs_iter_t it’
13679 |     ecs_iter_t it = {
      |                ^~
../src/flecs/distr/flecs.c:13677:18: note:   crosses initialization of ‘ecs_entity_t sources_cache’
13677 |     ecs_entity_t sources_cache = 0;
      |                  ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:13676:31: note:   crosses initialization of ‘const ecs_table_record_t* trs_cache’
13676 |     const ecs_table_record_t* trs_cache = 0;
      |                               ^~~~~~~~~
../src/flecs/distr/flecs.c:13675:16: note:   crosses initialization of ‘ecs_size_t sizes_cache’
13675 |     ecs_size_t sizes_cache = 0;
      |                ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13674:14: note:   crosses initialization of ‘ecs_id_t ids_cache’
13674 |     ecs_id_t ids_cache = 0;
      |              ^~~~~~~~~
../src/flecs/distr/flecs.c:13672:13: note:   crosses initialization of ‘int32_t evtx’
13672 |     int32_t evtx = ++world->event_id;
      |             ^~~~
../src/flecs/distr/flecs.c:13661:10: note:   crosses initialization of ‘bool table_event’
13661 |     bool table_event = desc->flags & EcsEventTableOnly;
      |          ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13654:13: note:   crosses initialization of ‘int32_t defer’
13654 |     int32_t defer = world->stages[0]->defer;
      |             ^~~~~
../src/flecs/distr/flecs.c:13651:19: note:   crosses initialization of ‘ecs_flags32_t table_flags’
13651 |     ecs_flags32_t table_flags = table->flags;
      |                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13650:16: note:   crosses initialization of ‘int32_t count’
13650 |     int32_t i, count = desc->count;
      |                ^~~~~
../src/flecs/distr/flecs.c:13649:13: note:   crosses initialization of ‘int32_t offset’
13649 |     int32_t offset = desc->offset;
      |             ^~~~~~
../src/flecs/distr/flecs.c:13648:40: note:   crosses initialization of ‘ecs_table_t* other_table’
13648 |     ecs_table_t *table = desc->table, *other_table = desc->other_table;
      |                                        ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13648:18: note:   crosses initialization of ‘ecs_table_t* table’
13648 |     ecs_table_t *table = desc->table, *other_table = desc->other_table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:13647:18: note:   crosses initialization of ‘ecs_entity_t event’
13647 |     ecs_entity_t event = desc->event;
      |                  ^~~~~
../src/flecs/distr/flecs.c:13646:23: note:   crosses initialization of ‘const ecs_type_t* ids’
13646 |     const ecs_type_t *ids = desc->ids;
      |                       ^~~
../src/flecs/distr/flecs.c:13641:10: note:   crosses initialization of ‘bool measure_time’
13641 |     bool measure_time = world->flags & EcsWorldMeasureSystemTime;
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13640:16: note:   crosses initialization of ‘ecs_time_t t’
13640 |     ecs_time_t t = {0};
      |                ^
../src/flecs/distr/flecs.c:13966:1: error: jump to label ‘error’
13966 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:13630:5: note: in expansion of macro ‘ecs_check’
13630 |     ecs_check(desc != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:13737:28: note:   crosses initialization of ‘ecs_event_id_record_t* iders [5]’
13737 |     ecs_event_id_record_t *iders[5] = {0};
      |                            ^~~~~
../src/flecs/distr/flecs.c:13735:10: note:   crosses initialization of ‘bool has_observed’
13735 |     bool has_observed = table_flags & EcsTableHasTraversable;
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13732:10: note:   crosses initialization of ‘bool can_forward’
13732 |     bool can_forward = event != EcsOnSet;
      |          ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13725:10: note:   crosses initialization of ‘bool can_override’
13725 |     bool can_override = count && (table_flags & EcsTableHasIsA) && (
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13720:15: note:   crosses initialization of ‘ecs_id_t* id_array’
13720 |     ecs_id_t *id_array = ids->array;
      |               ^~~~~~~~
../src/flecs/distr/flecs.c:13719:13: note:   crosses initialization of ‘int32_t id_count’
13719 |     int32_t id_count = ids->count;
      |             ^~~~~~~~
../src/flecs/distr/flecs.c:13712:19: note:   crosses initialization of ‘ecs_column_t* columns’
13712 |     ecs_column_t *columns = NULL;
      |                   ^~~~~~~
../src/flecs/distr/flecs.c:13711:17: note:   crosses initialization of ‘ecs_data_t* storage’
13711 |     ecs_data_t *storage = NULL;
      |                 ^~~~~~~
../src/flecs/distr/flecs.c:13709:31: note:   crosses initialization of ‘const ecs_event_record_t* er_onset’
13709 |     const ecs_event_record_t *er_onset = flecs_event_record_get_if(observable, EcsOnSet);
      |                               ^~~~~~~~
../src/flecs/distr/flecs.c:13708:31: note:   crosses initialization of ‘const ecs_event_record_t* wcer’
13708 |     const ecs_event_record_t *wcer = flecs_event_record_get_if(observable, EcsWildcard);
      |                               ^~~~
../src/flecs/distr/flecs.c:13707:31: note:   crosses initialization of ‘const ecs_event_record_t* er’
13707 |     const ecs_event_record_t *er = flecs_event_record_get_if(observable, event);
      |                               ^~
../src/flecs/distr/flecs.c:13697:23: note:   crosses initialization of ‘ecs_observable_t* observable’
13697 |     ecs_observable_t *observable = ecs_get_observable(desc->observable);
      |                       ^~~~~~~~~~
../src/flecs/distr/flecs.c:13679:16: note:   crosses initialization of ‘ecs_iter_t it’
13679 |     ecs_iter_t it = {
      |                ^~
../src/flecs/distr/flecs.c:13677:18: note:   crosses initialization of ‘ecs_entity_t sources_cache’
13677 |     ecs_entity_t sources_cache = 0;
      |                  ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:13676:31: note:   crosses initialization of ‘const ecs_table_record_t* trs_cache’
13676 |     const ecs_table_record_t* trs_cache = 0;
      |                               ^~~~~~~~~
../src/flecs/distr/flecs.c:13675:16: note:   crosses initialization of ‘ecs_size_t sizes_cache’
13675 |     ecs_size_t sizes_cache = 0;
      |                ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13674:14: note:   crosses initialization of ‘ecs_id_t ids_cache’
13674 |     ecs_id_t ids_cache = 0;
      |              ^~~~~~~~~
../src/flecs/distr/flecs.c:13672:13: note:   crosses initialization of ‘int32_t evtx’
13672 |     int32_t evtx = ++world->event_id;
      |             ^~~~
../src/flecs/distr/flecs.c:13661:10: note:   crosses initialization of ‘bool table_event’
13661 |     bool table_event = desc->flags & EcsEventTableOnly;
      |          ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13654:13: note:   crosses initialization of ‘int32_t defer’
13654 |     int32_t defer = world->stages[0]->defer;
      |             ^~~~~
../src/flecs/distr/flecs.c:13651:19: note:   crosses initialization of ‘ecs_flags32_t table_flags’
13651 |     ecs_flags32_t table_flags = table->flags;
      |                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13650:16: note:   crosses initialization of ‘int32_t count’
13650 |     int32_t i, count = desc->count;
      |                ^~~~~
../src/flecs/distr/flecs.c:13649:13: note:   crosses initialization of ‘int32_t offset’
13649 |     int32_t offset = desc->offset;
      |             ^~~~~~
../src/flecs/distr/flecs.c:13648:40: note:   crosses initialization of ‘ecs_table_t* other_table’
13648 |     ecs_table_t *table = desc->table, *other_table = desc->other_table;
      |                                        ^~~~~~~~~~~
../src/flecs/distr/flecs.c:13648:18: note:   crosses initialization of ‘ecs_table_t* table’
13648 |     ecs_table_t *table = desc->table, *other_table = desc->other_table;
      |                  ^~~~~
../src/flecs/distr/flecs.c:13647:18: note:   crosses initialization of ‘ecs_entity_t event’
13647 |     ecs_entity_t event = desc->event;
      |                  ^~~~~
../src/flecs/distr/flecs.c:13646:23: note:   crosses initialization of ‘const ecs_type_t* ids’
13646 |     const ecs_type_t *ids = desc->ids;
      |                       ^~~
../src/flecs/distr/flecs.c:13641:10: note:   crosses initialization of ‘bool measure_time’
13641 |     bool measure_time = world->flags & EcsWorldMeasureSystemTime;
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:13640:16: note:   crosses initialization of ‘ecs_time_t t’
13640 |     ecs_time_t t = {0};
      |                ^
../src/flecs/distr/flecs.c: In function ‘void ecs_emit(ecs_world_t*, ecs_event_desc_t*)’:
../src/flecs/distr/flecs.c:14008:5: error: designator order for field ‘ecs_type_t::array’ does not match declaration order in ‘ecs_type_t’
14008 |     };
      |     ^
../src/flecs/distr/flecs.c:14026:1: error: jump to label ‘error’
14026 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:13983:5: note: in expansion of macro ‘ecs_check’
13983 |     ecs_check(!(desc->param && desc->const_param), ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:14005:16: note:   crosses initialization of ‘ecs_type_t default_ids’
14005 |     ecs_type_t default_ids = (ecs_type_t){
      |                ^~~~~~~~~~~
../src/flecs/distr/flecs.c:14026:1: error: jump to label ‘error’
14026 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:13982:5: note: in expansion of macro ‘ecs_check’
13982 |     ecs_check(desc != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:14005:16: note:   crosses initialization of ‘ecs_type_t default_ids’
14005 |     ecs_type_t default_ids = (ecs_type_t){
      |                ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_inc_observer_count(ecs_world_t*, ecs_entity_t, ecs_event_record_t*, ecs_id_t, int32_t)’:
../src/flecs/distr/flecs.c:14120:60: error: taking address of rvalue [-fpermissive]
14120 |         flecs_notify_tables(world, id, &(ecs_table_event_t){
      |                                                            ^
14121 |             .kind = EcsTableTriggersForId,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                  
14122 |             .event = event
      |             ~~~~~~~~~~~~~~                                  
14123 |         });
      |         ~                                                   
../src/flecs/distr/flecs.c:14134:60: error: taking address of rvalue [-fpermissive]
14134 |         flecs_notify_tables(world, id, &(ecs_table_event_t){
      |                                                            ^
14135 |             .kind = EcsTableNoTriggersForId,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                
14136 |             .event = event
      |             ~~~~~~~~~~~~~~                                  
14137 |         });
      |         ~                                                   
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_register_observer_for_id(ecs_world_t*, ecs_observable_t*, ecs_observer_t*, size_t)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_observer_t*’ to type ‘ecs_observer_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:2500:40: note: in expansion of macro ‘ECS_CONST_CAST’
 2500 | #define flecs_observer_impl(observer) (ECS_CONST_CAST(ecs_observer_impl_t*, observer))
      |                                        ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:14175:33: note: in expansion of macro ‘flecs_observer_impl’
14175 |     ecs_observer_impl_t *impl = flecs_observer_impl(o);
      |                                 ^~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:3942:31: error: invalid conversion from ‘void*’ to ‘ecs_map_t*’ [-fpermissive]
 3942 | #define ECS_OFFSET(o, offset) reinterpret_cast<void*>((reinterpret_cast<uintptr_t>(o)) + (static_cast<uintptr_t>(offset)))
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.c:14194:32: note: in expansion of macro ‘ECS_OFFSET’
14194 |         ecs_map_t *observers = ECS_OFFSET(idt, offset);
      |                                ^~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_unregister_observer_for_id(ecs_world_t*, ecs_observable_t*, ecs_observer_t*, size_t)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_observer_t*’ to type ‘ecs_observer_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:2500:40: note: in expansion of macro ‘ECS_CONST_CAST’
 2500 | #define flecs_observer_impl(observer) (ECS_CONST_CAST(ecs_observer_impl_t*, observer))
      |                                        ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:14235:33: note: in expansion of macro ‘flecs_observer_impl’
14235 |     ecs_observer_impl_t *impl = flecs_observer_impl(o);
      |                                 ^~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:3942:31: error: invalid conversion from ‘void*’ to ‘ecs_map_t*’ [-fpermissive]
 3942 | #define ECS_OFFSET(o, offset) reinterpret_cast<void*>((reinterpret_cast<uintptr_t>(o)) + (static_cast<uintptr_t>(offset)))
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.c:14253:35: note: in expansion of macro ‘ECS_OFFSET’
14253 |         ecs_map_t *id_observers = ECS_OFFSET(idt, offset);
      |                                   ^~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘bool flecs_ignore_observer(ecs_observer_t*, ecs_table_t*, ecs_iter_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_observer_t*’ to type ‘ecs_observer_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:2500:40: note: in expansion of macro ‘ECS_CONST_CAST’
 2500 | #define flecs_observer_impl(observer) (ECS_CONST_CAST(ecs_observer_impl_t*, observer))
      |                                        ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:14302:33: note: in expansion of macro ‘flecs_observer_impl’
14302 |     ecs_observer_impl_t *impl = flecs_observer_impl(o);
      |                                 ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_default_uni_observer_run_callback(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:14402:29: error: invalid conversion from ‘void*’ to ‘ecs_observer_t*’ [-fpermissive]
14402 |     ecs_observer_t *o = it->ctx;
      |                         ~~~~^~~
      |                             |
      |                             void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_uni_observer_invoke(ecs_world_t*, ecs_observer_t*, ecs_iter_t*, ecs_table_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_observer_t*’ to type ‘ecs_observer_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:2500:40: note: in expansion of macro ‘ECS_CONST_CAST’
 2500 | #define flecs_observer_impl(observer) (ECS_CONST_CAST(ecs_observer_impl_t*, observer))
      |                                        ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:14436:33: note: in expansion of macro ‘flecs_observer_impl’
14436 |     ecs_observer_impl_t *impl = flecs_observer_impl(o);
      |                                 ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_observers_invoke(ecs_world_t*, ecs_map_t*, ecs_iter_t*, ecs_table_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_observer_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:14479:33: note: in expansion of macro ‘ecs_map_ptr’
14479 |             ecs_observer_t *o = ecs_map_ptr(&oit);
      |                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_multi_observer_invoke(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:14493:29: error: invalid conversion from ‘void*’ to ‘ecs_observer_t*’ [-fpermissive]
14493 |     ecs_observer_t *o = it->ctx;
      |                         ~~~~^~~
      |                             |
      |                             void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_observer_t*’ to type ‘ecs_observer_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:2500:40: note: in expansion of macro ‘ECS_CONST_CAST’
 2500 | #define flecs_observer_impl(observer) (ECS_CONST_CAST(ecs_observer_impl_t*, observer))
      |                                        ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:14496:33: note: in expansion of macro ‘flecs_observer_impl’
14496 |     ecs_observer_impl_t *impl = flecs_observer_impl(o);
      |                                 ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_multi_observer_invoke_no_query(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:14609:29: error: invalid conversion from ‘void*’ to ‘ecs_observer_t*’ [-fpermissive]
14609 |     ecs_observer_t *o = it->ctx;
      |                         ~~~~^~~
      |                             |
      |                             void*
../src/flecs/distr/flecs.c: In function ‘void flecs_multi_observer_builtin_run(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:14655:29: error: invalid conversion from ‘void*’ to ‘ecs_observer_t*’ [-fpermissive]
14655 |     ecs_observer_t *o = it->ctx;
      |                         ~~~~^~~
      |                             |
      |                             void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_observer_t*’ to type ‘ecs_observer_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:2500:40: note: in expansion of macro ‘ECS_CONST_CAST’
 2500 | #define flecs_observer_impl(observer) (ECS_CONST_CAST(ecs_observer_impl_t*, observer))
      |                                        ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:14659:13: note: in expansion of macro ‘flecs_observer_impl’
14659 |         if (flecs_observer_impl(o)->flags & EcsObserverBypassQuery) {
      |             ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_uni_observer_init(ecs_world_t*, ecs_observer_t*, const ecs_observer_desc_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_observer_t*’ to type ‘ecs_observer_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:2500:40: note: in expansion of macro ‘ECS_CONST_CAST’
 2500 | #define flecs_observer_impl(observer) (ECS_CONST_CAST(ecs_observer_impl_t*, observer))
      |                                        ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:14732:33: note: in expansion of macro ‘flecs_observer_impl’
14732 |     ecs_observer_impl_t *impl = flecs_observer_impl(o);
      |                                 ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_observer_add_child(ecs_world_t*, ecs_observer_t*, const ecs_observer_desc_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_observer_t*’ to type ‘ecs_observer_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:2500:40: note: in expansion of macro ‘ECS_CONST_CAST’
 2500 | #define flecs_observer_impl(observer) (ECS_CONST_CAST(ecs_observer_impl_t*, observer))
      |                                        ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:14780:33: note: in expansion of macro ‘flecs_observer_impl’
14780 |     ecs_observer_impl_t *impl = flecs_observer_impl(o);
      |                                 ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_multi_observer_init(ecs_world_t*, ecs_observer_t*, const ecs_observer_desc_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_observer_t*’ to type ‘ecs_observer_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:2500:40: note: in expansion of macro ‘ECS_CONST_CAST’
 2500 | #define flecs_observer_impl(observer) (ECS_CONST_CAST(ecs_observer_impl_t*, observer))
      |                                        ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:14793:33: note: in expansion of macro ‘flecs_observer_impl’
14793 |     ecs_observer_impl_t *impl = flecs_observer_impl(o);
      |                                 ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_observer_t*’ to type ‘ecs_observer_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:2500:40: note: in expansion of macro ‘ECS_CONST_CAST’
 2500 | #define flecs_observer_impl(observer) (ECS_CONST_CAST(ecs_observer_impl_t*, observer))
      |                                        ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:14967:9: note: in expansion of macro ‘flecs_observer_impl’
14967 |         flecs_observer_impl(o)->not_query =
      |         ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_observer_poly_fini(void*)’:
../src/flecs/distr/flecs.c:14978:25: error: invalid conversion from ‘void*’ to ‘ecs_observer_t*’ [-fpermissive]
14978 |     flecs_observer_fini(ptr);
      |                         ^~~
      |                         |
      |                         void*
../src/flecs/distr/flecs.c:2540:21: note:   initializing argument 1 of ‘void flecs_observer_fini(ecs_observer_t*)’
 2540 |     ecs_observer_t *observer);
      |     ~~~~~~~~~~~~~~~~^~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_observer_t* flecs_observer_init(ecs_world_t*, ecs_entity_t, const ecs_observer_desc_t*)’:
../src/flecs/distr/flecs.c:15020:42: error: invalid conversion from ‘ecs_poly_t*’ {aka ‘void*’} to ‘ecs_observable_t*’ [-fpermissive]
15020 |     ecs_observable_t *observable = desc->observable;
      |                                    ~~~~~~^~~~~~~~~~
      |                                          |
      |                                          ecs_poly_t* {aka void*}
../src/flecs/distr/flecs.c:15112:1: error: jump to label ‘error’
15112 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:15080:5: note: in expansion of macro ‘ecs_check’
15080 |     ecs_check(o->event_count != 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:15096:10: note:   crosses initialization of ‘bool is_monitor’
15096 |     bool is_monitor = impl->flags & EcsObserverIsMonitor;
      |          ^~~~~~~~~~
../src/flecs/distr/flecs.c:15083:10: note:   crosses initialization of ‘bool multi’
15083 |     bool multi = false;
      |          ^~~~~
../src/flecs/distr/flecs.c:15112:1: error: jump to label ‘error’
15112 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:15054:13: note: in expansion of macro ‘ecs_check’
15054 |             ecs_check(i == 0, ECS_INVALID_PARAMETER,
      |             ^~~~~~~~~
../src/flecs/distr/flecs.c:15096:10: note:   crosses initialization of ‘bool is_monitor’
15096 |     bool is_monitor = impl->flags & EcsObserverIsMonitor;
      |          ^~~~~~~~~~
../src/flecs/distr/flecs.c:15083:10: note:   crosses initialization of ‘bool multi’
15083 |     bool multi = false;
      |          ^~~~~
../src/flecs/distr/flecs.c:15112:1: error: jump to label ‘error’
15112 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:15038:5: note: in expansion of macro ‘ecs_check’
15038 |     ecs_check(!(desc->yield_existing &&
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:15096:10: note:   crosses initialization of ‘bool is_monitor’
15096 |     bool is_monitor = impl->flags & EcsObserverIsMonitor;
      |          ^~~~~~~~~~
../src/flecs/distr/flecs.c:15083:10: note:   crosses initialization of ‘bool multi’
15083 |     bool multi = false;
      |          ^~~~~
../src/flecs/distr/flecs.c:15112:1: error: jump to label ‘error’
15112 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:15017:5: note: in expansion of macro ‘ecs_check’
15017 |     ecs_check(o->query->term_count > 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:15096:10: note:   crosses initialization of ‘bool is_monitor’
15096 |     bool is_monitor = impl->flags & EcsObserverIsMonitor;
      |          ^~~~~~~~~~
../src/flecs/distr/flecs.c:15083:10: note:   crosses initialization of ‘bool multi’
15083 |     bool multi = false;
      |          ^~~~~
../src/flecs/distr/flecs.c:15020:23: note:   crosses initialization of ‘ecs_observable_t* observable’
15020 |     ecs_observable_t *observable = desc->observable;
      |                       ^~~~~~~~~~
../src/flecs/distr/flecs.c:15112:1: error: jump to label ‘error’
15112 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:14988:5: note: in expansion of macro ‘ecs_check’
14988 |     ecs_check(desc->callback != NULL || desc->run != NULL,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:15096:10: note:   crosses initialization of ‘bool is_monitor’
15096 |     bool is_monitor = impl->flags & EcsObserverIsMonitor;
      |          ^~~~~~~~~~
../src/flecs/distr/flecs.c:15083:10: note:   crosses initialization of ‘bool multi’
15083 |     bool multi = false;
      |          ^~~~~
../src/flecs/distr/flecs.c:15020:23: note:   crosses initialization of ‘ecs_observable_t* observable’
15020 |     ecs_observable_t *observable = desc->observable;
      |                       ^~~~~~~~~~
../src/flecs/distr/flecs.c:15008:18: note:   crosses initialization of ‘ecs_query_t* query’
15008 |     ecs_query_t *query = o->query = ecs_query_init(
      |                  ^~~~~
../src/flecs/distr/flecs.c:15003:22: note:   crosses initialization of ‘ecs_query_desc_t query_desc’
15003 |     ecs_query_desc_t query_desc = desc->query;
      |                      ^~~~~~~~~~
../src/flecs/distr/flecs.c:14996:21: note:   crosses initialization of ‘ecs_observer_t* o’
14996 |     ecs_observer_t *o = &impl->pub;
      |                     ^
../src/flecs/distr/flecs.c:14992:26: note:   crosses initialization of ‘ecs_observer_impl_t* impl’
14992 |     ecs_observer_impl_t *impl = flecs_sparse_add_t(
      |                          ^~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_observer_init(ecs_world_t*, const ecs_observer_desc_t*)’:
../src/flecs/distr/flecs.c:15130:36: error: taking address of rvalue [-fpermissive]
15130 |         entity = ecs_entity(world, {0});
      |                                    ^~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:15211:1: error: jump to label ‘error’
15211 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:15125:5: note: in expansion of macro ‘ecs_check’
15125 |     ecs_check(!(world->flags & EcsWorldFini), ECS_INVALID_OPERATION,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:15133:14: note:   crosses initialization of ‘EcsPoly* poly’
15133 |     EcsPoly *poly = flecs_poly_bind(world, entity, ecs_observer_t);
      |              ^~~~
../src/flecs/distr/flecs.c:15211:1: error: jump to label ‘error’
15211 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:15123:5: note: in expansion of macro ‘ecs_check’
15123 |     ecs_check(desc->_canary == 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:15133:14: note:   crosses initialization of ‘EcsPoly* poly’
15133 |     EcsPoly *poly = flecs_poly_bind(world, entity, ecs_observer_t);
      |              ^~~~
../src/flecs/distr/flecs.c:15211:1: error: jump to label ‘error’
15211 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:15122:5: note: in expansion of macro ‘ecs_check’
15122 |     ecs_check(desc != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:15133:14: note:   crosses initialization of ‘EcsPoly* poly’
15133 |     EcsPoly *poly = flecs_poly_bind(world, entity, ecs_observer_t);
      |              ^~~~
../src/flecs/distr/flecs.c:15211:1: error: jump to label ‘error’
15211 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:15121:5: note: in expansion of macro ‘ecs_check’
15121 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:15133:14: note:   crosses initialization of ‘EcsPoly* poly’
15133 |     EcsPoly *poly = flecs_poly_bind(world, entity, ecs_observer_t);
      |              ^~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_observer_fini(ecs_observer_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_observer_t*’ to type ‘ecs_observer_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:2500:40: note: in expansion of macro ‘ECS_CONST_CAST’
 2500 | #define flecs_observer_impl(observer) (ECS_CONST_CAST(ecs_observer_impl_t*, observer))
      |                                        ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:15231:33: note: in expansion of macro ‘flecs_observer_impl’
15231 |     ecs_observer_impl_t *impl = flecs_observer_impl(o);
      |                                 ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:15238:50: error: invalid conversion from ‘void*’ to ‘ecs_observer_t**’ [-fpermissive]
15238 |         ecs_observer_t **children = ecs_vec_first(&impl->children);
      |                                     ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
      |                                                  |
      |                                                  void*
../src/flecs/distr/flecs.c: In function ‘void flecs_observer_set_disable_bit(ecs_world_t*, ecs_entity_t, ecs_flags32_t, bool)’:
../src/flecs/distr/flecs.c:15291:31: error: invalid conversion from ‘ecs_poly_t*’ {aka ‘void*’} to ‘ecs_observer_t*’ [-fpermissive]
15291 |     ecs_observer_t *o = poly->poly;
      |                         ~~~~~~^~~~
      |                               |
      |                               ecs_poly_t* {aka void*}
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_observer_t*’ to type ‘ecs_observer_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:2500:40: note: in expansion of macro ‘ECS_CONST_CAST’
 2500 | #define flecs_observer_impl(observer) (ECS_CONST_CAST(ecs_observer_impl_t*, observer))
      |                                        ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:15292:33: note: in expansion of macro ‘flecs_observer_impl’
15292 |     ecs_observer_impl_t *impl = flecs_observer_impl(o);
      |                                 ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:15294:50: error: invalid conversion from ‘void*’ to ‘ecs_observer_t**’ [-fpermissive]
15294 |         ecs_observer_t **children = ecs_vec_first(&impl->children);
      |                                     ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
      |                                                  |
      |                                                  void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_observer_t*’ to type ‘ecs_observer_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:3952:34: note: in definition of macro ‘ECS_BIT_SET’
 3952 | #define ECS_BIT_SET(flags, bit) (flags) |= (bit)
      |                                  ^~~~~
../src/flecs/distr/flecs.c:15298:17: note: in expansion of macro ‘ECS_BIT_COND’
15298 |                 ECS_BIT_COND(flecs_observer_impl(children[i])->flags, bit, cond);
      |                 ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:2500:40: note: in expansion of macro ‘ECS_CONST_CAST’
 2500 | #define flecs_observer_impl(observer) (ECS_CONST_CAST(ecs_observer_impl_t*, observer))
      |                                        ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:15298:30: note: in expansion of macro ‘flecs_observer_impl’
15298 |                 ECS_BIT_COND(flecs_observer_impl(children[i])->flags, bit, cond);
      |                              ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_observer_t*’ to type ‘ecs_observer_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:3953:36: note: in definition of macro ‘ECS_BIT_CLEAR’
 3953 | #define ECS_BIT_CLEAR(flags, bit) (flags) &= ~(bit)
      |                                    ^~~~~
../src/flecs/distr/flecs.c:15298:17: note: in expansion of macro ‘ECS_BIT_COND’
15298 |                 ECS_BIT_COND(flecs_observer_impl(children[i])->flags, bit, cond);
      |                 ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:2500:40: note: in expansion of macro ‘ECS_CONST_CAST’
 2500 | #define flecs_observer_impl(observer) (ECS_CONST_CAST(ecs_observer_impl_t*, observer))
      |                                        ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:15298:30: note: in expansion of macro ‘flecs_observer_impl’
15298 |                 ECS_BIT_COND(flecs_observer_impl(children[i])->flags, bit, cond);
      |                              ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: At global scope:
../src/flecs/distr/flecs.c:15328:1: error: designator order for field ‘ecs_os_api_t::log_level_’ does not match declaration order in ‘ecs_os_api_t’
15328 | };
      | ^
../src/flecs/distr/flecs.c: In function ‘void flecs_dump_backtrace(void*)’:
../src/flecs/distr/flecs.c:15398:17: error: invalid conversion from ‘void*’ to ‘FILE*’ [-fpermissive]
15398 |         fprintf(stream, "%s\n", strings[j]);
      |                 ^~~~~~
      |                 |
      |                 void*
In file included from ../src/flecs/distr/flecs.h:2234,
                 from ../src/flecs/distr/flecs.c:19:
/usr/include/stdio.h:350:38: note:   initializing argument 1 of ‘int fprintf(FILE*, const char*, ...)’
  350 | extern int fprintf (FILE *__restrict __stream,
      |                     ~~~~~~~~~~~~~~~~~^~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘char* ecs_os_api_strdup(const char*)’:
../src/flecs/distr/flecs.h:2607:47: error: invalid conversion from ‘void*’ to ‘char*’ [-fpermissive]
 2607 | #define ecs_os_malloc(size) ecs_os_api.malloc_(size)
      |                             ~~~~~~~~~~~~~~~~~~^~~~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c:15643:24: note: in expansion of macro ‘ecs_os_malloc’
15643 |         char *result = ecs_os_malloc(len + 1);
      |                        ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c: At global scope:
../src/flecs/distr/flecs.c:15886:1: sorry, unimplemented: non-trivial designated initializers not supported
15886 | };
      | ^
../src/flecs/distr/flecs.c:15902:1: sorry, unimplemented: non-trivial designated initializers not supported
15902 | };
      | ^
../src/flecs/distr/flecs.c: In function ‘void* assert_mixin(const ecs_poly_t*, ecs_mixin_kind_t)’:
../src/flecs/distr/flecs.c:15912:31: error: invalid conversion from ‘const ecs_poly_t*’ {aka ‘const void*’} to ‘const ecs_header_t*’ [-fpermissive]
15912 |     const ecs_header_t *hdr = poly;
      |                               ^~~~
      |                               |
      |                               const ecs_poly_t* {aka const void*}
../src/flecs/distr/flecs.c: In function ‘void* flecs_poly_init_(ecs_poly_t*, int32_t, ecs_size_t, ecs_mixins_t*)’:
../src/flecs/distr/flecs.c:15938:25: error: invalid conversion from ‘ecs_poly_t*’ {aka ‘void*’} to ‘ecs_header_t*’ [-fpermissive]
15938 |     ecs_header_t *hdr = poly;
      |                         ^~~~
      |                         |
      |                         ecs_poly_t* {aka void*}
../src/flecs/distr/flecs.c: In function ‘void flecs_poly_fini_(ecs_poly_t*, int32_t)’:
../src/flecs/distr/flecs.c:15956:25: error: invalid conversion from ‘ecs_poly_t*’ {aka ‘void*’} to ‘ecs_header_t*’ [-fpermissive]
15956 |     ecs_header_t *hdr = poly;
      |                         ^~~~
      |                         |
      |                         ecs_poly_t* {aka void*}
../src/flecs/distr/flecs.c: In function ‘int32_t flecs_poly_claim_(ecs_poly_t*)’:
../src/flecs/distr/flecs.c:15970:25: error: invalid conversion from ‘ecs_poly_t*’ {aka ‘void*’} to ‘ecs_header_t*’ [-fpermissive]
15970 |     ecs_header_t *hdr = poly;
      |                         ^~~~
      |                         |
      |                         ecs_poly_t* {aka void*}
../src/flecs/distr/flecs.c: In function ‘int32_t flecs_poly_release_(ecs_poly_t*)’:
../src/flecs/distr/flecs.c:15984:25: error: invalid conversion from ‘ecs_poly_t*’ {aka ‘void*’} to ‘ecs_header_t*’ [-fpermissive]
15984 |     ecs_header_t *hdr = poly;
      |                         ^~~~
      |                         |
      |                         ecs_poly_t* {aka void*}
../src/flecs/distr/flecs.c: In function ‘int32_t flecs_poly_refcount(ecs_poly_t*)’:
../src/flecs/distr/flecs.c:15998:25: error: invalid conversion from ‘ecs_poly_t*’ {aka ‘void*’} to ‘ecs_header_t*’ [-fpermissive]
15998 |     ecs_header_t *hdr = poly;
      |                         ^~~~
      |                         |
      |                         ecs_poly_t* {aka void*}
../src/flecs/distr/flecs.c: In function ‘bool flecs_poly_is_(const ecs_poly_t*, int32_t)’:
../src/flecs/distr/flecs.c:16067:31: error: invalid conversion from ‘const ecs_poly_t*’ {aka ‘const void*’} to ‘const ecs_header_t*’ [-fpermissive]
16067 |     const ecs_header_t *hdr = poly;
      |                               ^~~~
      |                               |
      |                               const ecs_poly_t* {aka const void*}
../src/flecs/distr/flecs.c: In function ‘const ecs_world_t* ecs_get_world(const ecs_poly_t*)’:
../src/flecs/distr/flecs.c:16083:16: error: invalid conversion from ‘const ecs_poly_t*’ {aka ‘const void*’} to ‘const ecs_world_t*’ [-fpermissive]
16083 |         return poly;
      |                ^~~~
      |                |
      |                const ecs_poly_t* {aka const void*}
../src/flecs/distr/flecs.c: In function ‘int32_t flecs_type_search(const ecs_table_t*, ecs_id_record_t*, ecs_id_t*, ecs_id_t*, ecs_table_record_t**)’:
../src/flecs/distr/flecs.c:16118:49: error: invalid conversion from ‘void*’ to ‘ecs_table_record_t*’ [-fpermissive]
16118 |     ecs_table_record_t *tr = ecs_table_cache_get(&idr->cache, table);
      |                              ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
      |                                                 |
      |                                                 void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘bool flecs_defer_bulk_new(ecs_world_t*, ecs_stage_t*, int32_t, ecs_id_t, const ecs_entity_t**)’:
../src/flecs/distr/flecs.h:2607:47: error: invalid conversion from ‘void*’ to ‘ecs_entity_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 2607 | #define ecs_os_malloc(size) ecs_os_api.malloc_(size)
      |                             ~~~~~~~~~~~~~~~~~~^~~~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c:16724:29: note: in expansion of macro ‘ecs_os_malloc’
16724 |         ecs_entity_t *ids = ecs_os_malloc(count * ECS_SIZEOF(ecs_entity_t));
      |                             ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void* flecs_defer_set(ecs_world_t*, ecs_stage_t*, ecs_cmd_kind_t, ecs_entity_t, ecs_id_t, ecs_size_t, void*, bool*)’:
../src/flecs/distr/flecs.c:16843:58: error: invalid conversion from ‘void*’ to ‘const ecs_sparse_t*’ [-fpermissive]
16843 |                     existing = flecs_sparse_get_any(idr->sparse, 0, entity);
      |                                                     ~~~~~^~~~~~
      |                                                          |
      |                                                          void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:1411:25: note:   initializing argument 1 of ‘void* flecs_sparse_get_any(const ecs_sparse_t*, ecs_size_t, uint64_t)’
 1411 |     const ecs_sparse_t *sparse,
      |     ~~~~~~~~~~~~~~~~~~~~^~~~~~
../src/flecs/distr/flecs.c:16959:1: error: jump to label ‘error’
16959 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:16815:5: note: in expansion of macro ‘ecs_check’
16815 |     ecs_check(ti != NULL, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:16851:10: note:   crosses initialization of ‘bool emplace’
16851 |     bool emplace = cmd_kind == EcsCmdEmplace;
      |          ^~~~~~~
../src/flecs/distr/flecs.c:16850:11: note:   crosses initialization of ‘void* cmd_value’
16850 |     void *cmd_value = existing;
      |           ^~~~~~~~~
../src/flecs/distr/flecs.c:16826:18: note:   crosses initialization of ‘ecs_table_t* table’
16826 |     ecs_table_t *table = NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:16825:11: note:   crosses initialization of ‘void* existing’
16825 |     void *existing = NULL;
      |           ^~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_enqueue(ecs_world_t*, ecs_stage_t*, ecs_event_desc_t*)’:
../src/flecs/distr/flecs.h:1635:22: error: invalid conversion from ‘void*’ to ‘ecs_event_desc_t*’ [-fpermissive]
 1635 |     flecs_stack_alloc(stack, ECS_SIZEOF(T), ECS_ALIGNOF(T))
      |     ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                      |
      |                      void*
../src/flecs/distr/flecs.c:16973:34: note: in expansion of macro ‘flecs_stack_alloc_t’
16973 |     ecs_event_desc_t *desc_cmd = flecs_stack_alloc_t(stack, ecs_event_desc_t);
      |                                  ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:1635:22: error: invalid conversion from ‘void*’ to ‘ecs_type_t*’ [-fpermissive]
 1635 |     flecs_stack_alloc(stack, ECS_SIZEOF(T), ECS_ALIGNOF(T))
      |     ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                      |
      |                      void*
../src/flecs/distr/flecs.c:16977:32: note: in expansion of macro ‘flecs_stack_alloc_t’
16977 |         ecs_type_t *type_cmd = flecs_stack_alloc_t(stack, ecs_type_t);
      |                                ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:1638:22: error: invalid conversion from ‘void*’ to ‘ecs_id_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 1638 |     flecs_stack_alloc(stack, ECS_SIZEOF(T) * count, ECS_ALIGNOF(T))
      |     ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                      |
      |                      void*
../src/flecs/distr/flecs.c:16980:27: note: in expansion of macro ‘flecs_stack_alloc_n’
16980 |         type_cmd->array = flecs_stack_alloc_n(stack, ecs_id_t, id_count);
      |                           ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_stage_merge_post_frame(ecs_world_t*, ecs_stage_t*)’:
../src/flecs/distr/flecs.c:17025:45: error: invalid conversion from ‘void*’ to ‘ecs_action_elem_t*’ [-fpermissive]
17025 |     ecs_action_elem_t *elems = ecs_vec_first(&stage->post_frame_actions);
      |                                ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                             |
      |                                             void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_stage_t* flecs_stage_new(ecs_world_t*)’:
../src/flecs/distr/flecs.h:2616:47: error: invalid conversion from ‘void*’ to ‘ecs_stage_t*’ [-fpermissive]
 2616 | #define ecs_os_calloc(size) ecs_os_api.calloc_(size)
      |                             ~~~~~~~~~~~~~~~~~~^~~~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c:17087:26: note: in expansion of macro ‘ecs_os_calloc’
17087 |     ecs_stage_t *stage = ecs_os_calloc(sizeof(ecs_stage_t));
      |                          ^~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int32_t ecs_stage_get_id(const ecs_world_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_world_t*’ to type ‘ecs_stage_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:17257:30: note: in expansion of macro ‘ECS_CONST_CAST’
17257 |         ecs_stage_t *stage = ECS_CONST_CAST(ecs_stage_t*, world);
      |                              ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘bool ecs_is_deferred(const ecs_world_t*)’:
../src/flecs/distr/flecs.c:17371:1: error: jump to label ‘error’
17371 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:17368:5: note: in expansion of macro ‘ecs_check’
17368 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:17369:24: note:   crosses initialization of ‘const ecs_stage_t* stage’
17369 |     const ecs_stage_t *stage = flecs_stage_from_readonly_world(world);
      |                        ^~~~~
../src/flecs/distr/flecs.c: In function ‘void* ecs_value_new_w_type_info(ecs_world_t*, const ecs_type_info_t*)’:
../src/flecs/distr/flecs.c:17430:1: error: jump to label ‘error’
17430 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:17420:5: note: in expansion of macro ‘ecs_check’
17420 |     ecs_check(ti != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:17423:11: note:   crosses initialization of ‘void* result’
17423 |     void *result = flecs_alloc(&world->allocator, ti->size);
      |           ^~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_stage_t* flecs_stage_from_readonly_world(const ecs_world_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_world_t*’ to type ‘ecs_stage_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:17955:16: note: in expansion of macro ‘ECS_CONST_CAST’
17955 |         return ECS_CONST_CAST(ecs_stage_t*, world);
      |                ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_stage_t* flecs_stage_from_world(ecs_world_t**)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_world_t*’ to type ‘ecs_stage_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:17976:12: note: in expansion of macro ‘ECS_CONST_CAST’
17976 |     return ECS_CONST_CAST(ecs_stage_t*, world);
      |            ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_eval_component_monitor(ecs_world_t*)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_monitor_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:18074:28: note: in expansion of macro ‘ecs_map_ptr’
18074 |         ecs_monitor_t *m = ecs_map_ptr(&it);
      |                            ^~~~~~~~~~~
../src/flecs/distr/flecs.c:18082:44: error: invalid conversion from ‘void*’ to ‘ecs_query_t**’ [-fpermissive]
18082 |         ecs_query_t **elems = ecs_vec_first(&m->queries);
      |                               ~~~~~~~~~~~~~^~~~~~~~~~~~~
      |                                            |
      |                                            void*
../src/flecs/distr/flecs.c:18086:75: error: taking address of rvalue [-fpermissive]
18086 |             flecs_query_cache_notify(world, q, &(ecs_query_cache_event_t) {
      |                                                                           ^
18087 |                 .kind = EcsQueryTableRematch
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                               
18088 |             });
      |             ~                                                              
../src/flecs/distr/flecs.c: In function ‘void flecs_monitor_unregister(ecs_world_t*, ecs_entity_t, ecs_query_t*)’:
../src/flecs/distr/flecs.c:18155:42: error: invalid conversion from ‘void*’ to ‘ecs_query_t**’ [-fpermissive]
18155 |     ecs_query_t **queries = ecs_vec_first(&m->queries);
      |                             ~~~~~~~~~~~~~^~~~~~~~~~~~~
      |                                          |
      |                                          void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_fini_root_tables(ecs_world_t*, ecs_id_record_t*, bool)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:18249:18: note: in expansion of macro ‘flecs_table_cache_next’
18249 |     while ((tr = flecs_table_cache_next(&it, ecs_table_record_t))) {
      |                  ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: At global scope:
../src/flecs/distr/flecs.c:18466:1: error: designator order for field ‘ecs_build_info_t::version’ does not match declaration order in ‘const ecs_build_info_t’
18466 | };
      | ^
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_world_t* ecs_init_w_args(int, char**)’:
../src/flecs/distr/flecs.c:18638:67: error: taking address of rvalue [-fpermissive]
18638 |         ecs_set_pair(world, EcsWorld, EcsDocDescription, EcsName, {app});
      |                                                                   ^~~~~
../src/flecs/distr/flecs.h:9793:32: note: in definition of macro ‘ecs_set_pair’
 9793 |         sizeof(First), &(First)__VA_ARGS__)
      |                                ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_notify_tables(ecs_world_t*, ecs_id_t, ecs_table_event_t*)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:18692:22: note: in expansion of macro ‘flecs_table_cache_next’
18692 |         while ((tr = flecs_table_cache_next(&it, ecs_table_record_t))) {
      |                      ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void ecs_set_hooks_id(ecs_world_t*, ecs_entity_t, const ecs_type_hooks_t*)’:
../src/flecs/distr/flecs.c:18890:1: error: jump to label ‘error’
18890 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:18780:5: note: in expansion of macro ‘ecs_check’
18780 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:18790:22: note:   crosses initialization of ‘ecs_type_info_t* ti’
18790 |     ecs_type_info_t *ti = flecs_type_info_ensure(world, component);
      |                      ^~
../src/flecs/distr/flecs.c: In function ‘void ecs_atfini(ecs_world_t*, ecs_fini_action_t, void*)’:
../src/flecs/distr/flecs.c:18919:1: error: jump to label ‘error’
18919 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:18911:5: note: in expansion of macro ‘ecs_check’
18911 |     ecs_check(action != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:18913:24: note:   crosses initialization of ‘ecs_action_elem_t* elem’
18913 |     ecs_action_elem_t *elem = ecs_vec_append_t(NULL, &world->fini_actions,
      |                        ^~~~
../src/flecs/distr/flecs.c: In function ‘void ecs_run_post_frame(ecs_world_t*, ecs_fini_action_t, void*)’:
../src/flecs/distr/flecs.c:18941:1: error: jump to label ‘error’
18941 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:18932:5: note: in expansion of macro ‘ecs_check’
18932 |     ecs_check((world->flags & EcsWorldFrameInProgress), ECS_INVALID_OPERATION,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:18935:24: note:   crosses initialization of ‘ecs_action_elem_t* elem’
18935 |     ecs_action_elem_t *elem = ecs_vec_append_t(&stage->allocator,
      |                        ^~~~
../src/flecs/distr/flecs.c:18941:1: error: jump to label ‘error’
18941 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:18929:5: note: in expansion of macro ‘ecs_check’
18929 |     ecs_check(action != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:18935:24: note:   crosses initialization of ‘ecs_action_elem_t* elem’
18935 |     ecs_action_elem_t *elem = ecs_vec_append_t(&stage->allocator,
      |                        ^~~~
../src/flecs/distr/flecs.c:18931:18: note:   crosses initialization of ‘ecs_stage_t* stage’
18931 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:18941:1: error: jump to label ‘error’
18941 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:18928:5: note: in expansion of macro ‘ecs_check’
18928 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:18935:24: note:   crosses initialization of ‘ecs_action_elem_t* elem’
18935 |     ecs_action_elem_t *elem = ecs_vec_append_t(&stage->allocator,
      |                        ^~~~
../src/flecs/distr/flecs.c:18931:18: note:   crosses initialization of ‘ecs_stage_t* stage’
18931 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_fini_actions(ecs_world_t*)’:
../src/flecs/distr/flecs.c:18965:45: error: invalid conversion from ‘void*’ to ‘ecs_action_elem_t*’ [-fpermissive]
18965 |     ecs_action_elem_t *elems = ecs_vec_first(&world->fini_actions);
      |                                ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
      |                                             |
      |                                             void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void ecs_measure_frame_time(ecs_world_t*, bool)’:
../src/flecs/distr/flecs.h:885:43: error: taking address of rvalue [-fpermissive]
  885 | #define ECS_EQZERO(a) ECS_EQ(a, (uint64_t){0})
      |                                           ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:885:23: note: in expansion of macro ‘ECS_EQ’
  885 | #define ECS_EQZERO(a) ECS_EQ(a, (uint64_t){0})
      |                       ^~~~~~
../src/flecs/distr/flecs.c:19127:9: note: in expansion of macro ‘ECS_EQZERO’
19127 |     if (ECS_EQZERO(world->info.target_fps) || enable) {
      |         ^~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void ecs_set_entity_range(ecs_world_t*, ecs_entity_t, ecs_entity_t)’:
../src/flecs/distr/flecs.c:19226:1: error: jump to label ‘error’
19226 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:19213:5: note: in expansion of macro ‘ecs_check’
19213 |     ecs_check(!id_end || id_end > id_start, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:19220:14: note:   crosses initialization of ‘uint32_t end’
19220 |     uint32_t end = (uint32_t)id_end;
      |              ^~~
../src/flecs/distr/flecs.c:19219:14: note:   crosses initialization of ‘uint32_t start’
19219 |     uint32_t start = (uint32_t)id_start;
      |              ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘float flecs_insert_sleep(ecs_world_t*, ecs_time_t*)’:
../src/flecs/distr/flecs.h:885:43: error: taking address of rvalue [-fpermissive]
  885 | #define ECS_EQZERO(a) ECS_EQ(a, (uint64_t){0})
      |                                           ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:885:23: note: in expansion of macro ‘ECS_EQ’
  885 | #define ECS_EQZERO(a) ECS_EQ(a, (uint64_t){0})
      |                       ^~~~~~
../src/flecs/distr/flecs.c:19408:9: note: in expansion of macro ‘ECS_EQZERO’
19408 |     if (ECS_EQZERO(world->info.target_fps)) {
      |         ^~~~~~~~~~
../src/flecs/distr/flecs.h:886:45: error: taking address of rvalue [-fpermissive]
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                                             ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:884:25: note: in expansion of macro ‘ECS_EQ’
  884 | #define ECS_NEQ(a, b) (!ECS_EQ(a, b))
      |                         ^~~~~~
../src/flecs/distr/flecs.h:886:24: note: in expansion of macro ‘ECS_NEQ’
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:19428:13: note: in expansion of macro ‘ECS_NEQZERO’
19428 |         if (ECS_NEQZERO(sleep_time)) {
      |             ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘float flecs_start_measure_frame(ecs_world_t*, float)’:
../src/flecs/distr/flecs.h:885:43: error: taking address of rvalue [-fpermissive]
  885 | #define ECS_EQZERO(a) ECS_EQ(a, (uint64_t){0})
      |                                           ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:885:23: note: in expansion of macro ‘ECS_EQ’
  885 | #define ECS_EQZERO(a) ECS_EQ(a, (uint64_t){0})
      |                       ^~~~~~
../src/flecs/distr/flecs.c:19453:10: note: in expansion of macro ‘ECS_EQZERO’
19453 |         (ECS_EQZERO(user_delta_time)))
      |          ^~~~~~~~~~
../src/flecs/distr/flecs.h:886:45: error: taking address of rvalue [-fpermissive]
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                                             ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:884:25: note: in expansion of macro ‘ECS_EQ’
  884 | #define ECS_NEQ(a, b) (!ECS_EQ(a, b))
      |                         ^~~~~~
../src/flecs/distr/flecs.h:886:24: note: in expansion of macro ‘ECS_NEQ’
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:19461:21: note: in expansion of macro ‘ECS_NEQZERO’
19461 |                 if (ECS_NEQZERO(world->info.target_fps)) {
      |                     ^~~~~~~~~~~
../src/flecs/distr/flecs.h:885:43: error: taking address of rvalue [-fpermissive]
  885 | #define ECS_EQZERO(a) ECS_EQ(a, (uint64_t){0})
      |                                           ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:885:23: note: in expansion of macro ‘ECS_EQ’
  885 | #define ECS_EQZERO(a) ECS_EQ(a, (uint64_t){0})
      |                       ^~~~~~
../src/flecs/distr/flecs.c:19467:25: note: in expansion of macro ‘ECS_EQZERO’
19467 |                     if (ECS_EQZERO(delta_time)) {
      |                         ^~~~~~~~~~
../src/flecs/distr/flecs.h:885:43: error: taking address of rvalue [-fpermissive]
  885 | #define ECS_EQZERO(a) ECS_EQ(a, (uint64_t){0})
      |                                           ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:885:23: note: in expansion of macro ‘ECS_EQ’
  885 | #define ECS_EQZERO(a) ECS_EQ(a, (uint64_t){0})
      |                       ^~~~~~
../src/flecs/distr/flecs.c:19475:18: note: in expansion of macro ‘ECS_EQZERO’
19475 |         } while (ECS_EQZERO(delta_time));
      |                  ^~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘float ecs_frame_begin(ecs_world_t*, float)’:
../src/flecs/distr/flecs.h:886:45: error: taking address of rvalue [-fpermissive]
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                                             ^
../src/flecs/distr/flecs.h:10810:11: note: in definition of macro ‘ecs_assert’
10810 |     if (!(condition)) {\
      |           ^~~~~~~~~
../src/flecs/distr/flecs.c:19507:5: note: in expansion of macro ‘ecs_check’
19507 |     ecs_check(ECS_NEQZERO(user_delta_time) || ecs_os_has_time(),
      |     ^~~~~~~~~
../src/flecs/distr/flecs.h:883:23: note: in expansion of macro ‘ecs_os_memcmp’
  883 | #define ECS_EQ(a, b) (ecs_os_memcmp(&(a), &(b), sizeof(a)) == 0)
      |                       ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:884:25: note: in expansion of macro ‘ECS_EQ’
  884 | #define ECS_NEQ(a, b) (!ECS_EQ(a, b))
      |                         ^~~~~~
../src/flecs/distr/flecs.h:886:24: note: in expansion of macro ‘ECS_NEQ’
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:19507:15: note: in expansion of macro ‘ECS_NEQZERO’
19507 |     ecs_check(ECS_NEQZERO(user_delta_time) || ecs_os_has_time(),
      |               ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.h:713,
                 from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:886:45: error: taking address of rvalue [-fpermissive]
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                                             ^
../src/flecs/distr/flecs.h:10857:5: note: in expansion of macro ‘ecs_assert’
10857 |     ecs_assert(condition, error_code, __VA_ARGS__);\
      |     ^~~~~~~~~~
../src/flecs/distr/flecs.c:19507:5: note: in expansion of macro ‘ecs_check’
19507 |     ecs_check(ECS_NEQZERO(user_delta_time) || ecs_os_has_time(),
      |     ^~~~~~~~~
../src/flecs/distr/flecs.h:883:23: note: in expansion of macro ‘ecs_os_memcmp’
  883 | #define ECS_EQ(a, b) (ecs_os_memcmp(&(a), &(b), sizeof(a)) == 0)
      |                       ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:884:25: note: in expansion of macro ‘ECS_EQ’
  884 | #define ECS_NEQ(a, b) (!ECS_EQ(a, b))
      |                         ^~~~~~
../src/flecs/distr/flecs.h:886:24: note: in expansion of macro ‘ECS_NEQ’
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:19507:15: note: in expansion of macro ‘ECS_NEQZERO’
19507 |     ecs_check(ECS_NEQZERO(user_delta_time) || ecs_os_has_time(),
      |               ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:885:43: error: taking address of rvalue [-fpermissive]
  885 | #define ECS_EQZERO(a) ECS_EQ(a, (uint64_t){0})
      |                                           ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:885:23: note: in expansion of macro ‘ECS_EQ’
  885 | #define ECS_EQZERO(a) ECS_EQ(a, (uint64_t){0})
      |                       ^~~~~~
../src/flecs/distr/flecs.c:19512:9: note: in expansion of macro ‘ECS_EQZERO’
19512 |     if (ECS_EQZERO(user_delta_time)) {
      |         ^~~~~~~~~~
../src/flecs/distr/flecs.c:19534:1: error: jump to label ‘error’
19534 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:19507:5: note: in expansion of macro ‘ecs_check’
19507 |     ecs_check(ECS_NEQZERO(user_delta_time) || ecs_os_has_time(),
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:19511:17: note:   crosses initialization of ‘float delta_time’
19511 |     ecs_ftime_t delta_time = flecs_start_measure_frame(world, user_delta_time);
      |                 ^~~~~~~~~~
../src/flecs/distr/flecs.c:19534:1: error: jump to label ‘error’
19534 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:19505:5: note: in expansion of macro ‘ecs_check’
19505 |     ecs_check(!(world->flags & EcsWorldFrameInProgress), ECS_INVALID_OPERATION,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:19511:17: note:   crosses initialization of ‘float delta_time’
19511 |     ecs_ftime_t delta_time = flecs_start_measure_frame(world, user_delta_time);
      |                 ^~~~~~~~~~
../src/flecs/distr/flecs.c:19534:1: error: jump to label ‘error’
19534 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:19503:5: note: in expansion of macro ‘ecs_check’
19503 |     ecs_check(!(world->flags & EcsWorldReadonly), ECS_INVALID_OPERATION,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:19511:17: note:   crosses initialization of ‘float delta_time’
19511 |     ecs_ftime_t delta_time = flecs_start_measure_frame(world, user_delta_time);
      |                 ^~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void ecs_frame_end(ecs_world_t*)’:
../src/flecs/distr/flecs.c:19562:1: error: jump to label ‘error’
19562 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:19544:5: note: in expansion of macro ‘ecs_check’
19544 |     ecs_check((world->flags & EcsWorldFrameInProgress), ECS_INVALID_OPERATION,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:19549:16: note:   crosses initialization of ‘int32_t count’
19549 |     int32_t i, count = world->stage_count;
      |                ^~~~~
../src/flecs/distr/flecs.c:19562:1: error: jump to label ‘error’
19562 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:19542:5: note: in expansion of macro ‘ecs_check’
19542 |     ecs_check(!(world->flags & EcsWorldReadonly), ECS_INVALID_OPERATION,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:19549:16: note:   crosses initialization of ‘int32_t count’
19549 |     int32_t i, count = world->stage_count;
      |                ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_process_empty_queries(ecs_world_t*)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:19595:22: note: in expansion of macro ‘flecs_table_cache_next’
19595 |         while ((tr = flecs_table_cache_next(&it, ecs_table_record_t))) {
      |                      ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:19597:52: error: invalid conversion from ‘void*’ to ‘EcsPoly*’ [-fpermissive]
19597 |             EcsPoly *queries = ecs_table_get_column(table, tr->column, 0);
      |                                ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
      |                                                    |
      |                                                    void*
../src/flecs/distr/flecs.c:19601:49: error: invalid conversion from ‘ecs_poly_t*’ {aka ‘void*’} to ‘ecs_query_t*’ [-fpermissive]
19601 |                 ecs_query_t *query = queries[i].poly;
      |                                      ~~~~~~~~~~~^~~~
      |                                                 |
      |                                                 ecs_poly_t* {aka void*}
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int32_t ecs_delete_empty_tables(ecs_world_t*, ecs_id_t, uint16_t, uint16_t, int32_t, double)’:
../src/flecs/distr/flecs.h:886:45: error: taking address of rvalue [-fpermissive]
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                                             ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:884:25: note: in expansion of macro ‘ECS_EQ’
  884 | #define ECS_NEQ(a, b) (!ECS_EQ(a, b))
      |                         ^~~~~~
../src/flecs/distr/flecs.h:886:24: note: in expansion of macro ‘ECS_NEQ’
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:19776:9: note: in expansion of macro ‘ECS_NEQZERO’
19776 |     if (ECS_NEQZERO(time_budget_seconds) || (ecs_should_log_1() && ecs_os_has_time())) {
      |         ^~~~~~~~~~~
../src/flecs/distr/flecs.h:886:45: error: taking address of rvalue [-fpermissive]
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                                             ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:884:25: note: in expansion of macro ‘ECS_EQ’
  884 | #define ECS_NEQ(a, b) (!ECS_EQ(a, b))
      |                         ^~~~~~
../src/flecs/distr/flecs.h:886:24: note: in expansion of macro ‘ECS_NEQ’
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:19780:9: note: in expansion of macro ‘ECS_NEQZERO’
19780 |     if (ECS_NEQZERO(time_budget_seconds)) {
      |         ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:19792:22: note: in expansion of macro ‘flecs_table_cache_next’
19792 |         while ((tr = flecs_table_cache_next(&it, ecs_table_record_t))) {
      |                      ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t flecs_alert_get_severity(ecs_world_t*, ecs_iter_t*, EcsAlert*)’:
../src/flecs/distr/flecs.c:20013:22: error: invalid conversion from ‘void*’ to ‘ecs_alert_severity_filter_t*’ [-fpermissive]
20013 |         ecs_vec_first(&alert->severity_filters);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
      |                      |
      |                      void*
../src/flecs/distr/flecs.c: In function ‘void MonitorAlerts(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:20088:34: error: invalid conversion from ‘ecs_poly_t*’ {aka ‘void*’} to ‘ecs_query_t*’ [-fpermissive]
20088 |         ecs_query_t *q = poly[i].poly;
      |                          ~~~~~~~~^~~~
      |                                  |
      |                                  ecs_poly_t* {aka void*}
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:20156:58: error: taking address of rvalue [-fpermissive]
20156 |                     ecs_set(world, ai, EcsAlertInstance, { .message = NULL });
      |                                                          ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:20157:57: error: taking address of rvalue [-fpermissive]
20157 |                     ecs_set(world, ai, EcsMetricSource, { .entity = e });
      |                                                         ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:20158:56: error: taking address of rvalue [-fpermissive]
20158 |                     ecs_set(world, ai, EcsMetricValue, { .value = 0 });
      |                                                        ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:886:45: error: taking address of rvalue [-fpermissive]
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                                             ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:884:25: note: in expansion of macro ‘ECS_EQ’
  884 | #define ECS_NEQ(a, b) (!ECS_EQ(a, b))
      |                         ^~~~~~
../src/flecs/distr/flecs.h:886:24: note: in expansion of macro ‘ECS_NEQ’
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:20160:25: note: in expansion of macro ‘ECS_NEQZERO’
20160 |                     if (ECS_NEQZERO(alert[i].retain_period)) {
      |                         ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:20161:61: error: taking address of rvalue [-fpermissive]
20161 |                         ecs_set(world, ai, EcsAlertTimeout, {
      |                                                             ^
20162 |                             .inactive_time = 0,
      |                             ~~~~~~~~~~~~~~~~~~~              
20163 |                             .expire_time = alert[i].retain_period
      |                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20164 |                         });
      |                         ~                                    
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void MonitorAlertInstances(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:20212:32: error: invalid conversion from ‘ecs_poly_t*’ {aka ‘void*’} to ‘ecs_query_t*’ [-fpermissive]
20212 |     ecs_query_t *query = poly->poly;
      |                          ~~~~~~^~~~
      |                                |
      |                                ecs_poly_t* {aka void*}
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:886:45: error: taking address of rvalue [-fpermissive]
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                                             ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:884:25: note: in expansion of macro ‘ECS_EQ’
  884 | #define ECS_NEQ(a, b) (!ECS_EQ(a, b))
      |                         ^~~~~~
../src/flecs/distr/flecs.h:886:24: note: in expansion of macro ‘ECS_NEQ’
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:20292:25: note: in expansion of macro ‘ECS_NEQZERO’
20292 |                     if (ECS_NEQZERO(timeout[i].inactive_time)) {
      |                         ^~~~~~~~~~~
../src/flecs/distr/flecs.h:885:43: error: taking address of rvalue [-fpermissive]
  885 | #define ECS_EQZERO(a) ECS_EQ(a, (uint64_t){0})
      |                                           ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:885:23: note: in expansion of macro ‘ECS_EQ’
  885 | #define ECS_EQZERO(a) ECS_EQ(a, (uint64_t){0})
      |                       ^~~~~~
../src/flecs/distr/flecs.c:20310:17: note: in expansion of macro ‘ECS_EQZERO’
20310 |             if (ECS_EQZERO(timeout[i].inactive_time)) {
      |                 ^~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_alert_init(ecs_world_t*, const ecs_alert_desc_t*)’:
../src/flecs/distr/flecs.c:20492:1: error: jump to label ‘error’
20492 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:20448:22: note:   from here
20448 |                 goto error;
      |                      ^~~~~
../src/flecs/distr/flecs.c:20466:18: note:   crosses initialization of ‘ecs_entity_t severity’
20466 |     ecs_entity_t severity = desc->severity;
      |                  ^~~~~~~~
../src/flecs/distr/flecs.c:20492:1: error: jump to label ‘error’
20492 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:20440:18: note:   from here
20440 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:20466:18: note:   crosses initialization of ‘ecs_entity_t severity’
20466 |     ecs_entity_t severity = desc->severity;
      |                  ^~~~~~~~
../src/flecs/distr/flecs.c:20492:1: error: jump to label ‘error’
20492 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:20435:18: note:   from here
20435 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:20466:18: note:   crosses initialization of ‘ecs_entity_t severity’
20466 |     ecs_entity_t severity = desc->severity;
      |                  ^~~~~~~~
../src/flecs/distr/flecs.c:20492:1: error: jump to label ‘error’
20492 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:20429:18: note:   from here
20429 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:20466:18: note:   crosses initialization of ‘ecs_entity_t severity’
20466 |     ecs_entity_t severity = desc->severity;
      |                  ^~~~~~~~
../src/flecs/distr/flecs.c:20492:1: error: jump to label ‘error’
20492 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:20425:18: note:   from here
20425 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:20466:18: note:   crosses initialization of ‘ecs_entity_t severity’
20466 |     ecs_entity_t severity = desc->severity;
      |                  ^~~~~~~~
../src/flecs/distr/flecs.c:20492:1: error: jump to label ‘error’
20492 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:20419:18: note:   from here
20419 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:20466:18: note:   crosses initialization of ‘ecs_entity_t severity’
20466 |     ecs_entity_t severity = desc->severity;
      |                  ^~~~~~~~
../src/flecs/distr/flecs.c:20492:1: error: jump to label ‘error’
20492 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:20399:22: note:   from here
20399 |                 goto error;
      |                      ^~~~~
../src/flecs/distr/flecs.c:20466:18: note:   crosses initialization of ‘ecs_entity_t severity’
20466 |     ecs_entity_t severity = desc->severity;
      |                  ^~~~~~~~
../src/flecs/distr/flecs.c:20492:1: error: jump to label ‘error’
20492 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:20376:22: note:   from here
20376 |                 goto error;
      |                      ^~~~~
../src/flecs/distr/flecs.c:20466:18: note:   crosses initialization of ‘ecs_entity_t severity’
20466 |     ecs_entity_t severity = desc->severity;
      |                  ^~~~~~~~
../src/flecs/distr/flecs.c:20492:1: error: jump to label ‘error’
20492 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:20341:5: note: in expansion of macro ‘ecs_check’
20341 |     ecs_check(!desc->query.entity || desc->entity == desc->query.entity,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:20466:18: note:   crosses initialization of ‘ecs_entity_t severity’
20466 |     ecs_entity_t severity = desc->severity;
      |                  ^~~~~~~~
../src/flecs/distr/flecs.c:20365:15: note:   crosses initialization of ‘EcsAlert* alert’
20365 |     EcsAlert *alert = ecs_ensure(world, result, EcsAlert);
      |               ^~~~~
../src/flecs/distr/flecs.c:20352:18: note:   crosses initialization of ‘ecs_query_t* q’
20352 |     ecs_query_t *q = ecs_query_init(world, &private_desc);
      |                  ^
../src/flecs/distr/flecs.c:20349:22: note:   crosses initialization of ‘ecs_query_desc_t private_desc’
20349 |     ecs_query_desc_t private_desc = desc->query;
      |                      ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:20344:18: note:   crosses initialization of ‘ecs_entity_t result’
20344 |     ecs_entity_t result = desc->entity;
      |                  ^~~~~~
../src/flecs/distr/flecs.c:20492:1: error: jump to label ‘error’
20492 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:20339:5: note: in expansion of macro ‘ecs_check’
20339 |     ecs_check(desc->_canary == 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:20466:18: note:   crosses initialization of ‘ecs_entity_t severity’
20466 |     ecs_entity_t severity = desc->severity;
      |                  ^~~~~~~~
../src/flecs/distr/flecs.c:20365:15: note:   crosses initialization of ‘EcsAlert* alert’
20365 |     EcsAlert *alert = ecs_ensure(world, result, EcsAlert);
      |               ^~~~~
../src/flecs/distr/flecs.c:20352:18: note:   crosses initialization of ‘ecs_query_t* q’
20352 |     ecs_query_t *q = ecs_query_init(world, &private_desc);
      |                  ^
../src/flecs/distr/flecs.c:20349:22: note:   crosses initialization of ‘ecs_query_desc_t private_desc’
20349 |     ecs_query_desc_t private_desc = desc->query;
      |                      ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:20344:18: note:   crosses initialization of ‘ecs_entity_t result’
20344 |     ecs_entity_t result = desc->entity;
      |                  ^~~~~~
../src/flecs/distr/flecs.c:20492:1: error: jump to label ‘error’
20492 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:20338:5: note: in expansion of macro ‘ecs_check’
20338 |     ecs_check(desc != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:20466:18: note:   crosses initialization of ‘ecs_entity_t severity’
20466 |     ecs_entity_t severity = desc->severity;
      |                  ^~~~~~~~
../src/flecs/distr/flecs.c:20365:15: note:   crosses initialization of ‘EcsAlert* alert’
20365 |     EcsAlert *alert = ecs_ensure(world, result, EcsAlert);
      |               ^~~~~
../src/flecs/distr/flecs.c:20352:18: note:   crosses initialization of ‘ecs_query_t* q’
20352 |     ecs_query_t *q = ecs_query_init(world, &private_desc);
      |                  ^
../src/flecs/distr/flecs.c:20349:22: note:   crosses initialization of ‘ecs_query_desc_t private_desc’
20349 |     ecs_query_desc_t private_desc = desc->query;
      |                      ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:20344:18: note:   crosses initialization of ‘ecs_entity_t result’
20344 |     ecs_entity_t result = desc->entity;
      |                  ^~~~~~
../src/flecs/distr/flecs.c: In function ‘int32_t ecs_get_alert_count(const ecs_world_t*, ecs_entity_t, ecs_entity_t)’:
../src/flecs/distr/flecs.c:20519:1: error: jump to label ‘error’
20519 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:20506:5: note: in expansion of macro ‘ecs_check’
20506 |     ecs_check(!alert || ecs_has(world, alert, EcsAlert),
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:20509:28: note:   crosses initialization of ‘const EcsAlertsActive* active’
20509 |     const EcsAlertsActive *active = ecs_get(world, entity, EcsAlertsActive);
      |                            ^~~~~~
../src/flecs/distr/flecs.c:20519:1: error: jump to label ‘error’
20519 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:20505:5: note: in expansion of macro ‘ecs_check’
20505 |     ecs_check(entity != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:20509:28: note:   crosses initialization of ‘const EcsAlertsActive* active’
20509 |     const EcsAlertsActive *active = ecs_get(world, entity, EcsAlertsActive);
      |                            ^~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_get_alert(const ecs_world_t*, ecs_entity_t, ecs_entity_t)’:
../src/flecs/distr/flecs.c:20542:1: error: jump to label ‘error’
20542 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:20530:5: note: in expansion of macro ‘ecs_check’
20530 |     ecs_check(alert != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:20537:19: note:   crosses initialization of ‘ecs_entity_t* ptr’
20537 |     ecs_entity_t *ptr = ecs_map_get(&active->alerts, alert);
      |                   ^~~
../src/flecs/distr/flecs.c:20532:28: note:   crosses initialization of ‘const EcsAlertsActive* active’
20532 |     const EcsAlertsActive *active = ecs_get(world, entity, EcsAlertsActive);
      |                            ^~~~~~
../src/flecs/distr/flecs.c:20542:1: error: jump to label ‘error’
20542 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:20529:5: note: in expansion of macro ‘ecs_check’
20529 |     ecs_check(entity != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:20537:19: note:   crosses initialization of ‘ecs_entity_t* ptr’
20537 |     ecs_entity_t *ptr = ecs_map_get(&active->alerts, alert);
      |                   ^~~
../src/flecs/distr/flecs.c:20532:28: note:   crosses initialization of ‘const EcsAlertsActive* active’
20532 |     const EcsAlertsActive *active = ecs_get(world, entity, EcsAlertsActive);
      |                            ^~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void FlecsAlertsImport(ecs_world_t*)’:
../src/flecs/distr/flecs.c:20574:23: error: taking address of rvalue [-fpermissive]
20574 |     ecs_struct(world, {
      |                       ^
20575 |         .entity = ecs_id(EcsAlertInstance),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20576 |         .members = {
      |         ~~~~~~~~~~~~   
20577 |             { .name = "message", .type = ecs_id(ecs_string_t) }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20578 |         }
      |         ~              
20579 |     });
      |     ~                  
../src/flecs/distr/flecs.h:16131:49: note: in definition of macro ‘ecs_struct’
16131 |     ecs_struct_init(world, &(ecs_struct_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:20581:36: error: taking address of rvalue [-fpermissive]
20581 |     ecs_set_hooks(world, EcsAlert, {
      |                                    ^
20582 |         .ctor = ecs_ctor(EcsAlert),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
20583 |         .dtor = ecs_dtor(EcsAlert),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
20584 |         .move = ecs_move(EcsAlert)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~  
20585 |     });
      |     ~                               
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:20587:43: error: taking address of rvalue [-fpermissive]
20587 |     ecs_set_hooks(world, EcsAlertsActive, {
      |                                           ^
20588 |         .ctor = ecs_ctor(EcsAlertsActive),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
20589 |         .dtor = ecs_dtor(EcsAlertsActive),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
20590 |         .move = ecs_move(EcsAlertsActive)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
20591 |     });
      |     ~                                      
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:20598:5: error: designator order for field ‘ecs_type_hooks_t::copy’ does not match declaration order in ‘ecs_type_hooks_t’
20598 |     });
      |     ^
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:20593:44: error: taking address of rvalue [-fpermissive]
20593 |     ecs_set_hooks(world, EcsAlertInstance, {
      |                                            ^
20594 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~         
20595 |         .dtor = ecs_dtor(EcsAlertInstance),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
20596 |         .move = ecs_move(EcsAlertInstance),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
20597 |         .copy = ecs_copy(EcsAlertInstance)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
20598 |     });
      |     ~                                       
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:20600:23: error: taking address of rvalue [-fpermissive]
20600 |     ecs_struct(world, {
      |                       ^
20601 |         .entity = ecs_id(EcsAlertsActive),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20602 |         .members = {
      |         ~~~~~~~~~~~~   
20603 |             { .name = "info_count", .type = ecs_id(ecs_i32_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20604 |             { .name = "warning_count", .type = ecs_id(ecs_i32_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20605 |             { .name = "error_count", .type = ecs_id(ecs_i32_t) }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20606 |         }
      |         ~              
20607 |     });
      |     ~                  
../src/flecs/distr/flecs.h:16131:49: note: in definition of macro ‘ecs_struct’
16131 |     ecs_struct_init(world, &(ecs_struct_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:20623:5: error: designator order for field ‘ecs_system_desc_t::interval’ does not match declaration order in ‘ecs_system_desc_t’
20623 |     });
      |     ^
../src/flecs/distr/flecs.h:12349:49: note: in definition of macro ‘ecs_system’
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:20619:23: error: taking address of rvalue [-fpermissive]
20619 |     ecs_system(world, {
      |                       ^
20620 |         .entity = ecs_id(MonitorAlerts),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20621 |         .immediate = true,
      |         ~~~~~~~~~~~~~~~~~~
20622 |         .interval = (ecs_ftime_t)0.5
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20623 |     });
      |     ~                  
../src/flecs/distr/flecs.h:12349:49: note: in definition of macro ‘ecs_system’
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:20625:23: error: taking address of rvalue [-fpermissive]
20625 |     ecs_system(world, {
      |                       ^
20626 |         .entity = ecs_id(MonitorAlertInstances),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20627 |         .interval = (ecs_ftime_t)0.5
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
20628 |     });
      |     ~                  
../src/flecs/distr/flecs.h:12349:49: note: in definition of macro ‘ecs_system’
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int ecs_app_run(ecs_world_t*, ecs_app_desc_t*)’:
../src/flecs/distr/flecs.h:886:45: error: taking address of rvalue [-fpermissive]
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                                             ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:884:25: note: in expansion of macro ‘ECS_EQ’
  884 | #define ECS_NEQ(a, b) (!ECS_EQ(a, b))
      |                         ^~~~~~
../src/flecs/distr/flecs.h:886:24: note: in expansion of macro ‘ECS_NEQ’
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:20719:9: note: in expansion of macro ‘ECS_NEQZERO’
20719 |     if (ECS_NEQZERO(ecs_app_desc.target_fps)) {
      |         ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:20734:43: error: taking address of rvalue [-fpermissive]
20734 |         ecs_set(world, EcsWorld, EcsRest, {.port = desc->port });
      |                                           ^~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_doc_set(ecs_world_t*, ecs_entity_t, ecs_entity_t, const char*)’:
../src/flecs/distr/flecs.c:20819:62: error: taking address of rvalue [-fpermissive]
20819 |         ecs_set_pair(world, entity, EcsDocDescription, kind, {
      |                                                              ^
20820 |             /* Safe, value gets copied by copy hook */
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        
20821 |             .value = ECS_CONST_CAST(char*, value)
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~             
20822 |         });
      |         ~                                                     
../src/flecs/distr/flecs.h:9793:32: note: in definition of macro ‘ecs_set_pair’
 9793 |         sizeof(First), &(First)__VA_ARGS__)
      |                                ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void FlecsDocImport(ecs_world_t*)’:
../src/flecs/distr/flecs.c:3008:37: error: taking address of rvalue [-fpermissive]
 3008 |         .entity = ecs_entity(world, { .id = ecs_id(id_), .name = #id_, .symbol = #id_ }),\
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:21050:5: note: in expansion of macro ‘flecs_bootstrap_component’
21050 |     flecs_bootstrap_component(world, EcsDocDescription);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:3007:53: error: expected primary-expression before ‘)’ token
 3007 |     ecs_component_init(world, &(ecs_component_desc_t){\
      |                                                     ^
../src/flecs/distr/flecs.c:21050:5: note: in expansion of macro ‘flecs_bootstrap_component’
21050 |     flecs_bootstrap_component(world, EcsDocDescription);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:21062:5: error: designator order for field ‘ecs_type_hooks_t::copy’ does not match declaration order in ‘ecs_type_hooks_t’
21062 |     });
      |     ^
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:21057:45: error: taking address of rvalue [-fpermissive]
21057 |     ecs_set_hooks(world, EcsDocDescription, {
      |                                             ^
21058 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~          
21059 |         .move = ecs_move(EcsDocDescription),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
21060 |         .copy = ecs_copy(EcsDocDescription),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
21061 |         .dtor = ecs_dtor(EcsDocDescription)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
21062 |     });
      |     ~                                        
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘const char* ecs_cpp_trim_module(ecs_world_t*, const char*)’:
../src/flecs/distr/flecs.c:21266:32: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
21266 |             char *ptr = strrchr(type_name, ':');
      |                         ~~~~~~~^~~~~~~~~~~~~~~~
      |                                |
      |                                const char*
../src/flecs/distr/flecs.c: In function ‘void ecs_cpp_component_validate(ecs_world_t*, ecs_entity_t, const char*, const char*, size_t, size_t, bool)’:
../src/flecs/distr/flecs.c:21333:72: error: expected primary-expression before ‘)’ token
21333 |     ecs_entity_t ent = ecs_component_init(world, &(ecs_component_desc_t){
      |                                                                        ^
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_cpp_component_register_explicit(ecs_world_t*, ecs_entity_t, ecs_entity_t, const char*, const char*, const char*, size_t, size_t, bool, bool*)’:
../src/flecs/distr/flecs.c:21465:36: error: taking address of rvalue [-fpermissive]
21465 |         entity = ecs_entity(world, {
      |                                    ^
21466 |             .id = s_id,
      |             ~~~~~~~~~~~             
21467 |             .name = name,
      |             ~~~~~~~~~~~~~           
21468 |             .sep = "::",
      |             ~~~~~~~~~~~~            
21469 |             .root_sep = "::",
      |             ~~~~~~~~~~~~~~~~~       
21470 |             .symbol = symbol,
      |             ~~~~~~~~~~~~~~~~~       
21471 |             .use_low_id = true
      |             ~~~~~~~~~~~~~~~~~~      
21472 |         });
      |         ~                           
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:21476:66: error: expected primary-expression before ‘)’ token
21476 |         entity = ecs_component_init(world, &(ecs_component_desc_t){
      |                                                                  ^
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:21484:36: error: taking address of rvalue [-fpermissive]
21484 |         entity = ecs_entity(world, {
      |                                    ^
21485 |             .id = s_id,
      |             ~~~~~~~~~~~             
21486 |             .name = name,
      |             ~~~~~~~~~~~~~           
21487 |             .sep = "::",
      |             ~~~~~~~~~~~~            
21488 |             .root_sep = "::",
      |             ~~~~~~~~~~~~~~~~~       
21489 |             .symbol = symbol,
      |             ~~~~~~~~~~~~~~~~~       
21490 |             .use_low_id = true
      |             ~~~~~~~~~~~~~~~~~~      
21491 |         });
      |         ~                           
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void ecs_cpp_enum_init(ecs_world_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.c:21510:33: error: taking address of rvalue [-fpermissive]
21510 |     ecs_set(world, id, EcsEnum, {0});
      |                                 ^~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_cpp_enum_constant_register(ecs_world_t*, ecs_entity_t, ecs_entity_t, const char*, int)’:
../src/flecs/distr/flecs.c:21535:28: error: taking address of rvalue [-fpermissive]
21535 |     id = ecs_entity(world, {
      |                            ^
21536 |         .id = id,
      |         ~~~~~~~~~           
21537 |         .name = name
      |         ~~~~~~~~~~~~        
21538 |     });
      |     ~                       
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘uint64_t http_request_key_hash(const void*)’:
../src/flecs/distr/flecs.c:22116:41: error: invalid conversion from ‘const void*’ to ‘const ecs_http_request_key_t*’ [-fpermissive]
22116 |     const ecs_http_request_key_t *key = ptr;
      |                                         ^~~
      |                                         |
      |                                         const void*
../src/flecs/distr/flecs.c: In function ‘int http_request_key_compare(const void*, const void*)’:
../src/flecs/distr/flecs.c:22124:44: error: invalid conversion from ‘const void*’ to ‘const ecs_http_request_key_t*’ [-fpermissive]
22124 |     const ecs_http_request_key_t *type_1 = ptr_1;
      |                                            ^~~~~
      |                                            |
      |                                            const void*
../src/flecs/distr/flecs.c:22125:44: error: invalid conversion from ‘const void*’ to ‘const ecs_http_request_key_t*’ [-fpermissive]
22125 |     const ecs_http_request_key_t *type_2 = ptr_2;
      |                                            ^~~~~
      |                                            |
      |                                            const void*
../src/flecs/distr/flecs.c: In function ‘void http_insert_request_entry(ecs_http_server_t*, ecs_http_request_impl_t*, ecs_http_reply_t*)’:
../src/flecs/distr/flecs.c:22179:49: error: invalid conversion from ‘void*’ to ‘ecs_http_request_key_t*’ [-fpermissive]
22179 |         ecs_http_request_key_t *elem_key = elem.key;
      |                                            ~~~~~^~~
      |                                                 |
      |                                                 void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:2669:53: error: invalid conversion from ‘void*’ to ‘const char*’ [-fpermissive]
 2669 | #define ecs_os_memdup_n(ptr, T, count) ecs_os_memdup(ptr, ECS_SIZEOF(T) * count)
      |                                        ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                     |
      |                                                     void*
../src/flecs/distr/flecs.c:22180:27: note: in expansion of macro ‘ecs_os_memdup_n’
22180 |         elem_key->array = ecs_os_memdup_n(key.array, char, key.count);
      |                           ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:22181:22: error: invalid conversion from ‘void*’ to ‘ecs_http_request_entry_t*’ [-fpermissive]
22181 |         entry = elem.value;
      |                 ~~~~~^~~~~
      |                      |
      |                      void*
../src/flecs/distr/flecs.c: In function ‘void* http_server_send_queue(void*)’:
../src/flecs/distr/flecs.c:22492:30: error: invalid conversion from ‘void*’ to ‘ecs_http_server_t*’ [-fpermissive]
22492 |     ecs_http_server_t *srv = arg;
      |                              ^~~
      |                              |
      |                              void*
../src/flecs/distr/flecs.c: In function ‘void http_recv_connection(ecs_http_server_t*, ecs_http_connection_impl_t*, uint64_t, ecs_http_socket_t)’:
../src/flecs/distr/flecs.c:22652:33: error: invalid conversion from ‘int’ to ‘HttpFragState’ [-fpermissive]
22652 |     ecs_http_fragment_t frag = {0};
      |                                 ^
      |                                 |
      |                                 int
../src/flecs/distr/flecs.c: In function ‘int http_accept_connections(ecs_http_server_t*, const sockaddr*, ecs_size_t)’:
../src/flecs/distr/flecs.c:22874:1: error: jump to label ‘done’
22874 | done:
      | ^~~~
../src/flecs/distr/flecs.c:22802:18: note:   from here
22802 |             goto done;
      |                  ^~~~
../src/flecs/distr/flecs.c:22855:16: note:   crosses initialization of ‘ecs_size_t remote_addr_len’
22855 |     ecs_size_t remote_addr_len = 0;
      |                ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void* http_server_thread(void*)’:
../src/flecs/distr/flecs.c:22890:30: error: invalid conversion from ‘void*’ to ‘ecs_http_server_t*’ [-fpermissive]
22890 |     ecs_http_server_t *srv = arg;
      |                              ^~~
      |                              |
      |                              void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void http_do_request(ecs_http_server_t*, ecs_http_reply_t*, const ecs_http_request_impl_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_http_request_impl_t*’ to type ‘ecs_http_request_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:22930:23: note: in expansion of macro ‘ECS_CONST_CAST’
22930 |     if (srv->callback(ECS_CONST_CAST(ecs_http_request_t*, req), reply,
      |                       ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void http_purge_request_cache(ecs_http_server_t*, bool)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_hm_bucket_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:22993:35: note: in expansion of macro ‘ecs_map_ptr’
22993 |         ecs_hm_bucket_t *bucket = ecs_map_ptr(&it);
      |                                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c:22995:53: error: invalid conversion from ‘void*’ to ‘ecs_http_request_key_t*’ [-fpermissive]
22995 |         ecs_http_request_key_t *keys = ecs_vec_first(&bucket->keys);
      |                                        ~~~~~~~~~~~~~^~~~~~~~~~~~~~~
      |                                                     |
      |                                                     void*
../src/flecs/distr/flecs.c:22996:58: error: invalid conversion from ‘void*’ to ‘ecs_http_request_entry_t*’ [-fpermissive]
22996 |         ecs_http_request_entry_t *entries = ecs_vec_first(&bucket->values);
      |                                             ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
      |                                                          |
      |                                                          void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_http_server_t* ecs_http_server_init(const ecs_http_server_desc_t*)’:
../src/flecs/distr/flecs.h:885:43: error: taking address of rvalue [-fpermissive]
  885 | #define ECS_EQZERO(a) ECS_EQ(a, (uint64_t){0})
      |                                           ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:885:23: note: in expansion of macro ‘ECS_EQ’
  885 | #define ECS_EQZERO(a) ECS_EQ(a, (uint64_t){0})
      |                       ^~~~~~
../src/flecs/distr/flecs.c:23093:10: note: in expansion of macro ‘ECS_EQZERO’
23093 |     if (!ECS_EQZERO(srv->cache_timeout) &&
      |          ^~~~~~~~~~
../src/flecs/distr/flecs.h:885:43: error: taking address of rvalue [-fpermissive]
  885 | #define ECS_EQZERO(a) ECS_EQ(a, (uint64_t){0})
      |                                           ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:885:23: note: in expansion of macro ‘ECS_EQ’
  885 | #define ECS_EQZERO(a) ECS_EQ(a, (uint64_t){0})
      |                       ^~~~~~
../src/flecs/distr/flecs.c:23094:10: note: in expansion of macro ‘ECS_EQZERO’
23094 |          ECS_EQZERO(srv->cache_purge_timeout))
      |          ^~~~~~~~~~
../src/flecs/distr/flecs.c:23127:1: error: jump to label ‘error’
23127 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:23080:5: note: in expansion of macro ‘ecs_check’
23080 |     ecs_check(ecs_os_has_threading(), ECS_UNSUPPORTED,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:23083:24: note:   crosses initialization of ‘ecs_http_server_t* srv’
23083 |     ecs_http_server_t* srv = ecs_os_calloc_t(ecs_http_server_t);
      |                        ^~~
../src/flecs/distr/flecs.c: In function ‘void ecs_http_server_stop(ecs_http_server_t*)’:
../src/flecs/distr/flecs.c:23214:1: error: jump to label ‘error’
23214 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:23177:5: note: in expansion of macro ‘ecs_check’
23177 |     ecs_check(srv->should_run, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:23195:12: note:   crosses initialization of ‘int count’
23195 |     int i, count = flecs_sparse_count(&srv->requests);
      |            ^~~~~
../src/flecs/distr/flecs.c:23214:1: error: jump to label ‘error’
23214 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:23175:5: note: in expansion of macro ‘ecs_check’
23175 |     ecs_check(srv->initialized, ECS_INVALID_OPERATION,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:23195:12: note:   crosses initialization of ‘int count’
23195 |     int i, count = flecs_sparse_count(&srv->requests);
      |            ^~~~~
../src/flecs/distr/flecs.c:23214:1: error: jump to label ‘error’
23214 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:23174:5: note: in expansion of macro ‘ecs_check’
23174 |     ecs_check(srv != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:23195:12: note:   crosses initialization of ‘int count’
23195 |     int i, count = flecs_sparse_count(&srv->requests);
      |            ^~~~~
../src/flecs/distr/flecs.c: In function ‘int ecs_http_server_http_request(ecs_http_server_t*, const char*, ecs_size_t, ecs_http_reply_t*)’:
../src/flecs/distr/flecs.c:23267:33: error: invalid conversion from ‘int’ to ‘HttpFragState’ [-fpermissive]
23267 |     ecs_http_fragment_t frag = {0};
      |                                 ^
      |                                 |
      |                                 int
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int ecs_http_server_request(ecs_http_server_t*, const char*, const char*, ecs_http_reply_t*)’:
../src/flecs/distr/flecs.h:2607:47: error: invalid conversion from ‘void*’ to ‘char*’ [-fpermissive]
 2607 | #define ecs_os_malloc(size) ecs_os_api.malloc_(size)
      |                             ~~~~~~~~~~~~~~~~~~^~~~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c:23320:18: note: in expansion of macro ‘ecs_os_malloc’
23320 |         reqstr = ecs_os_malloc(len + 1);
      |                  ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void ecs_parser_errorv_(const char*, const char*, int64_t, const char*, __va_list_tag*)’:
../src/flecs/distr/flecs.c:23769:39: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
23769 |             char *newline_ptr = strchr(expr, '\n');
      |                                 ~~~~~~^~~~~~~~~~~~
      |                                       |
      |                                       const char*
../src/flecs/distr/flecs.c: In function ‘void flecs_metrics_on_member_metric(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:24196:40: error: invalid conversion from ‘void*’ to ‘ecs_member_metric_ctx_t*’ [-fpermissive]
24196 |     ecs_member_metric_ctx_t *ctx = it->ctx;
      |                                    ~~~~^~~
      |                                        |
      |                                        void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:24209:43: error: taking address of rvalue [-fpermissive]
24209 |         ecs_set(world, m, EcsMetricValue, { 0 });
      |                                           ^~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:24210:44: error: taking address of rvalue [-fpermissive]
24210 |         ecs_set(world, m, EcsMetricSource, { e });
      |                                            ^~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_metrics_on_id_metric(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:24219:36: error: invalid conversion from ‘void*’ to ‘ecs_id_metric_ctx_t*’ [-fpermissive]
24219 |     ecs_id_metric_ctx_t *ctx = it->ctx;
      |                                ~~~~^~~
      |                                    |
      |                                    void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:24231:43: error: taking address of rvalue [-fpermissive]
24231 |         ecs_set(world, m, EcsMetricValue, { 0 });
      |                                           ^~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:24232:44: error: taking address of rvalue [-fpermissive]
24232 |         ecs_set(world, m, EcsMetricSource, { e });
      |                                            ^~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_metrics_on_oneof_metric(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:24245:39: error: invalid conversion from ‘void*’ to ‘ecs_oneof_metric_ctx_t*’ [-fpermissive]
24245 |     ecs_oneof_metric_ctx_t *ctx = it->ctx;
      |                                   ~~~~^~~
      |                                       |
      |                                       void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:24258:44: error: taking address of rvalue [-fpermissive]
24258 |         ecs_set(world, m, EcsMetricSource, { e });
      |                                            ^~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void UpdateOneOfInstance(ecs_iter_t*, bool)’:
../src/flecs/distr/flecs.h:3942:31: error: invalid conversion from ‘void*’ to ‘double*’ [-fpermissive]
 3942 | #define ECS_OFFSET(o, offset) reinterpret_cast<void*>((reinterpret_cast<uintptr_t>(o)) + (static_cast<uintptr_t>(offset)))
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.h:3948:36: note: in expansion of macro ‘ECS_OFFSET’
 3948 | #define ECS_ELEM(ptr, size, index) ECS_OFFSET(ptr, (size) * (index))
      |                                    ^~~~~~~~~~
../src/flecs/distr/flecs.c:24397:25: note: in expansion of macro ‘ECS_ELEM’
24397 |         double *value = ECS_ELEM(m, ctx->size, i);
      |                         ^~~~~~~~
../src/flecs/distr/flecs.h:3942:31: error: invalid conversion from ‘void*’ to ‘double*’ [-fpermissive]
 3942 | #define ECS_OFFSET(o, offset) reinterpret_cast<void*>((reinterpret_cast<uintptr_t>(o)) + (static_cast<uintptr_t>(offset)))
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.c:24421:17: note: in expansion of macro ‘ECS_OFFSET’
24421 |         value = ECS_OFFSET(value, *offset);
      |                 ^~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int flecs_member_metric_init(ecs_world_t*, ecs_entity_t, const ecs_metric_desc_t*)’:
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:24612:5: note: in expansion of macro ‘ecs_observer’
24612 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:24621:58: error: taking address of rvalue [-fpermissive]
24621 |     ecs_set_pair(world, metric, EcsMetricMember, member, { .ctx = ctx });
      |                                                          ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9793:32: note: in definition of macro ‘ecs_set_pair’
 9793 |         sizeof(First), &(First)__VA_ARGS__)
      |                                ^~~~~~~~~~~
../src/flecs/distr/flecs.c:24626:1: error: jump to label ‘error’
24626 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:24603:14: note:   from here
24603 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:24606:30: note:   crosses initialization of ‘ecs_member_metric_ctx_t* ctx’
24606 |     ecs_member_metric_ctx_t *ctx = ecs_os_calloc_t(ecs_member_metric_ctx_t);
      |                              ^~~
../src/flecs/distr/flecs.c:24626:1: error: jump to label ‘error’
24626 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:24593:14: note:   from here
24593 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:24606:30: note:   crosses initialization of ‘ecs_member_metric_ctx_t* ctx’
24606 |     ecs_member_metric_ctx_t *ctx = ecs_os_calloc_t(ecs_member_metric_ctx_t);
      |                              ^~~
../src/flecs/distr/flecs.c:24626:1: error: jump to label ‘error’
24626 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:24582:14: note:   from here
24582 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:24606:30: note:   crosses initialization of ‘ecs_member_metric_ctx_t* ctx’
24606 |     ecs_member_metric_ctx_t *ctx = ecs_os_calloc_t(ecs_member_metric_ctx_t);
      |                              ^~~
../src/flecs/distr/flecs.c:24585:20: note:   crosses initialization of ‘const EcsType* mt’
24585 |     const EcsType *mt = ecs_get(world, type, EcsType);
      |                    ^~
../src/flecs/distr/flecs.c:24626:1: error: jump to label ‘error’
24626 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:24564:22: note:   from here
24564 |                 goto error;
      |                      ^~~~~
../src/flecs/distr/flecs.c:24606:30: note:   crosses initialization of ‘ecs_member_metric_ctx_t* ctx’
24606 |     ecs_member_metric_ctx_t *ctx = ecs_os_calloc_t(ecs_member_metric_ctx_t);
      |                              ^~~
../src/flecs/distr/flecs.c:24585:20: note:   crosses initialization of ‘const EcsType* mt’
24585 |     const EcsType *mt = ecs_get(world, type, EcsType);
      |                    ^~
../src/flecs/distr/flecs.c:24574:25: note:   crosses initialization of ‘const EcsPrimitive* p’
24574 |     const EcsPrimitive *p = ecs_get(world, member_type, EcsPrimitive);
      |                         ^
../src/flecs/distr/flecs.c:24626:1: error: jump to label ‘error’
24626 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:24550:18: note:   from here
24550 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:24606:30: note:   crosses initialization of ‘ecs_member_metric_ctx_t* ctx’
24606 |     ecs_member_metric_ctx_t *ctx = ecs_os_calloc_t(ecs_member_metric_ctx_t);
      |                              ^~~
../src/flecs/distr/flecs.c:24585:20: note:   crosses initialization of ‘const EcsType* mt’
24585 |     const EcsType *mt = ecs_get(world, type, EcsType);
      |                    ^~
../src/flecs/distr/flecs.c:24574:25: note:   crosses initialization of ‘const EcsPrimitive* p’
24574 |     const EcsPrimitive *p = ecs_get(world, member_type, EcsPrimitive);
      |                         ^
../src/flecs/distr/flecs.c:24626:1: error: jump to label ‘error’
24626 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:24539:18: note:   from here
24539 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:24606:30: note:   crosses initialization of ‘ecs_member_metric_ctx_t* ctx’
24606 |     ecs_member_metric_ctx_t *ctx = ecs_os_calloc_t(ecs_member_metric_ctx_t);
      |                              ^~~
../src/flecs/distr/flecs.c:24585:20: note:   crosses initialization of ‘const EcsType* mt’
24585 |     const EcsType *mt = ecs_get(world, type, EcsType);
      |                    ^~
../src/flecs/distr/flecs.c:24574:25: note:   crosses initialization of ‘const EcsPrimitive* p’
24574 |     const EcsPrimitive *p = ecs_get(world, member_type, EcsPrimitive);
      |                         ^
../src/flecs/distr/flecs.c:24626:1: error: jump to label ‘error’
24626 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:24523:18: note:   from here
24523 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:24606:30: note:   crosses initialization of ‘ecs_member_metric_ctx_t* ctx’
24606 |     ecs_member_metric_ctx_t *ctx = ecs_os_calloc_t(ecs_member_metric_ctx_t);
      |                              ^~~
../src/flecs/distr/flecs.c:24585:20: note:   crosses initialization of ‘const EcsType* mt’
24585 |     const EcsType *mt = ecs_get(world, type, EcsType);
      |                    ^~
../src/flecs/distr/flecs.c:24574:25: note:   crosses initialization of ‘const EcsPrimitive* p’
24574 |     const EcsPrimitive *p = ecs_get(world, member_type, EcsPrimitive);
      |                         ^
../src/flecs/distr/flecs.c:24626:1: error: jump to label ‘error’
24626 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:24516:18: note:   from here
24516 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:24606:30: note:   crosses initialization of ‘ecs_member_metric_ctx_t* ctx’
24606 |     ecs_member_metric_ctx_t *ctx = ecs_os_calloc_t(ecs_member_metric_ctx_t);
      |                              ^~~
../src/flecs/distr/flecs.c:24585:20: note:   crosses initialization of ‘const EcsType* mt’
24585 |     const EcsType *mt = ecs_get(world, type, EcsType);
      |                    ^~
../src/flecs/distr/flecs.c:24574:25: note:   crosses initialization of ‘const EcsPrimitive* p’
24574 |     const EcsPrimitive *p = ecs_get(world, member_type, EcsPrimitive);
      |                         ^
../src/flecs/distr/flecs.c:24626:1: error: jump to label ‘error’
24626 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:24506:18: note:   from here
24506 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:24606:30: note:   crosses initialization of ‘ecs_member_metric_ctx_t* ctx’
24606 |     ecs_member_metric_ctx_t *ctx = ecs_os_calloc_t(ecs_member_metric_ctx_t);
      |                              ^~~
../src/flecs/distr/flecs.c:24585:20: note:   crosses initialization of ‘const EcsType* mt’
24585 |     const EcsType *mt = ecs_get(world, type, EcsType);
      |                    ^~
../src/flecs/distr/flecs.c:24574:25: note:   crosses initialization of ‘const EcsPrimitive* p’
24574 |     const EcsPrimitive *p = ecs_get(world, member_type, EcsPrimitive);
      |                         ^
../src/flecs/distr/flecs.c:24626:1: error: jump to label ‘error’
24626 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:24498:18: note:   from here
24498 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:24606:30: note:   crosses initialization of ‘ecs_member_metric_ctx_t* ctx’
24606 |     ecs_member_metric_ctx_t *ctx = ecs_os_calloc_t(ecs_member_metric_ctx_t);
      |                              ^~~
../src/flecs/distr/flecs.c:24585:20: note:   crosses initialization of ‘const EcsType* mt’
24585 |     const EcsType *mt = ecs_get(world, type, EcsType);
      |                    ^~
../src/flecs/distr/flecs.c:24574:25: note:   crosses initialization of ‘const EcsPrimitive* p’
24574 |     const EcsPrimitive *p = ecs_get(world, member_type, EcsPrimitive);
      |                         ^
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int flecs_id_metric_init(ecs_world_t*, ecs_entity_t, const ecs_metric_desc_t*)’:
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:24643:5: note: in expansion of macro ‘ecs_observer’
24643 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:24652:41: error: taking address of rvalue [-fpermissive]
24652 |     ecs_set(world, metric, EcsMetricId, { .ctx = ctx });
      |                                         ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_oneof_metric_init(ecs_world_t*, ecs_entity_t, ecs_entity_t, const ecs_metric_desc_t*)’:
../src/flecs/distr/flecs.c:24695:13: error: designator order for field ‘ecs_entity_desc_t::parent’ does not match declaration order in ‘ecs_entity_desc_t’
24695 |             });
      |             ^
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:24692:50: error: taking address of rvalue [-fpermissive]
24692 |             ecs_entity_t mbr = ecs_entity(world, {
      |                                                  ^
24693 |                 .name = to_snake_case,
      |                 ~~~~~~~~~~~~~~~~~~~~~~            
24694 |                 .parent = ecs_childof(metric)
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     
24695 |             });
      |             ~                                     
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:24699:44: error: taking address of rvalue [-fpermissive]
24699 |             ecs_set(world, mbr, EcsMember, {
      |                                            ^
24700 |                 .type = ecs_id(ecs_f64_t),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~  
24701 |                 .unit = EcsSeconds
      |                 ~~~~~~~~~~~~~~~~~~          
24702 |             });
      |             ~                               
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:24714:5: note: in expansion of macro ‘ecs_observer’
24714 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:24723:44: error: taking address of rvalue [-fpermissive]
24723 |     ecs_set(world, metric, EcsMetricOneOf, { .ctx = ctx });
      |                                            ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:24728:1: error: jump to label ‘error’
24728 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:24673:5: note: in expansion of macro ‘ecs_check’
24673 |     ecs_check(ctx->idr != NULL, ECS_INTERNAL_ERROR, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:24679:14: note:   crosses initialization of ‘uint64_t offset’
24679 |     uint64_t offset = 0;
      |              ^~~~~~
../src/flecs/distr/flecs.c:24678:16: note:   crosses initialization of ‘ecs_iter_t it’
24678 |     ecs_iter_t it = ecs_children(world, scope);
      |                ^~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int flecs_count_id_targets_metric_init(ecs_world_t*, ecs_entity_t, const ecs_metric_desc_t*)’:
../src/flecs/distr/flecs.c:24745:51: error: taking address of rvalue [-fpermissive]
24745 |     ecs_set(world, metric, EcsMetricCountTargets, { .ctx = ctx });
      |                                                   ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_count_ids_metric_init(ecs_world_t*, ecs_entity_t, const ecs_metric_desc_t*)’:
../src/flecs/distr/flecs.c:24760:47: error: taking address of rvalue [-fpermissive]
24760 |     ecs_set(world, metric, EcsMetricCountIds, { .id = desc->id });
      |                                               ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:24761:44: error: taking address of rvalue [-fpermissive]
24761 |     ecs_set(world, metric, EcsMetricValue, { .value = 0 });
      |                                            ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_metric_init(ecs_world_t*, const ecs_metric_desc_t*)’:
../src/flecs/distr/flecs.c:24867:1: error: jump to label ‘error’
24867 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:24770:5: note: in expansion of macro ‘ecs_check’
24770 |     ecs_check(desc->_canary == 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:24779:18: note:   crosses initialization of ‘ecs_entity_t kind’
24779 |     ecs_entity_t kind = desc->kind;
      |                  ^~~~
../src/flecs/distr/flecs.c:24774:18: note:   crosses initialization of ‘ecs_entity_t result’
24774 |     ecs_entity_t result = desc->entity;
      |                  ^~~~~~
../src/flecs/distr/flecs.c:24867:1: error: jump to label ‘error’
24867 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:24769:5: note: in expansion of macro ‘ecs_check’
24769 |     ecs_check(desc != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:24779:18: note:   crosses initialization of ‘ecs_entity_t kind’
24779 |     ecs_entity_t kind = desc->kind;
      |                  ^~~~
../src/flecs/distr/flecs.c:24774:18: note:   crosses initialization of ‘ecs_entity_t result’
24774 |     ecs_entity_t result = desc->entity;
      |                  ^~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void FlecsMetricsImport(ecs_world_t*)’:
../src/flecs/distr/flecs.c:24907:23: error: taking address of rvalue [-fpermissive]
24907 |     ecs_struct(world, {
      |                       ^
24908 |         .entity = ecs_id(EcsMetricValue),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24909 |         .members = {
      |         ~~~~~~~~~~~~   
24910 |             { .name = "value", .type = ecs_id(ecs_f64_t) }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24911 |         }
      |         ~              
24912 |     });
      |     ~                  
../src/flecs/distr/flecs.h:16131:49: note: in definition of macro ‘ecs_struct’
16131 |     ecs_struct_init(world, &(ecs_struct_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:24914:23: error: taking address of rvalue [-fpermissive]
24914 |     ecs_struct(world, {
      |                       ^
24915 |         .entity = ecs_id(EcsMetricSource),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24916 |         .members = {
      |         ~~~~~~~~~~~~   
24917 |             { .name = "entity", .type = ecs_id(ecs_entity_t) }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24918 |         }
      |         ~              
24919 |     });
      |     ~                  
../src/flecs/distr/flecs.h:16131:49: note: in definition of macro ‘ecs_struct’
16131 |     ecs_struct_init(world, &(ecs_struct_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:24921:43: error: taking address of rvalue [-fpermissive]
24921 |     ecs_set_hooks(world, EcsMetricMember, {
      |                                           ^
24922 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~        
24923 |         .dtor = ecs_dtor(EcsMetricMember),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
24924 |         .move = ecs_move(EcsMetricMember)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
24925 |     });
      |     ~                                      
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:24927:39: error: taking address of rvalue [-fpermissive]
24927 |     ecs_set_hooks(world, EcsMetricId, {
      |                                       ^
24928 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~    
24929 |         .dtor = ecs_dtor(EcsMetricId),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
24930 |         .move = ecs_move(EcsMetricId)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
24931 |     });
      |     ~                                  
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:24933:42: error: taking address of rvalue [-fpermissive]
24933 |     ecs_set_hooks(world, EcsMetricOneOf, {
      |                                          ^
24934 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~       
24935 |         .dtor = ecs_dtor(EcsMetricOneOf),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
24936 |         .move = ecs_move(EcsMetricOneOf)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
24937 |     });
      |     ~                                     
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:24939:49: error: taking address of rvalue [-fpermissive]
24939 |     ecs_set_hooks(world, EcsMetricCountTargets, {
      |                                                 ^
24940 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~              
24941 |         .dtor = ecs_dtor(EcsMetricCountTargets),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
24942 |         .move = ecs_move(EcsMetricCountTargets)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
24943 |     });
      |     ~                                            
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_import(ecs_world_t*, ecs_module_action_t, const char*)’:
../src/flecs/distr/flecs.c:25064:1: error: jump to label ‘error’
25064 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:25035:5: note: in expansion of macro ‘ecs_check’
25035 |     ecs_check(!(world->flags & EcsWorldReadonly),
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:25042:18: note:   crosses initialization of ‘ecs_entity_t e’
25042 |     ecs_entity_t e = ecs_lookup(world, path);
      |                  ^
../src/flecs/distr/flecs.c:25041:11: note:   crosses initialization of ‘char* path’
25041 |     char *path = flecs_module_path_from_c(module_name);
      |           ^~~~
../src/flecs/distr/flecs.c:25039:17: note:   crosses initialization of ‘const char* old_name_prefix’
25039 |     const char *old_name_prefix = world->info.name_prefix;
      |                 ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:25038:18: note:   crosses initialization of ‘ecs_entity_t old_scope’
25038 |     ecs_entity_t old_scope = ecs_set_scope(world, 0);
      |                  ^~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_import_from_library(ecs_world_t*, const char*, const char*)’:
../src/flecs/distr/flecs.h:2607:47: error: invalid conversion from ‘void*’ to ‘char*’ [-fpermissive]
 2607 | #define ecs_os_malloc(size) ecs_os_api.malloc_(size)
      |                             ~~~~~~~~~~~~~~~~~~^~~~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c:25099:23: note: in expansion of macro ‘ecs_os_malloc’
25099 |         import_func = ecs_os_malloc(ecs_os_strlen(library_name) + ECS_SIZEOF("Import"));
      |                       ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:25184:1: error: jump to label ‘error’
25184 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:25084:5: note: in expansion of macro ‘ecs_check’
25084 |     ecs_check(library_name != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:25171:18: note:   crosses initialization of ‘ecs_entity_t result’
25171 |     ecs_entity_t result = ecs_import(world, action, module);
      |                  ^~~~~~
../src/flecs/distr/flecs.c:25157:25: note:   crosses initialization of ‘void (* action)(ecs_world_t*)’
25157 |     ecs_module_action_t action = (ecs_module_action_t)
      |                         ^~~~~~
../src/flecs/distr/flecs.c:25140:17: note:   crosses initialization of ‘ecs_os_dl_t dl’
25140 |     ecs_os_dl_t dl = ecs_os_dlopen(library_filename);
      |                 ^~
../src/flecs/distr/flecs.c:25128:11: note:   crosses initialization of ‘char* library_filename’
25128 |     char *library_filename = ecs_os_module_to_dl(library_name);
      |           ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:25087:11: note:   crosses initialization of ‘char* module’
25087 |     char *module = ECS_CONST_CAST(char*, module_name);
      |           ^~~~~~
../src/flecs/distr/flecs.c:25086:11: note:   crosses initialization of ‘char* import_func’
25086 |     char *import_func = ECS_CONST_CAST(char*, module_name);
      |           ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_module_init(ecs_world_t*, const char*, const ecs_component_desc_t*)’:
../src/flecs/distr/flecs.c:25201:31: error: taking address of rvalue [-fpermissive]
25201 |         e = ecs_entity(world, { .name = module_path });
      |                               ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:25227:1: error: jump to label ‘error’
25227 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:25193:5: note: in expansion of macro ‘ecs_check’
25193 |     ecs_check(desc != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:25214:26: note:   crosses initialization of ‘ecs_component_desc_t private_desc’
25214 |     ecs_component_desc_t private_desc = *desc;
      |                          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:25198:18: note:   crosses initialization of ‘ecs_entity_t e’
25198 |     ecs_entity_t e = desc->entity;
      |                  ^
../src/flecs/distr/flecs.c:25196:18: note:   crosses initialization of ‘ecs_entity_t old_scope’
25196 |     ecs_entity_t old_scope = ecs_set_scope(world, 0);
      |                  ^~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void EcsRest_copy(void*, const void*, int32_t, const ecs_type_info_t*)’:
../src/flecs/distr/flecs.c:25354:33: error: invalid conversion from ‘void*’ to ‘ecs_rest_ctx_t*’ [-fpermissive]
25354 |     ecs_rest_ctx_t *impl = src->impl;
      |                            ~~~~~^~~~
      |                                 |
      |                                 void*
../src/flecs/distr/flecs.h:1018:13: note: in definition of macro ‘ECS_COPY_IMPL’
 1018 |             __VA_ARGS__\
      |             ^~~~~~~~~~~~
 1019 |         }\
      |              
../src/flecs/distr/flecs.c:25353:8: note: in expansion of macro ‘ECS_COPY’
25353 | static ECS_COPY(EcsRest, dst, src, {
      |        ^~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void EcsRest_dtor(void*, int32_t, const ecs_type_info_t*)’:
../src/flecs/distr/flecs.c:25371:33: error: invalid conversion from ‘void*’ to ‘ecs_rest_ctx_t*’ [-fpermissive]
25371 |     ecs_rest_ctx_t *impl = ptr->impl;
      |                            ~~~~~^~~~
      |                                 |
      |                                 void*
../src/flecs/distr/flecs.h:997:13: note: in definition of macro ‘ECS_XTOR_IMPL’
  997 |             __VA_ARGS__\
      |             ^~~~~~~~~~~~
  998 |         }\
      |              
../src/flecs/distr/flecs.c:25370:8: note: in expansion of macro ‘ECS_DTOR’
25370 | static ECS_DTOR(EcsRest, ptr, {
      |        ^~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘bool flecs_rest_put_entity(ecs_world_t*, ecs_http_reply_t*, const char*)’:
../src/flecs/distr/flecs.c:25563:45: error: taking address of rvalue [-fpermissive]
25563 |     ecs_entity_t result = ecs_entity(world, {
      |                                             ^
25564 |         .name = path,
      |         ~~~~~~~~~~~~~                        
25565 |         .sep = "/"
      |         ~~~~~~~~~~                           
25566 |     });
      |     ~                                        
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘bool flecs_rest_script(ecs_world_t*, const ecs_http_request_t*, ecs_http_reply_t*, const char*)’:
../src/flecs/distr/flecs.c:25821:36: error: taking address of rvalue [-fpermissive]
25821 |         script = ecs_entity(world, { .name = path });
      |                                    ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:25830:10: error: expected unqualified-id before ‘try’
25830 |     bool try = false;
      |          ^~~
../src/flecs/distr/flecs.c:25831:40: error: expected primary-expression before ‘try’
25831 |     flecs_rest_bool_param(req, "try", &try);
      |                                        ^~~
../src/flecs/distr/flecs.c:25835:21: error: expected primary-expression before ‘try’
25835 |     rest_prev_log = try ? NULL : prev_log;
      |                     ^~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:25838:32: error: taking address of rvalue [-fpermissive]
25838 |     script = ecs_script(world, {
      |                                ^
25839 |         .entity = script,
      |         ~~~~~~~~~~~~~~~~~       
25840 |         .code = code
      |         ~~~~~~~~~~~~            
25841 |     });
      |     ~                           
../src/flecs/distr/flecs.h:14313:49: note: in definition of macro ‘ecs_script’
14313 |     ecs_script_init(world, &(ecs_script_desc_t) __VA_ARGS__)
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:25851:14: error: expected primary-expression before ‘try’
25851 |         if (!try) {
      |              ^~~
../src/flecs/distr/flecs.c:25851:14: error: expected ‘)’ before ‘try’
25851 |         if (!try) {
      |            ~ ^~~
      |              )
../src/flecs/distr/flecs.c: In function ‘bool flecs_rest_reply_existing_query(ecs_world_t*, const ecs_http_request_t*, ecs_http_reply_t*, const char*)’:
../src/flecs/distr/flecs.c:25939:24: error: invalid conversion from ‘ecs_poly_t*’ {aka ‘void*’} to ‘ecs_query_t*’ [-fpermissive]
25939 |         q = poly_comp->poly;
      |             ~~~~~~~~~~~^~~~
      |                        |
      |                        ecs_poly_t* {aka void*}
../src/flecs/distr/flecs.c: In function ‘bool flecs_rest_get_query(ecs_world_t*, const ecs_http_request_t*, ecs_http_reply_t*)’:
../src/flecs/distr/flecs.c:25996:10: error: expected unqualified-id before ‘try’
25996 |     bool try = false;
      |          ^~~
../src/flecs/distr/flecs.c:25997:40: error: expected primary-expression before ‘try’
25997 |     flecs_rest_bool_param(req, "try", &try);
      |                                        ^~~
../src/flecs/distr/flecs.c:26002:21: error: expected primary-expression before ‘try’
26002 |     rest_prev_log = try ? NULL : prev_log;
      |                     ^~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:26005:39: error: taking address of rvalue [-fpermissive]
26005 |     ecs_query_t *q = ecs_query(world, { .expr = expr });
      |                                       ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9700:47: note: in definition of macro ‘ecs_query’
 9700 |     ecs_query_init(world, &(ecs_query_desc_t) __VA_ARGS__ )
      |                                               ^~~~~~~~~~~
../src/flecs/distr/flecs.c:26008:13: error: expected primary-expression before ‘try’
26008 |         if (try) {
      |             ^~~
../src/flecs/distr/flecs.c:26008:13: error: expected ‘)’ before ‘try’
26008 |         if (try) {
      |            ~^~~
      |             )
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_all_systems_stats_to_json(ecs_world_t*, ecs_http_reply_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_system_stats_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:26242:45: note: in expansion of macro ‘ecs_map_ptr’
26242 |             ecs_system_stats_t *sys_stats = ecs_map_ptr(&it);
      |                                             ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_pipeline_stats_to_json(ecs_world_t*, const ecs_http_request_t*, ecs_http_reply_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.c:26323:1: error: jump to label ‘noresults’
26323 | noresults:
      | ^~~~~~~~~
../src/flecs/distr/flecs.c:26289:14: note:   from here
26289 |         goto noresults;
      |              ^~~~~~~~~
../src/flecs/distr/flecs.c:26301:19: note:   crosses initialization of ‘int32_t op_count’
26301 |     int32_t s, o, op_count = ecs_vec_count(&p->state->ops);
      |                   ^~~~~~~~
../src/flecs/distr/flecs.c:26298:23: note:   crosses initialization of ‘ecs_sync_stats_t* syncs’
26298 |     ecs_sync_stats_t *syncs = ecs_vec_first_t(
      |                       ^~~~~
../src/flecs/distr/flecs.c:26297:19: note:   crosses initialization of ‘ecs_entity_t* systems’
26297 |     ecs_entity_t *systems = ecs_vec_first_t(&p->state->systems, ecs_entity_t);
      |                   ^~~~~~~
../src/flecs/distr/flecs.c:26296:24: note:   crosses initialization of ‘ecs_pipeline_op_t* ops’
26296 |     ecs_pipeline_op_t *ops = ecs_vec_first_t(&p->state->ops, ecs_pipeline_op_t);
      |                        ^~~
../src/flecs/distr/flecs.c:26292:24: note:   crosses initialization of ‘const EcsPipeline* p’
26292 |     const EcsPipeline *p = ecs_get(world, e, EcsPipeline);
      |                        ^
../src/flecs/distr/flecs.c:26323:1: error: jump to label ‘noresults’
26323 | noresults:
      | ^~~~~~~~~
../src/flecs/distr/flecs.c:26283:14: note:   from here
26283 |         goto noresults;
      |              ^~~~~~~~~
../src/flecs/distr/flecs.c:26301:19: note:   crosses initialization of ‘int32_t op_count’
26301 |     int32_t s, o, op_count = ecs_vec_count(&p->state->ops);
      |                   ^~~~~~~~
../src/flecs/distr/flecs.c:26298:23: note:   crosses initialization of ‘ecs_sync_stats_t* syncs’
26298 |     ecs_sync_stats_t *syncs = ecs_vec_first_t(
      |                       ^~~~~
../src/flecs/distr/flecs.c:26297:19: note:   crosses initialization of ‘ecs_entity_t* systems’
26297 |     ecs_entity_t *systems = ecs_vec_first_t(&p->state->systems, ecs_entity_t);
      |                   ^~~~~~~
../src/flecs/distr/flecs.c:26296:24: note:   crosses initialization of ‘ecs_pipeline_op_t* ops’
26296 |     ecs_pipeline_op_t *ops = ecs_vec_first_t(&p->state->ops, ecs_pipeline_op_t);
      |                        ^~~
../src/flecs/distr/flecs.c:26292:24: note:   crosses initialization of ‘const EcsPipeline* p’
26292 |     const EcsPipeline *p = ecs_get(world, e, EcsPipeline);
      |                        ^
../src/flecs/distr/flecs.c:26286:27: note:   crosses initialization of ‘ecs_pipeline_stats_t* pstats’
26286 |     ecs_pipeline_stats_t *pstats = ecs_map_get_deref(
      |                           ^~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_rest_server_garbage_collect_all(ecs_rest_ctx_t*)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_rest_cmd_capture_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:26526:43: note: in expansion of macro ‘ecs_map_ptr’
26526 |         ecs_rest_cmd_capture_t *capture = ecs_map_ptr(&it);
      |                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:26528:59: error: invalid conversion from ‘void*’ to ‘ecs_rest_cmd_sync_capture_t*’ [-fpermissive]
26528 |         ecs_rest_cmd_sync_capture_t *syncs = ecs_vec_first(&capture->syncs);
      |                                              ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
      |                                                           |
      |                                                           void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_rest_server_garbage_collect(ecs_world_t*, ecs_rest_ctx_t*)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_rest_cmd_capture_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:26552:47: note: in expansion of macro ‘ecs_map_ptr’
26552 |             ecs_rest_cmd_capture_t *capture = ecs_map_ptr(&it);
      |                                               ^~~~~~~~~~~
../src/flecs/distr/flecs.c:26554:63: error: invalid conversion from ‘void*’ to ‘ecs_rest_cmd_sync_capture_t*’ [-fpermissive]
26554 |             ecs_rest_cmd_sync_capture_t *syncs = ecs_vec_first(&capture->syncs);
      |                                                  ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
      |                                                               |
      |                                                               void*
../src/flecs/distr/flecs.c:26569:40: error: invalid conversion from ‘void*’ to ‘int64_t*’ {aka ‘long int*’} [-fpermissive]
26569 |         int64_t *frames = ecs_vec_first(&removed_frames);
      |                           ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
      |                                        |
      |                                        void*
../src/flecs/distr/flecs.c: In function ‘void flecs_rest_on_commands(const ecs_stage_t*, const ecs_vec_t*, void*)’:
../src/flecs/distr/flecs.c:26643:39: error: invalid conversion from ‘void*’ to ‘ecs_rest_cmd_capture_t*’ [-fpermissive]
26643 |     ecs_rest_cmd_capture_t *capture = ctx;
      |                                       ^~~
      |                                       |
      |                                       void*
../src/flecs/distr/flecs.c:26652:40: error: invalid conversion from ‘void*’ to ‘ecs_cmd_t*’ [-fpermissive]
26652 |         ecs_cmd_t *cmds = ecs_vec_first(commands);
      |                           ~~~~~~~~~~~~~^~~~~~~~~~
      |                                        |
      |                                        void*
../src/flecs/distr/flecs.c: In function ‘bool flecs_rest_get_commands_request(ecs_world_t*, ecs_rest_ctx_t*, const ecs_http_request_t*, ecs_http_reply_t*)’:
../src/flecs/distr/flecs.c:26738:55: error: invalid conversion from ‘void*’ to ‘ecs_rest_cmd_sync_capture_t*’ [-fpermissive]
26738 |     ecs_rest_cmd_sync_capture_t *syncs = ecs_vec_first(&capture->syncs);
      |                                          ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
      |                                                       |
      |                                                       void*
../src/flecs/distr/flecs.c: In function ‘bool flecs_rest_reply(const ecs_http_request_t*, ecs_http_reply_t*, void*)’:
../src/flecs/distr/flecs.c:26757:28: error: invalid conversion from ‘void*’ to ‘ecs_rest_ctx_t*’ [-fpermissive]
26757 |     ecs_rest_ctx_t *impl = ctx;
      |                            ^~~
      |                            |
      |                            void*
../src/flecs/distr/flecs.c: In function ‘void ecs_rest_server_fini(ecs_http_server_t*)’:
../src/flecs/distr/flecs.c:26860:47: error: invalid conversion from ‘void*’ to ‘ecs_rest_ctx_t*’ [-fpermissive]
26860 |     ecs_rest_ctx_t *impl = ecs_http_server_ctx(srv);
      |                            ~~~~~~~~~~~~~~~~~~~^~~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c: In function ‘void flecs_on_set_rest(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:26881:13: error: designator order for field ‘ecs_http_server_desc_t::port’ does not match declaration order in ‘ecs_http_server_desc_t’
26881 |             });
      |             ^
../src/flecs/distr/flecs.c:26877:38: error: taking address of rvalue [-fpermissive]
26877 |             &(ecs_http_server_desc_t){
      |                                      ^
26878 |                 .ipaddr = rest[i].ipaddr,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~
26879 |                 .port = rest[i].port,
      |                 ~~~~~~~~~~~~~~~~~~~~~ 
26880 |                 .cache_timeout = 0.2
      |                 ~~~~~~~~~~~~~~~~~~~~  
26881 |             });
      |             ~                         
../src/flecs/distr/flecs.c: In function ‘void DequeueRest(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:26910:39: error: invalid conversion from ‘void*’ to ‘ecs_rest_ctx_t*’ [-fpermissive]
26910 |         ecs_rest_ctx_t *ctx = rest[i].impl;
      |                               ~~~~~~~~^~~~
      |                                       |
      |                                       void*
../src/flecs/distr/flecs.c: In function ‘void DisableRest(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:26932:47: error: invalid conversion from ‘void*’ to ‘ecs_rest_ctx_t*’ [-fpermissive]
26932 |                 ecs_rest_ctx_t *ctx = rest[i].impl;
      |                                       ~~~~~~~~^~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c:26942:47: error: invalid conversion from ‘void*’ to ‘ecs_rest_ctx_t*’ [-fpermissive]
26942 |                 ecs_rest_ctx_t *ctx = rest[i].impl;
      |                                       ~~~~~~~~^~~~
      |                                               |
      |                                               void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void FlecsRestImport(ecs_world_t*)’:
../src/flecs/distr/flecs.c:3008:37: error: taking address of rvalue [-fpermissive]
 3008 |         .entity = ecs_entity(world, { .id = ecs_id(id_), .name = #id_, .symbol = #id_ }),\
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:26966:5: note: in expansion of macro ‘flecs_bootstrap_component’
26966 |     flecs_bootstrap_component(world, EcsRest);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:3007:53: error: expected primary-expression before ‘)’ token
 3007 |     ecs_component_init(world, &(ecs_component_desc_t){\
      |                                                     ^
../src/flecs/distr/flecs.c:26966:5: note: in expansion of macro ‘flecs_bootstrap_component’
26966 |     flecs_bootstrap_component(world, EcsRest);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:26974:5: error: designator order for field ‘ecs_type_hooks_t::copy’ does not match declaration order in ‘ecs_type_hooks_t’
26974 |     });
      |     ^
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:26968:35: error: taking address of rvalue [-fpermissive]
26968 |     ecs_set_hooks(world, EcsRest, {
      |                                   ^
26969 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
26970 |         .move = ecs_move(EcsRest),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~ 
26971 |         .copy = ecs_copy(EcsRest),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~ 
26972 |         .dtor = ecs_dtor(EcsRest),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~ 
26973 |         .on_set = flecs_on_set_rest
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
26974 |     });
      |     ~                              
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:12349:49: note: in definition of macro ‘ecs_system’
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:26977:19: note: in expansion of macro ‘ecs_entity’
26977 |         .entity = ecs_entity(world, {.name = "DequeueRest", .add = ecs_ids( ecs_dependson(EcsPostFrame))}),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.c:26977:68: note: in expansion of macro ‘ecs_ids’
26977 |         .entity = ecs_entity(world, {.name = "DequeueRest", .add = ecs_ids( ecs_dependson(EcsPostFrame))}),
      |                                                                    ^~~~~~~
../src/flecs/distr/flecs.h:12349:47: error: expected primary-expression before ‘)’ token
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                               ^
../src/flecs/distr/flecs.c:26976:5: note: in expansion of macro ‘ecs_system’
26976 |     ecs_system(world, {
      |     ^~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:26985:5: note: in expansion of macro ‘ecs_observer’
26985 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void AddTickSource(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:27055:60: error: taking address of rvalue [-fpermissive]
27055 |         ecs_set(it->world, it->entities[i], EcsTickSource, {0});
      |                                                            ^~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_set_timeout(ecs_world_t*, ecs_entity_t, float)’:
../src/flecs/distr/flecs.c:27157:35: error: taking address of rvalue [-fpermissive]
27157 |         timer = ecs_entity(world, {0});
      |                                   ^~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27164:5: error: designator order for field ‘EcsTimer::active’ does not match declaration order in ‘EcsTimer’
27164 |     });
      |     ^
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27160:37: error: taking address of rvalue [-fpermissive]
27160 |     ecs_set(world, timer, EcsTimer, {
      |                                     ^
27161 |         .timeout = timeout,
      |         ~~~~~~~~~~~~~~~~~~~          
27162 |         .single_shot = true,
      |         ~~~~~~~~~~~~~~~~~~~~         
27163 |         .active = true
      |         ~~~~~~~~~~~~~~               
27164 |     });
      |     ~                                
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27171:1: error: jump to label ‘error’
27171 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:27154:5: note: in expansion of macro ‘ecs_check’
27154 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:27166:19: note:   crosses initialization of ‘ecs_system_t* system_data’
27166 |     ecs_system_t *system_data = flecs_poly_get(world, timer, ecs_system_t);
      |                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘float ecs_get_timeout(const ecs_world_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.c:27186:1: error: jump to label ‘error’
27186 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:27180:5: note: in expansion of macro ‘ecs_check’
27180 |     ecs_check(timer != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:27182:21: note:   crosses initialization of ‘const EcsTimer* value’
27182 |     const EcsTimer *value = ecs_get(world, timer, EcsTimer);
      |                     ^~~~~
../src/flecs/distr/flecs.c:27186:1: error: jump to label ‘error’
27186 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:27179:5: note: in expansion of macro ‘ecs_check’
27179 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:27182:21: note:   crosses initialization of ‘const EcsTimer* value’
27182 |     const EcsTimer *value = ecs_get(world, timer, EcsTimer);
      |                     ^~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_set_interval(ecs_world_t*, ecs_entity_t, float)’:
../src/flecs/distr/flecs.c:27211:1: error: jump to label ‘error’
27211 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:27202:5: note: in expansion of macro ‘ecs_check’
27202 |     ecs_check(t != NULL, ECS_INTERNAL_ERROR, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:27207:19: note:   crosses initialization of ‘ecs_system_t* system_data’
27207 |     ecs_system_t *system_data = flecs_poly_get(world, timer, ecs_system_t);
      |                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27211:1: error: jump to label ‘error’
27211 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:27195:5: note: in expansion of macro ‘ecs_check’
27195 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:27207:19: note:   crosses initialization of ‘ecs_system_t* system_data’
27207 |     ecs_system_t *system_data = flecs_poly_get(world, timer, ecs_system_t);
      |                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27201:15: note:   crosses initialization of ‘EcsTimer* t’
27201 |     EcsTimer *t = ecs_ensure(world, timer, EcsTimer);
      |               ^
../src/flecs/distr/flecs.c: In function ‘float ecs_get_interval(const ecs_world_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.c:27229:1: error: jump to label ‘error’
27229 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:27219:5: note: in expansion of macro ‘ecs_check’
27219 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:27225:21: note:   crosses initialization of ‘const EcsTimer* value’
27225 |     const EcsTimer *value = ecs_get(world, timer, EcsTimer);
      |                     ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_set_rate(ecs_world_t*, ecs_entity_t, int32_t, ecs_entity_t)’:
../src/flecs/distr/flecs.c:27276:36: error: taking address of rvalue [-fpermissive]
27276 |         filter = ecs_entity(world, {0});
      |                                    ^~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27282:5: error: designator order for field ‘EcsRateFilter::src’ does not match declaration order in ‘EcsRateFilter’
27282 |     });
      |     ^
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27279:43: error: taking address of rvalue [-fpermissive]
27279 |     ecs_set(world, filter, EcsRateFilter, {
      |                                           ^
27280 |         .rate = rate,
      |         ~~~~~~~~~~~~~                      
27281 |         .src = source
      |         ~~~~~~~~~~~~~                      
27282 |     });
      |     ~                                      
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27289:1: error: jump to label ‘error’
27289 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:27273:5: note: in expansion of macro ‘ecs_check’
27273 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:27284:19: note:   crosses initialization of ‘ecs_system_t* system_data’
27284 |     ecs_system_t *system_data = flecs_poly_get(world, filter, ecs_system_t);
      |                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void ecs_set_tick_source(ecs_world_t*, ecs_entity_t, ecs_entity_t)’:
../src/flecs/distr/flecs.c:27306:1: error: jump to label ‘error’
27306 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:27300:5: note: in expansion of macro ‘ecs_check’
27300 |     ecs_check(tick_source != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:27302:19: note:   crosses initialization of ‘ecs_system_t* system_data’
27302 |     ecs_system_t *system_data = flecs_poly_get(world, system, ecs_system_t);
      |                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27306:1: error: jump to label ‘error’
27306 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:27299:5: note: in expansion of macro ‘ecs_check’
27299 |     ecs_check(system != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:27302:19: note:   crosses initialization of ‘ecs_system_t* system_data’
27302 |     ecs_system_t *system_data = flecs_poly_get(world, system, ecs_system_t);
      |                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27306:1: error: jump to label ‘error’
27306 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:27298:5: note: in expansion of macro ‘ecs_check’
27298 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:27302:19: note:   crosses initialization of ‘ecs_system_t* system_data’
27302 |     ecs_system_t *system_data = flecs_poly_get(world, system, ecs_system_t);
      |                   ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void ecs_randomize_timers(ecs_world_t*)’:
../src/flecs/distr/flecs.c:27324:37: error: taking address of rvalue [-fpermissive]
27324 |         .entity = ecs_entity(world, { .name = "flecs.timer.RandomizeTimers" }),
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:53: note: in definition of macro ‘ecs_observer’
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                     ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27324:19: note: in expansion of macro ‘ecs_entity’
27324 |         .entity = ecs_entity(world, { .name = "flecs.timer.RandomizeTimers" }),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:27323:5: note: in expansion of macro ‘ecs_observer’
27323 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void FlecsTimerImport(ecs_world_t*)’:
../src/flecs/distr/flecs.c:3008:37: error: taking address of rvalue [-fpermissive]
 3008 |         .entity = ecs_entity(world, { .id = ecs_id(id_), .name = #id_, .symbol = #id_ }),\
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27347:5: note: in expansion of macro ‘flecs_bootstrap_component’
27347 |     flecs_bootstrap_component(world, EcsTimer);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:3007:53: error: expected primary-expression before ‘)’ token
 3007 |     ecs_component_init(world, &(ecs_component_desc_t){\
      |                                                     ^
../src/flecs/distr/flecs.c:27347:5: note: in expansion of macro ‘flecs_bootstrap_component’
27347 |     flecs_bootstrap_component(world, EcsTimer);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:3008:37: error: taking address of rvalue [-fpermissive]
 3008 |         .entity = ecs_entity(world, { .id = ecs_id(id_), .name = #id_, .symbol = #id_ }),\
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27348:5: note: in expansion of macro ‘flecs_bootstrap_component’
27348 |     flecs_bootstrap_component(world, EcsRateFilter);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:3007:53: error: expected primary-expression before ‘)’ token
 3007 |     ecs_component_init(world, &(ecs_component_desc_t){\
      |                                                     ^
../src/flecs/distr/flecs.c:27348:5: note: in expansion of macro ‘flecs_bootstrap_component’
27348 |     flecs_bootstrap_component(world, EcsRateFilter);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27350:36: error: taking address of rvalue [-fpermissive]
27350 |     ecs_set_hooks(world, EcsTimer, {
      |                                    ^
27351 |         .ctor = flecs_default_ctor
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~  
27352 |     });
      |     ~                               
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:12349:49: note: in definition of macro ‘ecs_system’
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27356:19: note: in expansion of macro ‘ecs_entity’
27356 |         .entity = ecs_entity(world, {.name = "AddTickSource", .add = ecs_ids( ecs_dependson(EcsPreFrame) )}),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.c:27356:70: note: in expansion of macro ‘ecs_ids’
27356 |         .entity = ecs_entity(world, {.name = "AddTickSource", .add = ecs_ids( ecs_dependson(EcsPreFrame) )}),
      |                                                                      ^~~~~~~
../src/flecs/distr/flecs.h:12349:47: error: expected primary-expression before ‘)’ token
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                               ^
../src/flecs/distr/flecs.c:27355:5: note: in expansion of macro ‘ecs_system’
27355 |     ecs_system(world, {
      |     ^~~~~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:12349:49: note: in definition of macro ‘ecs_system’
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27367:19: note: in expansion of macro ‘ecs_entity’
27367 |         .entity = ecs_entity(world, {.name = "ProgressTimers", .add = ecs_ids( ecs_dependson(EcsPreFrame))}),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.c:27367:71: note: in expansion of macro ‘ecs_ids’
27367 |         .entity = ecs_entity(world, {.name = "ProgressTimers", .add = ecs_ids( ecs_dependson(EcsPreFrame))}),
      |                                                                       ^~~~~~~
../src/flecs/distr/flecs.h:12349:47: error: expected primary-expression before ‘)’ token
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                               ^
../src/flecs/distr/flecs.c:27366:5: note: in expansion of macro ‘ecs_system’
27366 |     ecs_system(world, {
      |     ^~~~~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:12349:49: note: in definition of macro ‘ecs_system’
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27377:19: note: in expansion of macro ‘ecs_entity’
27377 |         .entity = ecs_entity(world, {.name = "ProgressRateFilters", .add = ecs_ids( ecs_dependson(EcsPreFrame))}),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.c:27377:76: note: in expansion of macro ‘ecs_ids’
27377 |         .entity = ecs_entity(world, {.name = "ProgressRateFilters", .add = ecs_ids( ecs_dependson(EcsPreFrame))}),
      |                                                                            ^~~~~~~
../src/flecs/distr/flecs.h:12349:47: error: expected primary-expression before ‘)’ token
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                               ^
../src/flecs/distr/flecs.c:27376:5: note: in expansion of macro ‘ecs_system’
27376 |     ecs_system(world, {
      |     ^~~~~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:12349:49: note: in definition of macro ‘ecs_system’
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27387:19: note: in expansion of macro ‘ecs_entity’
27387 |         .entity = ecs_entity(world, { .name = "ProgressTickSource", .add = ecs_ids( ecs_dependson(EcsPreFrame))}),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.c:27387:76: note: in expansion of macro ‘ecs_ids’
27387 |         .entity = ecs_entity(world, { .name = "ProgressTickSource", .add = ecs_ids( ecs_dependson(EcsPreFrame))}),
      |                                                                            ^~~~~~~
../src/flecs/distr/flecs.h:12349:47: error: expected primary-expression before ‘)’ token
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                               ^
../src/flecs/distr/flecs.c:27386:5: note: in expansion of macro ‘ecs_system’
27386 |     ecs_system(world, {
      |     ^~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void FlecsUnitsImport(ecs_world_t*)’:
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27423:16: note: in expansion of macro ‘ecs_ids’
27423 |         .add = ecs_ids( EcsModule )
      |                ^~~~~~~
../src/flecs/distr/flecs.c:27431:37: error: taking address of rvalue [-fpermissive]
27431 |         .entity = ecs_entity(world, { .name = "Yocto" }),
      |                                     ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27430:69: error: taking address of rvalue [-fpermissive]
27430 |     EcsYocto = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                     ^
27431 |         .entity = ecs_entity(world, { .name = "Yocto" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27432 |         .symbol = "y",
      |         ~~~~~~~~~~~~~~                                               
27433 |         .translation = { .factor = 10, .power = -24 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                
27434 |     });
      |     ~                                                                
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27436:37: error: taking address of rvalue [-fpermissive]
27436 |         .entity = ecs_entity(world, { .name = "Zepto" }),
      |                                     ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27435:69: error: taking address of rvalue [-fpermissive]
27435 |     EcsZepto = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                     ^
27436 |         .entity = ecs_entity(world, { .name = "Zepto" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27437 |         .symbol = "z",
      |         ~~~~~~~~~~~~~~                                               
27438 |         .translation = { .factor = 10, .power = -21 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                
27439 |     });
      |     ~                                                                
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27441:37: error: taking address of rvalue [-fpermissive]
27441 |         .entity = ecs_entity(world, { .name = "Atto" }),
      |                                     ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27440:68: error: taking address of rvalue [-fpermissive]
27440 |     EcsAtto = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                    ^
27441 |         .entity = ecs_entity(world, { .name = "Atto" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27442 |         .symbol = "a",
      |         ~~~~~~~~~~~~~~                                              
27443 |         .translation = { .factor = 10, .power = -18 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               
27444 |     });
      |     ~                                                               
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27446:37: error: taking address of rvalue [-fpermissive]
27446 |         .entity = ecs_entity(world, { .name = "Femto" }),
      |                                     ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27445:69: error: taking address of rvalue [-fpermissive]
27445 |     EcsFemto = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                     ^
27446 |         .entity = ecs_entity(world, { .name = "Femto" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27447 |         .symbol = "a",
      |         ~~~~~~~~~~~~~~                                               
27448 |         .translation = { .factor = 10, .power = -15 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                
27449 |     });
      |     ~                                                                
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27451:37: error: taking address of rvalue [-fpermissive]
27451 |         .entity = ecs_entity(world, { .name = "Pico" }),
      |                                     ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27450:68: error: taking address of rvalue [-fpermissive]
27450 |     EcsPico = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                    ^
27451 |         .entity = ecs_entity(world, { .name = "Pico" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27452 |         .symbol = "p",
      |         ~~~~~~~~~~~~~~                                              
27453 |         .translation = { .factor = 10, .power = -12 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               
27454 |     });
      |     ~                                                               
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27456:37: error: taking address of rvalue [-fpermissive]
27456 |         .entity = ecs_entity(world, { .name = "Nano" }),
      |                                     ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27455:68: error: taking address of rvalue [-fpermissive]
27455 |     EcsNano = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                    ^
27456 |         .entity = ecs_entity(world, { .name = "Nano" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27457 |         .symbol = "n",
      |         ~~~~~~~~~~~~~~                                              
27458 |         .translation = { .factor = 10, .power = -9 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                
27459 |     });
      |     ~                                                               
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27461:37: error: taking address of rvalue [-fpermissive]
27461 |         .entity = ecs_entity(world, { .name = "Micro" }),
      |                                     ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27460:69: error: taking address of rvalue [-fpermissive]
27460 |     EcsMicro = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                     ^
27461 |         .entity = ecs_entity(world, { .name = "Micro" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27462 |         .symbol = "μ",
      |         ~~~~~~~~~~~~~~                                               
27463 |         .translation = { .factor = 10, .power = -6 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
27464 |     });
      |     ~                                                                
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27466:37: error: taking address of rvalue [-fpermissive]
27466 |         .entity = ecs_entity(world, { .name = "Milli" }),
      |                                     ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27465:69: error: taking address of rvalue [-fpermissive]
27465 |     EcsMilli = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                     ^
27466 |         .entity = ecs_entity(world, { .name = "Milli" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27467 |         .symbol = "m",
      |         ~~~~~~~~~~~~~~                                               
27468 |         .translation = { .factor = 10, .power = -3 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
27469 |     });
      |     ~                                                                
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27471:37: error: taking address of rvalue [-fpermissive]
27471 |         .entity = ecs_entity(world, { .name = "Centi" }),
      |                                     ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27470:69: error: taking address of rvalue [-fpermissive]
27470 |     EcsCenti = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                     ^
27471 |         .entity = ecs_entity(world, { .name = "Centi" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27472 |         .symbol = "c",
      |         ~~~~~~~~~~~~~~                                               
27473 |         .translation = { .factor = 10, .power = -2 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
27474 |     });
      |     ~                                                                
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27476:37: error: taking address of rvalue [-fpermissive]
27476 |         .entity = ecs_entity(world, { .name = "Deci" }),
      |                                     ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27475:68: error: taking address of rvalue [-fpermissive]
27475 |     EcsDeci = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                    ^
27476 |         .entity = ecs_entity(world, { .name = "Deci" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27477 |         .symbol = "d",
      |         ~~~~~~~~~~~~~~                                              
27478 |         .translation = { .factor = 10, .power = -1 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                
27479 |     });
      |     ~                                                               
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27481:37: error: taking address of rvalue [-fpermissive]
27481 |         .entity = ecs_entity(world, { .name = "Deca" }),
      |                                     ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27480:68: error: taking address of rvalue [-fpermissive]
27480 |     EcsDeca = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                    ^
27481 |         .entity = ecs_entity(world, { .name = "Deca" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27482 |         .symbol = "da",
      |         ~~~~~~~~~~~~~~~                                             
27483 |         .translation = { .factor = 10, .power = 1 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
27484 |     });
      |     ~                                                               
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27486:37: error: taking address of rvalue [-fpermissive]
27486 |         .entity = ecs_entity(world, { .name = "Hecto" }),
      |                                     ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27485:69: error: taking address of rvalue [-fpermissive]
27485 |     EcsHecto = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                     ^
27486 |         .entity = ecs_entity(world, { .name = "Hecto" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27487 |         .symbol = "h",
      |         ~~~~~~~~~~~~~~                                               
27488 |         .translation = { .factor = 10, .power = 2 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                  
27489 |     });
      |     ~                                                                
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27491:37: error: taking address of rvalue [-fpermissive]
27491 |         .entity = ecs_entity(world, { .name = "Kilo" }),
      |                                     ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27490:68: error: taking address of rvalue [-fpermissive]
27490 |     EcsKilo = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                    ^
27491 |         .entity = ecs_entity(world, { .name = "Kilo" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27492 |         .symbol = "k",
      |         ~~~~~~~~~~~~~~                                              
27493 |         .translation = { .factor = 10, .power = 3 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
27494 |     });
      |     ~                                                               
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27496:37: error: taking address of rvalue [-fpermissive]
27496 |         .entity = ecs_entity(world, { .name = "Mega" }),
      |                                     ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27495:68: error: taking address of rvalue [-fpermissive]
27495 |     EcsMega = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                    ^
27496 |         .entity = ecs_entity(world, { .name = "Mega" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27497 |         .symbol = "M",
      |         ~~~~~~~~~~~~~~                                              
27498 |         .translation = { .factor = 10, .power = 6 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
27499 |     });
      |     ~                                                               
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27501:37: error: taking address of rvalue [-fpermissive]
27501 |         .entity = ecs_entity(world, { .name = "Giga" }),
      |                                     ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27500:68: error: taking address of rvalue [-fpermissive]
27500 |     EcsGiga = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                    ^
27501 |         .entity = ecs_entity(world, { .name = "Giga" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27502 |         .symbol = "G",
      |         ~~~~~~~~~~~~~~                                              
27503 |         .translation = { .factor = 10, .power = 9 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
27504 |     });
      |     ~                                                               
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27506:37: error: taking address of rvalue [-fpermissive]
27506 |         .entity = ecs_entity(world, { .name = "Tera" }),
      |                                     ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27505:68: error: taking address of rvalue [-fpermissive]
27505 |     EcsTera = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                    ^
27506 |         .entity = ecs_entity(world, { .name = "Tera" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27507 |         .symbol = "T",
      |         ~~~~~~~~~~~~~~                                              
27508 |         .translation = { .factor = 10, .power = 12 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                
27509 |     });
      |     ~                                                               
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27511:37: error: taking address of rvalue [-fpermissive]
27511 |         .entity = ecs_entity(world, { .name = "Peta" }),
      |                                     ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27510:68: error: taking address of rvalue [-fpermissive]
27510 |     EcsPeta = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                    ^
27511 |         .entity = ecs_entity(world, { .name = "Peta" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27512 |         .symbol = "P",
      |         ~~~~~~~~~~~~~~                                              
27513 |         .translation = { .factor = 10, .power = 15 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                
27514 |     });
      |     ~                                                               
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27516:37: error: taking address of rvalue [-fpermissive]
27516 |         .entity = ecs_entity(world, { .name = "Exa" }),
      |                                     ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27515:67: error: taking address of rvalue [-fpermissive]
27515 |     EcsExa = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                   ^
27516 |         .entity = ecs_entity(world, { .name = "Exa" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27517 |         .symbol = "E",
      |         ~~~~~~~~~~~~~~                                             
27518 |         .translation = { .factor = 10, .power = 18 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               
27519 |     });
      |     ~                                                              
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27521:37: error: taking address of rvalue [-fpermissive]
27521 |         .entity = ecs_entity(world, { .name = "Zetta" }),
      |                                     ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27520:69: error: taking address of rvalue [-fpermissive]
27520 |     EcsZetta = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                     ^
27521 |         .entity = ecs_entity(world, { .name = "Zetta" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27522 |         .symbol = "Z",
      |         ~~~~~~~~~~~~~~                                               
27523 |         .translation = { .factor = 10, .power = 21 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
27524 |     });
      |     ~                                                                
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27526:37: error: taking address of rvalue [-fpermissive]
27526 |         .entity = ecs_entity(world, { .name = "Yotta" }),
      |                                     ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27525:69: error: taking address of rvalue [-fpermissive]
27525 |     EcsYotta = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                     ^
27526 |         .entity = ecs_entity(world, { .name = "Yotta" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27527 |         .symbol = "Y",
      |         ~~~~~~~~~~~~~~                                               
27528 |         .translation = { .factor = 10, .power = 24 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
27529 |     });
      |     ~                                                                
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27532:37: error: taking address of rvalue [-fpermissive]
27532 |         .entity = ecs_entity(world, { .name = "Kibi" }),
      |                                     ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27531:68: error: taking address of rvalue [-fpermissive]
27531 |     EcsKibi = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                    ^
27532 |         .entity = ecs_entity(world, { .name = "Kibi" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27533 |         .symbol = "Ki",
      |         ~~~~~~~~~~~~~~~                                             
27534 |         .translation = { .factor = 1024, .power = 1 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               
27535 |     });
      |     ~                                                               
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27537:37: error: taking address of rvalue [-fpermissive]
27537 |         .entity = ecs_entity(world, { .name = "Mebi" }),
      |                                     ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27536:68: error: taking address of rvalue [-fpermissive]
27536 |     EcsMebi = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                    ^
27537 |         .entity = ecs_entity(world, { .name = "Mebi" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27538 |         .symbol = "Mi",
      |         ~~~~~~~~~~~~~~~                                             
27539 |         .translation = { .factor = 1024, .power = 2 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               
27540 |     });
      |     ~                                                               
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27542:37: error: taking address of rvalue [-fpermissive]
27542 |         .entity = ecs_entity(world, { .name = "Gibi" }),
      |                                     ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27541:68: error: taking address of rvalue [-fpermissive]
27541 |     EcsGibi = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                    ^
27542 |         .entity = ecs_entity(world, { .name = "Gibi" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27543 |         .symbol = "Gi",
      |         ~~~~~~~~~~~~~~~                                             
27544 |         .translation = { .factor = 1024, .power = 3 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               
27545 |     });
      |     ~                                                               
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27547:37: error: taking address of rvalue [-fpermissive]
27547 |         .entity = ecs_entity(world, { .name = "Tebi" }),
      |                                     ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27546:68: error: taking address of rvalue [-fpermissive]
27546 |     EcsTebi = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                    ^
27547 |         .entity = ecs_entity(world, { .name = "Tebi" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27548 |         .symbol = "Ti",
      |         ~~~~~~~~~~~~~~~                                             
27549 |         .translation = { .factor = 1024, .power = 4 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               
27550 |     });
      |     ~                                                               
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27552:37: error: taking address of rvalue [-fpermissive]
27552 |         .entity = ecs_entity(world, { .name = "Pebi" }),
      |                                     ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27551:68: error: taking address of rvalue [-fpermissive]
27551 |     EcsPebi = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                    ^
27552 |         .entity = ecs_entity(world, { .name = "Pebi" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27553 |         .symbol = "Pi",
      |         ~~~~~~~~~~~~~~~                                             
27554 |         .translation = { .factor = 1024, .power = 5 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               
27555 |     });
      |     ~                                                               
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27557:37: error: taking address of rvalue [-fpermissive]
27557 |         .entity = ecs_entity(world, { .name = "Exbi" }),
      |                                     ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27556:68: error: taking address of rvalue [-fpermissive]
27556 |     EcsExbi = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                    ^
27557 |         .entity = ecs_entity(world, { .name = "Exbi" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27558 |         .symbol = "Ei",
      |         ~~~~~~~~~~~~~~~                                             
27559 |         .translation = { .factor = 1024, .power = 6 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               
27560 |     });
      |     ~                                                               
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27562:37: error: taking address of rvalue [-fpermissive]
27562 |         .entity = ecs_entity(world, { .name = "Zebi" }),
      |                                     ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27561:68: error: taking address of rvalue [-fpermissive]
27561 |     EcsZebi = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                    ^
27562 |         .entity = ecs_entity(world, { .name = "Zebi" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27563 |         .symbol = "Zi",
      |         ~~~~~~~~~~~~~~~                                             
27564 |         .translation = { .factor = 1024, .power = 7 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               
27565 |     });
      |     ~                                                               
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27567:37: error: taking address of rvalue [-fpermissive]
27567 |         .entity = ecs_entity(world, { .name = "Yobi" }),
      |                                     ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27566:68: error: taking address of rvalue [-fpermissive]
27566 |     EcsYobi = ecs_unit_prefix_init(world, &(ecs_unit_prefix_desc_t){
      |                                                                    ^
27567 |         .entity = ecs_entity(world, { .name = "Yobi" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
27568 |         .symbol = "Yi",
      |         ~~~~~~~~~~~~~~~                                             
27569 |         .translation = { .factor = 1024, .power = 8 }
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               
27570 |     });
      |     ~                                                               
../src/flecs/distr/flecs.c:27576:64: error: taking address of rvalue [-fpermissive]
27576 |     EcsDuration = ecs_quantity_init(world, &(ecs_entity_desc_t){
      |                                                                ^
27577 |         .name = "Duration" });
      |         ~~~~~~~~~~~~~~~~~~~~                                    
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27581:41: error: taking address of rvalue [-fpermissive]
27581 |             .entity = ecs_entity(world, { .name = "Seconds" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27583:27: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
27583 |             .symbol = "s" });
      |                           ^
../src/flecs/distr/flecs.c:27580:61: error: taking address of rvalue [-fpermissive]
27580 |         EcsSeconds = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                             ^
27581 |             .entity = ecs_entity(world, { .name = "Seconds" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27582 |             .quantity = EcsDuration,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~                         
27583 |             .symbol = "s" });
      |             ~~~~~~~~~~~~~~~                                  
../src/flecs/distr/flecs.c:27584:58: error: taking address of rvalue [-fpermissive]
27584 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27585 |             .entity = EcsSeconds,
      |             ~~~~~~~~~~~~~~~~~~~~~                         
27586 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
27587 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27589:45: error: taking address of rvalue [-fpermissive]
27589 |                 .entity = ecs_entity(world, { .name = "PicoSeconds" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27588:69: error: taking address of rvalue [-fpermissive]
27588 |             EcsPicoSeconds = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                     ^
27589 |                 .entity = ecs_entity(world, { .name = "PicoSeconds" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27590 |                 .quantity = EcsDuration,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~                             
27591 |                 .base = EcsSeconds,
      |                 ~~~~~~~~~~~~~~~~~~~                                  
27592 |                 .prefix = EcsPico });
      |                 ~~~~~~~~~~~~~~~~~~~                                  
../src/flecs/distr/flecs.c:27593:62: error: taking address of rvalue [-fpermissive]
27593 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
27594 |                 .entity = EcsPicoSeconds,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~                     
27595 |                 .kind = EcsF32
      |                 ~~~~~~~~~~~~~~                                
27596 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27600:45: error: taking address of rvalue [-fpermissive]
27600 |                 .entity = ecs_entity(world, { .name = "NanoSeconds" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27599:69: error: taking address of rvalue [-fpermissive]
27599 |             EcsNanoSeconds = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                     ^
27600 |                 .entity = ecs_entity(world, { .name = "NanoSeconds" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27601 |                 .quantity = EcsDuration,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~                             
27602 |                 .base = EcsSeconds,
      |                 ~~~~~~~~~~~~~~~~~~~                                  
27603 |                 .prefix = EcsNano });
      |                 ~~~~~~~~~~~~~~~~~~~                                  
../src/flecs/distr/flecs.c:27604:62: error: taking address of rvalue [-fpermissive]
27604 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
27605 |                 .entity = EcsNanoSeconds,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~                     
27606 |                 .kind = EcsF32
      |                 ~~~~~~~~~~~~~~                                
27607 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27610:45: error: taking address of rvalue [-fpermissive]
27610 |                 .entity = ecs_entity(world, { .name = "MicroSeconds" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27609:70: error: taking address of rvalue [-fpermissive]
27609 |             EcsMicroSeconds = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                      ^
27610 |                 .entity = ecs_entity(world, { .name = "MicroSeconds" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27611 |                 .quantity = EcsDuration,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~                              
27612 |                 .base = EcsSeconds,
      |                 ~~~~~~~~~~~~~~~~~~~                                   
27613 |                 .prefix = EcsMicro });
      |                 ~~~~~~~~~~~~~~~~~~~~                                  
../src/flecs/distr/flecs.c:27614:62: error: taking address of rvalue [-fpermissive]
27614 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
27615 |                 .entity = EcsMicroSeconds,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~                    
27616 |                 .kind = EcsF32
      |                 ~~~~~~~~~~~~~~                                
27617 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27620:45: error: taking address of rvalue [-fpermissive]
27620 |                 .entity = ecs_entity(world, { .name = "MilliSeconds" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27619:70: error: taking address of rvalue [-fpermissive]
27619 |             EcsMilliSeconds = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                      ^
27620 |                 .entity = ecs_entity(world, { .name = "MilliSeconds" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27621 |                 .quantity = EcsDuration,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~                              
27622 |                 .base = EcsSeconds,
      |                 ~~~~~~~~~~~~~~~~~~~                                   
27623 |                 .prefix = EcsMilli });
      |                 ~~~~~~~~~~~~~~~~~~~~                                  
../src/flecs/distr/flecs.c:27624:62: error: taking address of rvalue [-fpermissive]
27624 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
27625 |                 .entity = EcsMilliSeconds,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~                    
27626 |                 .kind = EcsF32
      |                 ~~~~~~~~~~~~~~                                
27627 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27630:41: error: taking address of rvalue [-fpermissive]
27630 |             .entity = ecs_entity(world, { .name = "Minutes" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27634:57: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
27634 |             .translation = { .factor = 60, .power = 1 } });
      |                                                         ^
../src/flecs/distr/flecs.c:27629:61: error: taking address of rvalue [-fpermissive]
27629 |         EcsMinutes = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                             ^
27630 |             .entity = ecs_entity(world, { .name = "Minutes" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27631 |             .quantity = EcsDuration,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~                         
27632 |             .base = EcsSeconds,
      |             ~~~~~~~~~~~~~~~~~~~                              
27633 |             .symbol = "min",
      |             ~~~~~~~~~~~~~~~~                                 
27634 |             .translation = { .factor = 60, .power = 1 } });
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
../src/flecs/distr/flecs.c:27635:58: error: taking address of rvalue [-fpermissive]
27635 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27636 |             .entity = EcsMinutes,
      |             ~~~~~~~~~~~~~~~~~~~~~                         
27637 |             .kind = EcsU32
      |             ~~~~~~~~~~~~~~                                
27638 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27641:41: error: taking address of rvalue [-fpermissive]
27641 |             .entity = ecs_entity(world, { .name = "Hours" }),
      |                                         ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27645:57: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
27645 |             .translation = { .factor = 60, .power = 1 } });
      |                                                         ^
../src/flecs/distr/flecs.c:27640:59: error: taking address of rvalue [-fpermissive]
27640 |         EcsHours = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                           ^
27641 |             .entity = ecs_entity(world, { .name = "Hours" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27642 |             .quantity = EcsDuration,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~                       
27643 |             .base = EcsMinutes,
      |             ~~~~~~~~~~~~~~~~~~~                            
27644 |             .symbol = "h",
      |             ~~~~~~~~~~~~~~                                 
27645 |             .translation = { .factor = 60, .power = 1 } });
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
../src/flecs/distr/flecs.c:27646:58: error: taking address of rvalue [-fpermissive]
27646 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27647 |             .entity = EcsHours,
      |             ~~~~~~~~~~~~~~~~~~~                           
27648 |             .kind = EcsU32
      |             ~~~~~~~~~~~~~~                                
27649 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27652:41: error: taking address of rvalue [-fpermissive]
27652 |             .entity = ecs_entity(world, { .name = "Days" }),
      |                                         ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27656:57: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
27656 |             .translation = { .factor = 24, .power = 1 } });
      |                                                         ^
../src/flecs/distr/flecs.c:27651:58: error: taking address of rvalue [-fpermissive]
27651 |         EcsDays = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                          ^
27652 |             .entity = ecs_entity(world, { .name = "Days" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27653 |             .quantity = EcsDuration,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~                      
27654 |             .base = EcsHours,
      |             ~~~~~~~~~~~~~~~~~                             
27655 |             .symbol = "d",
      |             ~~~~~~~~~~~~~~                                
27656 |             .translation = { .factor = 24, .power = 1 } });
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
../src/flecs/distr/flecs.c:27657:58: error: taking address of rvalue [-fpermissive]
27657 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27658 |             .entity = EcsDays,
      |             ~~~~~~~~~~~~~~~~~~                            
27659 |             .kind = EcsU32
      |             ~~~~~~~~~~~~~~                                
27660 |         });
      |         ~                                                 
../src/flecs/distr/flecs.c:27665:60: error: taking address of rvalue [-fpermissive]
27665 |     EcsTime = ecs_quantity_init(world, &(ecs_entity_desc_t){
      |                                                            ^
27666 |         .name = "Time" });
      |         ~~~~~~~~~~~~~~~~                                    
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27670:41: error: taking address of rvalue [-fpermissive]
27670 |             .entity = ecs_entity(world, { .name = "Date" }),
      |                                         ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27669:58: error: taking address of rvalue [-fpermissive]
27669 |         EcsDate = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                          ^
27670 |             .entity = ecs_entity(world, { .name = "Date" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27671 |             .quantity = EcsTime });
      |             ~~~~~~~~~~~~~~~~~~~~~                         
../src/flecs/distr/flecs.c:27672:58: error: taking address of rvalue [-fpermissive]
27672 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27673 |             .entity = EcsDate,
      |             ~~~~~~~~~~~~~~~~~~                            
27674 |             .kind = EcsU32
      |             ~~~~~~~~~~~~~~                                
27675 |         });
      |         ~                                                 
../src/flecs/distr/flecs.c:27680:60: error: taking address of rvalue [-fpermissive]
27680 |     EcsMass = ecs_quantity_init(world, &(ecs_entity_desc_t){
      |                                                            ^
27681 |         .name = "Mass" });
      |         ~~~~~~~~~~~~~~~~                                    
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27684:41: error: taking address of rvalue [-fpermissive]
27684 |             .entity = ecs_entity(world, { .name = "Grams" }),
      |                                         ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27686:27: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
27686 |             .symbol = "g" });
      |                           ^
../src/flecs/distr/flecs.c:27683:59: error: taking address of rvalue [-fpermissive]
27683 |         EcsGrams = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                           ^
27684 |             .entity = ecs_entity(world, { .name = "Grams" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27685 |             .quantity = EcsMass,
      |             ~~~~~~~~~~~~~~~~~~~~                           
27686 |             .symbol = "g" });
      |             ~~~~~~~~~~~~~~~                                
../src/flecs/distr/flecs.c:27687:58: error: taking address of rvalue [-fpermissive]
27687 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27688 |             .entity = EcsGrams,
      |             ~~~~~~~~~~~~~~~~~~~                           
27689 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
27690 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27692:41: error: taking address of rvalue [-fpermissive]
27692 |             .entity = ecs_entity(world, { .name = "KiloGrams" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27695:30: error: designator order for field ‘ecs_unit_desc_t::base’ does not match declaration order in ‘ecs_unit_desc_t’
27695 |             .base = EcsGrams });
      |                              ^
../src/flecs/distr/flecs.c:27691:63: error: taking address of rvalue [-fpermissive]
27691 |         EcsKiloGrams = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                               ^
27692 |             .entity = ecs_entity(world, { .name = "KiloGrams" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27693 |             .quantity = EcsMass,
      |             ~~~~~~~~~~~~~~~~~~~~                               
27694 |             .prefix = EcsKilo,
      |             ~~~~~~~~~~~~~~~~~~                                 
27695 |             .base = EcsGrams });
      |             ~~~~~~~~~~~~~~~~~~                                 
../src/flecs/distr/flecs.c:27696:58: error: taking address of rvalue [-fpermissive]
27696 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27697 |             .entity = EcsKiloGrams,
      |             ~~~~~~~~~~~~~~~~~~~~~~~                       
27698 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
27699 |         });
      |         ~                                                 
../src/flecs/distr/flecs.c:27704:71: error: taking address of rvalue [-fpermissive]
27704 |     EcsElectricCurrent = ecs_quantity_init(world, &(ecs_entity_desc_t){
      |                                                                       ^
27705 |         .name = "ElectricCurrent" });
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~                                    
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27708:41: error: taking address of rvalue [-fpermissive]
27708 |             .entity = ecs_entity(world, { .name = "Ampere" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27710:27: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
27710 |             .symbol = "A" });
      |                           ^
../src/flecs/distr/flecs.c:27707:60: error: taking address of rvalue [-fpermissive]
27707 |         EcsAmpere = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                            ^
27708 |             .entity = ecs_entity(world, { .name = "Ampere" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27709 |             .quantity = EcsElectricCurrent,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
27710 |             .symbol = "A" });
      |             ~~~~~~~~~~~~~~~                                 
../src/flecs/distr/flecs.c:27711:58: error: taking address of rvalue [-fpermissive]
27711 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27712 |             .entity = EcsAmpere,
      |             ~~~~~~~~~~~~~~~~~~~~                          
27713 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
27714 |         });
      |         ~                                                 
../src/flecs/distr/flecs.c:27719:62: error: taking address of rvalue [-fpermissive]
27719 |     EcsAmount = ecs_quantity_init(world, &(ecs_entity_desc_t){
      |                                                              ^
27720 |         .name = "Amount" });
      |         ~~~~~~~~~~~~~~~~~~                                    
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27723:41: error: taking address of rvalue [-fpermissive]
27723 |             .entity = ecs_entity(world, { .name = "Mole" }),
      |                                         ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27725:29: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
27725 |             .symbol = "mol" });
      |                             ^
../src/flecs/distr/flecs.c:27722:58: error: taking address of rvalue [-fpermissive]
27722 |         EcsMole = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                          ^
27723 |             .entity = ecs_entity(world, { .name = "Mole" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27724 |             .quantity = EcsAmount,
      |             ~~~~~~~~~~~~~~~~~~~~~~                        
27725 |             .symbol = "mol" });
      |             ~~~~~~~~~~~~~~~~~                             
../src/flecs/distr/flecs.c:27726:58: error: taking address of rvalue [-fpermissive]
27726 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27727 |             .entity = EcsMole,
      |             ~~~~~~~~~~~~~~~~~~                            
27728 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
27729 |         });
      |         ~                                                 
../src/flecs/distr/flecs.c:27734:73: error: taking address of rvalue [-fpermissive]
27734 |     EcsLuminousIntensity = ecs_quantity_init(world, &(ecs_entity_desc_t){
      |                                                                         ^
27735 |         .name = "LuminousIntensity" });
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                    
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27738:41: error: taking address of rvalue [-fpermissive]
27738 |             .entity = ecs_entity(world, { .name = "Candela" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27740:28: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
27740 |             .symbol = "cd" });
      |                            ^
../src/flecs/distr/flecs.c:27737:61: error: taking address of rvalue [-fpermissive]
27737 |         EcsCandela = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                             ^
27738 |             .entity = ecs_entity(world, { .name = "Candela" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27739 |             .quantity = EcsLuminousIntensity,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                
27740 |             .symbol = "cd" });
      |             ~~~~~~~~~~~~~~~~                                 
../src/flecs/distr/flecs.c:27741:58: error: taking address of rvalue [-fpermissive]
27741 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27742 |             .entity = EcsCandela,
      |             ~~~~~~~~~~~~~~~~~~~~~                         
27743 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
27744 |         });
      |         ~                                                 
../src/flecs/distr/flecs.c:27749:61: error: taking address of rvalue [-fpermissive]
27749 |     EcsForce = ecs_quantity_init(world, &(ecs_entity_desc_t){
      |                                                             ^
27750 |         .name = "Force" });
      |         ~~~~~~~~~~~~~~~~~                                    
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27753:41: error: taking address of rvalue [-fpermissive]
27753 |             .entity = ecs_entity(world, { .name = "Newton" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27755:27: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
27755 |             .symbol = "N" });
      |                           ^
../src/flecs/distr/flecs.c:27752:60: error: taking address of rvalue [-fpermissive]
27752 |         EcsNewton = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                            ^
27753 |             .entity = ecs_entity(world, { .name = "Newton" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27754 |             .quantity = EcsForce,
      |             ~~~~~~~~~~~~~~~~~~~~~                           
27755 |             .symbol = "N" });
      |             ~~~~~~~~~~~~~~~                                 
../src/flecs/distr/flecs.c:27756:58: error: taking address of rvalue [-fpermissive]
27756 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27757 |             .entity = EcsNewton,
      |             ~~~~~~~~~~~~~~~~~~~~                          
27758 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
27759 |         });
      |         ~                                                 
../src/flecs/distr/flecs.c:27764:62: error: taking address of rvalue [-fpermissive]
27764 |     EcsLength = ecs_quantity_init(world, &(ecs_entity_desc_t){
      |                                                              ^
27765 |         .name = "Length" });
      |         ~~~~~~~~~~~~~~~~~~                                    
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27768:41: error: taking address of rvalue [-fpermissive]
27768 |             .entity = ecs_entity(world, { .name = "Meters" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27770:27: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
27770 |             .symbol = "m" });
      |                           ^
../src/flecs/distr/flecs.c:27767:60: error: taking address of rvalue [-fpermissive]
27767 |         EcsMeters = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                            ^
27768 |             .entity = ecs_entity(world, { .name = "Meters" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27769 |             .quantity = EcsLength,
      |             ~~~~~~~~~~~~~~~~~~~~~~                          
27770 |             .symbol = "m" });
      |             ~~~~~~~~~~~~~~~                                 
../src/flecs/distr/flecs.c:27771:58: error: taking address of rvalue [-fpermissive]
27771 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27772 |             .entity = EcsMeters,
      |             ~~~~~~~~~~~~~~~~~~~~                          
27773 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
27774 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27777:45: error: taking address of rvalue [-fpermissive]
27777 |                 .entity = ecs_entity(world, { .name = "PicoMeters" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27776:68: error: taking address of rvalue [-fpermissive]
27776 |             EcsPicoMeters = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                    ^
27777 |                 .entity = ecs_entity(world, { .name = "PicoMeters" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27778 |                 .quantity = EcsLength,
      |                 ~~~~~~~~~~~~~~~~~~~~~~                              
27779 |                 .base = EcsMeters,
      |                 ~~~~~~~~~~~~~~~~~~                                  
27780 |                 .prefix = EcsPico });
      |                 ~~~~~~~~~~~~~~~~~~~                                 
../src/flecs/distr/flecs.c:27781:62: error: taking address of rvalue [-fpermissive]
27781 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
27782 |                 .entity = EcsPicoMeters,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~                      
27783 |                 .kind = EcsF32
      |                 ~~~~~~~~~~~~~~                                
27784 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27787:45: error: taking address of rvalue [-fpermissive]
27787 |                 .entity = ecs_entity(world, { .name = "NanoMeters" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27786:68: error: taking address of rvalue [-fpermissive]
27786 |             EcsNanoMeters = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                    ^
27787 |                 .entity = ecs_entity(world, { .name = "NanoMeters" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27788 |                 .quantity = EcsLength,
      |                 ~~~~~~~~~~~~~~~~~~~~~~                              
27789 |                 .base = EcsMeters,
      |                 ~~~~~~~~~~~~~~~~~~                                  
27790 |                 .prefix = EcsNano });
      |                 ~~~~~~~~~~~~~~~~~~~                                 
../src/flecs/distr/flecs.c:27791:62: error: taking address of rvalue [-fpermissive]
27791 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
27792 |                 .entity = EcsNanoMeters,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~                      
27793 |                 .kind = EcsF32
      |                 ~~~~~~~~~~~~~~                                
27794 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27797:45: error: taking address of rvalue [-fpermissive]
27797 |                 .entity = ecs_entity(world, { .name = "MicroMeters" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27796:69: error: taking address of rvalue [-fpermissive]
27796 |             EcsMicroMeters = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                     ^
27797 |                 .entity = ecs_entity(world, { .name = "MicroMeters" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27798 |                 .quantity = EcsLength,
      |                 ~~~~~~~~~~~~~~~~~~~~~~                               
27799 |                 .base = EcsMeters,
      |                 ~~~~~~~~~~~~~~~~~~                                   
27800 |                 .prefix = EcsMicro });
      |                 ~~~~~~~~~~~~~~~~~~~~                                 
../src/flecs/distr/flecs.c:27801:62: error: taking address of rvalue [-fpermissive]
27801 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
27802 |                 .entity = EcsMicroMeters,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~                     
27803 |                 .kind = EcsF32
      |                 ~~~~~~~~~~~~~~                                
27804 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27807:45: error: taking address of rvalue [-fpermissive]
27807 |                 .entity = ecs_entity(world, { .name = "MilliMeters" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27806:69: error: taking address of rvalue [-fpermissive]
27806 |             EcsMilliMeters = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                     ^
27807 |                 .entity = ecs_entity(world, { .name = "MilliMeters" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27808 |                 .quantity = EcsLength,
      |                 ~~~~~~~~~~~~~~~~~~~~~~                               
27809 |                 .base = EcsMeters,
      |                 ~~~~~~~~~~~~~~~~~~                                   
27810 |                 .prefix = EcsMilli });
      |                 ~~~~~~~~~~~~~~~~~~~~                                 
../src/flecs/distr/flecs.c:27811:62: error: taking address of rvalue [-fpermissive]
27811 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
27812 |                 .entity = EcsMilliMeters,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~                     
27813 |                 .kind = EcsF32
      |                 ~~~~~~~~~~~~~~                                
27814 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27817:45: error: taking address of rvalue [-fpermissive]
27817 |                 .entity = ecs_entity(world, { .name = "CentiMeters" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27816:69: error: taking address of rvalue [-fpermissive]
27816 |             EcsCentiMeters = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                     ^
27817 |                 .entity = ecs_entity(world, { .name = "CentiMeters" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27818 |                 .quantity = EcsLength,
      |                 ~~~~~~~~~~~~~~~~~~~~~~                               
27819 |                 .base = EcsMeters,
      |                 ~~~~~~~~~~~~~~~~~~                                   
27820 |                 .prefix = EcsCenti });
      |                 ~~~~~~~~~~~~~~~~~~~~                                 
../src/flecs/distr/flecs.c:27821:62: error: taking address of rvalue [-fpermissive]
27821 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
27822 |                 .entity = EcsCentiMeters,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~                     
27823 |                 .kind = EcsF32
      |                 ~~~~~~~~~~~~~~                                
27824 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27827:45: error: taking address of rvalue [-fpermissive]
27827 |                 .entity = ecs_entity(world, { .name = "KiloMeters" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27826:68: error: taking address of rvalue [-fpermissive]
27826 |             EcsKiloMeters = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                    ^
27827 |                 .entity = ecs_entity(world, { .name = "KiloMeters" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27828 |                 .quantity = EcsLength,
      |                 ~~~~~~~~~~~~~~~~~~~~~~                              
27829 |                 .base = EcsMeters,
      |                 ~~~~~~~~~~~~~~~~~~                                  
27830 |                 .prefix = EcsKilo });
      |                 ~~~~~~~~~~~~~~~~~~~                                 
../src/flecs/distr/flecs.c:27831:62: error: taking address of rvalue [-fpermissive]
27831 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
27832 |                 .entity = EcsKiloMeters,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~                      
27833 |                 .kind = EcsF32
      |                 ~~~~~~~~~~~~~~                                
27834 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27837:41: error: taking address of rvalue [-fpermissive]
27837 |             .entity = ecs_entity(world, { .name = "Miles" }),
      |                                         ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27840:9: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
27840 |         });
      |         ^
../src/flecs/distr/flecs.c:27836:59: error: taking address of rvalue [-fpermissive]
27836 |         EcsMiles = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                           ^
27837 |             .entity = ecs_entity(world, { .name = "Miles" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27838 |             .quantity = EcsLength,
      |             ~~~~~~~~~~~~~~~~~~~~~~                         
27839 |             .symbol = "mi"
      |             ~~~~~~~~~~~~~~                                 
27840 |         });
      |         ~                                                  
../src/flecs/distr/flecs.c:27841:58: error: taking address of rvalue [-fpermissive]
27841 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27842 |             .entity = EcsMiles,
      |             ~~~~~~~~~~~~~~~~~~~                           
27843 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
27844 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27847:41: error: taking address of rvalue [-fpermissive]
27847 |             .entity = ecs_entity(world, { .name = "Pixels" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27850:9: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
27850 |         });
      |         ^
../src/flecs/distr/flecs.c:27846:60: error: taking address of rvalue [-fpermissive]
27846 |         EcsPixels = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                            ^
27847 |             .entity = ecs_entity(world, { .name = "Pixels" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27848 |             .quantity = EcsLength,
      |             ~~~~~~~~~~~~~~~~~~~~~~                          
27849 |             .symbol = "px"
      |             ~~~~~~~~~~~~~~                                  
27850 |         });
      |         ~                                                   
../src/flecs/distr/flecs.c:27851:58: error: taking address of rvalue [-fpermissive]
27851 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27852 |             .entity = EcsPixels,
      |             ~~~~~~~~~~~~~~~~~~~~                          
27853 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
27854 |         });
      |         ~                                                 
../src/flecs/distr/flecs.c:27859:64: error: taking address of rvalue [-fpermissive]
27859 |     EcsPressure = ecs_quantity_init(world, &(ecs_entity_desc_t){
      |                                                                ^
27860 |         .name = "Pressure" });
      |         ~~~~~~~~~~~~~~~~~~~~                                    
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27863:41: error: taking address of rvalue [-fpermissive]
27863 |             .entity = ecs_entity(world, { .name = "Pascal" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27865:28: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
27865 |             .symbol = "Pa" });
      |                            ^
../src/flecs/distr/flecs.c:27862:60: error: taking address of rvalue [-fpermissive]
27862 |         EcsPascal = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                            ^
27863 |             .entity = ecs_entity(world, { .name = "Pascal" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27864 |             .quantity = EcsPressure,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~                        
27865 |             .symbol = "Pa" });
      |             ~~~~~~~~~~~~~~~~                                
../src/flecs/distr/flecs.c:27866:58: error: taking address of rvalue [-fpermissive]
27866 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27867 |             .entity = EcsPascal,
      |             ~~~~~~~~~~~~~~~~~~~~                          
27868 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
27869 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27871:41: error: taking address of rvalue [-fpermissive]
27871 |             .entity = ecs_entity(world, { .name = "Bar" }),
      |                                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27873:29: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
27873 |             .symbol = "bar" });
      |                             ^
../src/flecs/distr/flecs.c:27870:57: error: taking address of rvalue [-fpermissive]
27870 |         EcsBar = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                         ^
27871 |             .entity = ecs_entity(world, { .name = "Bar" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27872 |             .quantity = EcsPressure,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~                     
27873 |             .symbol = "bar" });
      |             ~~~~~~~~~~~~~~~~~                            
../src/flecs/distr/flecs.c:27874:58: error: taking address of rvalue [-fpermissive]
27874 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27875 |             .entity = EcsBar,
      |             ~~~~~~~~~~~~~~~~~                             
27876 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
27877 |         });
      |         ~                                                 
../src/flecs/distr/flecs.c:27882:61: error: taking address of rvalue [-fpermissive]
27882 |     EcsSpeed = ecs_quantity_init(world, &(ecs_entity_desc_t){
      |                                                             ^
27883 |         .name = "Speed" });
      |         ~~~~~~~~~~~~~~~~~                                    
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27886:41: error: taking address of rvalue [-fpermissive]
27886 |             .entity = ecs_entity(world, { .name = "MetersPerSecond" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27885:69: error: taking address of rvalue [-fpermissive]
27885 |         EcsMetersPerSecond = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                     ^
27886 |             .entity = ecs_entity(world, { .name = "MetersPerSecond" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27887 |             .quantity = EcsSpeed,
      |             ~~~~~~~~~~~~~~~~~~~~~                                    
27888 |             .base = EcsMeters,
      |             ~~~~~~~~~~~~~~~~~~                                       
27889 |             .over = EcsSeconds });
      |             ~~~~~~~~~~~~~~~~~~~~                                     
../src/flecs/distr/flecs.c:27890:58: error: taking address of rvalue [-fpermissive]
27890 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27891 |             .entity = EcsMetersPerSecond,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
27892 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
27893 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27895:41: error: taking address of rvalue [-fpermissive]
27895 |             .entity = ecs_entity(world, { .name = "KiloMetersPerSecond" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27894:73: error: taking address of rvalue [-fpermissive]
27894 |         EcsKiloMetersPerSecond = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                         ^
27895 |             .entity = ecs_entity(world, { .name = "KiloMetersPerSecond" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27896 |             .quantity = EcsSpeed,
      |             ~~~~~~~~~~~~~~~~~~~~~                                        
27897 |             .base = EcsKiloMeters,
      |             ~~~~~~~~~~~~~~~~~~~~~~                                       
27898 |             .over = EcsSeconds });
      |             ~~~~~~~~~~~~~~~~~~~~                                         
../src/flecs/distr/flecs.c:27899:58: error: taking address of rvalue [-fpermissive]
27899 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27900 |             .entity = EcsKiloMetersPerSecond,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~             
27901 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
27902 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27904:41: error: taking address of rvalue [-fpermissive]
27904 |             .entity = ecs_entity(world, { .name = "KiloMetersPerHour" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27903:71: error: taking address of rvalue [-fpermissive]
27903 |         EcsKiloMetersPerHour = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                       ^
27904 |             .entity = ecs_entity(world, { .name = "KiloMetersPerHour" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27905 |             .quantity = EcsSpeed,
      |             ~~~~~~~~~~~~~~~~~~~~~                                      
27906 |             .base = EcsKiloMeters,
      |             ~~~~~~~~~~~~~~~~~~~~~~                                     
27907 |             .over = EcsHours });
      |             ~~~~~~~~~~~~~~~~~~                                         
../src/flecs/distr/flecs.c:27908:58: error: taking address of rvalue [-fpermissive]
27908 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27909 |             .entity = EcsKiloMetersPerHour,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               
27910 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
27911 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27913:41: error: taking address of rvalue [-fpermissive]
27913 |             .entity = ecs_entity(world, { .name = "MilesPerHour" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27912:66: error: taking address of rvalue [-fpermissive]
27912 |         EcsMilesPerHour = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                  ^
27913 |             .entity = ecs_entity(world, { .name = "MilesPerHour" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27914 |             .quantity = EcsSpeed,
      |             ~~~~~~~~~~~~~~~~~~~~~                                 
27915 |             .base = EcsMiles,
      |             ~~~~~~~~~~~~~~~~~                                     
27916 |             .over = EcsHours });
      |             ~~~~~~~~~~~~~~~~~~                                    
../src/flecs/distr/flecs.c:27917:58: error: taking address of rvalue [-fpermissive]
27917 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27918 |             .entity = EcsMilesPerHour,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~                    
27919 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
27920 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27926:37: error: taking address of rvalue [-fpermissive]
27926 |         .entity = ecs_entity(world, { .name = "Acceleration" }),
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27925:62: error: taking address of rvalue [-fpermissive]
27925 |     EcsAcceleration = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                              ^
27926 |         .entity = ecs_entity(world, { .name = "Acceleration" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27927 |         .base = EcsMetersPerSecond,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~                           
27928 |         .over = EcsSeconds });
      |         ~~~~~~~~~~~~~~~~~~~~                                  
../src/flecs/distr/flecs.c:27929:50: error: taking address of rvalue [-fpermissive]
27929 |     ecs_quantity_init(world, &(ecs_entity_desc_t){
      |                                                  ^
27930 |         .id = EcsAcceleration
      |         ~~~~~~~~~~~~~~~~~~~~~                     
27931 |     });
      |     ~                                             
../src/flecs/distr/flecs.c:27932:54: error: taking address of rvalue [-fpermissive]
27932 |     ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                      ^
27933 |         .entity = EcsAcceleration,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~                    
27934 |         .kind = EcsF32
      |         ~~~~~~~~~~~~~~                                
27935 |     });
      |     ~                                                 
../src/flecs/distr/flecs.c:27939:67: error: taking address of rvalue [-fpermissive]
27939 |     EcsTemperature = ecs_quantity_init(world, &(ecs_entity_desc_t){
      |                                                                   ^
27940 |         .name = "Temperature" });
      |         ~~~~~~~~~~~~~~~~~~~~~~~                                    
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27943:41: error: taking address of rvalue [-fpermissive]
27943 |             .entity = ecs_entity(world, { .name = "Kelvin" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27945:27: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
27945 |             .symbol = "K" });
      |                           ^
../src/flecs/distr/flecs.c:27942:60: error: taking address of rvalue [-fpermissive]
27942 |         EcsKelvin = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                            ^
27943 |             .entity = ecs_entity(world, { .name = "Kelvin" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27944 |             .quantity = EcsTemperature,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~                     
27945 |             .symbol = "K" });
      |             ~~~~~~~~~~~~~~~                                 
../src/flecs/distr/flecs.c:27946:58: error: taking address of rvalue [-fpermissive]
27946 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27947 |             .entity = EcsKelvin,
      |             ~~~~~~~~~~~~~~~~~~~~                          
27948 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
27949 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27951:41: error: taking address of rvalue [-fpermissive]
27951 |             .entity = ecs_entity(world, { .name = "Celsius" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27953:28: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
27953 |             .symbol = "°C" });
      |                            ^
../src/flecs/distr/flecs.c:27950:61: error: taking address of rvalue [-fpermissive]
27950 |         EcsCelsius = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                             ^
27951 |             .entity = ecs_entity(world, { .name = "Celsius" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27952 |             .quantity = EcsTemperature,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~                      
27953 |             .symbol = "°C" });
      |             ~~~~~~~~~~~~~~~~                                 
../src/flecs/distr/flecs.c:27954:58: error: taking address of rvalue [-fpermissive]
27954 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27955 |             .entity = EcsCelsius,
      |             ~~~~~~~~~~~~~~~~~~~~~                         
27956 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
27957 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27959:41: error: taking address of rvalue [-fpermissive]
27959 |             .entity = ecs_entity(world, { .name = "Fahrenheit" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27961:27: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
27961 |             .symbol = "F" });
      |                           ^
../src/flecs/distr/flecs.c:27958:64: error: taking address of rvalue [-fpermissive]
27958 |         EcsFahrenheit = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                ^
27959 |             .entity = ecs_entity(world, { .name = "Fahrenheit" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27960 |             .quantity = EcsTemperature,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~                         
27961 |             .symbol = "F" });
      |             ~~~~~~~~~~~~~~~                                     
../src/flecs/distr/flecs.c:27962:58: error: taking address of rvalue [-fpermissive]
27962 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27963 |             .entity = EcsFahrenheit,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~                      
27964 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
27965 |         });
      |         ~                                                 
../src/flecs/distr/flecs.c:27970:60: error: taking address of rvalue [-fpermissive]
27970 |     EcsData = ecs_quantity_init(world, &(ecs_entity_desc_t){
      |                                                            ^
27971 |         .name = "Data" });
      |         ~~~~~~~~~~~~~~~~                                    
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27975:41: error: taking address of rvalue [-fpermissive]
27975 |             .entity = ecs_entity(world, { .name = "Bits" }),
      |                                         ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27977:29: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
27977 |             .symbol = "bit" });
      |                             ^
../src/flecs/distr/flecs.c:27974:58: error: taking address of rvalue [-fpermissive]
27974 |         EcsBits = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                          ^
27975 |             .entity = ecs_entity(world, { .name = "Bits" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27976 |             .quantity = EcsData,
      |             ~~~~~~~~~~~~~~~~~~~~                          
27977 |             .symbol = "bit" });
      |             ~~~~~~~~~~~~~~~~~                             
../src/flecs/distr/flecs.c:27978:58: error: taking address of rvalue [-fpermissive]
27978 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
27979 |             .entity = EcsBits,
      |             ~~~~~~~~~~~~~~~~~~                            
27980 |             .kind = EcsU64
      |             ~~~~~~~~~~~~~~                                
27981 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27984:45: error: taking address of rvalue [-fpermissive]
27984 |                 .entity = ecs_entity(world, { .name = "KiloBits" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27983:66: error: taking address of rvalue [-fpermissive]
27983 |             EcsKiloBits = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                  ^
27984 |                 .entity = ecs_entity(world, { .name = "KiloBits" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27985 |                 .quantity = EcsData,
      |                 ~~~~~~~~~~~~~~~~~~~~                              
27986 |                 .base = EcsBits,
      |                 ~~~~~~~~~~~~~~~~                                  
27987 |                 .prefix = EcsKilo });
      |                 ~~~~~~~~~~~~~~~~~~~                               
../src/flecs/distr/flecs.c:27988:62: error: taking address of rvalue [-fpermissive]
27988 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
27989 |                 .entity = EcsKiloBits,
      |                 ~~~~~~~~~~~~~~~~~~~~~~                        
27990 |                 .kind = EcsU64
      |                 ~~~~~~~~~~~~~~                                
27991 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:27994:45: error: taking address of rvalue [-fpermissive]
27994 |                 .entity = ecs_entity(world, { .name = "MegaBits" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:27993:66: error: taking address of rvalue [-fpermissive]
27993 |             EcsMegaBits = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                  ^
27994 |                 .entity = ecs_entity(world, { .name = "MegaBits" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27995 |                 .quantity = EcsData,
      |                 ~~~~~~~~~~~~~~~~~~~~                              
27996 |                 .base = EcsBits,
      |                 ~~~~~~~~~~~~~~~~                                  
27997 |                 .prefix = EcsMega });
      |                 ~~~~~~~~~~~~~~~~~~~                               
../src/flecs/distr/flecs.c:27998:62: error: taking address of rvalue [-fpermissive]
27998 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
27999 |                 .entity = EcsMegaBits,
      |                 ~~~~~~~~~~~~~~~~~~~~~~                        
28000 |                 .kind = EcsU64
      |                 ~~~~~~~~~~~~~~                                
28001 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28004:45: error: taking address of rvalue [-fpermissive]
28004 |                 .entity = ecs_entity(world, { .name = "GigaBits" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28003:66: error: taking address of rvalue [-fpermissive]
28003 |             EcsGigaBits = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                  ^
28004 |                 .entity = ecs_entity(world, { .name = "GigaBits" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28005 |                 .quantity = EcsData,
      |                 ~~~~~~~~~~~~~~~~~~~~                              
28006 |                 .base = EcsBits,
      |                 ~~~~~~~~~~~~~~~~                                  
28007 |                 .prefix = EcsGiga });
      |                 ~~~~~~~~~~~~~~~~~~~                               
../src/flecs/distr/flecs.c:28008:62: error: taking address of rvalue [-fpermissive]
28008 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
28009 |                 .entity = EcsGigaBits,
      |                 ~~~~~~~~~~~~~~~~~~~~~~                        
28010 |                 .kind = EcsU64
      |                 ~~~~~~~~~~~~~~                                
28011 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28014:41: error: taking address of rvalue [-fpermissive]
28014 |             .entity = ecs_entity(world, { .name = "Bytes" }),
      |                                         ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28018:56: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
28018 |             .translation = { .factor = 8, .power = 1 } });
      |                                                        ^
../src/flecs/distr/flecs.c:28013:59: error: taking address of rvalue [-fpermissive]
28013 |         EcsBytes = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                           ^
28014 |             .entity = ecs_entity(world, { .name = "Bytes" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28015 |             .quantity = EcsData,
      |             ~~~~~~~~~~~~~~~~~~~~                           
28016 |             .symbol = "B",
      |             ~~~~~~~~~~~~~~                                 
28017 |             .base = EcsBits,
      |             ~~~~~~~~~~~~~~~~                               
28018 |             .translation = { .factor = 8, .power = 1 } });
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
../src/flecs/distr/flecs.c:28019:58: error: taking address of rvalue [-fpermissive]
28019 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
28020 |             .entity = EcsBytes,
      |             ~~~~~~~~~~~~~~~~~~~                           
28021 |             .kind = EcsU64
      |             ~~~~~~~~~~~~~~                                
28022 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28025:45: error: taking address of rvalue [-fpermissive]
28025 |                 .entity = ecs_entity(world, { .name = "KiloBytes" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28024:67: error: taking address of rvalue [-fpermissive]
28024 |             EcsKiloBytes = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                   ^
28025 |                 .entity = ecs_entity(world, { .name = "KiloBytes" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28026 |                 .quantity = EcsData,
      |                 ~~~~~~~~~~~~~~~~~~~~                               
28027 |                 .base = EcsBytes,
      |                 ~~~~~~~~~~~~~~~~~                                  
28028 |                 .prefix = EcsKilo });
      |                 ~~~~~~~~~~~~~~~~~~~                                
../src/flecs/distr/flecs.c:28029:62: error: taking address of rvalue [-fpermissive]
28029 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
28030 |                 .entity = EcsKiloBytes,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~                       
28031 |                 .kind = EcsU64
      |                 ~~~~~~~~~~~~~~                                
28032 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28035:45: error: taking address of rvalue [-fpermissive]
28035 |                 .entity = ecs_entity(world, { .name = "MegaBytes" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28034:67: error: taking address of rvalue [-fpermissive]
28034 |             EcsMegaBytes = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                   ^
28035 |                 .entity = ecs_entity(world, { .name = "MegaBytes" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28036 |                 .quantity = EcsData,
      |                 ~~~~~~~~~~~~~~~~~~~~                               
28037 |                 .base = EcsBytes,
      |                 ~~~~~~~~~~~~~~~~~                                  
28038 |                 .prefix = EcsMega });
      |                 ~~~~~~~~~~~~~~~~~~~                                
../src/flecs/distr/flecs.c:28039:62: error: taking address of rvalue [-fpermissive]
28039 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
28040 |                 .entity = EcsMegaBytes,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~                       
28041 |                 .kind = EcsU64
      |                 ~~~~~~~~~~~~~~                                
28042 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28045:45: error: taking address of rvalue [-fpermissive]
28045 |                 .entity = ecs_entity(world, { .name = "GigaBytes" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28044:67: error: taking address of rvalue [-fpermissive]
28044 |             EcsGigaBytes = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                   ^
28045 |                 .entity = ecs_entity(world, { .name = "GigaBytes" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28046 |                 .quantity = EcsData,
      |                 ~~~~~~~~~~~~~~~~~~~~                               
28047 |                 .base = EcsBytes,
      |                 ~~~~~~~~~~~~~~~~~                                  
28048 |                 .prefix = EcsGiga });
      |                 ~~~~~~~~~~~~~~~~~~~                                
../src/flecs/distr/flecs.c:28049:62: error: taking address of rvalue [-fpermissive]
28049 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
28050 |                 .entity = EcsGigaBytes,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~                       
28051 |                 .kind = EcsU64
      |                 ~~~~~~~~~~~~~~                                
28052 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28055:45: error: taking address of rvalue [-fpermissive]
28055 |                 .entity = ecs_entity(world, { .name = "KibiBytes" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28054:67: error: taking address of rvalue [-fpermissive]
28054 |             EcsKibiBytes = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                   ^
28055 |                 .entity = ecs_entity(world, { .name = "KibiBytes" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28056 |                 .quantity = EcsData,
      |                 ~~~~~~~~~~~~~~~~~~~~                               
28057 |                 .base = EcsBytes,
      |                 ~~~~~~~~~~~~~~~~~                                  
28058 |                 .prefix = EcsKibi });
      |                 ~~~~~~~~~~~~~~~~~~~                                
../src/flecs/distr/flecs.c:28059:62: error: taking address of rvalue [-fpermissive]
28059 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
28060 |                 .entity = EcsKibiBytes,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~                       
28061 |                 .kind = EcsU64
      |                 ~~~~~~~~~~~~~~                                
28062 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28065:45: error: taking address of rvalue [-fpermissive]
28065 |                 .entity = ecs_entity(world, { .name = "MebiBytes" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28064:67: error: taking address of rvalue [-fpermissive]
28064 |             EcsMebiBytes = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                   ^
28065 |                 .entity = ecs_entity(world, { .name = "MebiBytes" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28066 |                 .quantity = EcsData,
      |                 ~~~~~~~~~~~~~~~~~~~~                               
28067 |                 .base = EcsBytes,
      |                 ~~~~~~~~~~~~~~~~~                                  
28068 |                 .prefix = EcsMebi });
      |                 ~~~~~~~~~~~~~~~~~~~                                
../src/flecs/distr/flecs.c:28069:62: error: taking address of rvalue [-fpermissive]
28069 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
28070 |                 .entity = EcsMebiBytes,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~                       
28071 |                 .kind = EcsU64
      |                 ~~~~~~~~~~~~~~                                
28072 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28075:45: error: taking address of rvalue [-fpermissive]
28075 |                 .entity = ecs_entity(world, { .name = "GibiBytes" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28074:67: error: taking address of rvalue [-fpermissive]
28074 |             EcsGibiBytes = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                   ^
28075 |                 .entity = ecs_entity(world, { .name = "GibiBytes" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28076 |                 .quantity = EcsData,
      |                 ~~~~~~~~~~~~~~~~~~~~                               
28077 |                 .base = EcsBytes,
      |                 ~~~~~~~~~~~~~~~~~                                  
28078 |                 .prefix = EcsGibi });
      |                 ~~~~~~~~~~~~~~~~~~~                                
../src/flecs/distr/flecs.c:28079:62: error: taking address of rvalue [-fpermissive]
28079 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
28080 |                 .entity = EcsGibiBytes,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~                       
28081 |                 .kind = EcsU64
      |                 ~~~~~~~~~~~~~~                                
28082 |             });
      |             ~                                                 
../src/flecs/distr/flecs.c:28088:64: error: taking address of rvalue [-fpermissive]
28088 |     EcsDataRate = ecs_quantity_init(world, &(ecs_entity_desc_t){
      |                                                                ^
28089 |         .name = "DataRate" });
      |         ~~~~~~~~~~~~~~~~~~~~                                    
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28093:41: error: taking address of rvalue [-fpermissive]
28093 |             .entity = ecs_entity(world, { .name = "BitsPerSecond" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28092:67: error: taking address of rvalue [-fpermissive]
28092 |         EcsBitsPerSecond = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                   ^
28093 |             .entity = ecs_entity(world, { .name = "BitsPerSecond" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28094 |             .quantity = EcsDataRate,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~                               
28095 |             .base = EcsBits,
      |             ~~~~~~~~~~~~~~~~                                       
28096 |             .over = EcsSeconds });
      |             ~~~~~~~~~~~~~~~~~~~~                                   
../src/flecs/distr/flecs.c:28097:58: error: taking address of rvalue [-fpermissive]
28097 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
28098 |             .entity = EcsBitsPerSecond,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~                   
28099 |             .kind = EcsU64
      |             ~~~~~~~~~~~~~~                                
28100 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28103:45: error: taking address of rvalue [-fpermissive]
28103 |                 .entity = ecs_entity(world, { .name = "KiloBitsPerSecond" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28102:75: error: taking address of rvalue [-fpermissive]
28102 |             EcsKiloBitsPerSecond = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                           ^
28103 |                 .entity = ecs_entity(world, { .name = "KiloBitsPerSecond" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28104 |                 .quantity = EcsDataRate,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~                                   
28105 |                 .base = EcsKiloBits,
      |                 ~~~~~~~~~~~~~~~~~~~~                                       
28106 |                 .over = EcsSeconds
      |                 ~~~~~~~~~~~~~~~~~~                                         
28107 |             });
      |             ~                                                              
../src/flecs/distr/flecs.c:28108:62: error: taking address of rvalue [-fpermissive]
28108 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
28109 |                 .entity = EcsKiloBitsPerSecond,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               
28110 |                 .kind = EcsU64
      |                 ~~~~~~~~~~~~~~                                
28111 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28114:45: error: taking address of rvalue [-fpermissive]
28114 |                 .entity = ecs_entity(world, { .name = "MegaBitsPerSecond" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28113:75: error: taking address of rvalue [-fpermissive]
28113 |             EcsMegaBitsPerSecond = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                           ^
28114 |                 .entity = ecs_entity(world, { .name = "MegaBitsPerSecond" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28115 |                 .quantity = EcsDataRate,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~                                   
28116 |                 .base = EcsMegaBits,
      |                 ~~~~~~~~~~~~~~~~~~~~                                       
28117 |                 .over = EcsSeconds
      |                 ~~~~~~~~~~~~~~~~~~                                         
28118 |             });
      |             ~                                                              
../src/flecs/distr/flecs.c:28119:62: error: taking address of rvalue [-fpermissive]
28119 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
28120 |                 .entity = EcsMegaBitsPerSecond,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               
28121 |                 .kind = EcsU64
      |                 ~~~~~~~~~~~~~~                                
28122 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28125:45: error: taking address of rvalue [-fpermissive]
28125 |                 .entity = ecs_entity(world, { .name = "GigaBitsPerSecond" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28124:75: error: taking address of rvalue [-fpermissive]
28124 |             EcsGigaBitsPerSecond = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                           ^
28125 |                 .entity = ecs_entity(world, { .name = "GigaBitsPerSecond" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28126 |                 .quantity = EcsDataRate,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~                                   
28127 |                 .base = EcsGigaBits,
      |                 ~~~~~~~~~~~~~~~~~~~~                                       
28128 |                 .over = EcsSeconds
      |                 ~~~~~~~~~~~~~~~~~~                                         
28129 |             });
      |             ~                                                              
../src/flecs/distr/flecs.c:28130:62: error: taking address of rvalue [-fpermissive]
28130 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
28131 |                 .entity = EcsGigaBitsPerSecond,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~               
28132 |                 .kind = EcsU64
      |                 ~~~~~~~~~~~~~~                                
28133 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28136:41: error: taking address of rvalue [-fpermissive]
28136 |             .entity = ecs_entity(world, { .name = "BytesPerSecond" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28135:68: error: taking address of rvalue [-fpermissive]
28135 |         EcsBytesPerSecond = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                    ^
28136 |             .entity = ecs_entity(world, { .name = "BytesPerSecond" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28137 |             .quantity = EcsDataRate,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~                                
28138 |             .base = EcsBytes,
      |             ~~~~~~~~~~~~~~~~~                                       
28139 |             .over = EcsSeconds });
      |             ~~~~~~~~~~~~~~~~~~~~                                    
../src/flecs/distr/flecs.c:28140:58: error: taking address of rvalue [-fpermissive]
28140 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
28141 |             .entity = EcsBytesPerSecond,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                  
28142 |             .kind = EcsU64
      |             ~~~~~~~~~~~~~~                                
28143 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28146:45: error: taking address of rvalue [-fpermissive]
28146 |                 .entity = ecs_entity(world, { .name = "KiloBytesPerSecond" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28145:76: error: taking address of rvalue [-fpermissive]
28145 |             EcsKiloBytesPerSecond = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                            ^
28146 |                 .entity = ecs_entity(world, { .name = "KiloBytesPerSecond" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28147 |                 .quantity = EcsDataRate,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~                                    
28148 |                 .base = EcsKiloBytes,
      |                 ~~~~~~~~~~~~~~~~~~~~~                                       
28149 |                 .over = EcsSeconds
      |                 ~~~~~~~~~~~~~~~~~~                                          
28150 |             });
      |             ~                                                               
../src/flecs/distr/flecs.c:28151:62: error: taking address of rvalue [-fpermissive]
28151 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
28152 |                 .entity = EcsKiloBytesPerSecond,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~              
28153 |                 .kind = EcsU64
      |                 ~~~~~~~~~~~~~~                                
28154 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28157:45: error: taking address of rvalue [-fpermissive]
28157 |                 .entity = ecs_entity(world, { .name = "MegaBytesPerSecond" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28156:76: error: taking address of rvalue [-fpermissive]
28156 |             EcsMegaBytesPerSecond = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                            ^
28157 |                 .entity = ecs_entity(world, { .name = "MegaBytesPerSecond" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28158 |                 .quantity = EcsDataRate,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~                                    
28159 |                 .base = EcsMegaBytes,
      |                 ~~~~~~~~~~~~~~~~~~~~~                                       
28160 |                 .over = EcsSeconds
      |                 ~~~~~~~~~~~~~~~~~~                                          
28161 |             });
      |             ~                                                               
../src/flecs/distr/flecs.c:28162:62: error: taking address of rvalue [-fpermissive]
28162 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
28163 |                 .entity = EcsMegaBytesPerSecond,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~              
28164 |                 .kind = EcsU64
      |                 ~~~~~~~~~~~~~~                                
28165 |             });
      |             ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28168:45: error: taking address of rvalue [-fpermissive]
28168 |                 .entity = ecs_entity(world, { .name = "GigaBytesPerSecond" }),
      |                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28167:76: error: taking address of rvalue [-fpermissive]
28167 |             EcsGigaBytesPerSecond = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                            ^
28168 |                 .entity = ecs_entity(world, { .name = "GigaBytesPerSecond" }),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28169 |                 .quantity = EcsDataRate,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~                                    
28170 |                 .base = EcsGigaBytes,
      |                 ~~~~~~~~~~~~~~~~~~~~~                                       
28171 |                 .over = EcsSeconds
      |                 ~~~~~~~~~~~~~~~~~~                                          
28172 |             });
      |             ~                                                               
../src/flecs/distr/flecs.c:28173:62: error: taking address of rvalue [-fpermissive]
28173 |             ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                              ^
28174 |                 .entity = EcsGigaBytesPerSecond,
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~              
28175 |                 .kind = EcsU64
      |                 ~~~~~~~~~~~~~~                                
28176 |             });
      |             ~                                                 
../src/flecs/distr/flecs.c:28182:66: error: taking address of rvalue [-fpermissive]
28182 |     EcsPercentage = ecs_quantity_init(world, &(ecs_entity_desc_t){
      |                                                                  ^
28183 |         .name = "Percentage" });
      |         ~~~~~~~~~~~~~~~~~~~~~~                                    
../src/flecs/distr/flecs.c:28184:44: error: taking address of rvalue [-fpermissive]
28184 |     ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                            ^
28185 |         .entity = EcsPercentage,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~            
28186 |         .symbol = "%"
      |         ~~~~~~~~~~~~~                       
28187 |     });
      |     ~                                       
../src/flecs/distr/flecs.c:28188:54: error: taking address of rvalue [-fpermissive]
28188 |     ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                      ^
28189 |         .entity = EcsPercentage,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~                      
28190 |         .kind = EcsF32
      |         ~~~~~~~~~~~~~~                                
28191 |     });
      |     ~                                                 
../src/flecs/distr/flecs.c:28195:61: error: taking address of rvalue [-fpermissive]
28195 |     EcsAngle = ecs_quantity_init(world, &(ecs_entity_desc_t){
      |                                                             ^
28196 |         .name = "Angle" });
      |         ~~~~~~~~~~~~~~~~~                                    
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28199:41: error: taking address of rvalue [-fpermissive]
28199 |             .entity = ecs_entity(world, { .name = "Radians" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28201:29: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
28201 |             .symbol = "rad" });
      |                             ^
../src/flecs/distr/flecs.c:28198:61: error: taking address of rvalue [-fpermissive]
28198 |         EcsRadians = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                             ^
28199 |             .entity = ecs_entity(world, { .name = "Radians" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28200 |             .quantity = EcsAngle,
      |             ~~~~~~~~~~~~~~~~~~~~~                            
28201 |             .symbol = "rad" });
      |             ~~~~~~~~~~~~~~~~~                                
../src/flecs/distr/flecs.c:28202:58: error: taking address of rvalue [-fpermissive]
28202 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
28203 |             .entity = EcsRadians,
      |             ~~~~~~~~~~~~~~~~~~~~~                         
28204 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
28205 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28208:41: error: taking address of rvalue [-fpermissive]
28208 |             .entity = ecs_entity(world, { .name = "Degrees" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28210:27: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
28210 |             .symbol = "°" });
      |                           ^
../src/flecs/distr/flecs.c:28207:61: error: taking address of rvalue [-fpermissive]
28207 |         EcsDegrees = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                             ^
28208 |             .entity = ecs_entity(world, { .name = "Degrees" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28209 |             .quantity = EcsAngle,
      |             ~~~~~~~~~~~~~~~~~~~~~                            
28210 |             .symbol = "°" });
      |             ~~~~~~~~~~~~~~~                                  
../src/flecs/distr/flecs.c:28211:58: error: taking address of rvalue [-fpermissive]
28211 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
28212 |             .entity = EcsDegrees,
      |             ~~~~~~~~~~~~~~~~~~~~~                         
28213 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
28214 |         });
      |         ~                                                 
../src/flecs/distr/flecs.c:28219:61: error: taking address of rvalue [-fpermissive]
28219 |     EcsColor = ecs_quantity_init(world, &(ecs_entity_desc_t){
      |                                                             ^
28220 |         .name = "Color" });
      |         ~~~~~~~~~~~~~~~~~                                    
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28223:41: error: taking address of rvalue [-fpermissive]
28223 |             .entity = ecs_entity(world, { .name = "Rgb" }),
      |                                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28222:62: error: taking address of rvalue [-fpermissive]
28222 |         EcsColorRgb = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                              ^
28223 |             .entity = ecs_entity(world, { .name = "Rgb" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
28224 |             .quantity = EcsColor });
      |             ~~~~~~~~~~~~~~~~~~~~~~                            
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28227:41: error: taking address of rvalue [-fpermissive]
28227 |             .entity = ecs_entity(world, { .name = "Hsl" }),
      |                                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28226:62: error: taking address of rvalue [-fpermissive]
28226 |         EcsColorHsl = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                              ^
28227 |             .entity = ecs_entity(world, { .name = "Hsl" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
28228 |             .quantity = EcsColor });
      |             ~~~~~~~~~~~~~~~~~~~~~~                            
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28231:41: error: taking address of rvalue [-fpermissive]
28231 |             .entity = ecs_entity(world, { .name = "Css" }),
      |                                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28230:62: error: taking address of rvalue [-fpermissive]
28230 |         EcsColorCss = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                              ^
28231 |             .entity = ecs_entity(world, { .name = "Css" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
28232 |             .quantity = EcsColor });
      |             ~~~~~~~~~~~~~~~~~~~~~~                            
../src/flecs/distr/flecs.c:28233:58: error: taking address of rvalue [-fpermissive]
28233 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
28234 |             .entity = EcsColorCss,
      |             ~~~~~~~~~~~~~~~~~~~~~~                        
28235 |             .kind = EcsString
      |             ~~~~~~~~~~~~~~~~~                             
28236 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28243:37: error: taking address of rvalue [-fpermissive]
28243 |         .entity = ecs_entity(world, { .name = "Bel" }),
      |                                     ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28242:53: error: taking address of rvalue [-fpermissive]
28242 |     EcsBel = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                     ^
28243 |         .entity = ecs_entity(world, { .name = "Bel" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28244 |         .symbol = "B" });
      |         ~~~~~~~~~~~~~~~                              
../src/flecs/distr/flecs.c:28245:54: error: taking address of rvalue [-fpermissive]
28245 |     ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                      ^
28246 |         .entity = EcsBel,
      |         ~~~~~~~~~~~~~~~~~                             
28247 |         .kind = EcsF32
      |         ~~~~~~~~~~~~~~                                
28248 |     });
      |     ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28250:37: error: taking address of rvalue [-fpermissive]
28250 |         .entity = ecs_entity(world, { .name = "DeciBel" }),
      |                                     ^~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28252:24: error: designator order for field ‘ecs_unit_desc_t::base’ does not match declaration order in ‘ecs_unit_desc_t’
28252 |         .base = EcsBel });
      |                        ^
../src/flecs/distr/flecs.c:28249:57: error: taking address of rvalue [-fpermissive]
28249 |     EcsDeciBel = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                         ^
28250 |         .entity = ecs_entity(world, { .name = "DeciBel" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28251 |         .prefix = EcsDeci,
      |         ~~~~~~~~~~~~~~~~~~                               
28252 |         .base = EcsBel });
      |         ~~~~~~~~~~~~~~~~                                 
../src/flecs/distr/flecs.c:28253:54: error: taking address of rvalue [-fpermissive]
28253 |     ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                      ^
28254 |         .entity = EcsDeciBel,
      |         ~~~~~~~~~~~~~~~~~~~~~                         
28255 |         .kind = EcsF32
      |         ~~~~~~~~~~~~~~                                
28256 |     });
      |     ~                                                 
../src/flecs/distr/flecs.c:28260:65: error: taking address of rvalue [-fpermissive]
28260 |     EcsFrequency = ecs_quantity_init(world, &(ecs_entity_desc_t){
      |                                                                 ^
28261 |         .name = "Frequency" });
      |         ~~~~~~~~~~~~~~~~~~~~~                                    
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28265:41: error: taking address of rvalue [-fpermissive]
28265 |             .entity = ecs_entity(world, { .name = "Hertz" }),
      |                                         ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28267:28: error: designator order for field ‘ecs_unit_desc_t::symbol’ does not match declaration order in ‘ecs_unit_desc_t’
28267 |             .symbol = "Hz" });
      |                            ^
../src/flecs/distr/flecs.c:28264:59: error: taking address of rvalue [-fpermissive]
28264 |         EcsHertz = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                           ^
28265 |             .entity = ecs_entity(world, { .name = "Hertz" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28266 |             .quantity = EcsFrequency,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~                      
28267 |             .symbol = "Hz" });
      |             ~~~~~~~~~~~~~~~~                               
../src/flecs/distr/flecs.c:28268:58: error: taking address of rvalue [-fpermissive]
28268 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
28269 |             .entity = EcsHertz,
      |             ~~~~~~~~~~~~~~~~~~~                           
28270 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
28271 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28274:41: error: taking address of rvalue [-fpermissive]
28274 |             .entity = ecs_entity(world, { .name = "KiloHertz" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28276:30: error: designator order for field ‘ecs_unit_desc_t::base’ does not match declaration order in ‘ecs_unit_desc_t’
28276 |             .base = EcsHertz });
      |                              ^
../src/flecs/distr/flecs.c:28273:63: error: taking address of rvalue [-fpermissive]
28273 |         EcsKiloHertz = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                               ^
28274 |             .entity = ecs_entity(world, { .name = "KiloHertz" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28275 |             .prefix = EcsKilo,
      |             ~~~~~~~~~~~~~~~~~~                                 
28276 |             .base = EcsHertz });
      |             ~~~~~~~~~~~~~~~~~~                                 
../src/flecs/distr/flecs.c:28277:58: error: taking address of rvalue [-fpermissive]
28277 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
28278 |             .entity = EcsKiloHertz,
      |             ~~~~~~~~~~~~~~~~~~~~~~~                       
28279 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
28280 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28283:41: error: taking address of rvalue [-fpermissive]
28283 |             .entity = ecs_entity(world, { .name = "MegaHertz" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28285:30: error: designator order for field ‘ecs_unit_desc_t::base’ does not match declaration order in ‘ecs_unit_desc_t’
28285 |             .base = EcsHertz });
      |                              ^
../src/flecs/distr/flecs.c:28282:63: error: taking address of rvalue [-fpermissive]
28282 |         EcsMegaHertz = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                               ^
28283 |             .entity = ecs_entity(world, { .name = "MegaHertz" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28284 |             .prefix = EcsMega,
      |             ~~~~~~~~~~~~~~~~~~                                 
28285 |             .base = EcsHertz });
      |             ~~~~~~~~~~~~~~~~~~                                 
../src/flecs/distr/flecs.c:28286:58: error: taking address of rvalue [-fpermissive]
28286 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
28287 |             .entity = EcsMegaHertz,
      |             ~~~~~~~~~~~~~~~~~~~~~~~                       
28288 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
28289 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28292:41: error: taking address of rvalue [-fpermissive]
28292 |             .entity = ecs_entity(world, { .name = "GigaHertz" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28294:30: error: designator order for field ‘ecs_unit_desc_t::base’ does not match declaration order in ‘ecs_unit_desc_t’
28294 |             .base = EcsHertz });
      |                              ^
../src/flecs/distr/flecs.c:28291:63: error: taking address of rvalue [-fpermissive]
28291 |         EcsGigaHertz = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                               ^
28292 |             .entity = ecs_entity(world, { .name = "GigaHertz" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28293 |             .prefix = EcsGiga,
      |             ~~~~~~~~~~~~~~~~~~                                 
28294 |             .base = EcsHertz });
      |             ~~~~~~~~~~~~~~~~~~                                 
../src/flecs/distr/flecs.c:28295:58: error: taking address of rvalue [-fpermissive]
28295 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
28296 |             .entity = EcsGigaHertz,
      |             ~~~~~~~~~~~~~~~~~~~~~~~                       
28297 |             .kind = EcsF32
      |             ~~~~~~~~~~~~~~                                
28298 |         });
      |         ~                                                 
../src/flecs/distr/flecs.c:28301:59: error: taking address of rvalue [-fpermissive]
28301 |     EcsUri = ecs_quantity_init(world, &(ecs_entity_desc_t){
      |                                                           ^
28302 |         .name = "Uri" });
      |         ~~~~~~~~~~~~~~~                                    
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28306:41: error: taking address of rvalue [-fpermissive]
28306 |             .entity = ecs_entity(world, { .name = "Hyperlink" }),
      |                                         ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28305:66: error: taking address of rvalue [-fpermissive]
28305 |         EcsUriHyperlink = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                                  ^
28306 |             .entity = ecs_entity(world, { .name = "Hyperlink" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
28307 |             .quantity = EcsUri });
      |             ~~~~~~~~~~~~~~~~~~~~                                  
../src/flecs/distr/flecs.c:28308:58: error: taking address of rvalue [-fpermissive]
28308 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
28309 |             .entity = EcsUriHyperlink,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~                    
28310 |             .kind = EcsString
      |             ~~~~~~~~~~~~~~~~~                             
28311 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28314:41: error: taking address of rvalue [-fpermissive]
28314 |             .entity = ecs_entity(world, { .name = "Image" }),
      |                                         ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28313:62: error: taking address of rvalue [-fpermissive]
28313 |         EcsUriImage = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                              ^
28314 |             .entity = ecs_entity(world, { .name = "Image" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
28315 |             .quantity = EcsUri });
      |             ~~~~~~~~~~~~~~~~~~~~                              
../src/flecs/distr/flecs.c:28316:58: error: taking address of rvalue [-fpermissive]
28316 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
28317 |             .entity = EcsUriImage,
      |             ~~~~~~~~~~~~~~~~~~~~~~                        
28318 |             .kind = EcsString
      |             ~~~~~~~~~~~~~~~~~                             
28319 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:28322:41: error: taking address of rvalue [-fpermissive]
28322 |             .entity = ecs_entity(world, { .name = "File" }),
      |                                         ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28321:61: error: taking address of rvalue [-fpermissive]
28321 |         EcsUriFile = ecs_unit_init(world, &(ecs_unit_desc_t){
      |                                                             ^
28322 |             .entity = ecs_entity(world, { .name = "File" }),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
28323 |             .quantity = EcsUri });
      |             ~~~~~~~~~~~~~~~~~~~~                             
../src/flecs/distr/flecs.c:28324:58: error: taking address of rvalue [-fpermissive]
28324 |         ecs_primitive_init(world, &(ecs_primitive_desc_t){
      |                                                          ^
28325 |             .entity = EcsUriFile,
      |             ~~~~~~~~~~~~~~~~~~~~~                         
28326 |             .kind = EcsString
      |             ~~~~~~~~~~~~~~~~~                             
28327 |         });
      |         ~                                                 
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘char* flecs_strdup(ecs_allocator_t*, const char*)’:
../src/flecs/distr/flecs.h:2001:42: error: invalid conversion from ‘void*’ to ‘char*’ [-fpermissive]
 2001 | #define flecs_alloc(a, size) flecs_balloc(flecs_allocator_get(a, size))
      |                              ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.h:2003:36: note: in expansion of macro ‘flecs_alloc’
 2003 | #define flecs_alloc_n(a, T, count) flecs_alloc(a, ECS_SIZEOF(T) * (count))
      |                                    ^~~~~~~~~~~
../src/flecs/distr/flecs.c:28470:20: note: in expansion of macro ‘flecs_alloc_n’
28470 |     char *result = flecs_alloc_n(a, char, len + 1);
      |                    ^~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void ensure(ecs_bitset_t*, ecs_size_t)’:
../src/flecs/distr/flecs.h:2616:47: error: invalid conversion from ‘void*’ to ‘uint64_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 2616 | #define ecs_os_calloc(size) ecs_os_api.calloc_(size)
      |                             ~~~~~~~~~~~~~~~~~~^~~~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c:28515:20: note: in expansion of macro ‘ecs_os_calloc’
28515 |         bs->data = ecs_os_calloc(new_size);
      |                    ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2613:54: error: invalid conversion from ‘void*’ to ‘uint64_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 2613 | #define ecs_os_realloc(ptr, size) ecs_os_api.realloc_(ptr, size)
      |                                   ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~
      |                                                      |
      |                                                      void*
../src/flecs/distr/flecs.c:28520:20: note: in expansion of macro ‘ecs_os_realloc’
28520 |         bs->data = ecs_os_realloc(bs->data, new_size);
      |                    ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_bitset_set(ecs_bitset_t*, int32_t, bool)’:
../src/flecs/distr/flecs.c:28569:1: error: jump to label ‘error’
28569 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:28564:5: note: in expansion of macro ‘ecs_check’
28564 |     ecs_check(elem < bs->count, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:28567:14: note:   crosses initialization of ‘uint64_t v’
28567 |     uint64_t v = bs->data[hi];
      |              ^
../src/flecs/distr/flecs.c:28566:14: note:   crosses initialization of ‘uint32_t lo’
28566 |     uint32_t lo = ((uint32_t)elem) & 0x3F;
      |              ^~
../src/flecs/distr/flecs.c:28565:14: note:   crosses initialization of ‘uint32_t hi’
28565 |     uint32_t hi = ((uint32_t)elem) >> 6;
      |              ^~
../src/flecs/distr/flecs.c: In function ‘void flecs_bitset_remove(ecs_bitset_t*, int32_t)’:
../src/flecs/distr/flecs.c:28599:1: error: jump to label ‘error’
28599 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:28593:5: note: in expansion of macro ‘ecs_check’
28593 |     ecs_check(elem < bs->count, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:28595:10: note:   crosses initialization of ‘bool last_value’
28595 |     bool last_value = flecs_bitset_get(bs, last);
      |          ^~~~~~~~~~
../src/flecs/distr/flecs.c:28594:13: note:   crosses initialization of ‘int32_t last’
28594 |     int32_t last = bs->count - 1;
      |             ^~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_bitset_swap(ecs_bitset_t*, int32_t, int32_t)’:
../src/flecs/distr/flecs.c:28615:1: error: jump to label ‘error’
28615 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:28609:5: note: in expansion of macro ‘ecs_check’
28609 |     ecs_check(elem_b < bs->count, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:28612:10: note:   crosses initialization of ‘bool b’
28612 |     bool b = flecs_bitset_get(bs, elem_b);
      |          ^
../src/flecs/distr/flecs.c:28611:10: note:   crosses initialization of ‘bool a’
28611 |     bool a = flecs_bitset_get(bs, elem_a);
      |          ^
../src/flecs/distr/flecs.c:28615:1: error: jump to label ‘error’
28615 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:28608:5: note: in expansion of macro ‘ecs_check’
28608 |     ecs_check(elem_a < bs->count, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:28612:10: note:   crosses initialization of ‘bool b’
28612 |     bool b = flecs_bitset_get(bs, elem_b);
      |          ^
../src/flecs/distr/flecs.c:28611:10: note:   crosses initialization of ‘bool a’
28611 |     bool a = flecs_bitset_get(bs, elem_a);
      |          ^
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_block_allocator_chunk_header_t* flecs_balloc_block(ecs_block_allocator_t*)’:
../src/flecs/distr/flecs.h:2607:47: error: invalid conversion from ‘void*’ to ‘ecs_block_allocator_block_t*’ [-fpermissive]
 2607 | #define ecs_os_malloc(size) ecs_os_api.malloc_(size)
      |                             ~~~~~~~~~~~~~~~~~~^~~~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c:28646:9: note: in expansion of macro ‘ecs_os_malloc’
28646 |         ecs_os_malloc(ECS_SIZEOF(ecs_block_allocator_block_t) +
      |         ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:3942:31: error: invalid conversion from ‘void*’ to ‘ecs_block_allocator_chunk_header_t*’ [-fpermissive]
 3942 | #define ECS_OFFSET(o, offset) reinterpret_cast<void*>((reinterpret_cast<uintptr_t>(o)) + (static_cast<uintptr_t>(offset)))
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.c:28648:55: note: in expansion of macro ‘ECS_OFFSET’
28648 |     ecs_block_allocator_chunk_header_t *first_chunk = ECS_OFFSET(block,
      |                                                       ^~~~~~~~~~
../src/flecs/distr/flecs.h:3942:31: error: invalid conversion from ‘void*’ to ‘ecs_block_allocator_chunk_header_t*’ [-fpermissive]
 3942 | #define ECS_OFFSET(o, offset) reinterpret_cast<void*>((reinterpret_cast<uintptr_t>(o)) + (static_cast<uintptr_t>(offset)))
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.c:28666:23: note: in expansion of macro ‘ECS_OFFSET’
28666 |         chunk->next = ECS_OFFSET(chunk, allocator->chunk_size);
      |                       ^~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_bfree_w_dbg_info(ecs_block_allocator_t*, void*, const char*)’:
../src/flecs/distr/flecs.c:28826:49: error: invalid conversion from ‘void*’ to ‘ecs_block_allocator_chunk_header_t*’ [-fpermissive]
28826 |     ecs_block_allocator_chunk_header_t *chunk = memory;
      |                                                 ^~~~~~
      |                                                 |
      |                                                 void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_hashmap_fini(ecs_hashmap_t*)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_hm_bucket_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:29094:35: note: in expansion of macro ‘ecs_map_ptr’
29094 |         ecs_hm_bucket_t *bucket = ecs_map_ptr(&it);
      |                                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_hashmap_copy(ecs_hashmap_t*, const ecs_hashmap_t*)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_map_data_t*’ {aka ‘long unsigned int*’} to type ‘ecs_hm_bucket_t**’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:1862:29: note: in expansion of macro ‘ECS_CAST’
 1862 | #define ecs_map_ref(it, T) (ECS_CAST(T**, &((it)->res[1])))
      |                             ^~~~~~~~
../src/flecs/distr/flecs.c:29119:40: note: in expansion of macro ‘ecs_map_ref’
29119 |         ecs_hm_bucket_t **bucket_ptr = ecs_map_ref(&it, ecs_hm_bucket_t);
      |                                        ^~~~~~~~~~~
../src/flecs/distr/flecs.c:29121:51: error: invalid conversion from ‘void*’ to ‘ecs_hm_bucket_t*’ [-fpermissive]
29121 |         ecs_hm_bucket_t *dst_bucket = flecs_balloc(&dst->bucket_allocator);
      |                                       ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
      |                                                   |
      |                                                   void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘flecs_hashmap_result_t flecs_hashmap_ensure_(ecs_hashmap_t*, ecs_size_t, const void*, ecs_size_t)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_map_val_t*’ {aka ‘long unsigned int*’} to type ‘ecs_hm_bucket_t**’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:1852:37: note: in expansion of macro ‘ECS_CAST’
 1852 | #define ecs_map_ensure_ref(m, T, k) ECS_CAST(T**, ecs_map_ensure(m, k))
      |                                     ^~~~~~~~
../src/flecs/distr/flecs.c:29162:27: note: in expansion of macro ‘ecs_map_ensure_ref’
29162 |     ecs_hm_bucket_t **r = ecs_map_ensure_ref(&map->impl, ecs_hm_bucket_t, hash);
      |                           ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:29165:38: error: invalid conversion from ‘void*’ to ‘ecs_hm_bucket_t*’ [-fpermissive]
29165 |         bucket = r[0] = flecs_bcalloc(&map->bucket_allocator);
      |                         ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
      |                                      |
      |                                      void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_hm_bucket_remove(ecs_hashmap_t*, ecs_hm_bucket_t*, uint64_t, int32_t)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_hm_bucket_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                    ^
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1857:35: note: in expansion of macro ‘ECS_PTR_CAST’
 1857 | #define ecs_map_remove_ptr(m, k) (ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, (ecs_map_remove(m, k)))))
      |                                   ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:29232:30: note: in expansion of macro ‘ecs_map_remove_ptr’
29232 |         ecs_hm_bucket_t *b = ecs_map_remove_ptr(&map->impl, hash);
      |                              ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void* flecs_hashmap_next_(flecs_hashmap_iter_t*, ecs_size_t, void*, ecs_size_t)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_hm_bucket_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:29294:31: note: in expansion of macro ‘ecs_map_ptr’
29294 |         bucket = it->bucket = ecs_map_ptr(&it->it);
      |                               ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_map_val_t* flecs_map_bucket_add(ecs_block_allocator_t*, ecs_bucket_t*, ecs_map_key_t)’:
../src/flecs/distr/flecs.c:29380:49: error: invalid conversion from ‘void*’ to ‘ecs_bucket_entry_t*’ [-fpermissive]
29380 |     ecs_bucket_entry_t *new_entry = flecs_balloc(allocator);
      |                                     ~~~~~~~~~~~~^~~~~~~~~~~
      |                                                 |
      |                                                 void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_map_rehash(ecs_map_t*, int32_t)’:
../src/flecs/distr/flecs.h:3942:31: error: invalid conversion from ‘void*’ to ‘ecs_bucket_t*’ [-fpermissive]
 3942 | #define ECS_OFFSET(o, offset) reinterpret_cast<void*>((reinterpret_cast<uintptr_t>(o)) + (static_cast<uintptr_t>(offset)))
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.h:3948:36: note: in expansion of macro ‘ECS_OFFSET’
 3948 | #define ECS_ELEM(ptr, size, index) ECS_OFFSET(ptr, (size) * (index))
      |                                    ^~~~~~~~~~
../src/flecs/distr/flecs.h:3949:33: note: in expansion of macro ‘ECS_ELEM’
 3949 | #define ECS_ELEM_T(o, T, index) ECS_ELEM(o, ECS_SIZEOF(T), index)
      |                                 ^~~~~~~~
../src/flecs/distr/flecs.c:29319:30: note: in expansion of macro ‘ECS_ELEM_T’
29319 | #define ECS_BUCKET_END(b, c) ECS_ELEM_T(b, ecs_bucket_t, c)
      |                              ^~~~~~~~~~
../src/flecs/distr/flecs.c:29454:54: note: in expansion of macro ‘ECS_BUCKET_END’
29454 |     ecs_bucket_t *buckets = map->buckets, *b, *end = ECS_BUCKET_END(buckets, old_count);
      |                                                      ^~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:2005:44: error: invalid conversion from ‘void*’ to ‘ecs_bucket_t*’ [-fpermissive]
 2005 | #define flecs_calloc(a, size) flecs_bcalloc(flecs_allocator_get(a, size))
      |                               ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                            |
      |                                            void*
../src/flecs/distr/flecs.h:2007:37: note: in expansion of macro ‘flecs_calloc’
 2007 | #define flecs_calloc_n(a, T, count) flecs_calloc(a, ECS_SIZEOF(T) * (count))
      |                                     ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:29457:24: note: in expansion of macro ‘flecs_calloc_n’
29457 |         map->buckets = flecs_calloc_n(map->allocator, ecs_bucket_t, count);
      |                        ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void ecs_map_init(ecs_map_t*, ecs_allocator_t*)’:
../src/flecs/distr/flecs.c:29530:55: error: taking address of rvalue [-fpermissive]
29530 |     ecs_map_init_w_params(result, &(ecs_map_params_t) {
      |                                                       ^
29531 |         .allocator = allocator
      |         ~~~~~~~~~~~~~~~~~~~~~~                         
29532 |     });
      |     ~                                                  
../src/flecs/distr/flecs.c: In function ‘uint64_t flecs_name_index_hash(const void*)’:
../src/flecs/distr/flecs.c:29786:38: error: invalid conversion from ‘const void*’ to ‘const ecs_hashed_string_t*’ [-fpermissive]
29786 |     const ecs_hashed_string_t *str = ptr;
      |                                      ^~~
      |                                      |
      |                                      const void*
../src/flecs/distr/flecs.c: In function ‘int flecs_name_index_compare(const void*, const void*)’:
../src/flecs/distr/flecs.c:29796:39: error: invalid conversion from ‘const void*’ to ‘const ecs_hashed_string_t*’ [-fpermissive]
29796 |     const ecs_hashed_string_t *str1 = ptr1;
      |                                       ^~~~
      |                                       |
      |                                       const void*
../src/flecs/distr/flecs.c:29797:39: error: invalid conversion from ‘const void*’ to ‘const ecs_hashed_string_t*’ [-fpermissive]
29797 |     const ecs_hashed_string_t *str2 = ptr2;
      |                                       ^~~~
      |                                       |
      |                                       const void*
../src/flecs/distr/flecs.c: In function ‘ecs_hashmap_t* flecs_name_index_new(ecs_world_t*, ecs_allocator_t*)’:
../src/flecs/distr/flecs.c:29837:42: error: invalid conversion from ‘void*’ to ‘ecs_hashmap_t*’ [-fpermissive]
29837 |     ecs_hashmap_t *result = flecs_bcalloc(&world->allocators.hashmap);
      |                             ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.c: In function ‘ecs_hashmap_t* flecs_name_index_copy(ecs_hashmap_t*)’:
../src/flecs/distr/flecs.c:29861:42: error: invalid conversion from ‘void*’ to ‘ecs_hashmap_t*’ [-fpermissive]
29861 |     ecs_hashmap_t *result = flecs_bcalloc(map->hashmap_allocator);
      |                             ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.c: In function ‘const uint64_t* flecs_name_index_find_ptr(const ecs_hashmap_t*, const char*, ecs_size_t, uint64_t)’:
../src/flecs/distr/flecs.c:29903:46: error: invalid conversion from ‘void*’ to ‘ecs_hashed_string_t*’ [-fpermissive]
29903 |     ecs_hashed_string_t *keys = ecs_vec_first(&b->keys);
      |                                 ~~~~~~~~~~~~~^~~~~~~~~~
      |                                              |
      |                                              void*
../src/flecs/distr/flecs.c: In function ‘void flecs_name_index_remove(ecs_hashmap_t*, uint64_t, uint64_t)’:
../src/flecs/distr/flecs.c:29947:34: error: invalid conversion from ‘void*’ to ‘uint64_t*’ {aka ‘long unsigned int*’} [-fpermissive]
29947 |     uint64_t *ids = ecs_vec_first(&b->values);
      |                     ~~~~~~~~~~~~~^~~~~~~~~~~~
      |                                  |
      |                                  void*
../src/flecs/distr/flecs.c: In function ‘void flecs_name_index_update_name(ecs_hashmap_t*, uint64_t, uint64_t, const char*)’:
../src/flecs/distr/flecs.c:29968:34: error: invalid conversion from ‘void*’ to ‘uint64_t*’ {aka ‘long unsigned int*’} [-fpermissive]
29968 |     uint64_t *ids = ecs_vec_first(&b->values);
      |                     ~~~~~~~~~~~~~^~~~~~~~~~~~
      |                                  |
      |                                  void*
../src/flecs/distr/flecs.c: In function ‘void flecs_name_index_ensure(ecs_hashmap_t*, uint64_t, const char*, ecs_size_t, uint64_t)’:
../src/flecs/distr/flecs.c:30010:1: error: jump to label ‘error’
30010 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:29994:5: note: in expansion of macro ‘ecs_check’
29994 |     ecs_check(name != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:30007:28: note:   crosses initialization of ‘flecs_hashmap_result_t hmr’
30007 |     flecs_hashmap_result_t hmr = flecs_hashmap_ensure(
      |                            ^~~
../src/flecs/distr/flecs.c:29998:14: note:   crosses initialization of ‘uint64_t existing’
29998 |     uint64_t existing = flecs_name_index_find(
      |              ^~~~~~~~
../src/flecs/distr/flecs.c:29996:25: note:   crosses initialization of ‘ecs_hashed_string_t key’
29996 |     ecs_hashed_string_t key = flecs_get_hashed_string(name, length, hash);
      |                         ^~~
../src/flecs/distr/flecs.c: In function ‘ecs_page_t* flecs_sparse_page_new(ecs_sparse_t*, int32_t)’:
../src/flecs/distr/flecs.c:30057:25: error: invalid conversion from ‘void*’ to ‘int32_t*’ {aka ‘int*’} [-fpermissive]
30057 |     result->sparse = ca ? flecs_bcalloc(ca)
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_stack_page_t* flecs_stack_page_new(uint32_t)’:
../src/flecs/distr/flecs.h:2607:47: error: invalid conversion from ‘void*’ to ‘ecs_stack_page_t*’ [-fpermissive]
 2607 | #define ecs_os_malloc(size) ecs_os_api.malloc_(size)
      |                             ~~~~~~~~~~~~~~~~~~^~~~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c:30746:32: note: in expansion of macro ‘ecs_os_malloc’
30746 |     ecs_stack_page_t *result = ecs_os_malloc(
      |                                ^~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_stack_cursor_t* flecs_stack_get_cursor(ecs_stack_t*)’:
../src/flecs/distr/flecs.h:1635:22: error: invalid conversion from ‘void*’ to ‘ecs_stack_cursor_t*’ [-fpermissive]
 1635 |     flecs_stack_alloc(stack, ECS_SIZEOF(T), ECS_ALIGNOF(T))
      |     ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                      |
      |                      void*
../src/flecs/distr/flecs.c:30824:34: note: in expansion of macro ‘flecs_stack_alloc_t’
30824 |     ecs_stack_cursor_t *result = flecs_stack_alloc_t(stack, ecs_stack_cursor_t);
      |                                  ^~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘char* ecs_strbuf_get(ecs_strbuf_t*)’:
../src/flecs/distr/flecs.h:2669:53: error: invalid conversion from ‘void*’ to ‘char*’ [-fpermissive]
 2669 | #define ecs_os_memdup_n(ptr, T, count) ecs_os_memdup(ptr, ECS_SIZEOF(T) * count)
      |                                        ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                     |
      |                                                     void*
../src/flecs/distr/flecs.c:31371:18: note: in expansion of macro ‘ecs_os_memdup_n’
31371 |         result = ecs_os_memdup_n(result, char, b->length + 1);
      |                  ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_switch_fini(ecs_switch_t*)’:
../src/flecs/distr/flecs.c:31605:45: error: invalid conversion from ‘void*’ to ‘ecs_switch_page_t*’ [-fpermissive]
31605 |     ecs_switch_page_t *pages = ecs_vec_first(&sw->pages);
      |                                ~~~~~~~~~~~~~^~~~~~~~~~~~
      |                                             |
      |                                             void*
../src/flecs/distr/flecs.c: In function ‘ecs_vec_t ecs_vec_copy(ecs_allocator_t*, const ecs_vec_t*, ecs_size_t)’:
../src/flecs/distr/flecs.c:31827:5: error: designator order for field ‘ecs_vec_t::array’ does not match declaration order in ‘ecs_vec_t’
31827 |     };
      |     ^
../src/flecs/distr/flecs.c: In function ‘ecs_vec_t ecs_vec_copy_shrink(ecs_allocator_t*, const ecs_vec_t*, ecs_size_t)’:
../src/flecs/distr/flecs.c:31852:5: error: designator order for field ‘ecs_vec_t::array’ does not match declaration order in ‘ecs_vec_t’
31852 |     };
      |     ^
../src/flecs/distr/flecs.c: At global scope:
../src/flecs/distr/flecs.c:32067:1: sorry, unimplemented: non-trivial designated initializers not supported
32067 | };
      | ^
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int32_t ecs_query_find_var(const ecs_query_t*, const char*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:32075:30: note: in expansion of macro ‘flecs_query_impl’
32075 |     ecs_query_impl_t *impl = flecs_query_impl(q);
      |                              ^~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘const char* ecs_query_var_name(const ecs_query_t*, int32_t)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:10810:11: note: in definition of macro ‘ecs_assert’
10810 |     if (!(condition)) {\
      |           ^~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:32097:29: note: in expansion of macro ‘flecs_query_impl’
32097 |         ecs_assert(var_id < flecs_query_impl(q)->var_count,
      |                             ^~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.h:713,
                 from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:32097:9: note: in expansion of macro ‘ecs_assert’
32097 |         ecs_assert(var_id < flecs_query_impl(q)->var_count,
      |         ^~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:32097:29: note: in expansion of macro ‘flecs_query_impl’
32097 |         ecs_assert(var_id < flecs_query_impl(q)->var_count,
      |                             ^~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:32099:16: note: in expansion of macro ‘flecs_query_impl’
32099 |         return flecs_query_impl(q)->vars[var_id].name;
      |                ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘bool ecs_query_var_is_entity(const ecs_query_t*, int32_t)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:32111:12: note: in expansion of macro ‘flecs_query_impl’
32111 |     return flecs_query_impl(q)->vars[var_id].kind == EcsVarEntity;
      |            ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_query_create_cache(ecs_query_impl_t*, ecs_query_desc_t*)’:
../src/flecs/distr/flecs.h:2001:42: error: invalid conversion from ‘void*’ to ‘int8_t*’ {aka ‘signed char*’} [-fpermissive]
 2001 | #define flecs_alloc(a, size) flecs_balloc(flecs_allocator_get(a, size))
      |                              ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.h:2003:36: note: in expansion of macro ‘flecs_alloc’
 2003 | #define flecs_alloc_n(a, T, count) flecs_alloc(a, ECS_SIZEOF(T) * (count))
      |                                    ^~~~~~~~~~~
../src/flecs/distr/flecs.c:32254:38: note: in expansion of macro ‘flecs_alloc_n’
32254 |             impl->cache->field_map = flecs_alloc_n(&impl->stage->allocator,
      |                                      ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_query_poly_fini(void*)’:
../src/flecs/distr/flecs.c:32331:22: error: invalid conversion from ‘void*’ to ‘ecs_query_impl_t*’ [-fpermissive]
32331 |     flecs_query_fini(ptr);
      |                      ^~~
      |                      |
      |                      void*
../src/flecs/distr/flecs.c:32268:23: note:   initializing argument 1 of ‘void flecs_query_fini(ecs_query_impl_t*)’
32268 |     ecs_query_impl_t *impl)
      |     ~~~~~~~~~~~~~~~~~~^~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void ecs_query_fini(ecs_query_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:32360:26: note: in expansion of macro ‘flecs_query_impl’
32360 |         flecs_query_fini(flecs_query_impl(q));
      |                          ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_query_t* ecs_query_init(ecs_world_t*, const ecs_query_desc_t*)’:
../src/flecs/distr/flecs.c:32370:45: error: invalid conversion from ‘void*’ to ‘ecs_query_impl_t*’ [-fpermissive]
32370 |     ecs_query_impl_t *result = flecs_bcalloc(&stage->allocators.query_impl);
      |                                ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                             |
      |                                             void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_query_count_t ecs_query_count(const ecs_query_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:32508:30: note: in expansion of macro ‘flecs_query_impl’
32508 |     ecs_query_impl_t *impl = flecs_query_impl(q);
      |                              ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘bool ecs_query_is_true(const ecs_query_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:32535:30: note: in expansion of macro ‘flecs_query_impl’
32535 |     ecs_query_impl_t *impl = flecs_query_impl(q);
      |                              ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int32_t ecs_query_match_count(const ecs_query_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:32549:30: note: in expansion of macro ‘flecs_query_impl’
32549 |     ecs_query_impl_t *impl = flecs_query_impl(q);
      |                              ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘const ecs_query_t* ecs_query_get_cache_query(const ecs_query_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:32560:30: note: in expansion of macro ‘flecs_query_impl’
32560 |     ecs_query_impl_t *impl = flecs_query_impl(q);
      |                              ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_query_plan_w_profile(const ecs_query_t*, const ecs_iter_t*, ecs_strbuf_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:32865:30: note: in expansion of macro ‘flecs_query_impl’
32865 |     ecs_query_impl_t *impl = flecs_query_impl(q);
      |                              ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘char* ecs_query_str(const ecs_query_t*)’:
../src/flecs/distr/flecs.c:33255:1: error: jump to label ‘error’
33255 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:33229:5: note: in expansion of macro ‘ecs_check’
33229 |     ecs_check(q != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:33234:16: note:   crosses initialization of ‘int32_t count’
33234 |     int32_t i, count = q->term_count;
      |                ^~~~~
../src/flecs/distr/flecs.c:33233:23: note:   crosses initialization of ‘const ecs_term_t* terms’
33233 |     const ecs_term_t *terms = q->terms;
      |                       ^~~~~
../src/flecs/distr/flecs.c:33232:18: note:   crosses initialization of ‘ecs_strbuf_t buf’
33232 |     ecs_strbuf_t buf = ECS_STRBUF_INIT;
      |                  ^~~
../src/flecs/distr/flecs.c:33230:18: note:   crosses initialization of ‘ecs_world_t* world’
33230 |     ecs_world_t *world = q->world;
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘int32_t flecs_query_pivot_term(const ecs_world_t*, const ecs_query_t*)’:
../src/flecs/distr/flecs.c:33304:1: error: jump to label ‘error’
33304 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:33264:5: note: in expansion of macro ‘ecs_check’
33264 |     ecs_check(query != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:33268:46: note:   crosses initialization of ‘int32_t self_pivot_term’
33268 |     int32_t pivot_term = -1, min_count = -1, self_pivot_term = -1;
      |                                              ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:33268:30: note:   crosses initialization of ‘int32_t min_count’
33268 |     int32_t pivot_term = -1, min_count = -1, self_pivot_term = -1;
      |                              ^~~~~~~~~
../src/flecs/distr/flecs.c:33268:13: note:   crosses initialization of ‘int32_t pivot_term’
33268 |     int32_t pivot_term = -1, min_count = -1, self_pivot_term = -1;
      |             ^~~~~~~~~~
../src/flecs/distr/flecs.c:33267:16: note:   crosses initialization of ‘int32_t term_count’
33267 |     int32_t i, term_count = query->term_count;
      |                ^~~~~~~~~~
../src/flecs/distr/flecs.c:33266:23: note:   crosses initialization of ‘const ecs_term_t* terms’
33266 |     const ecs_term_t *terms = query->terms;
      |                       ^~~~~
../src/flecs/distr/flecs.c:33304:1: error: jump to label ‘error’
33304 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:33263:5: note: in expansion of macro ‘ecs_check’
33263 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:33268:46: note:   crosses initialization of ‘int32_t self_pivot_term’
33268 |     int32_t pivot_term = -1, min_count = -1, self_pivot_term = -1;
      |                                              ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:33268:30: note:   crosses initialization of ‘int32_t min_count’
33268 |     int32_t pivot_term = -1, min_count = -1, self_pivot_term = -1;
      |                              ^~~~~~~~~
../src/flecs/distr/flecs.c:33268:13: note:   crosses initialization of ‘int32_t pivot_term’
33268 |     int32_t pivot_term = -1, min_count = -1, self_pivot_term = -1;
      |             ^~~~~~~~~~
../src/flecs/distr/flecs.c:33267:16: note:   crosses initialization of ‘int32_t term_count’
33267 |     int32_t i, term_count = query->term_count;
      |                ^~~~~~~~~~
../src/flecs/distr/flecs.c:33266:23: note:   crosses initialization of ‘const ecs_term_t* terms’
33266 |     const ecs_term_t *terms = query->terms;
      |                       ^~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_query_query_populate_terms(ecs_world_t*, ecs_stage_t*, ecs_query_t*, const ecs_query_desc_t*)’:
../src/flecs/distr/flecs.c:34794:13: error: expected primary-expression before ‘.’ token
34794 |             .pub.world = world,
      |             ^
../src/flecs/distr/flecs.c:34795:13: error: expected primary-expression before ‘.’ token
34795 |             .pub.name = desc->entity ? ecs_get_name(world, desc->entity) : NULL,
      |             ^
../src/flecs/distr/flecs.c:34796:13: error: expected primary-expression before ‘.’ token
34796 |             .pub.code = expr
      |             ^
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2001:63: note: in definition of macro ‘flecs_alloc’
 2001 | #define flecs_alloc(a, size) flecs_balloc(flecs_allocator_get(a, size))
      |                                                               ^
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:34802:14: note: in expansion of macro ‘flecs_query_impl’
34802 |             &flecs_query_impl(q)->stage->allocator, script.token_buffer_size);
      |              ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:34813:9: note: in expansion of macro ‘flecs_query_impl’
34813 |         flecs_query_impl(q)->tokens = script.token_buffer;
      |         ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:34814:9: note: in expansion of macro ‘flecs_query_impl’
34814 |         flecs_query_impl(q)->tokens_len =
      |         ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_query_populate_tokens(ecs_query_impl_t*)’:
../src/flecs/distr/flecs.h:2001:42: error: invalid conversion from ‘void*’ to ‘char*’ [-fpermissive]
 2001 | #define flecs_alloc(a, size) flecs_balloc(flecs_allocator_get(a, size))
      |                              ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.c:35046:24: note: in expansion of macro ‘flecs_alloc’
35046 |         impl->tokens = flecs_alloc(&impl->stage->allocator, len);
      |                        ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_query_finalize_query(ecs_world_t*, ecs_query_t*, const ecs_query_desc_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:35110:33: note: in expansion of macro ‘flecs_query_impl’
35110 |     flecs_query_populate_tokens(flecs_query_impl(q));
      |                                 ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:35113:1: error: jump to label ‘error’
35113 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:35082:5: note: in expansion of macro ‘ecs_check’
35082 |     ecs_check(desc->_canary == 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:35084:18: note:   crosses initialization of ‘ecs_stage_t* stage’
35084 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:35113:1: error: jump to label ‘error’
35113 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:35081:5: note: in expansion of macro ‘ecs_check’
35081 |     ecs_check(desc != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:35084:18: note:   crosses initialization of ‘ecs_stage_t* stage’
35084 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c:35113:1: error: jump to label ‘error’
35113 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:35080:5: note: in expansion of macro ‘ecs_check’
35080 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:35084:18: note:   crosses initialization of ‘ecs_stage_t* stage’
35084 |     ecs_stage_t *stage = flecs_stage_from_world(&world);
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_index_page_t* flecs_entity_index_ensure_page(ecs_entity_index_t*, uint32_t)’:
../src/flecs/distr/flecs.c:35133:41: error: invalid conversion from ‘void*’ to ‘ecs_entity_index_page_t*’ [-fpermissive]
35133 |         page = *page_ptr = flecs_bcalloc(&index->page_allocator);
      |                            ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
      |                                         |
      |                                         void*
../src/flecs/distr/flecs.c: In function ‘ecs_record_t* flecs_entity_index_ensure(ecs_entity_index_t*, uint64_t)’:
../src/flecs/distr/flecs.c:35261:34: error: invalid conversion from ‘void*’ to ‘uint64_t*’ {aka ‘long unsigned int*’} [-fpermissive]
35261 |     uint64_t *ids = ecs_vec_first(&index->dense);
      |                     ~~~~~~~~~~~~~^~~~~~~~~~~~~~~
      |                                  |
      |                                  void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_id_record_elem_t* flecs_id_record_elem(ecs_id_record_t*, ecs_id_record_elem_t*, ecs_id_record_t*)’:
../src/flecs/distr/flecs.h:3942:31: error: invalid conversion from ‘void*’ to ‘ecs_id_record_elem_t*’ [-fpermissive]
 3942 | #define ECS_OFFSET(o, offset) reinterpret_cast<void*>((reinterpret_cast<uintptr_t>(o)) + (static_cast<uintptr_t>(offset)))
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.c:35493:12: note: in expansion of macro ‘ECS_OFFSET’
35493 |     return ECS_OFFSET(idr, (uintptr_t)list - (uintptr_t)head);
      |            ^~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_id_record_init_sparse(ecs_world_t*, ecs_id_record_t*)’:
../src/flecs/distr/flecs.c:35610:36: error: invalid conversion from ‘void*’ to ‘ecs_sparse_t*’ [-fpermissive]
35610 |             flecs_sparse_init(idr->sparse, NULL, NULL, idr->type_info->size);
      |                               ~~~~~^~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.c:30265:19: note:   initializing argument 1 of ‘void flecs_sparse_init(ecs_sparse_t*, ecs_allocator_t*, ecs_block_allocator_t*, ecs_size_t)’
30265 |     ecs_sparse_t *result,
      |     ~~~~~~~~~~~~~~^~~~~~
../src/flecs/distr/flecs.c:35614:36: error: invalid conversion from ‘void*’ to ‘ecs_switch_t*’ [-fpermissive]
35614 |             flecs_switch_init(idr->sparse, &world->allocator);
      |                               ~~~~~^~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.c:31594:19: note:   initializing argument 1 of ‘void flecs_switch_init(ecs_switch_t*, ecs_allocator_t*)’
31594 |     ecs_switch_t* sw,
      |     ~~~~~~~~~~~~~~^~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_id_record_fini_sparse(ecs_world_t*, ecs_id_record_t*)’:
../src/flecs/distr/flecs.c:35626:48: error: invalid conversion from ‘void*’ to ‘const ecs_sparse_t*’ [-fpermissive]
35626 |             ecs_assert(flecs_sparse_count(idr->sparse) == 0,
      |                                           ~~~~~^~~~~~
      |                                                |
      |                                                void*
../src/flecs/distr/flecs.h:10810:11: note: in definition of macro ‘ecs_assert’
10810 |     if (!(condition)) {\
      |           ^~~~~~~~~
../src/flecs/distr/flecs.c:30664:25: note:   initializing argument 1 of ‘int32_t flecs_sparse_count(const ecs_sparse_t*)’
30664 |     const ecs_sparse_t *sparse)
      |     ~~~~~~~~~~~~~~~~~~~~^~~~~~
In file included from ../src/flecs/distr/flecs.h:713,
                 from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:35626:48: error: invalid conversion from ‘void*’ to ‘const ecs_sparse_t*’ [-fpermissive]
35626 |             ecs_assert(flecs_sparse_count(idr->sparse) == 0,
      |                                           ~~~~~^~~~~~
      |                                                |
      |                                                void*
../src/flecs/distr/flecs.c:35626:13: note: in expansion of macro ‘ecs_assert’
35626 |             ecs_assert(flecs_sparse_count(idr->sparse) == 0,
      |             ^~~~~~~~~~
../src/flecs/distr/flecs.c:30664:25: note:   initializing argument 1 of ‘int32_t flecs_sparse_count(const ecs_sparse_t*)’
30664 |     const ecs_sparse_t *sparse)
      |     ~~~~~~~~~~~~~~~~~~~~^~~~~~
../src/flecs/distr/flecs.c:35628:36: error: invalid conversion from ‘void*’ to ‘ecs_sparse_t*’ [-fpermissive]
35628 |             flecs_sparse_fini(idr->sparse);
      |                               ~~~~~^~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.c:30308:19: note:   initializing argument 1 of ‘void flecs_sparse_fini(ecs_sparse_t*)’
30308 |     ecs_sparse_t *sparse)
      |     ~~~~~~~~~~~~~~^~~~~~
../src/flecs/distr/flecs.c:35632:36: error: invalid conversion from ‘void*’ to ‘ecs_switch_t*’ [-fpermissive]
35632 |             flecs_switch_fini(idr->sparse);
      |                               ~~~~~^~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.c:31602:19: note:   initializing argument 1 of ‘void flecs_switch_fini(ecs_switch_t*)’
31602 |     ecs_switch_t* sw)
      |     ~~~~~~~~~~~~~~^~
../src/flecs/distr/flecs.c: In function ‘ecs_id_record_t* flecs_id_record_new(ecs_world_t*, ecs_id_t)’:
../src/flecs/distr/flecs.c:35665:28: error: invalid conversion from ‘void*’ to ‘ecs_id_record_t*’ [-fpermissive]
35665 |         idr = flecs_bcalloc(&world->allocators.id_record);
      |               ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                            |
      |                            void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_id_record_release_tables(ecs_world_t*, ecs_id_record_t*)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:36024:22: note: in expansion of macro ‘flecs_table_cache_next’
36024 |         while ((tr = flecs_table_cache_next(&it, ecs_table_record_t))) {
      |                      ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_fini_id_records(ecs_world_t*)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_id_record_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:36139:40: note: in expansion of macro ‘ecs_map_ptr’
36139 |         flecs_id_record_release(world, ecs_map_ptr(&it));
      |                                        ^~~~~~~~~~~
../src/flecs/distr/flecs.c:36005:22: note:   initializing argument 2 of ‘int32_t flecs_id_record_release(ecs_world_t*, ecs_id_record_t*)’
36005 |     ecs_id_record_t *idr)
      |     ~~~~~~~~~~~~~~~~~^~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_table_init_columns(ecs_world_t*, ecs_table_t*, int32_t)’:
../src/flecs/distr/flecs.h:2005:44: error: invalid conversion from ‘void*’ to ‘ecs_column_t*’ [-fpermissive]
 2005 | #define flecs_calloc(a, size) flecs_bcalloc(flecs_allocator_get(a, size))
      |                               ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                            |
      |                                            void*
../src/flecs/distr/flecs.h:2007:37: note: in expansion of macro ‘flecs_calloc’
 2007 | #define flecs_calloc_n(a, T, count) flecs_calloc(a, ECS_SIZEOF(T) * (count))
      |                                     ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:2911:5: note: in expansion of macro ‘flecs_calloc_n’
 2911 |     flecs_calloc_n(&world->allocator, T, count)
      |     ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:36351:29: note: in expansion of macro ‘flecs_wcalloc_n’
36351 |     ecs_column_t *columns = flecs_wcalloc_n(world, ecs_column_t, column_count);
      |                             ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_table_init_data(ecs_world_t*, ecs_table_t*)’:
../src/flecs/distr/flecs.h:2005:44: error: invalid conversion from ‘void*’ to ‘ecs_bitset_t*’ [-fpermissive]
 2005 | #define flecs_calloc(a, size) flecs_bcalloc(flecs_allocator_get(a, size))
      |                               ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                            |
      |                                            void*
../src/flecs/distr/flecs.h:2007:37: note: in expansion of macro ‘flecs_calloc’
 2007 | #define flecs_calloc_n(a, T, count) flecs_calloc(a, ECS_SIZEOF(T) * (count))
      |                                     ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:2911:5: note: in expansion of macro ‘flecs_calloc_n’
 2911 |     flecs_calloc_n(&world->allocator, T, count)
      |     ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:36408:28: note: in expansion of macro ‘flecs_wcalloc_n’
36408 |         meta->bs_columns = flecs_wcalloc_n(world, ecs_bitset_t, bs_count);
      |                            ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_table_emit(ecs_world_t*, ecs_table_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.c:36525:5: error: designator order for field ‘ecs_event_desc_t::event’ does not match declaration order in ‘ecs_event_desc_t’
36525 |     });
      |     ^
../src/flecs/distr/flecs.c:36519:53: error: taking address of rvalue [-fpermissive]
36519 |     flecs_emit(world, world, 0, &(ecs_event_desc_t) {
      |                                                     ^
36520 |         .ids = &table->type,
      |         ~~~~~~~~~~~~~~~~~~~~                         
36521 |         .event = event,
      |         ~~~~~~~~~~~~~~~                              
36522 |         .table = table,
      |         ~~~~~~~~~~~~~~~                              
36523 |         .flags = EcsEventTableOnly,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~                  
36524 |         .observable = world
      |         ~~~~~~~~~~~~~~~~~~~                          
36525 |     });
      |     ~                                                
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_table_init(ecs_world_t*, ecs_table_t*, ecs_table_t*)’:
../src/flecs/distr/flecs.h:2024:48: error: invalid conversion from ‘void*’ to ‘ecs_table_record_t*’ [-fpermissive]
 2024 | #define flecs_dup_n(a, T, count, ptr) flecs_dup(a, ECS_SIZEOF(T) * (count), ptr)
      |                                       ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                |
      |                                                void*
../src/flecs/distr/flecs.c:2923:5: note: in expansion of macro ‘flecs_dup_n’
 2923 |     flecs_dup_n(&world->allocator, T, count, ptr)
      |     ^~~~~~~~~~~
../src/flecs/distr/flecs.c:36738:34: note: in expansion of macro ‘flecs_wdup_n’
36738 |     ecs_table_record_t *dst_tr = flecs_wdup_n(world, ecs_table_record_t,
      |                                  ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:2005:44: error: invalid conversion from ‘void*’ to ‘int16_t*’ {aka ‘short int*’} [-fpermissive]
 2005 | #define flecs_calloc(a, size) flecs_bcalloc(flecs_allocator_get(a, size))
      |                               ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                            |
      |                                            void*
../src/flecs/distr/flecs.h:2007:37: note: in expansion of macro ‘flecs_calloc’
 2007 | #define flecs_calloc_n(a, T, count) flecs_calloc(a, ECS_SIZEOF(T) * (count))
      |                                     ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:2911:5: note: in expansion of macro ‘flecs_calloc_n’
 2911 |     flecs_calloc_n(&world->allocator, T, count)
      |     ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:36781:28: note: in expansion of macro ‘flecs_wcalloc_n’
36781 |     table->component_map = flecs_wcalloc_n(
      |                            ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2001:42: error: invalid conversion from ‘void*’ to ‘int16_t*’ {aka ‘short int*’} [-fpermissive]
 2001 | #define flecs_alloc(a, size) flecs_balloc(flecs_allocator_get(a, size))
      |                              ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.h:2003:36: note: in expansion of macro ‘flecs_alloc’
 2003 | #define flecs_alloc_n(a, T, count) flecs_alloc(a, ECS_SIZEOF(T) * (count))
      |                                    ^~~~~~~~~~~
../src/flecs/distr/flecs.c:2905:5: note: in expansion of macro ‘flecs_alloc_n’
 2905 |     flecs_alloc_n(&world->allocator, T, count)
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:36785:29: note: in expansion of macro ‘flecs_walloc_n’
36785 |         table->column_map = flecs_walloc_n(world, int16_t,
      |                             ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int32_t* flecs_table_get_dirty_state(ecs_world_t*, ecs_table_t*)’:
../src/flecs/distr/flecs.h:2001:42: error: invalid conversion from ‘void*’ to ‘int32_t*’ {aka ‘int*’} [-fpermissive]
 2001 | #define flecs_alloc(a, size) flecs_balloc(flecs_allocator_get(a, size))
      |                              ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.h:2003:36: note: in expansion of macro ‘flecs_alloc’
 2003 | #define flecs_alloc_n(a, T, count) flecs_alloc(a, ECS_SIZEOF(T) * (count))
      |                                    ^~~~~~~~~~~
../src/flecs/distr/flecs.c:37372:30: note: in expansion of macro ‘flecs_alloc_n’
37372 |         table->dirty_state = flecs_alloc_n(&world->allocator,
      |                              ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int32_t flecs_table_grow_data(ecs_world_t*, ecs_table_t*, int32_t, int32_t, const ecs_entity_t*)’:
../src/flecs/distr/flecs.c:37554:39: error: invalid conversion from ‘void*’ to ‘ecs_entity_t*’ {aka ‘long unsigned int*’} [-fpermissive]
37554 |     table->data.entities = v_entities.array;
      |                            ~~~~~~~~~~~^~~~~
      |                                       |
      |                                       void*
../src/flecs/distr/flecs.c: In function ‘int32_t flecs_table_append(ecs_world_t*, ecs_table_t*, ecs_entity_t, bool, bool)’:
../src/flecs/distr/flecs.c:37645:64: error: invalid conversion from ‘void*’ to ‘ecs_entity_t*’ {aka ‘long unsigned int*’} [-fpermissive]
37645 |     ecs_entity_t *entities = table->data.entities = v_entities.array;
      |                                                     ~~~~~~~~~~~^~~~~
      |                                                                |
      |                                                                void*
../src/flecs/distr/flecs.c: In function ‘bool flecs_table_shrink(ecs_world_t*, ecs_table_t*)’:
../src/flecs/distr/flecs.c:38050:39: error: invalid conversion from ‘void*’ to ‘ecs_entity_t*’ {aka ‘long unsigned int*’} [-fpermissive]
38050 |     table->data.entities = v_entities.array;
      |                            ~~~~~~~~~~~^~~~~
      |                                       |
      |                                       void*
../src/flecs/distr/flecs.c: In function ‘void flecs_table_merge_data(ecs_world_t*, ecs_table_t*, ecs_table_t*, int32_t, int32_t)’:
../src/flecs/distr/flecs.c:38336:45: error: invalid conversion from ‘void*’ to ‘ecs_entity_t*’ {aka ‘long unsigned int*’} [-fpermissive]
38336 |     dst_table->data.entities = dst_entities.array;
      |                                ~~~~~~~~~~~~~^~~~~
      |                                             |
      |                                             void*
../src/flecs/distr/flecs.c:38340:45: error: invalid conversion from ‘void*’ to ‘ecs_entity_t*’ {aka ‘long unsigned int*’} [-fpermissive]
38340 |     src_table->data.entities = src_entities.array;
      |                                ~~~~~~~~~~~~~^~~~~
      |                                             |
      |                                             void*
../src/flecs/distr/flecs.c: In function ‘int32_t ecs_table_get_type_index(const ecs_world_t*, const ecs_table_t*, ecs_id_t)’:
../src/flecs/distr/flecs.c:38515:1: error: jump to label ‘error’
38515 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:38493:5: note: in expansion of macro ‘ecs_check’
38493 |     ecs_check(table != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:38509:25: note:   crosses initialization of ‘ecs_table_record_t* tr’
38509 |     ecs_table_record_t *tr = flecs_id_record_get_table(idr, table);
      |                         ^~
../src/flecs/distr/flecs.c:38504:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
38504 |     ecs_id_record_t *idr = flecs_id_record_get(world, id);
      |                      ^~~
../src/flecs/distr/flecs.c: In function ‘int32_t ecs_table_get_column_index(const ecs_world_t*, const ecs_table_t*, ecs_id_t)’:
../src/flecs/distr/flecs.c:38547:1: error: jump to label ‘error’
38547 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:38526:5: note: in expansion of macro ‘ecs_check’
38526 |     ecs_check(ecs_id_is_valid(world, id), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:38541:25: note:   crosses initialization of ‘ecs_table_record_t* tr’
38541 |     ecs_table_record_t *tr = flecs_id_record_get_table(idr, table);
      |                         ^~
../src/flecs/distr/flecs.c:38536:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
38536 |     ecs_id_record_t *idr = flecs_id_record_get(world, id);
      |                      ^~~
../src/flecs/distr/flecs.c:38547:1: error: jump to label ‘error’
38547 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:38525:5: note: in expansion of macro ‘ecs_check’
38525 |     ecs_check(table != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:38541:25: note:   crosses initialization of ‘ecs_table_record_t* tr’
38541 |     ecs_table_record_t *tr = flecs_id_record_get_table(idr, table);
      |                         ^~
../src/flecs/distr/flecs.c:38536:22: note:   crosses initialization of ‘ecs_id_record_t* idr’
38536 |     ecs_id_record_t *idr = flecs_id_record_get(world, id);
      |                      ^~~
../src/flecs/distr/flecs.c: In function ‘int32_t ecs_table_type_to_column_index(const ecs_table_t*, int32_t)’:
../src/flecs/distr/flecs.c:38567:1: error: jump to label ‘error’
38567 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:38562:5: note: in expansion of macro ‘ecs_check’
38562 |     ecs_check(index < table->type.count, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:38563:14: note:   crosses initialization of ‘int16_t* column_map’
38563 |     int16_t *column_map = table->column_map;
      |              ^~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int32_t ecs_table_column_to_type_index(const ecs_table_t*, int32_t)’:
../src/flecs/distr/flecs.c:38579:1: error: jump to label ‘error’
38579 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:38576:5: note: in expansion of macro ‘ecs_check’
38576 |     ecs_check(table->column_map != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:38577:13: note:   crosses initialization of ‘int32_t offset’
38577 |     int32_t offset = table->type.count;
      |             ^~~~~~
../src/flecs/distr/flecs.c:38579:1: error: jump to label ‘error’
38579 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:38575:5: note: in expansion of macro ‘ecs_check’
38575 |     ecs_check(index < table->column_count, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:38577:13: note:   crosses initialization of ‘int32_t offset’
38577 |     int32_t offset = table->type.count;
      |             ^~~~~~
../src/flecs/distr/flecs.c: In function ‘void* ecs_table_get_column(const ecs_table_t*, int32_t, int32_t)’:
../src/flecs/distr/flecs.c:38598:1: error: jump to label ‘error’
38598 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:38589:5: note: in expansion of macro ‘ecs_check’
38589 |     ecs_check(index < table->column_count, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:38592:11: note:   crosses initialization of ‘void* result’
38592 |     void *result = column->data;
      |           ^~~~~~
../src/flecs/distr/flecs.c:38591:19: note:   crosses initialization of ‘ecs_column_t* column’
38591 |     ecs_column_t *column = &table->data.columns[index];
      |                   ^~~~~~
../src/flecs/distr/flecs.c:38598:1: error: jump to label ‘error’
38598 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:38588:5: note: in expansion of macro ‘ecs_check’
38588 |     ecs_check(table != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:38592:11: note:   crosses initialization of ‘void* result’
38592 |     void *result = column->data;
      |           ^~~~~~
../src/flecs/distr/flecs.c:38591:19: note:   crosses initialization of ‘ecs_column_t* column’
38591 |     ecs_column_t *column = &table->data.columns[index];
      |                   ^~~~~~
../src/flecs/distr/flecs.c: In function ‘void* ecs_table_get_id(const ecs_world_t*, const ecs_table_t*, ecs_id_t, int32_t)’:
../src/flecs/distr/flecs.c:38620:1: error: jump to label ‘error’
38620 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:38610:5: note: in expansion of macro ‘ecs_check’
38610 |     ecs_check(ecs_id_is_valid(world, id), ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:38614:13: note:   crosses initialization of ‘int32_t index’
38614 |     int32_t index = ecs_table_get_column_index(world, table, id);
      |             ^~~~~
../src/flecs/distr/flecs.c:38620:1: error: jump to label ‘error’
38620 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:38609:5: note: in expansion of macro ‘ecs_check’
38609 |     ecs_check(table != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:38614:13: note:   crosses initialization of ‘int32_t index’
38614 |     int32_t index = ecs_table_get_column_index(world, table, id);
      |             ^~~~~
../src/flecs/distr/flecs.c:38620:1: error: jump to label ‘error’
38620 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:38608:5: note: in expansion of macro ‘ecs_check’
38608 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:38614:13: note:   crosses initialization of ‘int32_t index’
38614 |     int32_t index = ecs_table_get_column_index(world, table, id);
      |             ^~~~~
../src/flecs/distr/flecs.c: In function ‘void* ecs_record_get_by_column(const ecs_record_t*, int32_t, size_t)’:
../src/flecs/distr/flecs.c:38716:1: error: jump to label ‘error’
38716 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:38708:5: note: in expansion of macro ‘ecs_check’
38708 |     ecs_check(index < table->column_count, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:38710:16: note:   crosses initialization of ‘ecs_size_t size’
38710 |     ecs_size_t size = column->ti->size;
      |                ^~~~
../src/flecs/distr/flecs.c:38709:19: note:   crosses initialization of ‘ecs_column_t* column’
38709 |     ecs_column_t *column = &table->data.columns[index];
      |                   ^~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_record_t* ecs_record_find(const ecs_world_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.c:38733:1: error: jump to label ‘error’
38733 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:38725:5: note: in expansion of macro ‘ecs_check’
38725 |     ecs_check(entity != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:38729:19: note:   crosses initialization of ‘ecs_record_t* r’
38729 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
../src/flecs/distr/flecs.c:38733:1: error: jump to label ‘error’
38733 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:38724:5: note: in expansion of macro ‘ecs_check’
38724 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:38729:19: note:   crosses initialization of ‘ecs_record_t* r’
38729 |     ecs_record_t *r = flecs_entities_get(world, entity);
      |                   ^
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void ecs_table_cache_replace(ecs_table_cache_t*, const ecs_table_t*, ecs_table_cache_hdr_t*)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_map_val_t*’ {aka ‘long unsigned int*’} to type ‘ecs_table_cache_hdr_t**’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:1850:34: note: in expansion of macro ‘ECS_CAST’
 1850 | #define ecs_map_get_ref(m, T, k) ECS_CAST(T**, ecs_map_get(m, k))
      |                                  ^~~~~~~~
../src/flecs/distr/flecs.c:38881:33: note: in expansion of macro ‘ecs_map_get_ref’
38881 |     ecs_table_cache_hdr_t **r = ecs_map_get_ref(
      |                                 ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘uint64_t flecs_type_hash(const void*)’:
../src/flecs/distr/flecs.c:39043:30: error: invalid conversion from ‘const void*’ to ‘const ecs_type_t*’ [-fpermissive]
39043 |     const ecs_type_t *type = ptr;
      |                              ^~~
      |                              |
      |                              const void*
../src/flecs/distr/flecs.c: In function ‘int flecs_type_compare(const void*, const void*)’:
../src/flecs/distr/flecs.c:39051:32: error: invalid conversion from ‘const void*’ to ‘const ecs_type_t*’ [-fpermissive]
39051 |     const ecs_type_t *type_1 = ptr_1;
      |                                ^~~~~
      |                                |
      |                                const void*
../src/flecs/distr/flecs.c:39052:32: error: invalid conversion from ‘const void*’ to ‘const ecs_type_t*’ [-fpermissive]
39052 |     const ecs_type_t *type_2 = ptr_2;
      |                                ^~~~~
      |                                |
      |                                const void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int flecs_type_new_with(ecs_world_t*, ecs_type_t*, const ecs_type_t*, ecs_id_t)’:
../src/flecs/distr/flecs.h:2001:42: error: invalid conversion from ‘void*’ to ‘ecs_id_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 2001 | #define flecs_alloc(a, size) flecs_balloc(flecs_allocator_get(a, size))
      |                              ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.h:2003:36: note: in expansion of macro ‘flecs_alloc’
 2003 | #define flecs_alloc_n(a, T, count) flecs_alloc(a, ECS_SIZEOF(T) * (count))
      |                                    ^~~~~~~~~~~
../src/flecs/distr/flecs.c:2905:5: note: in expansion of macro ‘flecs_alloc_n’
 2905 |     flecs_alloc_n(&world->allocator, T, count)
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:39162:27: note: in expansion of macro ‘flecs_walloc_n’
39162 |     ecs_id_t *dst_array = flecs_walloc_n(world, ecs_id_t, dst_count);
      |                           ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_type_new_filtered(ecs_world_t*, ecs_type_t*, const ecs_type_t*, ecs_id_t, int32_t)’:
../src/flecs/distr/flecs.h:2018:19: error: invalid conversion from ‘void*’ to ‘ecs_id_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 2018 |     flecs_brealloc(flecs_allocator_get(a, size_dst),\
      |     ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                   |
      |                   void*
 2019 |     flecs_allocator_get(a, size_src),\
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 2020 |     ptr)
      |     ~~~~           
../src/flecs/distr/flecs.h:2022:5: note: in expansion of macro ‘flecs_realloc’
 2022 |     flecs_realloc(a, ECS_SIZEOF(T) * (count_dst), ECS_SIZEOF(T) * (count_src), ptr)
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:2919:5: note: in expansion of macro ‘flecs_realloc_n’
 2919 |     flecs_realloc_n(&world->allocator, T, count_dst, count_src, ptr)
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:39208:22: note: in expansion of macro ‘flecs_wrealloc_n’
39208 |         dst->array = flecs_wrealloc_n(world, ecs_id_t, w, count, dst->array);
      |                      ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_type_new_without(ecs_world_t*, ecs_type_t*, const ecs_type_t*, ecs_id_t)’:
../src/flecs/distr/flecs.h:2001:42: error: invalid conversion from ‘void*’ to ‘ecs_id_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 2001 | #define flecs_alloc(a, size) flecs_balloc(flecs_allocator_get(a, size))
      |                              ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.h:2003:36: note: in expansion of macro ‘flecs_alloc’
 2003 | #define flecs_alloc_n(a, T, count) flecs_alloc(a, ECS_SIZEOF(T) * (count))
      |                                    ^~~~~~~~~~~
../src/flecs/distr/flecs.c:2905:5: note: in expansion of macro ‘flecs_alloc_n’
 2905 |     flecs_alloc_n(&world->allocator, T, count)
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:39253:27: note: in expansion of macro ‘flecs_walloc_n’
39253 |     ecs_id_t *dst_array = flecs_walloc_n(world, ecs_id_t, dst_count);
      |                           ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_type_t flecs_type_copy(ecs_world_t*, const ecs_type_t*)’:
../src/flecs/distr/flecs.h:2001:42: error: invalid conversion from ‘void*’ to ‘ecs_id_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 2001 | #define flecs_alloc(a, size) flecs_balloc(flecs_allocator_get(a, size))
      |                              ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.h:2003:36: note: in expansion of macro ‘flecs_alloc’
 2003 | #define flecs_alloc_n(a, T, count) flecs_alloc(a, ECS_SIZEOF(T) * (count))
      |                                    ^~~~~~~~~~~
../src/flecs/distr/flecs.c:2905:5: note: in expansion of macro ‘flecs_alloc_n’
 2905 |     flecs_alloc_n(&world->allocator, T, count)
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:39279:21: note: in expansion of macro ‘flecs_walloc_n’
39279 |     ecs_id_t *ids = flecs_walloc_n(world, ecs_id_t, src_count);
      |                     ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_table_diff_build_type(ecs_world_t*, ecs_vec_t*, ecs_type_t*, int32_t)’:
../src/flecs/distr/flecs.h:2024:48: error: invalid conversion from ‘void*’ to ‘ecs_id_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 2024 | #define flecs_dup_n(a, T, count, ptr) flecs_dup(a, ECS_SIZEOF(T) * (count), ptr)
      |                                       ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                |
      |                                                void*
../src/flecs/distr/flecs.c:2923:5: note: in expansion of macro ‘flecs_dup_n’
 2923 |     flecs_dup_n(&world->allocator, T, count, ptr)
      |     ^~~~~~~~~~~
../src/flecs/distr/flecs.c:39353:23: note: in expansion of macro ‘flecs_wdup_n’
39353 |         type->array = flecs_wdup_n(world, ecs_id_t, count,
      |                       ^~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_table_diff_build_noalloc(ecs_table_diff_builder_t*, ecs_table_diff_t*)’:
../src/flecs/distr/flecs.c:39380:33: error: invalid conversion from ‘void*’ to ‘ecs_id_t*’ {aka ‘long unsigned int*’} [-fpermissive]
39380 |         .array = builder->added.array, .count = builder->added.count };
      |                  ~~~~~~~~~~~~~~~^~~~~
      |                                 |
      |                                 void*
../src/flecs/distr/flecs.c:39382:35: error: invalid conversion from ‘void*’ to ‘ecs_id_t*’ {aka ‘long unsigned int*’} [-fpermissive]
39382 |         .array = builder->removed.array, .count = builder->removed.count };
      |                  ~~~~~~~~~~~~~~~~~^~~~~
      |                                   |
      |                                   void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_graph_edge_t* flecs_table_ensure_hi_edge(ecs_world_t*, ecs_graph_edges_t*, ecs_id_t)’:
../src/flecs/distr/flecs.h:2001:42: error: invalid conversion from ‘void*’ to ‘ecs_map_t*’ [-fpermissive]
 2001 | #define flecs_alloc(a, size) flecs_balloc(flecs_allocator_get(a, size))
      |                              ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.h:2002:29: note: in expansion of macro ‘flecs_alloc’
 2002 | #define flecs_alloc_t(a, T) flecs_alloc(a, ECS_SIZEOF(T))
      |                             ^~~~~~~~~~~
../src/flecs/distr/flecs.c:39431:21: note: in expansion of macro ‘flecs_alloc_t’
39431 |         edges->hi = flecs_alloc_t(&world->allocator, ecs_map_t);
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_map_val_t*’ {aka ‘long unsigned int*’} to type ‘ecs_graph_edge_t**’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:1852:37: note: in expansion of macro ‘ECS_CAST’
 1852 | #define ecs_map_ensure_ref(m, T, k) ECS_CAST(T**, ecs_map_ensure(m, k))
      |                                     ^~~~~~~~
../src/flecs/distr/flecs.c:39435:28: note: in expansion of macro ‘ecs_map_ensure_ref’
39435 |     ecs_graph_edge_t **r = ecs_map_ensure_ref(edges->hi, ecs_graph_edge_t, id);
      |                            ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:39444:29: error: invalid conversion from ‘void*’ to ‘ecs_graph_edge_t*’ [-fpermissive]
39444 |         edge = flecs_bcalloc(&world->allocators.graph_edge);
      |                ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                             |
      |                             void*
../src/flecs/distr/flecs.c: In function ‘ecs_graph_edge_t* flecs_table_ensure_edge(ecs_world_t*, ecs_graph_edges_t*, ecs_id_t)’:
../src/flecs/distr/flecs.c:39461:38: error: invalid conversion from ‘void*’ to ‘ecs_graph_edge_t*’ [-fpermissive]
39461 |             edges->lo = flecs_bcalloc(&world->allocators.graph_edge_lo);
      |                         ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                      |
      |                                      void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_table_t* flecs_table_new(ecs_world_t*, ecs_type_t*, flecs_hashmap_result_t, ecs_table_t*)’:
../src/flecs/distr/flecs.h:2005:44: error: invalid conversion from ‘void*’ to ‘ecs_table__t*’ [-fpermissive]
 2005 | #define flecs_calloc(a, size) flecs_bcalloc(flecs_allocator_get(a, size))
      |                               ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                            |
      |                                            void*
../src/flecs/distr/flecs.h:2006:30: note: in expansion of macro ‘flecs_calloc’
 2006 | #define flecs_calloc_t(a, T) flecs_calloc(a, ECS_SIZEOF(T))
      |                              ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:39578:17: note: in expansion of macro ‘flecs_calloc_t’
39578 |     result->_ = flecs_calloc_t(&world->allocator, ecs_table__t);
      |                 ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_compute_table_diff(ecs_world_t*, ecs_table_t*, ecs_table_t*, ecs_graph_edge_t*, ecs_id_t)’:
../src/flecs/distr/flecs.c:39707:55: error: invalid conversion from ‘void*’ to ‘ecs_table_diff_t*’ [-fpermissive]
39707 |                 ecs_table_diff_t *diff = flecs_bcalloc(
      |                                          ~~~~~~~~~~~~~^
      |                                                       |
      |                                                       void*
39708 |                     &world->allocators.table_diff);
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:2024:48: error: invalid conversion from ‘void*’ to ‘ecs_id_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 2024 | #define flecs_dup_n(a, T, count, ptr) flecs_dup(a, ECS_SIZEOF(T) * (count), ptr)
      |                                       ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                |
      |                                                void*
../src/flecs/distr/flecs.c:2923:5: note: in expansion of macro ‘flecs_dup_n’
 2923 |     flecs_dup_n(&world->allocator, T, count, ptr)
      |     ^~~~~~~~~~~
../src/flecs/distr/flecs.c:39710:37: note: in expansion of macro ‘flecs_wdup_n’
39710 |                 diff->added.array = flecs_wdup_n(world, ecs_id_t, 1, &id);
      |                                     ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:39800:43: error: invalid conversion from ‘void*’ to ‘ecs_table_diff_t*’ [-fpermissive]
39800 |     ecs_table_diff_t *diff = flecs_bcalloc(&world->allocators.table_diff);
      |                              ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                           |
      |                                           void*
../src/flecs/distr/flecs.c: In function ‘ecs_table_t* flecs_table_traverse_remove(ecs_world_t*, ecs_table_t*, ecs_id_t*, ecs_table_diff_t*)’:
../src/flecs/distr/flecs.c:40135:1: error: jump to label ‘error’
40135 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:40112:5: note: in expansion of macro ‘ecs_check’
40112 |     ecs_check(id_ptr[0] != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:40116:18: note:   crosses initialization of ‘ecs_table_t* to’
40116 |     ecs_table_t *to = edge->to;
      |                  ^~
../src/flecs/distr/flecs.c:40115:23: note:   crosses initialization of ‘ecs_graph_edge_t* edge’
40115 |     ecs_graph_edge_t *edge = flecs_table_ensure_edge(world, &node->node.remove, id);
      |                       ^~~~
../src/flecs/distr/flecs.c:40114:14: note:   crosses initialization of ‘ecs_id_t id’
40114 |     ecs_id_t id = id_ptr[0];
      |              ^~
../src/flecs/distr/flecs.c:40135:1: error: jump to label ‘error’
40135 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:40111:5: note: in expansion of macro ‘ecs_check’
40111 |     ecs_check(id_ptr != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:40116:18: note:   crosses initialization of ‘ecs_table_t* to’
40116 |     ecs_table_t *to = edge->to;
      |                  ^~
../src/flecs/distr/flecs.c:40115:23: note:   crosses initialization of ‘ecs_graph_edge_t* edge’
40115 |     ecs_graph_edge_t *edge = flecs_table_ensure_edge(world, &node->node.remove, id);
      |                       ^~~~
../src/flecs/distr/flecs.c:40114:14: note:   crosses initialization of ‘ecs_id_t id’
40114 |     ecs_id_t id = id_ptr[0];
      |              ^~
../src/flecs/distr/flecs.c: In function ‘ecs_table_t* flecs_table_traverse_add(ecs_world_t*, ecs_table_t*, ecs_id_t*, ecs_table_diff_t*)’:
../src/flecs/distr/flecs.c:40180:1: error: jump to label ‘error’
40180 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:40152:5: note: in expansion of macro ‘ecs_check’
40152 |     ecs_check(id_ptr[0] != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:40156:18: note:   crosses initialization of ‘ecs_table_t* to’
40156 |     ecs_table_t *to = edge->to;
      |                  ^~
../src/flecs/distr/flecs.c:40155:23: note:   crosses initialization of ‘ecs_graph_edge_t* edge’
40155 |     ecs_graph_edge_t *edge = flecs_table_ensure_edge(world, &node->node.add, id);
      |                       ^~~~
../src/flecs/distr/flecs.c:40154:14: note:   crosses initialization of ‘ecs_id_t id’
40154 |     ecs_id_t id = id_ptr[0];
      |              ^~
../src/flecs/distr/flecs.c:40180:1: error: jump to label ‘error’
40180 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:40151:5: note: in expansion of macro ‘ecs_check’
40151 |     ecs_check(id_ptr != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:40156:18: note:   crosses initialization of ‘ecs_table_t* to’
40156 |     ecs_table_t *to = edge->to;
      |                  ^~
../src/flecs/distr/flecs.c:40155:23: note:   crosses initialization of ‘ecs_graph_edge_t* edge’
40155 |     ecs_graph_edge_t *edge = flecs_table_ensure_edge(world, &node->node.add, id);
      |                       ^~~~
../src/flecs/distr/flecs.c:40154:14: note:   crosses initialization of ‘ecs_id_t id’
40154 |     ecs_id_t id = id_ptr[0];
      |              ^~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_init_root_table(ecs_world_t*)’:
../src/flecs/distr/flecs.h:2005:44: error: invalid conversion from ‘void*’ to ‘ecs_table__t*’ [-fpermissive]
 2005 | #define flecs_calloc(a, size) flecs_bcalloc(flecs_allocator_get(a, size))
      |                               ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                            |
      |                                            void*
../src/flecs/distr/flecs.h:2006:30: note: in expansion of macro ‘flecs_calloc’
 2006 | #define flecs_calloc_t(a, T) flecs_calloc(a, ECS_SIZEOF(T))
      |                              ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:40198:27: note: in expansion of macro ‘flecs_calloc_t’
40198 |     world->store.root._ = flecs_calloc_t(&world->allocator, ecs_table__t);
      |                           ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_table_edges_add_flags(ecs_world_t*, ecs_table_t*, ecs_id_t, ecs_flags32_t)’:
../src/flecs/distr/flecs.c:40224:51: error: invalid conversion from ‘void*’ to ‘ecs_table_diff_t*’ [-fpermissive]
40224 |                         edge->diff = flecs_bcalloc(&world->allocators.table_diff);
      |                                      ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                   |
      |                                                   void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:2001:42: error: invalid conversion from ‘void*’ to ‘ecs_id_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 2001 | #define flecs_alloc(a, size) flecs_balloc(flecs_allocator_get(a, size))
      |                              ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.h:2002:29: note: in expansion of macro ‘flecs_alloc’
 2002 | #define flecs_alloc_t(a, T) flecs_alloc(a, ECS_SIZEOF(T))
      |                             ^~~~~~~~~~~
../src/flecs/distr/flecs.c:2903:5: note: in expansion of macro ‘flecs_alloc_t’
 2903 |     flecs_alloc_t(&world->allocator, T)
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:40225:51: note: in expansion of macro ‘flecs_walloc_t’
40225 |                         edge->diff->added.array = flecs_walloc_t(world, ecs_id_t);
      |                                                   ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_graph_edge_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:40242:42: note: in expansion of macro ‘ecs_map_ptr’
40242 |                 ecs_graph_edge_t *edge = ecs_map_ptr(&it);
      |                                          ^~~~~~~~~~~
../src/flecs/distr/flecs.c:40244:47: error: invalid conversion from ‘void*’ to ‘ecs_table_diff_t*’ [-fpermissive]
40244 |                     edge->diff = flecs_bcalloc(&world->allocators.table_diff);
      |                                  ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                               |
      |                                               void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:2001:42: error: invalid conversion from ‘void*’ to ‘ecs_id_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 2001 | #define flecs_alloc(a, size) flecs_balloc(flecs_allocator_get(a, size))
      |                              ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.h:2002:29: note: in expansion of macro ‘flecs_alloc’
 2002 | #define flecs_alloc_t(a, T) flecs_alloc(a, ECS_SIZEOF(T))
      |                             ^~~~~~~~~~~
../src/flecs/distr/flecs.c:2903:5: note: in expansion of macro ‘flecs_alloc_t’
 2903 |     flecs_alloc_t(&world->allocator, T)
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:40245:49: note: in expansion of macro ‘flecs_walloc_t’
40245 |                     edge->diff->removed.array = flecs_walloc_t(world, ecs_id_t);
      |                                                 ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_table_clear_edges(ecs_world_t*, ecs_table_t*)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_graph_edge_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:40275:62: note: in expansion of macro ‘ecs_map_ptr’
40275 |         flecs_table_disconnect_edge(world, ecs_map_key(&it), ecs_map_ptr(&it));
      |                                                              ^~~~~~~~~~~
../src/flecs/distr/flecs.c:39475:23: note:   initializing argument 3 of ‘void flecs_table_disconnect_edge(ecs_world_t*, ecs_id_t, ecs_graph_edge_t*)’
39475 |     ecs_graph_edge_t *edge)
      |     ~~~~~~~~~~~~~~~~~~^~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_graph_edge_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:40280:62: note: in expansion of macro ‘ecs_map_ptr’
40280 |         flecs_table_disconnect_edge(world, ecs_map_key(&it), ecs_map_ptr(&it));
      |                                                              ^~~~~~~~~~~
../src/flecs/distr/flecs.c:39475:23: note:   initializing argument 3 of ‘void flecs_table_disconnect_edge(ecs_world_t*, ecs_id_t, ecs_graph_edge_t*)’
39475 |     ecs_graph_edge_t *edge)
      |     ~~~~~~~~~~~~~~~~~~^~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t flecs_json_ensure_entity(ecs_world_t*, const char*, ecs_map_t*)’:
../src/flecs/distr/flecs.c:40808:35: error: taking address of rvalue [-fpermissive]
40808 |             e = ecs_entity(world, { .name = name });
      |                                   ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘const char* flecs_entity_from_json(ecs_world_t*, ecs_entity_t, const char*, const ecs_from_json_desc_t*, ecs_from_json_ctx_t*)’:
../src/flecs/distr/flecs.c:41311:38: error: invalid conversion from ‘void*’ to ‘ecs_id_t*’ {aka ‘long unsigned int*’} [-fpermissive]
41311 |         ecs_id_t *ids = ecs_vec_first(&ctx->table_type);
      |                         ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
      |                                      |
      |                                      void*
../src/flecs/distr/flecs.c:41316:26: error: invalid conversion from ‘void*’ to ‘const ecs_id_t*’ {aka ‘const long unsigned int*’} [-fpermissive]
41316 |             ecs_vec_first(&ctx->table_type), ecs_vec_count(&ctx->table_type));
      |             ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
      |                          |
      |                          void*
../src/flecs/distr/flecs.c:40347:21: note:   initializing argument 2 of ‘ecs_table_t* ecs_table_find(ecs_world_t*, const ecs_id_t*, int32_t)’
40347 |     const ecs_id_t *ids,
      |     ~~~~~~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c:41349:43: error: invalid conversion from ‘void*’ to ‘ecs_id_t*’ {aka ‘long unsigned int*’} [-fpermissive]
41349 |                     .array = ecs_vec_first(&ctx->remove_ids),
      |                              ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
      |                                           |
      |                                           void*
../src/flecs/distr/flecs.c:41361:1: error: jump to label ‘end’
41361 | end:
      | ^~~
../src/flecs/distr/flecs.c:41284:18: note:   from here
41284 |             goto end;
      |                  ^~~
../src/flecs/distr/flecs.c:41309:18: note:   crosses initialization of ‘ecs_table_t* table’
41309 |     ecs_table_t *table = r ? r->table : NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41308:19: note:   crosses initialization of ‘ecs_record_t* r’
41308 |     ecs_record_t *r = flecs_entities_get(world, e);
      |                   ^
../src/flecs/distr/flecs.c:41361:1: error: jump to label ‘end’
41361 | end:
      | ^~~
../src/flecs/distr/flecs.c:41264:18: note:   from here
41264 |             goto end;
      |                  ^~~
../src/flecs/distr/flecs.c:41309:18: note:   crosses initialization of ‘ecs_table_t* table’
41309 |     ecs_table_t *table = r ? r->table : NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41308:19: note:   crosses initialization of ‘ecs_record_t* r’
41308 |     ecs_record_t *r = flecs_entities_get(world, e);
      |                   ^
../src/flecs/distr/flecs.c:41361:1: error: jump to label ‘end’
41361 | end:
      | ^~~
../src/flecs/distr/flecs.c:41252:18: note:   from here
41252 |             goto end;
      |                  ^~~
../src/flecs/distr/flecs.c:41309:18: note:   crosses initialization of ‘ecs_table_t* table’
41309 |     ecs_table_t *table = r ? r->table : NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41308:19: note:   crosses initialization of ‘ecs_record_t* r’
41308 |     ecs_record_t *r = flecs_entities_get(world, e);
      |                   ^
../src/flecs/distr/flecs.c:41361:1: error: jump to label ‘end’
41361 | end:
      | ^~~
../src/flecs/distr/flecs.c:41232:18: note:   from here
41232 |             goto end;
      |                  ^~~
../src/flecs/distr/flecs.c:41309:18: note:   crosses initialization of ‘ecs_table_t* table’
41309 |     ecs_table_t *table = r ? r->table : NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41308:19: note:   crosses initialization of ‘ecs_record_t* r’
41308 |     ecs_record_t *r = flecs_entities_get(world, e);
      |                   ^
../src/flecs/distr/flecs.c:41361:1: error: jump to label ‘end’
41361 | end:
      | ^~~
../src/flecs/distr/flecs.c:41201:18: note:   from here
41201 |             goto end;
      |                  ^~~
../src/flecs/distr/flecs.c:41309:18: note:   crosses initialization of ‘ecs_table_t* table’
41309 |     ecs_table_t *table = r ? r->table : NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41308:19: note:   crosses initialization of ‘ecs_record_t* r’
41308 |     ecs_record_t *r = flecs_entities_get(world, e);
      |                   ^
../src/flecs/distr/flecs.c:41361:1: error: jump to label ‘end’
41361 | end:
      | ^~~
../src/flecs/distr/flecs.c:41172:18: note:   from here
41172 |             goto end;
      |                  ^~~
../src/flecs/distr/flecs.c:41309:18: note:   crosses initialization of ‘ecs_table_t* table’
41309 |     ecs_table_t *table = r ? r->table : NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41308:19: note:   crosses initialization of ‘ecs_record_t* r’
41308 |     ecs_record_t *r = flecs_entities_get(world, e);
      |                   ^
../src/flecs/distr/flecs.c:41361:1: error: jump to label ‘end’
41361 | end:
      | ^~~
../src/flecs/distr/flecs.c:41141:14: note:   from here
41141 |         goto end;
      |              ^~~
../src/flecs/distr/flecs.c:41309:18: note:   crosses initialization of ‘ecs_table_t* table’
41309 |     ecs_table_t *table = r ? r->table : NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41308:19: note:   crosses initialization of ‘ecs_record_t* r’
41308 |     ecs_record_t *r = flecs_entities_get(world, e);
      |                   ^
../src/flecs/distr/flecs.c:41363:1: error: jump to label ‘error’
41363 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:41305:14: note:   from here
41305 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:41309:18: note:   crosses initialization of ‘ecs_table_t* table’
41309 |     ecs_table_t *table = r ? r->table : NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41308:19: note:   crosses initialization of ‘ecs_record_t* r’
41308 |     ecs_record_t *r = flecs_entities_get(world, e);
      |                   ^
../src/flecs/distr/flecs.c:41363:1: error: jump to label ‘error’
41363 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:41299:18: note:   from here
41299 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41309:18: note:   crosses initialization of ‘ecs_table_t* table’
41309 |     ecs_table_t *table = r ? r->table : NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41308:19: note:   crosses initialization of ‘ecs_record_t* r’
41308 |     ecs_record_t *r = flecs_entities_get(world, e);
      |                   ^
../src/flecs/distr/flecs.c:41363:1: error: jump to label ‘error’
41363 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:41279:18: note:   from here
41279 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41309:18: note:   crosses initialization of ‘ecs_table_t* table’
41309 |     ecs_table_t *table = r ? r->table : NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41308:19: note:   crosses initialization of ‘ecs_record_t* r’
41308 |     ecs_record_t *r = flecs_entities_get(world, e);
      |                   ^
../src/flecs/distr/flecs.c:41363:1: error: jump to label ‘error’
41363 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:41259:18: note:   from here
41259 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41309:18: note:   crosses initialization of ‘ecs_table_t* table’
41309 |     ecs_table_t *table = r ? r->table : NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41308:19: note:   crosses initialization of ‘ecs_record_t* r’
41308 |     ecs_record_t *r = flecs_entities_get(world, e);
      |                   ^
../src/flecs/distr/flecs.c:41363:1: error: jump to label ‘error’
41363 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:41244:18: note:   from here
41244 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41309:18: note:   crosses initialization of ‘ecs_table_t* table’
41309 |     ecs_table_t *table = r ? r->table : NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41308:19: note:   crosses initialization of ‘ecs_record_t* r’
41308 |     ecs_record_t *r = flecs_entities_get(world, e);
      |                   ^
../src/flecs/distr/flecs.c:41363:1: error: jump to label ‘error’
41363 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:41208:18: note:   from here
41208 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41309:18: note:   crosses initialization of ‘ecs_table_t* table’
41309 |     ecs_table_t *table = r ? r->table : NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41308:19: note:   crosses initialization of ‘ecs_record_t* r’
41308 |     ecs_record_t *r = flecs_entities_get(world, e);
      |                   ^
../src/flecs/distr/flecs.c:41363:1: error: jump to label ‘error’
41363 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:41198:18: note:   from here
41198 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41309:18: note:   crosses initialization of ‘ecs_table_t* table’
41309 |     ecs_table_t *table = r ? r->table : NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41308:19: note:   crosses initialization of ‘ecs_record_t* r’
41308 |     ecs_record_t *r = flecs_entities_get(world, e);
      |                   ^
../src/flecs/distr/flecs.c:41363:1: error: jump to label ‘error’
41363 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:41180:18: note:   from here
41180 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41309:18: note:   crosses initialization of ‘ecs_table_t* table’
41309 |     ecs_table_t *table = r ? r->table : NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41308:19: note:   crosses initialization of ‘ecs_record_t* r’
41308 |     ecs_record_t *r = flecs_entities_get(world, e);
      |                   ^
../src/flecs/distr/flecs.c:41363:1: error: jump to label ‘error’
41363 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:41169:18: note:   from here
41169 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41309:18: note:   crosses initialization of ‘ecs_table_t* table’
41309 |     ecs_table_t *table = r ? r->table : NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41308:19: note:   crosses initialization of ‘ecs_record_t* r’
41308 |     ecs_record_t *r = flecs_entities_get(world, e);
      |                   ^
../src/flecs/distr/flecs.c:41363:1: error: jump to label ‘error’
41363 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:41153:18: note:   from here
41153 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41309:18: note:   crosses initialization of ‘ecs_table_t* table’
41309 |     ecs_table_t *table = r ? r->table : NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41308:19: note:   crosses initialization of ‘ecs_record_t* r’
41308 |     ecs_record_t *r = flecs_entities_get(world, e);
      |                   ^
../src/flecs/distr/flecs.c:41363:1: error: jump to label ‘error’
41363 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:41146:14: note:   from here
41146 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:41309:18: note:   crosses initialization of ‘ecs_table_t* table’
41309 |     ecs_table_t *table = r ? r->table : NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41308:19: note:   crosses initialization of ‘ecs_record_t* r’
41308 |     ecs_record_t *r = flecs_entities_get(world, e);
      |                   ^
../src/flecs/distr/flecs.c:41363:1: error: jump to label ‘error’
41363 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:41136:14: note:   from here
41136 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:41309:18: note:   crosses initialization of ‘ecs_table_t* table’
41309 |     ecs_table_t *table = r ? r->table : NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41308:19: note:   crosses initialization of ‘ecs_record_t* r’
41308 |     ecs_record_t *r = flecs_entities_get(world, e);
      |                   ^
../src/flecs/distr/flecs.c:41363:1: error: jump to label ‘error’
41363 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:41131:14: note:   from here
41131 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:41309:18: note:   crosses initialization of ‘ecs_table_t* table’
41309 |     ecs_table_t *table = r ? r->table : NULL;
      |                  ^~~~~
../src/flecs/distr/flecs.c:41308:19: note:   crosses initialization of ‘ecs_record_t* r’
41308 |     ecs_record_t *r = flecs_entities_get(world, e);
      |                   ^
../src/flecs/distr/flecs.c: In function ‘const char* ecs_ptr_from_json(const ecs_world_t*, ecs_entity_t, void*, const char*, const ecs_from_json_desc_t*)’:
../src/flecs/distr/flecs.c:41506:35: error: invalid conversion from ‘int’ to ‘ecs_json_token_t’ [-fpermissive]
41506 |     ecs_json_token_t token_kind = 0;
      |                                   ^
      |                                   |
      |                                   int
../src/flecs/distr/flecs.c: In function ‘const char* flecs_json_expect(const char*, ecs_json_token_t, char*, const ecs_from_json_desc_t*)’:
../src/flecs/distr/flecs.c:41849:29: error: invalid conversion from ‘int’ to ‘ecs_json_token_t’ [-fpermissive]
41849 |     ecs_json_token_t kind = 0;
      |                             ^
      |                             |
      |                             int
../src/flecs/distr/flecs.c: In function ‘const char* flecs_json_expect_string(const char*, char*, char**, const ecs_from_json_desc_t*)’:
../src/flecs/distr/flecs.c:41878:35: error: invalid conversion from ‘int’ to ‘ecs_json_token_t’ [-fpermissive]
41878 |     ecs_json_token_t token_kind = 0;
      |                                   ^
      |                                   |
      |                                   int
../src/flecs/distr/flecs.c: In function ‘const char* flecs_json_skip_object(const char*, char*, const ecs_from_json_desc_t*)’:
../src/flecs/distr/flecs.c:41994:35: error: invalid conversion from ‘int’ to ‘ecs_json_token_t’ [-fpermissive]
41994 |     ecs_json_token_t token_kind = 0;
      |                                   ^
      |                                   |
      |                                   int
../src/flecs/distr/flecs.c: In function ‘const char* flecs_json_skip_array(const char*, char*, const ecs_from_json_desc_t*)’:
../src/flecs/distr/flecs.c:42025:35: error: invalid conversion from ‘int’ to ‘ecs_json_token_t’ [-fpermissive]
42025 |     ecs_json_token_t token_kind = 0;
      |                                   ^
      |                                   |
      |                                   int
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_json_string_escape(ecs_strbuf_t*, const char*)’:
../src/flecs/distr/flecs.h:2607:47: error: invalid conversion from ‘void*’ to ‘char*’ [-fpermissive]
 2607 | #define ecs_os_malloc(size) ecs_os_api.malloc_(size)
      |                             ~~~~~~~~~~~~~~~~~~^~~~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c:42141:21: note: in expansion of macro ‘ecs_os_malloc’
42141 |         char *out = ecs_os_malloc(length + 3);
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_primitive_kind_t flecs_json_op_to_primitive_kind(ecs_meta_type_op_kind_t)’:
../src/flecs/distr/flecs.c:42343:17: error: invalid conversion from ‘int’ to ‘ecs_primitive_kind_t’ [-fpermissive]
42343 |     return kind - EcsOpPrimitive;
      |            ~~~~~^~~~~~~~~~~~~~~~
      |                 |
      |                 int
../src/flecs/distr/flecs.c: In function ‘int ecs_entity_to_json_buf(const ecs_world_t*, ecs_entity_t, ecs_strbuf_t*, const ecs_entity_to_json_desc_t*)’:
../src/flecs/distr/flecs.c:42442:5: error: designator order for field ‘ecs_iter_t::entities’ does not match declaration order in ‘ecs_iter_t’
42442 |     };
      |     ^
../src/flecs/distr/flecs.c:42457:5: error: designator order for field ‘ecs_iter_to_json_desc_t::serialize_entity_ids’ does not match declaration order in ‘ecs_iter_to_json_desc_t’
42457 |     };
      |     ^
../src/flecs/distr/flecs.c: In function ‘void flecs_json_serialize_type_info(const ecs_world_t*, const ecs_iter_t*, ecs_strbuf_t*)’:
../src/flecs/distr/flecs.c:42633:22: error: expected unqualified-id before ‘typeid’
42633 |         ecs_entity_t typeid = 0;
      |                      ^~~~~~
../src/flecs/distr/flecs.c:42635:20: error: expected ‘(’ before ‘=’ token
42635 |             typeid = ecs_get_typeid(world, it->query->terms[i].id);
      |                    ^
      |                    (
../src/flecs/distr/flecs.c:42635:20: error: expected primary-expression before ‘=’ token
../src/flecs/distr/flecs.c:42635:67: error: expected ‘)’ before ‘;’ token
42635 |             typeid = ecs_get_typeid(world, it->query->terms[i].id);
      |                    ~                                              ^
      |                                                                   )
../src/flecs/distr/flecs.c:42637:19: error: expected ‘(’ before ‘)’ token
42637 |         if (typeid) {
      |                   ^
      |                   (
../src/flecs/distr/flecs.c:42637:19: error: expected primary-expression before ‘)’ token
../src/flecs/distr/flecs.c:42637:20: error: expected ‘)’ before ‘{’ token
42637 |         if (typeid) {
      |            ~       ^~
      |                    )
../src/flecs/distr/flecs.c:42645:5: error: expected primary-expression before ‘}’ token
42645 |     }
      |     ^
../src/flecs/distr/flecs.c: In function ‘void flecs_json_serialize_query_plan(const ecs_world_t*, ecs_strbuf_t*, const ecs_iter_to_json_desc_t*)’:
../src/flecs/distr/flecs.c:42706:34: error: invalid conversion from ‘ecs_poly_t*’ {aka ‘void*’} to ‘const ecs_query_t*’ [-fpermissive]
42706 |     const ecs_query_t *q = desc->query;
      |                            ~~~~~~^~~~~
      |                                  |
      |                                  ecs_poly_t* {aka void*}
../src/flecs/distr/flecs.c: In function ‘void flecs_json_serialize_query_profile(const ecs_world_t*, ecs_strbuf_t*, const ecs_iter_t*, const ecs_iter_to_json_desc_t*)’:
../src/flecs/distr/flecs.c:42777:54: error: invalid conversion from ‘ecs_poly_t*’ {aka ‘void*’} to ‘const ecs_query_t*’ [-fpermissive]
42777 |         ecs_iter_t qit = ecs_query_iter(world, desc->query);
      |                                                ~~~~~~^~~~~
      |                                                      |
      |                                                      ecs_poly_t* {aka void*}
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:7887:24: note:   initializing argument 2 of ‘ecs_iter_t ecs_query_iter(const ecs_world_t*, const ecs_query_t*)’
 7887 |     const ecs_query_t *query);
      |     ~~~~~~~~~~~~~~~~~~~^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int flecs_json_serialize_matches(const ecs_world_t*, ecs_strbuf_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:43022:26: note: in expansion of macro ‘flecs_table_cache_next’
43022 |             while ((tr = flecs_table_cache_next(&it, ecs_table_record_t))) {
      |                          ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:43024:56: error: invalid conversion from ‘void*’ to ‘EcsPoly*’ [-fpermissive]
43024 |                 EcsPoly *queries = ecs_table_get_column(table, tr->column, 0);
      |                                    ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
      |                                                        |
      |                                                        void*
../src/flecs/distr/flecs.c:43029:49: error: invalid conversion from ‘ecs_poly_t*’ {aka ‘void*’} to ‘ecs_query_t*’ [-fpermissive]
43029 |                     ecs_query_t *q = queries[i].poly;
      |                                      ~~~~~~~~~~~^~~~
      |                                                 |
      |                                                 ecs_poly_t* {aka void*}
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int flecs_json_serialize_refs_idr(const ecs_world_t*, ecs_strbuf_t*, ecs_id_record_t*)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:43078:22: note: in expansion of macro ‘flecs_table_cache_next’
43078 |         while ((tr = flecs_table_cache_next(&it, ecs_table_record_t))) {
      |                      ^~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int flecs_json_serialize_children_alerts(const ecs_world_t*, ecs_strbuf_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.c:43177:69: error: taking address of rvalue [-fpermissive]
43177 |     ecs_query_t *q = ecs_query(ECS_CONST_CAST(ecs_world_t*, world), {
      |                                                                     ^
43178 |         .terms = {{ .id = ecs_pair(EcsChildOf, entity) }}
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
43179 |     });
      |     ~                                                                
../src/flecs/distr/flecs.h:9700:47: note: in definition of macro ‘ecs_query’
 9700 |     ecs_query_init(world, &(ecs_query_desc_t) __VA_ARGS__ )
      |                                               ^~~~~~~~~~~
../src/flecs/distr/flecs.c:43183:51: error: invalid conversion from ‘void*’ to ‘EcsAlertsActive*’ [-fpermissive]
43183 |         EcsAlertsActive *alerts = ecs_table_get_id(
      |                                   ~~~~~~~~~~~~~~~~^
      |                                                   |
      |                                                   void*
43184 |             world, it.table, ecs_id(EcsAlertsActive), it.offset);
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_json_serialize_iter_result(const ecs_world_t*, const ecs_iter_t*, ecs_strbuf_t*, const ecs_iter_to_json_desc_t*, ecs_json_ser_ctx_t*)’:
../src/flecs/distr/flecs.c:43388:51: error: invalid conversion from ‘void*’ to ‘const EcsIdentifier*’ [-fpermissive]
43388 |                 this_data.names = ecs_table_get_id(it->world, it->table,
      |                                   ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
      |                                                   |
      |                                                   void*
43389 |                     ecs_pair_t(EcsIdentifier, EcsName), it->offset);
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:43395:51: error: invalid conversion from ‘void*’ to ‘const EcsDocDescription*’ [-fpermissive]
43395 |                 this_data.label = ecs_table_get_id(it->world, it->table,
      |                                   ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
      |                                                   |
      |                                                   void*
43396 |                     ecs_pair_t(EcsDocDescription, EcsName), it->offset);
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:43397:51: error: invalid conversion from ‘void*’ to ‘const EcsDocDescription*’ [-fpermissive]
43397 |                 this_data.brief = ecs_table_get_id(it->world, it->table,
      |                                   ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
      |                                                   |
      |                                                   void*
43398 |                     ecs_pair_t(EcsDocDescription, EcsDocBrief), it->offset);
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:43399:52: error: invalid conversion from ‘void*’ to ‘const EcsDocDescription*’ [-fpermissive]
43399 |                 this_data.detail = ecs_table_get_id(it->world, it->table,
      |                                    ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
      |                                                    |
      |                                                    void*
43400 |                     ecs_pair_t(EcsDocDescription, EcsDocDetail), it->offset);
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:43401:51: error: invalid conversion from ‘void*’ to ‘const EcsDocDescription*’ [-fpermissive]
43401 |                 this_data.color = ecs_table_get_id(it->world, it->table,
      |                                   ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
      |                                                   |
      |                                                   void*
43402 |                     ecs_pair_t(EcsDocDescription, EcsDocColor), it->offset);
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:43403:50: error: invalid conversion from ‘void*’ to ‘const EcsDocDescription*’ [-fpermissive]
43403 |                 this_data.link = ecs_table_get_id(it->world, it->table,
      |                                  ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
      |                                                  |
      |                                                  void*
43404 |                     ecs_pair_t(EcsDocDescription, EcsDocLink), it->offset);
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_json_serialize_table_components(const ecs_world_t*, ecs_table_t*, ecs_strbuf_t*, ecs_json_value_ser_ctx_t*, const ecs_iter_to_json_desc_t*, int32_t, int32_t*)’:
../src/flecs/distr/flecs.c:44017:45: error: invalid conversion from ‘void*’ to ‘const ecs_sparse_t*’ [-fpermissive]
44017 |             ptr = flecs_sparse_get_any(idr->sparse, 0, e);
      |                                        ~~~~~^~~~~~
      |                                             |
      |                                             void*
../src/flecs/distr/flecs.c:30638:25: note:   initializing argument 1 of ‘void* flecs_sparse_get_any(const ecs_sparse_t*, ecs_size_t, uint64_t)’
30638 |     const ecs_sparse_t *sparse,
      |     ~~~~~~~~~~~~~~~~~~~~^~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_json_ser_enum(const ecs_world_t*, ecs_meta_type_op_t*, const void*, ecs_strbuf_t*)’:
../src/flecs/distr/flecs.c:44989:1: error: jump to label ‘error’
44989 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:44967:5: note: in expansion of macro ‘ecs_check’
44967 |     ecs_check(enum_type != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:44973:26: note:   crosses initialization of ‘ecs_enum_constant_t* constant’
44973 |     ecs_enum_constant_t *constant = ecs_map_get_deref(&enum_type->constants,
      |                          ^~~~~~~~
../src/flecs/distr/flecs.c:44969:13: note:   crosses initialization of ‘int32_t value’
44969 |     int32_t value = *(const int32_t*)base;
      |             ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int flecs_json_ser_bitmask(const ecs_world_t*, ecs_meta_type_op_t*, const void*, ecs_strbuf_t*)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_bitmask_constant_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:45016:44: note: in expansion of macro ‘ecs_map_ptr’
45016 |         ecs_bitmask_constant_t *constant = ecs_map_ptr(&it);
      |                                            ^~~~~~~~~~~
../src/flecs/distr/flecs.c:45037:1: error: jump to label ‘error’
45037 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:45002:5: note: in expansion of macro ‘ecs_check’
45002 |     ecs_check(bitmask_type != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:45014:20: note:   crosses initialization of ‘ecs_map_iter_t it’
45014 |     ecs_map_iter_t it = ecs_map_iter(&bitmask_type->constants);
      |                    ^~
../src/flecs/distr/flecs.c:45004:14: note:   crosses initialization of ‘uint32_t value’
45004 |     uint32_t value = *(const uint32_t*)ptr;
      |              ^~~~~
../src/flecs/distr/flecs.c: In function ‘int json_ser_vector(const ecs_world_t*, ecs_meta_type_op_t*, const void*, ecs_strbuf_t*)’:
../src/flecs/distr/flecs.c:45117:30: error: invalid conversion from ‘const void*’ to ‘const ecs_vec_t*’ [-fpermissive]
45117 |     const ecs_vec_t *value = base;
      |                              ^~~~
      |                              |
      |                              const void*
../src/flecs/distr/flecs.c: In function ‘int json_ser_custom_value(const ecs_serializer_t*, ecs_entity_t, const void*)’:
../src/flecs/distr/flecs.c:45140:44: error: invalid conversion from ‘void*’ to ‘json_serializer_ctx_t*’ [-fpermissive]
45140 |     json_serializer_ctx_t *json_ser = ser->ctx;
      |                                       ~~~~~^~~
      |                                            |
      |                                            void*
../src/flecs/distr/flecs.c: In function ‘int json_ser_custom_member(const ecs_serializer_t*, const char*)’:
../src/flecs/distr/flecs.c:45152:44: error: invalid conversion from ‘void*’ to ‘json_serializer_ctx_t*’ [-fpermissive]
45152 |     json_serializer_ctx_t *json_ser = ser->ctx;
      |                                       ~~~~~^~~
      |                                            |
      |                                            void*
../src/flecs/distr/flecs.c: In function ‘int json_ser_custom_type(const ecs_world_t*, ecs_meta_type_op_t*, const void*, ecs_strbuf_t*)’:
../src/flecs/distr/flecs.c:45200:5: error: designator order for field ‘json_serializer_ctx_t::is_collection’ does not match declaration order in ‘json_serializer_ctx_t’
45200 |     };
      |     ^
../src/flecs/distr/flecs.c:45207:5: error: ‘ecs_serializer_t’ has no non-static data member named ‘value’
45207 |     };
      |     ^
../src/flecs/distr/flecs.c: In function ‘int ecs_world_to_json_buf(ecs_world_t*, ecs_strbuf_t*, const ecs_world_to_json_desc_t*)’:
../src/flecs/distr/flecs.c:45576:5: error: designator order for field ‘ecs_iter_to_json_desc_t::serialize_full_paths’ does not match declaration order in ‘ecs_iter_to_json_desc_t’
45576 |     };
      |     ^
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int flecs_expr_ser_primitive(const ecs_world_t*, ecs_primitive_kind_t, const void*, ecs_strbuf_t*, bool)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const void*’ to type ‘const char**’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:45714:30: note: in expansion of macro ‘ECS_CONST_CAST’
45714 |         const char *value = *ECS_CONST_CAST(const char**, base);
      |                              ^~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:2607:47: error: invalid conversion from ‘void*’ to ‘char*’ [-fpermissive]
 2607 | #define ecs_os_malloc(size) ecs_os_api.malloc_(size)
      |                             ~~~~~~~~~~~~~~~~~~^~~~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c:45725:33: note: in expansion of macro ‘ecs_os_malloc’
45725 |                     char *out = ecs_os_malloc(length + 3);
      |                                 ^~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_primitive_init(ecs_world_t*, const ecs_primitive_desc_t*)’:
../src/flecs/distr/flecs.c:45777:37: error: taking address of rvalue [-fpermissive]
45777 |     ecs_set(world, t, EcsPrimitive, { desc->kind });
      |                                     ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_enum_init(ecs_world_t*, const ecs_enum_desc_t*)’:
../src/flecs/distr/flecs.c:45806:44: error: taking address of rvalue [-fpermissive]
45806 |         ecs_entity_t c = ecs_entity(world, {
      |                                            ^
45807 |             .name = m_desc->name
      |             ~~~~~~~~~~~~~~~~~~~~            
45808 |         });
      |         ~                                   
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:45814:17: error: taking address of rvalue [-fpermissive]
45814 |                 {m_desc->value});
      |                 ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9798:34: note: in definition of macro ‘ecs_set_pair_second’
 9798 |         sizeof(Second), &(Second)__VA_ARGS__)
      |                                  ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_bitmask_init(ecs_world_t*, const ecs_bitmask_desc_t*)’:
../src/flecs/distr/flecs.c:45853:44: error: taking address of rvalue [-fpermissive]
45853 |         ecs_entity_t c = ecs_entity(world, {
      |                                            ^
45854 |             .name = m_desc->name
      |             ~~~~~~~~~~~~~~~~~~~~            
45855 |         });
      |         ~                                   
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:45861:17: error: taking address of rvalue [-fpermissive]
45861 |                 {m_desc->value});
      |                 ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9798:34: note: in definition of macro ‘ecs_set_pair_second’
 9798 |         sizeof(Second), &(Second)__VA_ARGS__)
      |                                  ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_array_init(ecs_world_t*, const ecs_array_desc_t*)’:
../src/flecs/distr/flecs.c:45889:33: error: taking address of rvalue [-fpermissive]
45889 |     ecs_set(world, t, EcsArray, {
      |                                 ^
45890 |         .type = desc->type,
      |         ~~~~~~~~~~~~~~~~~~~      
45891 |         .count = desc->count
      |         ~~~~~~~~~~~~~~~~~~~~     
45892 |     });
      |     ~                            
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_vector_init(ecs_world_t*, const ecs_vector_desc_t*)’:
../src/flecs/distr/flecs.c:45911:34: error: taking address of rvalue [-fpermissive]
45911 |     ecs_set(world, t, EcsVector, {
      |                                  ^
45912 |         .type = desc->type
      |         ~~~~~~~~~~~~~~~~~~        
45913 |     });
      |     ~                             
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_struct_init(ecs_world_t*, const ecs_struct_desc_t*)’:
../src/flecs/distr/flecs.c:45969:44: error: taking address of rvalue [-fpermissive]
45969 |         ecs_entity_t m = ecs_entity(world, {
      |                                            ^
45970 |             .name = m_desc->name
      |             ~~~~~~~~~~~~~~~~~~~~            
45971 |         });
      |         ~                                   
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:45979:9: error: designator order for field ‘EcsMember::unit’ does not match declaration order in ‘EcsMember’
45979 |         });
      |         ^
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:45973:38: error: taking address of rvalue [-fpermissive]
45973 |         ecs_set(world, m, EcsMember, {
      |                                      ^
45974 |             .type = m_desc->type,
      |             ~~~~~~~~~~~~~~~~~~~~~     
45975 |             .count = m_desc->count,
      |             ~~~~~~~~~~~~~~~~~~~~~~~   
45976 |             .offset = m_desc->offset,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~ 
45977 |             .unit = m_desc->unit,
      |             ~~~~~~~~~~~~~~~~~~~~~     
45978 |             .use_offset = m_desc->use_offset
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45979 |         });
      |         ~                             
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_unit_init(ecs_world_t*, const ecs_unit_desc_t*)’:
../src/flecs/distr/flecs.c:46145:1: error: jump to label ‘error’
46145 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:46122:18: note:   from here
46122 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:46130:14: note:   crosses initialization of ‘EcsUnit* value’
46130 |     EcsUnit *value = ecs_ensure(world, t, EcsUnit);
      |              ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_unit_prefix_init(ecs_world_t*, const ecs_unit_prefix_desc_t*)’:
../src/flecs/distr/flecs.c:46165:38: error: taking address of rvalue [-fpermissive]
46165 |     ecs_set(world, t, EcsUnitPrefix, {
      |                                      ^
46166 |         .symbol = ECS_CONST_CAST(char*, desc->symbol),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
46167 |         .translation = desc->translation
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
46168 |     });
      |     ~                                 
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘const char* meta_parse_member(const char*, meta_member_t*, meta_parse_ctx_t*)’:
../src/flecs/distr/flecs.c:46570:1: error: jump to label ‘error’
46570 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:46513:14: note:   from here
46513 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:46530:11: note:   crosses initialization of ‘char* array_start’
46530 |     char *array_start = strchr(token->name, '[');
      |           ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t meta_lookup_array(ecs_world_t*, ecs_entity_t, const char*, meta_parse_ctx_t*)’:
../src/flecs/distr/flecs.c:46682:33: error: taking address of rvalue [-fpermissive]
46682 |     ecs_set(world, e, EcsArray, { element_type, (int32_t)params.count });
      |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:46685:1: error: jump to label ‘error’
46685 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:46666:14: note:   from here
46666 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:46669:18: note:   crosses initialization of ‘ecs_entity_t element_type’
46669 |     ecs_entity_t element_type = ecs_lookup_symbol(
      |                  ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:46685:1: error: jump to label ‘error’
46685 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:46661:14: note:   from here
46661 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:46669:18: note:   crosses initialization of ‘ecs_entity_t element_type’
46669 |     ecs_entity_t element_type = ecs_lookup_symbol(
      |                  ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:46685:1: error: jump to label ‘error’
46685 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:46657:14: note:   from here
46657 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:46669:18: note:   crosses initialization of ‘ecs_entity_t element_type’
46669 |     ecs_entity_t element_type = ecs_lookup_symbol(
      |                  ^~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t meta_lookup_vector(ecs_world_t*, ecs_entity_t, const char*, meta_parse_ctx_t*)’:
../src/flecs/distr/flecs.c:46719:34: error: taking address of rvalue [-fpermissive]
46719 |     ecs_set(world, e, EcsVector, { element_type });
      |                                  ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:46722:1: error: jump to label ‘error’
46722 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:46709:14: note:   from here
46709 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:46712:18: note:   crosses initialization of ‘ecs_entity_t element_type’
46712 |     ecs_entity_t element_type = meta_lookup(
      |                  ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:46722:1: error: jump to label ‘error’
46722 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:46703:14: note:   from here
46703 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:46712:18: note:   crosses initialization of ‘ecs_entity_t element_type’
46712 |     ecs_entity_t element_type = meta_lookup(
      |                  ^~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t meta_lookup_bitmask(ecs_world_t*, ecs_entity_t, const char*, meta_parse_ctx_t*)’:
../src/flecs/distr/flecs.c:46769:1: error: jump to label ‘error’
46769 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:46759:5: note: in expansion of macro ‘ecs_check’
46759 |     ecs_check(bitmask_type != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:46763:20: note:   crosses initialization of ‘const EcsType* type_ptr’
46763 |     const EcsType *type_ptr = ecs_get(world, bitmask_type, EcsType);
      |                    ^~~~~~~~
../src/flecs/distr/flecs.c:46769:1: error: jump to label ‘error’
46769 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:46754:14: note:   from here
46754 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:46763:20: note:   crosses initialization of ‘const EcsType* type_ptr’
46763 |     const EcsType *type_ptr = ecs_get(world, bitmask_type, EcsType);
      |                    ^~~~~~~~
../src/flecs/distr/flecs.c:46757:18: note:   crosses initialization of ‘ecs_entity_t bitmask_type’
46757 |     ecs_entity_t bitmask_type = meta_lookup(
      |                  ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:46769:1: error: jump to label ‘error’
46769 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:46748:14: note:   from here
46748 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:46763:20: note:   crosses initialization of ‘const EcsType* type_ptr’
46763 |     const EcsType *type_ptr = ecs_get(world, bitmask_type, EcsType);
      |                    ^~~~~~~~
../src/flecs/distr/flecs.c:46757:18: note:   crosses initialization of ‘ecs_entity_t bitmask_type’
46757 |     ecs_entity_t bitmask_type = meta_lookup(
      |                  ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:46769:1: error: jump to label ‘error’
46769 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:46742:14: note:   from here
46742 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:46763:20: note:   crosses initialization of ‘const EcsType* type_ptr’
46763 |     const EcsType *type_ptr = ecs_get(world, bitmask_type, EcsType);
      |                    ^~~~~~~~
../src/flecs/distr/flecs.c:46757:18: note:   crosses initialization of ‘ecs_entity_t bitmask_type’
46757 |     ecs_entity_t bitmask_type = meta_lookup(
      |                  ^~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t meta_lookup(ecs_world_t*, meta_type_t*, const char*, int64_t, meta_parse_ctx_t*)’:
../src/flecs/distr/flecs.c:46786:17: error: expected unqualified-id before ‘typename’
46786 |     const char *typename = token->type;
      |                 ^~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46791:14: note: in expansion of macro ‘ecs_os_strcmp’
46791 |         if (!ecs_os_strcmp(typename, "ecs_array")) {
      |              ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46791:14: note: in expansion of macro ‘ecs_os_strcmp’
46791 |         if (!ecs_os_strcmp(typename, "ecs_array")) {
      |              ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46794:21: note: in expansion of macro ‘ecs_os_strcmp’
46794 |         } else if (!ecs_os_strcmp(typename, "ecs_vector") ||
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46794:21: note: in expansion of macro ‘ecs_os_strcmp’
46794 |         } else if (!ecs_os_strcmp(typename, "ecs_vector") ||
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46795:18: note: in expansion of macro ‘ecs_os_strcmp’
46795 |                 !ecs_os_strcmp(typename, "flecs::vector"))
      |                  ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46795:18: note: in expansion of macro ‘ecs_os_strcmp’
46795 |                 !ecs_os_strcmp(typename, "flecs::vector"))
      |                  ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46799:21: note: in expansion of macro ‘ecs_os_strcmp’
46799 |         } else if (!ecs_os_strcmp(typename, "flecs::bitmask")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46799:21: note: in expansion of macro ‘ecs_os_strcmp’
46799 |         } else if (!ecs_os_strcmp(typename, "flecs::bitmask")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46802:21: note: in expansion of macro ‘ecs_os_strcmp’
46802 |         } else if (!ecs_os_strcmp(typename, "flecs::byte")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46802:21: note: in expansion of macro ‘ecs_os_strcmp’
46802 |         } else if (!ecs_os_strcmp(typename, "flecs::byte")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46805:21: note: in expansion of macro ‘ecs_os_strcmp’
46805 |         } else if (!ecs_os_strcmp(typename, "char")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46805:21: note: in expansion of macro ‘ecs_os_strcmp’
46805 |         } else if (!ecs_os_strcmp(typename, "char")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46808:21: note: in expansion of macro ‘ecs_os_strcmp’
46808 |         } else if (!ecs_os_strcmp(typename, "bool") ||
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46808:21: note: in expansion of macro ‘ecs_os_strcmp’
46808 |         } else if (!ecs_os_strcmp(typename, "bool") ||
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46809:18: note: in expansion of macro ‘ecs_os_strcmp’
46809 |                 !ecs_os_strcmp(typename, "_Bool"))
      |                  ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46809:18: note: in expansion of macro ‘ecs_os_strcmp’
46809 |                 !ecs_os_strcmp(typename, "_Bool"))
      |                  ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46813:21: note: in expansion of macro ‘ecs_os_strcmp’
46813 |         } else if (!ecs_os_strcmp(typename, "int8_t")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46813:21: note: in expansion of macro ‘ecs_os_strcmp’
46813 |         } else if (!ecs_os_strcmp(typename, "int8_t")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46815:21: note: in expansion of macro ‘ecs_os_strcmp’
46815 |         } else if (!ecs_os_strcmp(typename, "int16_t")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46815:21: note: in expansion of macro ‘ecs_os_strcmp’
46815 |         } else if (!ecs_os_strcmp(typename, "int16_t")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46817:21: note: in expansion of macro ‘ecs_os_strcmp’
46817 |         } else if (!ecs_os_strcmp(typename, "int32_t")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46817:21: note: in expansion of macro ‘ecs_os_strcmp’
46817 |         } else if (!ecs_os_strcmp(typename, "int32_t")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46819:21: note: in expansion of macro ‘ecs_os_strcmp’
46819 |         } else if (!ecs_os_strcmp(typename, "int64_t")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46819:21: note: in expansion of macro ‘ecs_os_strcmp’
46819 |         } else if (!ecs_os_strcmp(typename, "int64_t")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46822:21: note: in expansion of macro ‘ecs_os_strcmp’
46822 |         } else if (!ecs_os_strcmp(typename, "uint8_t")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46822:21: note: in expansion of macro ‘ecs_os_strcmp’
46822 |         } else if (!ecs_os_strcmp(typename, "uint8_t")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46824:21: note: in expansion of macro ‘ecs_os_strcmp’
46824 |         } else if (!ecs_os_strcmp(typename, "uint16_t")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46824:21: note: in expansion of macro ‘ecs_os_strcmp’
46824 |         } else if (!ecs_os_strcmp(typename, "uint16_t")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46826:21: note: in expansion of macro ‘ecs_os_strcmp’
46826 |         } else if (!ecs_os_strcmp(typename, "uint32_t")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46826:21: note: in expansion of macro ‘ecs_os_strcmp’
46826 |         } else if (!ecs_os_strcmp(typename, "uint32_t")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46828:21: note: in expansion of macro ‘ecs_os_strcmp’
46828 |         } else if (!ecs_os_strcmp(typename, "uint64_t")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46828:21: note: in expansion of macro ‘ecs_os_strcmp’
46828 |         } else if (!ecs_os_strcmp(typename, "uint64_t")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46831:21: note: in expansion of macro ‘ecs_os_strcmp’
46831 |         } else if (!ecs_os_strcmp(typename, "float")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46831:21: note: in expansion of macro ‘ecs_os_strcmp’
46831 |         } else if (!ecs_os_strcmp(typename, "float")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46833:21: note: in expansion of macro ‘ecs_os_strcmp’
46833 |         } else if (!ecs_os_strcmp(typename, "double")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46833:21: note: in expansion of macro ‘ecs_os_strcmp’
46833 |         } else if (!ecs_os_strcmp(typename, "double")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46836:21: note: in expansion of macro ‘ecs_os_strcmp’
46836 |         } else if (!ecs_os_strcmp(typename, "ecs_entity_t")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46836:21: note: in expansion of macro ‘ecs_os_strcmp’
46836 |         } else if (!ecs_os_strcmp(typename, "ecs_entity_t")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46839:21: note: in expansion of macro ‘ecs_os_strcmp’
46839 |         } else if (!ecs_os_strcmp(typename, "ecs_id_t")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46839:21: note: in expansion of macro ‘ecs_os_strcmp’
46839 |         } else if (!ecs_os_strcmp(typename, "ecs_id_t")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46842:21: note: in expansion of macro ‘ecs_os_strcmp’
46842 |         } else if (!ecs_os_strcmp(typename, "char*")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46842:21: note: in expansion of macro ‘ecs_os_strcmp’
46842 |         } else if (!ecs_os_strcmp(typename, "char*")) {
      |                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:46845:53: error: expected nested-name-specifier before ‘,’ token
46845 |             type = ecs_lookup_symbol(world, typename, true, true);
      |                                                     ^
../src/flecs/distr/flecs.c:46845:53: error: expected ‘(’ before ‘,’ token
46845 |             type = ecs_lookup_symbol(world, typename, true, true);
      |                                                     ^
      |                                                     (
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46848:14: note: in expansion of macro ‘ecs_os_strcmp’
46848 |         if (!ecs_os_strcmp(typename, "char")) {
      |              ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46848:14: note: in expansion of macro ‘ecs_os_strcmp’
46848 |         if (!ecs_os_strcmp(typename, "char")) {
      |              ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:46849:22: error: expected nested-name-specifier before ‘=’ token
46849 |             typename = "flecs.meta.string";
      |                      ^
../src/flecs/distr/flecs.c:46849:22: error: expected ‘(’ before ‘=’ token
46849 |             typename = "flecs.meta.string";
      |                      ^
      |                      (
../src/flecs/distr/flecs.c:46852:22: error: expected nested-name-specifier before ‘=’ token
46852 |             typename = "flecs.meta.uptr";
      |                      ^
../src/flecs/distr/flecs.c:46852:22: error: expected ‘(’ before ‘=’ token
46852 |             typename = "flecs.meta.uptr";
      |                      ^
      |                      (
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46854:14: note: in expansion of macro ‘ecs_os_strcmp’
46854 |         if (!ecs_os_strcmp(typename, "char*") ||
      |              ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46854:14: note: in expansion of macro ‘ecs_os_strcmp’
46854 |         if (!ecs_os_strcmp(typename, "char*") ||
      |              ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected nested-name-specifier before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46855:14: note: in expansion of macro ‘ecs_os_strcmp’
46855 |             !ecs_os_strcmp(typename, "flecs::string"))
      |              ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2663:46: error: expected ‘(’ before ‘,’ token
 2663 | #define ecs_os_strcmp(str1, str2) strcmp(str1, str2)
      |                                              ^
../src/flecs/distr/flecs.c:46855:14: note: in expansion of macro ‘ecs_os_strcmp’
46855 |             !ecs_os_strcmp(typename, "flecs::string"))
      |              ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:46857:22: error: expected nested-name-specifier before ‘=’ token
46857 |             typename = "flecs.meta.string";
      |                      ^
../src/flecs/distr/flecs.c:46857:22: error: expected ‘(’ before ‘=’ token
46857 |             typename = "flecs.meta.string";
      |                      ^
      |                      (
../src/flecs/distr/flecs.c:46860:49: error: expected nested-name-specifier before ‘,’ token
46860 |         type = ecs_lookup_symbol(world, typename, true, true);
      |                                                 ^
../src/flecs/distr/flecs.c:46860:49: error: expected ‘(’ before ‘,’ token
46860 |         type = ecs_lookup_symbol(world, typename, true, true);
      |                                                 ^
      |                                                 (
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:46866:54: error: taking address of rvalue [-fpermissive]
46866 |         type = ecs_insert(world, ecs_value(EcsArray, {type, (int32_t)count}));
      |                                                      ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.h:9780:32: note: in expansion of macro ‘ecs_values’
 9780 |     ecs_entity(world, { .set = ecs_values(__VA_ARGS__)})
      |                                ^~~~~~~~~~
../src/flecs/distr/flecs.c:46866:16: note: in expansion of macro ‘ecs_insert’
46866 |         type = ecs_insert(world, ecs_value(EcsArray, {type, (int32_t)count}));
      |                ^~~~~~~~~~
../src/flecs/distr/flecs.c:46866:34: note: in expansion of macro ‘ecs_value’
46866 |         type = ecs_insert(world, ecs_value(EcsArray, {type, (int32_t)count}));
      |                                  ^~~~~~~~~
../src/flecs/distr/flecs.h:10144:40: error: taking address of temporary array
10144 | #define ecs_values(...) (ecs_value_t[]){ __VA_ARGS__, {0, 0}}
      |                                        ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.h:9780:32: note: in expansion of macro ‘ecs_values’
 9780 |     ecs_entity(world, { .set = ecs_values(__VA_ARGS__)})
      |                                ^~~~~~~~~~
../src/flecs/distr/flecs.c:46866:16: note: in expansion of macro ‘ecs_insert’
46866 |         type = ecs_insert(world, ecs_value(EcsArray, {type, (int32_t)count}));
      |                ^~~~~~~~~~
../src/flecs/distr/flecs.h:10880:54: error: expected nested-name-specifier before ‘)’ token
10880 |     ecs_parser_error_(name, expr, column, __VA_ARGS__)
      |                                                      ^
../src/flecs/distr/flecs.c:46209:5: note: in expansion of macro ‘ecs_parser_error’
46209 |     ecs_parser_error((ctx)->name, (ctx)->desc, ptr - (ctx)->desc, __VA_ARGS__);
      |     ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:46870:9: note: in expansion of macro ‘ecs_meta_error’
46870 |         ecs_meta_error(ctx, ptr, "unknown type '%s'", typename);
      |         ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:10880:54: error: expected ‘(’ before ‘)’ token
10880 |     ecs_parser_error_(name, expr, column, __VA_ARGS__)
      |                                                      ^
../src/flecs/distr/flecs.c:46209:5: note: in expansion of macro ‘ecs_parser_error’
46209 |     ecs_parser_error((ctx)->name, (ctx)->desc, ptr - (ctx)->desc, __VA_ARGS__);
      |     ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:46870:9: note: in expansion of macro ‘ecs_meta_error’
46870 |         ecs_meta_error(ctx, ptr, "unknown type '%s'", typename);
      |         ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int meta_parse_struct(ecs_world_t*, ecs_entity_t, const char*)’:
../src/flecs/distr/flecs.c:46897:44: error: taking address of rvalue [-fpermissive]
46897 |         ecs_entity_t m = ecs_entity(world, {
      |                                            ^
46898 |             .name = token.name
      |             ~~~~~~~~~~~~~~~~~~              
46899 |         });
      |         ~                                   
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:46907:38: error: taking address of rvalue [-fpermissive]
46907 |         ecs_set(world, m, EcsMember, {
      |                                      ^
46908 |             .type = type,
      |             ~~~~~~~~~~~~~             
46909 |             .count = (ecs_size_t)token.count
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
46910 |         });
      |         ~                             
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int meta_parse_constants(ecs_world_t*, ecs_entity_t, const char*, bool)’:
../src/flecs/distr/flecs.c:46969:44: error: taking address of rvalue [-fpermissive]
46969 |         ecs_entity_t c = ecs_entity(world, {
      |                                            ^
46970 |             .name = token.name
      |             ~~~~~~~~~~~~~~~~~~              
46971 |         });
      |         ~                                   
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:46975:17: error: taking address of rvalue [-fpermissive]
46975 |                 {(ecs_i32_t)last_value});
      |                 ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9798:34: note: in definition of macro ‘ecs_set_pair_second’
 9798 |         sizeof(Second), &(Second)__VA_ARGS__)
      |                                  ^~~~~~~~~~~
../src/flecs/distr/flecs.c:46978:17: error: taking address of rvalue [-fpermissive]
46978 |                 {(ecs_u32_t)last_value});
      |                 ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9798:34: note: in definition of macro ‘ecs_set_pair_second’
 9798 |         sizeof(Second), &(Second)__VA_ARGS__)
      |                                  ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_meta_type_op_t* flecs_meta_cursor_get_ptr(const ecs_world_t*, ecs_meta_scope_t*)’:
../src/flecs/distr/flecs.c:47199:20: error: invalid conversion from ‘void*’ to ‘ecs_meta_type_op_t*’ [-fpermissive]
47199 |             return opaque_ptr;
      |                    ^~~~~~~~~~
      |                    |
      |                    void*
../src/flecs/distr/flecs.c:47208:41: error: invalid conversion from ‘void*’ to ‘ecs_meta_type_op_t*’ [-fpermissive]
47208 |             return opaque->ensure_member(scope->ptr, op->name);
      |                    ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
      |                                         |
      |                                         void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:3942:31: error: invalid conversion from ‘void*’ to ‘ecs_meta_type_op_t*’ [-fpermissive]
 3942 | #define ECS_OFFSET(o, offset) reinterpret_cast<void*>((reinterpret_cast<uintptr_t>(o)) + (static_cast<uintptr_t>(offset)))
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.c:47215:12: note: in expansion of macro ‘ECS_OFFSET’
47215 |     return ECS_OFFSET(scope->ptr, size * scope->elem_cur + op->offset);
      |            ^~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_meta_cursor_t ecs_meta_cursor(const ecs_world_t*, ecs_entity_t, void*)’:
../src/flecs/distr/flecs.c:47262:1: error: jump to label ‘error’
47262 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:47250:5: note: in expansion of macro ‘ecs_check’
47250 |     ecs_check(type != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:47252:23: note:   crosses initialization of ‘ecs_meta_cursor_t result’
47252 |     ecs_meta_cursor_t result = {
      |                       ^~~~~~
../src/flecs/distr/flecs.c:47262:1: error: jump to label ‘error’
47262 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:47249:5: note: in expansion of macro ‘ecs_check’
47249 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:47252:23: note:   crosses initialization of ‘ecs_meta_cursor_t result’
47252 |     ecs_meta_cursor_t result = {
      |                       ^~~~~~
../src/flecs/distr/flecs.c: In function ‘int ecs_meta_push(ecs_meta_cursor_t*)’:
../src/flecs/distr/flecs.c:47465:9: error: designator order for field ‘ecs_meta_scope_t::type’ does not match declaration order in ‘ecs_meta_scope_t’
47465 |         };
      |         ^
../src/flecs/distr/flecs.c:47504:9: error: designator order for field ‘ecs_meta_scope_t::type’ does not match declaration order in ‘ecs_meta_scope_t’
47504 |         };
      |         ^
../src/flecs/distr/flecs.c:47524:30: error: invalid conversion from ‘void*’ to ‘ecs_vec_t*’ [-fpermissive]
47524 |         next_scope->vector = ptr;
      |                              ^~~
      |                              |
      |                              void*
../src/flecs/distr/flecs.c:47654:1: error: jump to label ‘error’
47654 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:47447:5: note: in expansion of macro ‘ecs_check’
47447 |     ecs_check(cursor->depth < ECS_META_MAX_SCOPE_DEPTH,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:47450:23: note:   crosses initialization of ‘ecs_meta_scope_t* next_scope’
47450 |     ecs_meta_scope_t *next_scope = flecs_meta_cursor_get_scope(cursor);
      |                       ^~~~~~~~~~
../src/flecs/distr/flecs.c: At global scope:
../src/flecs/distr/flecs.c:47811:1: sorry, unimplemented: non-trivial designated initializers not supported
47811 | };
      | ^
../src/flecs/distr/flecs.c:47811:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47811:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47811:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47811:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47811:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47811:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47811:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47811:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47811:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47811:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47811:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47811:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47811:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47811:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47811:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47811:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47833:1: sorry, unimplemented: non-trivial designated initializers not supported
47833 | };
      | ^
../src/flecs/distr/flecs.c:47833:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47833:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47833:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47833:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47833:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47833:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47833:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47833:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47833:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47833:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47833:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47833:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47833:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47833:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47833:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47833:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47858:1: sorry, unimplemented: non-trivial designated initializers not supported
47858 | };
      | ^
../src/flecs/distr/flecs.c:47858:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47858:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47858:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47858:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47858:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47858:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47858:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47858:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47858:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47858:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47858:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47858:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47858:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47858:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47858:1: sorry, unimplemented: non-trivial designated initializers not supported
../src/flecs/distr/flecs.c:47858:1: sorry, unimplemented: non-trivial designated initializers not supported
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int ecs_meta_set_float(ecs_meta_cursor_t*, double)’:
../src/flecs/distr/flecs.h:885:43: error: taking address of rvalue [-fpermissive]
  885 | #define ECS_EQZERO(a) ECS_EQ(a, (uint64_t){0})
      |                                           ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:885:23: note: in expansion of macro ‘ECS_EQ’
  885 | #define ECS_EQZERO(a) ECS_EQ(a, (uint64_t){0})
      |                       ^~~~~~
../src/flecs/distr/flecs.c:48134:13: note: in expansion of macro ‘ECS_EQZERO’
48134 |         if (ECS_EQZERO(value)) {
      |             ^~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int ecs_meta_set_value(ecs_meta_cursor_t*, const ecs_value_t*)’:
../src/flecs/distr/flecs.c:48241:1: error: jump to label ‘error’
48241 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:48191:5: note: in expansion of macro ‘ecs_check’
48191 |     ecs_check(type != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:48192:20: note:   crosses initialization of ‘const EcsType* mt’
48192 |     const EcsType *mt = ecs_get(cursor->world, type, EcsType);
      |                    ^~
../src/flecs/distr/flecs.c:48241:1: error: jump to label ‘error’
48241 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:48189:5: note: in expansion of macro ‘ecs_check’
48189 |     ecs_check(value != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:48192:20: note:   crosses initialization of ‘const EcsType* mt’
48192 |     const EcsType *mt = ecs_get(cursor->world, type, EcsType);
      |                    ^~
../src/flecs/distr/flecs.c:48190:18: note:   crosses initialization of ‘ecs_entity_t type’
48190 |     ecs_entity_t type = value->type;
      |                  ^~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int ecs_meta_set_string_literal(ecs_meta_cursor_t*, const char*)’:
../src/flecs/distr/flecs.h:2607:47: error: invalid conversion from ‘void*’ to ‘char*’ [-fpermissive]
 2607 | #define ecs_os_malloc(size) ecs_os_api.malloc_(size)
      |                             ~~~~~~~~~~~~~~~~~~^~~~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c:48575:24: note: in expansion of macro ‘ecs_os_malloc’
48575 |         char *result = ecs_os_malloc(len + 1);
      |                        ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:48586:5: error: jump to case label
48586 |     default:
      |     ^~~~~~~
../src/flecs/distr/flecs.c:48575:15: note:   crosses initialization of ‘char* result’
48575 |         char *result = ecs_os_malloc(len + 1);
      |               ^~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘bool ecs_meta_get_bool(const ecs_meta_cursor_t*)’:
../src/flecs/distr/flecs.h:886:45: error: taking address of rvalue [-fpermissive]
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                                             ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:884:25: note: in expansion of macro ‘ECS_EQ’
  884 | #define ECS_NEQ(a, b) (!ECS_EQ(a, b))
      |                         ^~~~~~
../src/flecs/distr/flecs.h:886:24: note: in expansion of macro ‘ECS_NEQ’
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:48790:28: note: in expansion of macro ‘ECS_NEQZERO’
48790 |     case EcsOpF32:  return ECS_NEQZERO(*(ecs_f32_t*)ptr);
      |                            ^~~~~~~~~~~
../src/flecs/distr/flecs.h:886:45: error: taking address of rvalue [-fpermissive]
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                                             ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:884:25: note: in expansion of macro ‘ECS_EQ’
  884 | #define ECS_NEQ(a, b) (!ECS_EQ(a, b))
      |                         ^~~~~~
../src/flecs/distr/flecs.h:886:24: note: in expansion of macro ‘ECS_NEQ’
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:48791:28: note: in expansion of macro ‘ECS_NEQZERO’
48791 |     case EcsOpF64:  return ECS_NEQZERO(*(ecs_f64_t*)ptr);
      |                            ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘double flecs_meta_to_float(ecs_meta_type_op_kind_t, const void*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const void*’ to type ‘const char**’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:48973:36: note: in expansion of macro ‘ECS_CONST_CAST’
48973 |     case EcsOpString: return atof(*ECS_CONST_CAST(const char**, ptr));
      |                                    ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int ecs_meta_get_string_value_from_opaque(const ecs_serializer_t*, ecs_entity_t, const void*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const void*’ to type ‘char**’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:49019:12: note: in expansion of macro ‘ECS_CONST_CAST’
49019 |     *ctx = ECS_CONST_CAST(char**, value);
      |            ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘const char* ecs_meta_get_string(const ecs_meta_cursor_t*)’:
../src/flecs/distr/flecs.c:49052:13: error: ‘ecs_serializer_t’ has no non-static data member named ‘value’
49052 |             };
      |             ^
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int flecs_addon_vec_serialize(const ecs_serializer_t*, const void*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const void*’ to type ‘char***’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:49198:20: note: in expansion of macro ‘ECS_CONST_CAST’
49198 |     char ***data = ECS_CONST_CAST(char***, ptr);
      |                    ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:49201:19: error: no matching function for call to ‘ecs_serializer_t::value(const ecs_serializer_t*&, const ecs_entity_t&, char**&) const’
49201 |         ser->value(ser, ecs_id(ecs_string_t), addons);
      |         ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:15304:9: note: candidate: ‘template<class T> int ecs_serializer_t::value(const T&) const’
15304 |     int value(const T& value) const;
      |         ^~~~~
../src/flecs/distr/flecs.h:15304:9: note:   template argument deduction/substitution failed:
../src/flecs/distr/flecs.c:49201:19: note:   candidate expects 1 argument, 3 provided
49201 |         ser->value(ser, ecs_id(ecs_string_t), addons);
      |         ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:31799:12: note: candidate: ‘int ecs_serializer_t::value(ecs_entity_t, const void*) const’
31799 | inline int ecs_serializer_t::value(ecs_entity_t type, const void *v) const {
      |            ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:31799:12: note:   candidate expects 2 arguments, 3 provided
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘size_t flecs_addon_vec_count(const void*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const void*’ to type ‘char***’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:49209:20: note: in expansion of macro ‘ECS_CONST_CAST’
49209 |     char ***data = ECS_CONST_CAST(char***, ptr);
      |                    ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_const_str_serialize(const ecs_serializer_t*, const void*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const void*’ to type ‘char**’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:49219:19: note: in expansion of macro ‘ECS_CONST_CAST’
49219 |     char **data = ECS_CONST_CAST(char**, ptr);
      |                   ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:49220:15: error: no matching function for call to ‘ecs_serializer_t::value(const ecs_serializer_t*&, const ecs_entity_t&, char**&) const’
49220 |     ser->value(ser, ecs_id(ecs_string_t), data);
      |     ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:15304:9: note: candidate: ‘template<class T> int ecs_serializer_t::value(const T&) const’
15304 |     int value(const T& value) const;
      |         ^~~~~
../src/flecs/distr/flecs.h:15304:9: note:   template argument deduction/substitution failed:
../src/flecs/distr/flecs.c:49220:15: note:   candidate expects 1 argument, 3 provided
49220 |     ser->value(ser, ecs_id(ecs_string_t), data);
      |     ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:31799:12: note: candidate: ‘int ecs_serializer_t::value(ecs_entity_t, const void*) const’
31799 | inline int ecs_serializer_t::value(ecs_entity_t type, const void *v) const {
      |            ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:31799:12: note:   candidate expects 2 arguments, 3 provided
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_meta_import_core_definitions(ecs_world_t*)’:
../src/flecs/distr/flecs.c:49229:23: error: taking address of rvalue [-fpermissive]
49229 |     ecs_struct(world, {
      |                       ^
49230 |         .entity = ecs_id(EcsComponent),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49231 |         .members = {
      |         ~~~~~~~~~~~~   
49232 |             { .name = "size", .type = ecs_id(ecs_i32_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49233 |             { .name = "alignment", .type = ecs_id(ecs_i32_t) }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49234 |         }
      |         ~              
49235 |     });
      |     ~                  
../src/flecs/distr/flecs.h:16131:49: note: in definition of macro ‘ecs_struct’
16131 |     ecs_struct_init(world, &(ecs_struct_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:49237:23: error: taking address of rvalue [-fpermissive]
49237 |     ecs_struct(world, {
      |                       ^
49238 |         .entity = ecs_id(EcsDefaultChildComponent),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49239 |         .members = {
      |         ~~~~~~~~~~~~   
49240 |             { .name = "component", .type = ecs_id(ecs_entity_t) }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49241 |         }
      |         ~              
49242 |     });
      |     ~                  
../src/flecs/distr/flecs.h:16131:49: note: in definition of macro ‘ecs_struct’
16131 |     ecs_struct_init(world, &(ecs_struct_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:49252:43: error: taking address of rvalue [-fpermissive]
49252 |               .entity = ecs_entity(world, {
      |                                           ^
49253 |                 .name = "flecs.core.const_string_t",
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49254 |                 .root_sep = ""
      |                 ~~~~~~~~~~~~~~             
49255 |             }),
      |             ~                              
../src/flecs/distr/flecs.h:16127:49: note: in definition of macro ‘ecs_opaque’
16127 |     ecs_opaque_init(world, &(ecs_opaque_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:49251:19: note: in expansion of macro ‘ecs_component’
49251 |         .entity = ecs_component(world, {
      |                   ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:49252:25: note: in expansion of macro ‘ecs_entity’
49252 |               .entity = ecs_entity(world, {
      |                         ^~~~~~~~~~
../src/flecs/distr/flecs.c:49251:40: error: taking address of rvalue [-fpermissive]
49251 |         .entity = ecs_component(world, {
      |                                        ^
49252 |               .entity = ecs_entity(world, {
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49253 |                 .name = "flecs.core.const_string_t",
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49254 |                 .root_sep = ""
      |                 ~~~~~~~~~~~~~~          
49255 |             }),
      |             ~~~                         
49256 |             .type = {
      |             ~~~~~~~~~                   
49257 |                 .size = ECS_SIZEOF(const char*),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49258 |                 .alignment = ECS_ALIGNOF(const char*)
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49259 |             }
      |             ~                           
49260 |         }),
      |         ~                               
../src/flecs/distr/flecs.h:16127:49: note: in definition of macro ‘ecs_opaque’
16127 |     ecs_opaque_init(world, &(ecs_opaque_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:49251:19: note: in expansion of macro ‘ecs_component’
49251 |         .entity = ecs_component(world, {
      |                   ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:49250:51: error: taking address of rvalue [-fpermissive]
49250 |     ecs_entity_t const_string = ecs_opaque(world, {
      |                                                   ^
49251 |         .entity = ecs_component(world, {
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
49252 |               .entity = ecs_entity(world, {
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        
49253 |                 .name = "flecs.core.const_string_t",
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49254 |                 .root_sep = ""
      |                 ~~~~~~~~~~~~~~                     
49255 |             }),
      |             ~~~                                    
49256 |             .type = {
      |             ~~~~~~~~~                              
49257 |                 .size = ECS_SIZEOF(const char*),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
49258 |                 .alignment = ECS_ALIGNOF(const char*)
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49259 |             }
      |             ~                                      
49260 |         }),
      |         ~~~                                        
49261 |         .type = {
      |         ~~~~~~~~~                                  
49262 |             .as_type = ecs_id(ecs_string_t),
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       
49263 |             .serialize = flecs_const_str_serialize,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49264 |         }
      |         ~                                          
49265 |     });
      |     ~                                              
../src/flecs/distr/flecs.h:16127:49: note: in definition of macro ‘ecs_opaque’
16127 |     ecs_opaque_init(world, &(ecs_opaque_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:49268:37: error: taking address of rvalue [-fpermissive]
49268 |         .entity = ecs_entity(world, {
      |                                     ^
49269 |             .name = "flecs.core.string_vec_t",
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49270 |             .root_sep = ""
      |             ~~~~~~~~~~~~~~           
49271 |         }),
      |         ~                            
../src/flecs/distr/flecs.h:16123:49: note: in definition of macro ‘ecs_vector’
16123 |     ecs_vector_init(world, &(ecs_vector_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:49268:19: note: in expansion of macro ‘ecs_entity’
49268 |         .entity = ecs_entity(world, {
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.c:49267:49: error: taking address of rvalue [-fpermissive]
49267 |     ecs_entity_t string_vec = ecs_vector(world, {
      |                                                 ^
49268 |         .entity = ecs_entity(world, {
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
49269 |             .name = "flecs.core.string_vec_t",
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
49270 |             .root_sep = ""
      |             ~~~~~~~~~~~~~~                       
49271 |         }),
      |         ~~~                                      
49272 |         .type = ecs_id(ecs_string_t)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~             
49273 |     });
      |     ~                                            
../src/flecs/distr/flecs.h:16123:49: note: in definition of macro ‘ecs_vector’
16123 |     ecs_vector_init(world, &(ecs_vector_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:49277:41: error: taking address of rvalue [-fpermissive]
49277 |             .entity = ecs_entity(world, {
      |                                         ^
49278 |                 .name = "flecs.core.addon_vec_t",
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49279 |                 .root_sep = ""
      |                 ~~~~~~~~~~~~~~           
49280 |             }),
      |             ~                            
../src/flecs/distr/flecs.h:16127:49: note: in definition of macro ‘ecs_opaque’
16127 |     ecs_opaque_init(world, &(ecs_opaque_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:49276:19: note: in expansion of macro ‘ecs_component’
49276 |         .entity = ecs_component(world, {
      |                   ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:49277:23: note: in expansion of macro ‘ecs_entity’
49277 |             .entity = ecs_entity(world, {
      |                       ^~~~~~~~~~
../src/flecs/distr/flecs.c:49276:40: error: taking address of rvalue [-fpermissive]
49276 |         .entity = ecs_component(world, {
      |                                        ^
49277 |             .entity = ecs_entity(world, {
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49278 |                 .name = "flecs.core.addon_vec_t",
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49279 |                 .root_sep = ""
      |                 ~~~~~~~~~~~~~~          
49280 |             }),
      |             ~~~                         
49281 |             .type = {
      |             ~~~~~~~~~                   
49282 |                 .size = ECS_SIZEOF(char**),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
49283 |                 .alignment = ECS_ALIGNOF(char**)
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49284 |             }
      |             ~                           
49285 |         }),
      |         ~                               
../src/flecs/distr/flecs.h:16127:49: note: in definition of macro ‘ecs_opaque’
16127 |     ecs_opaque_init(world, &(ecs_opaque_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:49276:19: note: in expansion of macro ‘ecs_component’
49276 |         .entity = ecs_component(world, {
      |                   ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:49275:48: error: taking address of rvalue [-fpermissive]
49275 |     ecs_entity_t addon_vec = ecs_opaque(world, {
      |                                                ^
49276 |         .entity = ecs_component(world, {
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        
49277 |             .entity = ecs_entity(world, {
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       
49278 |                 .name = "flecs.core.addon_vec_t",
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49279 |                 .root_sep = ""
      |                 ~~~~~~~~~~~~~~                  
49280 |             }),
      |             ~~~                                 
49281 |             .type = {
      |             ~~~~~~~~~                           
49282 |                 .size = ECS_SIZEOF(char**),
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~     
49283 |                 .alignment = ECS_ALIGNOF(char**)
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49284 |             }
      |             ~                                   
49285 |         }),
      |         ~~~                                     
49286 |         .type = {
      |         ~~~~~~~~~                               
49287 |             .as_type = string_vec,
      |             ~~~~~~~~~~~~~~~~~~~~~~              
49288 |             .serialize = flecs_addon_vec_serialize,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49289 |             .count = flecs_addon_vec_count,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     
49290 |         }
      |         ~                                       
49291 |     });
      |     ~                                           
../src/flecs/distr/flecs.h:16127:49: note: in definition of macro ‘ecs_opaque’
16127 |     ecs_opaque_init(world, &(ecs_opaque_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:49294:37: error: taking address of rvalue [-fpermissive]
49294 |         .entity = ecs_entity(world, {
      |                                     ^
49295 |             .name = "flecs.core.build_info_t",
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49296 |             .root_sep = ""
      |             ~~~~~~~~~~~~~~           
49297 |         }),
      |         ~                            
../src/flecs/distr/flecs.h:16131:49: note: in definition of macro ‘ecs_struct’
16131 |     ecs_struct_init(world, &(ecs_struct_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:49294:19: note: in expansion of macro ‘ecs_entity’
49294 |         .entity = ecs_entity(world, {
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.c:49293:23: error: taking address of rvalue [-fpermissive]
49293 |     ecs_struct(world, {
      |                       ^
49294 |         .entity = ecs_entity(world, {
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49295 |             .name = "flecs.core.build_info_t",
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49296 |             .root_sep = ""
      |             ~~~~~~~~~~~~~~
49297 |         }),
      |         ~~~            
49298 |         .members = {
      |         ~~~~~~~~~~~~   
49299 |             { .name = "compiler", .type = const_string },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49300 |             { .name = "addons", .type = addon_vec },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49301 |             { .name = "version", .type = const_string },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49302 |             { .name = "version_major", .type = ecs_id(ecs_i16_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49303 |             { .name = "version_minor", .type = ecs_id(ecs_i16_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49304 |             { .name = "version_patch", .type = ecs_id(ecs_i16_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49305 |             { .name = "debug", .type = ecs_id(ecs_bool_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49306 |             { .name = "sanitize", .type = ecs_id(ecs_bool_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49307 |             { .name = "perf_trace", .type = ecs_id(ecs_bool_t) }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49308 |         }
      |         ~              
49309 |     });
      |     ~                  
../src/flecs/distr/flecs.h:16131:49: note: in definition of macro ‘ecs_struct’
16131 |     ecs_struct_init(world, &(ecs_struct_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_meta_import_doc_definitions(ecs_world_t*)’:
../src/flecs/distr/flecs.c:49319:23: error: taking address of rvalue [-fpermissive]
49319 |     ecs_struct(world, {
      |                       ^
49320 |         .entity = ecs_id(EcsDocDescription),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49321 |         .members = {
      |         ~~~~~~~~~~~~   
49322 |             { .name = "value", .type = ecs_id(ecs_string_t) }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49323 |         }
      |         ~              
49324 |     });
      |     ~                  
../src/flecs/distr/flecs.h:16131:49: note: in definition of macro ‘ecs_struct’
16131 |     ecs_struct_init(world, &(ecs_struct_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_meta_import_meta_definitions(ecs_world_t*)’:
../src/flecs/distr/flecs.c:49334:37: error: taking address of rvalue [-fpermissive]
49334 |         .entity = ecs_entity(world, { .name = "TypeKind" }),
      |                                     ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:49333:69: error: taking address of rvalue [-fpermissive]
49333 |     ecs_entity_t type_kind = ecs_enum_init(world, &(ecs_enum_desc_t){
      |                                                                     ^
49334 |         .entity = ecs_entity(world, { .name = "TypeKind" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
49335 |         .constants = {
      |         ~~~~~~~~~~~~~~                                               
49336 |             { .name = "PrimitiveType" },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                             
49337 |             { .name = "BitmaskType" },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~                               
49338 |             { .name = "EnumType" },
      |             ~~~~~~~~~~~~~~~~~~~~~~~                                  
49339 |             { .name = "StructType" },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~                                
49340 |             { .name = "ArrayType" },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~                                 
49341 |             { .name = "VectorType" },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~                                
49342 |             { .name = "OpaqueType" }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~                                 
49343 |         }
      |         ~                                                            
49344 |     });
      |     ~                                                                
../src/flecs/distr/flecs.c:49346:48: error: taking address of rvalue [-fpermissive]
49346 |     ecs_struct_init(world, &(ecs_struct_desc_t){
      |                                                ^
49347 |         .entity = ecs_id(EcsType),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~              
49348 |         .members = {
      |         ~~~~~~~~~~~~                            
49349 |             { .name = "kind", .type = type_kind }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49350 |         }
      |         ~                                       
49351 |     });
      |     ~                                           
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:49354:37: error: taking address of rvalue [-fpermissive]
49354 |         .entity = ecs_entity(world, { .name = "PrimitiveKind" }),
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:49353:74: error: taking address of rvalue [-fpermissive]
49353 |     ecs_entity_t primitive_kind = ecs_enum_init(world, &(ecs_enum_desc_t){
      |                                                                          ^
49354 |         .entity = ecs_entity(world, { .name = "PrimitiveKind" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
49355 |         .constants = {
      |         ~~~~~~~~~~~~~~                                                    
49356 |             { .name = "Bool", 1 },
      |             ~~~~~~~~~~~~~~~~~~~~~~                                        
49357 |             { .name = "Char" },
      |             ~~~~~~~~~~~~~~~~~~~                                           
49358 |             { .name = "Byte" },
      |             ~~~~~~~~~~~~~~~~~~~                                           
49359 |             { .name = "U8" },
      |             ~~~~~~~~~~~~~~~~~                                             
49360 |             { .name = "U16" },
      |             ~~~~~~~~~~~~~~~~~~                                            
49361 |             { .name = "U32" },
      |             ~~~~~~~~~~~~~~~~~~                                            
49362 |             { .name = "U64 "},
      |             ~~~~~~~~~~~~~~~~~~                                            
49363 |             { .name = "I8" },
      |             ~~~~~~~~~~~~~~~~~                                             
49364 |             { .name = "I16" },
      |             ~~~~~~~~~~~~~~~~~~                                            
49365 |             { .name = "I32" },
      |             ~~~~~~~~~~~~~~~~~~                                            
49366 |             { .name = "I64" },
      |             ~~~~~~~~~~~~~~~~~~                                            
49367 |             { .name = "F32" },
      |             ~~~~~~~~~~~~~~~~~~                                            
49368 |             { .name = "F64" },
      |             ~~~~~~~~~~~~~~~~~~                                            
49369 |             { .name = "UPtr "},
      |             ~~~~~~~~~~~~~~~~~~~                                           
49370 |             { .name = "IPtr" },
      |             ~~~~~~~~~~~~~~~~~~~                                           
49371 |             { .name = "String" },
      |             ~~~~~~~~~~~~~~~~~~~~~                                         
49372 |             { .name = "Entity" },
      |             ~~~~~~~~~~~~~~~~~~~~~                                         
49373 |             { .name = "Id" }
      |             ~~~~~~~~~~~~~~~~                                              
49374 |         }
      |         ~                                                                 
49375 |     });
      |     ~                                                                     
../src/flecs/distr/flecs.c:49377:48: error: taking address of rvalue [-fpermissive]
49377 |     ecs_struct_init(world, &(ecs_struct_desc_t){
      |                                                ^
49378 |         .entity = ecs_id(EcsPrimitive),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
49379 |         .members = {
      |         ~~~~~~~~~~~~                            
49380 |             { .name = "kind", .type = primitive_kind }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49381 |         }
      |         ~                                       
49382 |     });
      |     ~                                           
../src/flecs/distr/flecs.c:49384:48: error: taking address of rvalue [-fpermissive]
49384 |     ecs_struct_init(world, &(ecs_struct_desc_t){
      |                                                ^
49385 |         .entity = ecs_id(EcsMember),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
49386 |         .members = {
      |         ~~~~~~~~~~~~                            
49387 |             { .name = "type", .type = ecs_id(ecs_entity_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49388 |             { .name = "count", .type = ecs_id(ecs_i32_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49389 |             { .name = "unit", .type = ecs_id(ecs_entity_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49390 |             { .name = "offset", .type = ecs_id(ecs_i32_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49391 |             { .name = "use_offset", .type = ecs_id(ecs_bool_t) }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49392 |         }
      |         ~                                       
49393 |     });
      |     ~                                           
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:49396:37: error: taking address of rvalue [-fpermissive]
49396 |         .entity = ecs_entity(world, { .name = "value_range" }),
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:49395:66: error: taking address of rvalue [-fpermissive]
49395 |     ecs_entity_t vr = ecs_struct_init(world, &(ecs_struct_desc_t){
      |                                                                  ^
49396 |         .entity = ecs_entity(world, { .name = "value_range" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
49397 |         .members = {
      |         ~~~~~~~~~~~~                                              
49398 |             { .name = "min", .type = ecs_id(ecs_f64_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
49399 |             { .name = "max", .type = ecs_id(ecs_f64_t) }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
49400 |         }
      |         ~                                                         
49401 |     });
      |     ~                                                             
../src/flecs/distr/flecs.c:49403:48: error: taking address of rvalue [-fpermissive]
49403 |     ecs_struct_init(world, &(ecs_struct_desc_t){
      |                                                ^
49404 |         .entity = ecs_id(EcsMemberRanges),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~      
49405 |         .members = {
      |         ~~~~~~~~~~~~                            
49406 |             { .name = "value", .type = vr },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
49407 |             { .name = "warning", .type = vr },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
49408 |             { .name = "error", .type = vr }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     
49409 |         }
      |         ~                                       
49410 |     });
      |     ~                                           
../src/flecs/distr/flecs.c:49412:48: error: taking address of rvalue [-fpermissive]
49412 |     ecs_struct_init(world, &(ecs_struct_desc_t){
      |                                                ^
49413 |         .entity = ecs_id(EcsArray),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~             
49414 |         .members = {
      |         ~~~~~~~~~~~~                            
49415 |             { .name = "type", .type = ecs_id(ecs_entity_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49416 |             { .name = "count", .type = ecs_id(ecs_i32_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49417 |         }
      |         ~                                       
49418 |     });
      |     ~                                           
../src/flecs/distr/flecs.c:49420:48: error: taking address of rvalue [-fpermissive]
49420 |     ecs_struct_init(world, &(ecs_struct_desc_t){
      |                                                ^
49421 |         .entity = ecs_id(EcsVector),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
49422 |         .members = {
      |         ~~~~~~~~~~~~                            
49423 |             { .name = "type", .type = ecs_id(ecs_entity_t) }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49424 |         }
      |         ~                                       
49425 |     });
      |     ~                                           
../src/flecs/distr/flecs.c:49427:48: error: taking address of rvalue [-fpermissive]
49427 |     ecs_struct_init(world, &(ecs_struct_desc_t){
      |                                                ^
49428 |         .entity = ecs_id(EcsOpaque),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
49429 |         .members = {
      |         ~~~~~~~~~~~~                            
49430 |             { .name = "as_type", .type = ecs_id(ecs_entity_t) }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49431 |         }
      |         ~                                       
49432 |     });
      |     ~                                           
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:49435:37: error: taking address of rvalue [-fpermissive]
49435 |         .entity = ecs_entity(world, { .name = "unit_translation" }),
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:49434:66: error: taking address of rvalue [-fpermissive]
49434 |     ecs_entity_t ut = ecs_struct_init(world, &(ecs_struct_desc_t){
      |                                                                  ^
49435 |         .entity = ecs_entity(world, { .name = "unit_translation" }),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49436 |         .members = {
      |         ~~~~~~~~~~~~                                              
49437 |             { .name = "factor", .type = ecs_id(ecs_i32_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~      
49438 |             { .name = "power", .type = ecs_id(ecs_i32_t) }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        
49439 |         }
      |         ~                                                         
49440 |     });
      |     ~                                                             
../src/flecs/distr/flecs.c:49442:48: error: taking address of rvalue [-fpermissive]
49442 |     ecs_struct_init(world, &(ecs_struct_desc_t){
      |                                                ^
49443 |         .entity = ecs_id(EcsUnit),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~              
49444 |         .members = {
      |         ~~~~~~~~~~~~                            
49445 |             { .name = "symbol", .type = ecs_id(ecs_string_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49446 |             { .name = "prefix", .type = ecs_id(ecs_entity_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49447 |             { .name = "base", .type = ecs_id(ecs_entity_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49448 |             { .name = "over", .type = ecs_id(ecs_entity_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49449 |             { .name = "translation", .type = ut }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49450 |         }
      |         ~                                       
49451 |     });
      |     ~                                           
../src/flecs/distr/flecs.c:49453:48: error: taking address of rvalue [-fpermissive]
49453 |     ecs_struct_init(world, &(ecs_struct_desc_t){
      |                                                ^
49454 |         .entity = ecs_id(EcsUnitPrefix),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~        
49455 |         .members = {
      |         ~~~~~~~~~~~~                            
49456 |             { .name = "symbol", .type = ecs_id(ecs_string_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49457 |             { .name = "translation", .type = ut }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49458 |         }
      |         ~                                       
49459 |     });
      |     ~                                           
../src/flecs/distr/flecs.c: In function ‘void ecs_meta_dtor_serialized(EcsTypeSerializer*)’:
../src/flecs/distr/flecs.c:49539:44: error: invalid conversion from ‘void*’ to ‘ecs_meta_type_op_t*’ [-fpermissive]
49539 |     ecs_meta_type_op_t *ops = ecs_vec_first(&ptr->ops);
      |                               ~~~~~~~~~~~~~^~~~~~~~~~~
      |                                            |
      |                                            void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_constants_dtor(ecs_map_t*)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_enum_constant_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:49620:34: note: in expansion of macro ‘ecs_map_ptr’
49620 |         ecs_enum_constant_t *c = ecs_map_ptr(&it);
      |                                  ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_constants_copy(ecs_map_t*, const ecs_map_t*)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_map_data_t*’ {aka ‘long unsigned int*’} to type ‘ecs_enum_constant_t**’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:1862:29: note: in expansion of macro ‘ECS_CAST’
 1862 | #define ecs_map_ref(it, T) (ECS_CAST(T**, &((it)->res[1])))
      |                             ^~~~~~~~
../src/flecs/distr/flecs.c:49635:35: note: in expansion of macro ‘ecs_map_ref’
49635 |         ecs_enum_constant_t **r = ecs_map_ref(&it, ecs_enum_constant_t);
      |                                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_add_constant_to_enum(ecs_world_t*, ecs_entity_t, ecs_entity_t, ecs_id_t)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_enum_constant_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:50086:34: note: in expansion of macro ‘ecs_map_ptr’
50086 |         ecs_enum_constant_t *c = ecs_map_ptr(&it);
      |                                  ^~~~~~~~~~~
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_enum_constant_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:50114:34: note: in expansion of macro ‘ecs_map_ptr’
50114 |         ecs_enum_constant_t *c = ecs_map_ptr(&it);
      |                                  ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50142:25: error: invalid conversion from ‘void*’ to ‘ecs_i32_t*’ {aka ‘int*’} [-fpermissive]
50142 |     cptr = ecs_ensure_id(world, e, type);
      |            ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
      |                         |
      |                         void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int flecs_add_constant_to_bitmask(ecs_world_t*, ecs_entity_t, ecs_entity_t, ecs_id_t)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_bitmask_constant_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:50160:37: note: in expansion of macro ‘ecs_map_ptr’
50160 |         ecs_bitmask_constant_t *c = ecs_map_ptr(&it);
      |                                     ^~~~~~~~~~~
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_bitmask_constant_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:50188:37: note: in expansion of macro ‘ecs_map_ptr’
50188 |         ecs_bitmask_constant_t *c = ecs_map_ptr(&it);
      |                                     ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50211:25: error: invalid conversion from ‘void*’ to ‘ecs_u32_t*’ {aka ‘unsigned int*’} [-fpermissive]
50211 |     cptr = ecs_ensure_id(world, e, type);
      |            ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
      |                         |
      |                         void*
../src/flecs/distr/flecs.c: In function ‘void flecs_set_member(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:50288:47: error: invalid conversion from ‘void*’ to ‘EcsMemberRanges*’ [-fpermissive]
50288 |     EcsMemberRanges *ranges = ecs_table_get_id(world, it->table,
      |                               ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
      |                                               |
      |                                               void*
50289 |         ecs_id(EcsMemberRanges), it->offset);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
../src/flecs/distr/flecs.c: In function ‘void flecs_set_member_ranges(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:50309:41: error: invalid conversion from ‘void*’ to ‘EcsMember*’ [-fpermissive]
50309 |     EcsMember *member = ecs_table_get_id(world, it->table,
      |                         ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
      |                                         |
      |                                         void*
50310 |         ecs_id(EcsMember), it->offset);
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void FlecsMetaImport(ecs_world_t*)’:
../src/flecs/distr/flecs.c:3008:37: error: taking address of rvalue [-fpermissive]
 3008 |         .entity = ecs_entity(world, { .id = ecs_id(id_), .name = #id_, .symbol = #id_ }),\
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50632:5: note: in expansion of macro ‘flecs_bootstrap_component’
50632 |     flecs_bootstrap_component(world, EcsTypeSerializer);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:3007:53: error: expected primary-expression before ‘)’ token
 3007 |     ecs_component_init(world, &(ecs_component_desc_t){\
      |                                                     ^
../src/flecs/distr/flecs.c:50632:5: note: in expansion of macro ‘flecs_bootstrap_component’
50632 |     flecs_bootstrap_component(world, EcsTypeSerializer);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:50635:37: error: taking address of rvalue [-fpermissive]
50635 |         .entity = ecs_entity(world, { .id = ecs_id(EcsType),
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~
50636 |             .name = "type", .symbol = "EcsType"
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50637 |         }),
      |         ~                            
../src/flecs/distr/flecs.h:9671:55: note: in definition of macro ‘ecs_component’
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                       ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50635:19: note: in expansion of macro ‘ecs_entity’
50635 |         .entity = ecs_entity(world, { .id = ecs_id(EcsType),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.h:9671:53: error: expected primary-expression before ‘)’ token
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                     ^
../src/flecs/distr/flecs.c:50634:5: note: in expansion of macro ‘ecs_component’
50634 |     ecs_component(world, {
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50643:37: error: taking address of rvalue [-fpermissive]
50643 |         .entity = ecs_entity(world, { .id = ecs_id(EcsPrimitive),
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50644 |             .name = "primitive", .symbol = "EcsPrimitive"
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50645 |         }),
      |         ~                            
../src/flecs/distr/flecs.h:9671:55: note: in definition of macro ‘ecs_component’
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                       ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50643:19: note: in expansion of macro ‘ecs_entity’
50643 |         .entity = ecs_entity(world, { .id = ecs_id(EcsPrimitive),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.h:9671:53: error: expected primary-expression before ‘)’ token
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                     ^
../src/flecs/distr/flecs.c:50642:5: note: in expansion of macro ‘ecs_component’
50642 |     ecs_component(world, {
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50651:37: error: taking address of rvalue [-fpermissive]
50651 |         .entity = ecs_entity(world, { .id = EcsConstant,
      |                                     ^~~~~~~~~~~~~~~~~~~~
50652 |             .name = "constant", .symbol = "EcsConstant"
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50653 |         })
      |         ~                            
../src/flecs/distr/flecs.h:9671:55: note: in definition of macro ‘ecs_component’
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                       ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50651:19: note: in expansion of macro ‘ecs_entity’
50651 |         .entity = ecs_entity(world, { .id = EcsConstant,
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.c:50650:26: error: taking address of rvalue [-fpermissive]
50650 |     ecs_component(world, {
      |                          ^
50651 |         .entity = ecs_entity(world, { .id = EcsConstant,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50652 |             .name = "constant", .symbol = "EcsConstant"
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50653 |         })
      |         ~~                
50654 |     });
      |     ~                     
../src/flecs/distr/flecs.h:9671:55: note: in definition of macro ‘ecs_component’
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                       ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50657:37: error: taking address of rvalue [-fpermissive]
50657 |         .entity = ecs_entity(world, { .id = ecs_id(EcsEnum),
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~
50658 |             .name = "enum", .symbol = "EcsEnum"
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50659 |         }),
      |         ~                            
../src/flecs/distr/flecs.h:9671:55: note: in definition of macro ‘ecs_component’
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                       ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50657:19: note: in expansion of macro ‘ecs_entity’
50657 |         .entity = ecs_entity(world, { .id = ecs_id(EcsEnum),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.h:9671:53: error: expected primary-expression before ‘)’ token
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                     ^
../src/flecs/distr/flecs.c:50656:5: note: in expansion of macro ‘ecs_component’
50656 |     ecs_component(world, {
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50665:37: error: taking address of rvalue [-fpermissive]
50665 |         .entity = ecs_entity(world, { .id = ecs_id(EcsBitmask),
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
50666 |             .name = "bitmask", .symbol = "EcsBitmask"
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50667 |         }),
      |         ~                            
../src/flecs/distr/flecs.h:9671:55: note: in definition of macro ‘ecs_component’
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                       ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50665:19: note: in expansion of macro ‘ecs_entity’
50665 |         .entity = ecs_entity(world, { .id = ecs_id(EcsBitmask),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.h:9671:53: error: expected primary-expression before ‘)’ token
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                     ^
../src/flecs/distr/flecs.c:50664:5: note: in expansion of macro ‘ecs_component’
50664 |     ecs_component(world, {
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50673:37: error: taking address of rvalue [-fpermissive]
50673 |         .entity = ecs_entity(world, { .id = ecs_id(EcsMember),
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~
50674 |             .name = "member", .symbol = "EcsMember"
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50675 |         }),
      |         ~                            
../src/flecs/distr/flecs.h:9671:55: note: in definition of macro ‘ecs_component’
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                       ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50673:19: note: in expansion of macro ‘ecs_entity’
50673 |         .entity = ecs_entity(world, { .id = ecs_id(EcsMember),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.h:9671:53: error: expected primary-expression before ‘)’ token
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                     ^
../src/flecs/distr/flecs.c:50672:5: note: in expansion of macro ‘ecs_component’
50672 |     ecs_component(world, {
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50681:37: error: taking address of rvalue [-fpermissive]
50681 |         .entity = ecs_entity(world, { .id = ecs_id(EcsMemberRanges),
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50682 |             .name = "member_ranges", .symbol = "EcsMemberRanges"
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50683 |         }),
      |         ~                            
../src/flecs/distr/flecs.h:9671:55: note: in definition of macro ‘ecs_component’
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                       ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50681:19: note: in expansion of macro ‘ecs_entity’
50681 |         .entity = ecs_entity(world, { .id = ecs_id(EcsMemberRanges),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.h:9671:53: error: expected primary-expression before ‘)’ token
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                     ^
../src/flecs/distr/flecs.c:50680:5: note: in expansion of macro ‘ecs_component’
50680 |     ecs_component(world, {
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50689:37: error: taking address of rvalue [-fpermissive]
50689 |         .entity = ecs_entity(world, { .id = ecs_id(EcsStruct),
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~
50690 |             .name = "struct", .symbol = "EcsStruct"
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50691 |         }),
      |         ~                            
../src/flecs/distr/flecs.h:9671:55: note: in definition of macro ‘ecs_component’
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                       ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50689:19: note: in expansion of macro ‘ecs_entity’
50689 |         .entity = ecs_entity(world, { .id = ecs_id(EcsStruct),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.h:9671:53: error: expected primary-expression before ‘)’ token
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                     ^
../src/flecs/distr/flecs.c:50688:5: note: in expansion of macro ‘ecs_component’
50688 |     ecs_component(world, {
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50697:37: error: taking address of rvalue [-fpermissive]
50697 |         .entity = ecs_entity(world, { .id = ecs_id(EcsArray),
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~
50698 |             .name = "array", .symbol = "EcsArray"
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50699 |         }),
      |         ~                            
../src/flecs/distr/flecs.h:9671:55: note: in definition of macro ‘ecs_component’
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                       ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50697:19: note: in expansion of macro ‘ecs_entity’
50697 |         .entity = ecs_entity(world, { .id = ecs_id(EcsArray),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.h:9671:53: error: expected primary-expression before ‘)’ token
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                     ^
../src/flecs/distr/flecs.c:50696:5: note: in expansion of macro ‘ecs_component’
50696 |     ecs_component(world, {
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50705:37: error: taking address of rvalue [-fpermissive]
50705 |         .entity = ecs_entity(world, { .id = ecs_id(EcsVector),
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~
50706 |             .name = "vector", .symbol = "EcsVector"
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50707 |         }),
      |         ~                            
../src/flecs/distr/flecs.h:9671:55: note: in definition of macro ‘ecs_component’
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                       ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50705:19: note: in expansion of macro ‘ecs_entity’
50705 |         .entity = ecs_entity(world, { .id = ecs_id(EcsVector),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.h:9671:53: error: expected primary-expression before ‘)’ token
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                     ^
../src/flecs/distr/flecs.c:50704:5: note: in expansion of macro ‘ecs_component’
50704 |     ecs_component(world, {
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50713:37: error: taking address of rvalue [-fpermissive]
50713 |         .entity = ecs_entity(world, { .id = ecs_id(EcsOpaque),
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~
50714 |             .name = "opaque", .symbol = "EcsOpaque"
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50715 |         }),
      |         ~                            
../src/flecs/distr/flecs.h:9671:55: note: in definition of macro ‘ecs_component’
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                       ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50713:19: note: in expansion of macro ‘ecs_entity’
50713 |         .entity = ecs_entity(world, { .id = ecs_id(EcsOpaque),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.h:9671:53: error: expected primary-expression before ‘)’ token
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                     ^
../src/flecs/distr/flecs.c:50712:5: note: in expansion of macro ‘ecs_component’
50712 |     ecs_component(world, {
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9671:55: note: in definition of macro ‘ecs_component’
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                       ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50721:19: note: in expansion of macro ‘ecs_entity’
50721 |         .entity = ecs_entity(world, { .id = ecs_id(EcsUnit),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.c:50723:20: note: in expansion of macro ‘ecs_ids’
50723 |             .add = ecs_ids(ecs_pair(EcsOnInstantiate, EcsInherit))
      |                    ^~~~~~~
../src/flecs/distr/flecs.h:9671:53: error: expected primary-expression before ‘)’ token
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                     ^
../src/flecs/distr/flecs.c:50720:5: note: in expansion of macro ‘ecs_component’
50720 |     ecs_component(world, {
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9671:55: note: in definition of macro ‘ecs_component’
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                       ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50730:19: note: in expansion of macro ‘ecs_entity’
50730 |         .entity = ecs_entity(world, { .id = ecs_id(EcsUnitPrefix),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.c:50732:20: note: in expansion of macro ‘ecs_ids’
50732 |             .add = ecs_ids(ecs_pair(EcsOnInstantiate, EcsInherit))
      |                    ^~~~~~~
../src/flecs/distr/flecs.h:9671:53: error: expected primary-expression before ‘)’ token
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                     ^
../src/flecs/distr/flecs.c:50729:5: note: in expansion of macro ‘ecs_component’
50729 |     ecs_component(world, {
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9671:55: note: in definition of macro ‘ecs_component’
 9671 |     ecs_component_init(world, &(ecs_component_desc_t) __VA_ARGS__ )
      |                                                       ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50739:19: note: in expansion of macro ‘ecs_entity’
50739 |         .entity = ecs_entity(world, { .id = EcsQuantity,
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.c:50741:20: note: in expansion of macro ‘ecs_ids’
50741 |             .add = ecs_ids(ecs_pair(EcsOnInstantiate, EcsInherit))
      |                    ^~~~~~~
../src/flecs/distr/flecs.c:50745:35: error: taking address of rvalue [-fpermissive]
50745 |     ecs_set_hooks(world, EcsType, { .ctor = flecs_default_ctor });
      |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50752:5: error: designator order for field ‘ecs_type_hooks_t::copy’ does not match declaration order in ‘ecs_type_hooks_t’
50752 |     });
      |     ^
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50747:45: error: taking address of rvalue [-fpermissive]
50747 |     ecs_set_hooks(world, EcsTypeSerializer, {
      |                                             ^
50748 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~          
50749 |         .move = ecs_move(EcsTypeSerializer),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
50750 |         .copy = ecs_copy(EcsTypeSerializer),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
50751 |         .dtor = ecs_dtor(EcsTypeSerializer)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
50752 |     });
      |     ~                                        
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50759:5: error: designator order for field ‘ecs_type_hooks_t::copy’ does not match declaration order in ‘ecs_type_hooks_t’
50759 |     });
      |     ^
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50754:37: error: taking address of rvalue [-fpermissive]
50754 |     ecs_set_hooks(world, EcsStruct, {
      |                                     ^
50755 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~  
50756 |         .move = ecs_move(EcsStruct),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
50757 |         .copy = ecs_copy(EcsStruct),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
50758 |         .dtor = ecs_dtor(EcsStruct)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~  
50759 |     });
      |     ~                                
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50761:37: error: taking address of rvalue [-fpermissive]
50761 |     ecs_set_hooks(world, EcsMember, {
      |                                     ^
50762 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~  
50763 |         .on_set = flecs_member_on_set
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50764 |     });
      |     ~                                
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50766:43: error: taking address of rvalue [-fpermissive]
50766 |     ecs_set_hooks(world, EcsMemberRanges, {
      |                                           ^
50767 |         .ctor = flecs_default_ctor
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~         
50768 |     });
      |     ~                                      
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50775:5: error: designator order for field ‘ecs_type_hooks_t::copy’ does not match declaration order in ‘ecs_type_hooks_t’
50775 |     });
      |     ^
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50770:35: error: taking address of rvalue [-fpermissive]
50770 |     ecs_set_hooks(world, EcsEnum, {
      |                                   ^
50771 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
50772 |         .move = ecs_move(EcsEnum),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~ 
50773 |         .copy = ecs_copy(EcsEnum),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~ 
50774 |         .dtor = ecs_dtor(EcsEnum)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~  
50775 |     });
      |     ~                              
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50782:5: error: designator order for field ‘ecs_type_hooks_t::copy’ does not match declaration order in ‘ecs_type_hooks_t’
50782 |     });
      |     ^
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50777:38: error: taking address of rvalue [-fpermissive]
50777 |     ecs_set_hooks(world, EcsBitmask, {
      |                                      ^
50778 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~   
50779 |         .move = ecs_move(EcsBitmask),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
50780 |         .copy = ecs_copy(EcsBitmask),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
50781 |         .dtor = ecs_dtor(EcsBitmask)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
50782 |     });
      |     ~                                 
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50789:5: error: designator order for field ‘ecs_type_hooks_t::copy’ does not match declaration order in ‘ecs_type_hooks_t’
50789 |     });
      |     ^
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50784:35: error: taking address of rvalue [-fpermissive]
50784 |     ecs_set_hooks(world, EcsUnit, {
      |                                   ^
50785 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
50786 |         .move = ecs_move(EcsUnit),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~ 
50787 |         .copy = ecs_copy(EcsUnit),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~ 
50788 |         .dtor = ecs_dtor(EcsUnit)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~  
50789 |     });
      |     ~                              
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50796:5: error: designator order for field ‘ecs_type_hooks_t::copy’ does not match declaration order in ‘ecs_type_hooks_t’
50796 |     });
      |     ^
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50791:41: error: taking address of rvalue [-fpermissive]
50791 |     ecs_set_hooks(world, EcsUnitPrefix, {
      |                                         ^
50792 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~      
50793 |         .move = ecs_move(EcsUnitPrefix),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
50794 |         .copy = ecs_copy(EcsUnitPrefix),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
50795 |         .dtor = ecs_dtor(EcsUnitPrefix)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
50796 |     });
      |     ~                                    
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:50801:5: note: in expansion of macro ‘ecs_observer’
50801 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:50807:5: note: in expansion of macro ‘ecs_observer’
50807 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:50813:5: note: in expansion of macro ‘ecs_observer’
50813 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:50819:5: note: in expansion of macro ‘ecs_observer’
50819 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:50825:5: note: in expansion of macro ‘ecs_observer’
50825 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:50831:5: note: in expansion of macro ‘ecs_observer’
50831 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:50837:5: note: in expansion of macro ‘ecs_observer’
50837 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:50843:5: note: in expansion of macro ‘ecs_observer’
50843 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:50849:5: note: in expansion of macro ‘ecs_observer’
50849 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:50855:5: note: in expansion of macro ‘ecs_observer’
50855 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:50861:5: note: in expansion of macro ‘ecs_observer’
50861 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:50867:5: note: in expansion of macro ‘ecs_observer’
50867 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:50873:5: note: in expansion of macro ‘ecs_observer’
50873 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:50879:5: note: in expansion of macro ‘ecs_observer’
50879 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:50891:52: error: taking address of rvalue [-fpermissive]
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
50893 |             .name = #type,\
      |             ~~~~~~~~~~~~~~~                         
50894 |             .symbol = #type });\
      |             ~~~~~~~~~~~~~~~~~                       
../src/flecs/distr/flecs.c:50891:52: note: in definition of macro ‘ECS_PRIMITIVE’
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |                                                     
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:50895:62: error: taking address of rvalue [-fpermissive]
50895 |         ecs_set(world, ecs_id(ecs_##type##_t), EcsPrimitive, {\
      |                                                              ^~
50896 |             .kind = primitive_kind\
      |             ~~~~~~~~~~~~~~~~~~~~~~~                           
50897 |         });
      |         ~                                                     
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50899:5: note: in expansion of macro ‘ECS_PRIMITIVE’
50899 |     ECS_PRIMITIVE(world, bool, EcsBool);
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50891:52: error: taking address of rvalue [-fpermissive]
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
50893 |             .name = #type,\
      |             ~~~~~~~~~~~~~~~                         
50894 |             .symbol = #type });\
      |             ~~~~~~~~~~~~~~~~~                       
../src/flecs/distr/flecs.c:50891:52: note: in definition of macro ‘ECS_PRIMITIVE’
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |                                                     
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:50895:62: error: taking address of rvalue [-fpermissive]
50895 |         ecs_set(world, ecs_id(ecs_##type##_t), EcsPrimitive, {\
      |                                                              ^~
50896 |             .kind = primitive_kind\
      |             ~~~~~~~~~~~~~~~~~~~~~~~                           
50897 |         });
      |         ~                                                     
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50900:5: note: in expansion of macro ‘ECS_PRIMITIVE’
50900 |     ECS_PRIMITIVE(world, char, EcsChar);
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50891:52: error: taking address of rvalue [-fpermissive]
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
50893 |             .name = #type,\
      |             ~~~~~~~~~~~~~~~                         
50894 |             .symbol = #type });\
      |             ~~~~~~~~~~~~~~~~~                       
../src/flecs/distr/flecs.c:50891:52: note: in definition of macro ‘ECS_PRIMITIVE’
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |                                                     
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:50895:62: error: taking address of rvalue [-fpermissive]
50895 |         ecs_set(world, ecs_id(ecs_##type##_t), EcsPrimitive, {\
      |                                                              ^~
50896 |             .kind = primitive_kind\
      |             ~~~~~~~~~~~~~~~~~~~~~~~                           
50897 |         });
      |         ~                                                     
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50901:5: note: in expansion of macro ‘ECS_PRIMITIVE’
50901 |     ECS_PRIMITIVE(world, byte, EcsByte);
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50891:52: error: taking address of rvalue [-fpermissive]
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
50893 |             .name = #type,\
      |             ~~~~~~~~~~~~~~~                         
50894 |             .symbol = #type });\
      |             ~~~~~~~~~~~~~~~~~                       
../src/flecs/distr/flecs.c:50891:52: note: in definition of macro ‘ECS_PRIMITIVE’
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |                                                     
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:50895:62: error: taking address of rvalue [-fpermissive]
50895 |         ecs_set(world, ecs_id(ecs_##type##_t), EcsPrimitive, {\
      |                                                              ^~
50896 |             .kind = primitive_kind\
      |             ~~~~~~~~~~~~~~~~~~~~~~~                           
50897 |         });
      |         ~                                                     
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50902:5: note: in expansion of macro ‘ECS_PRIMITIVE’
50902 |     ECS_PRIMITIVE(world, u8, EcsU8);
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50891:52: error: taking address of rvalue [-fpermissive]
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
50893 |             .name = #type,\
      |             ~~~~~~~~~~~~~~~                         
50894 |             .symbol = #type });\
      |             ~~~~~~~~~~~~~~~~~                       
../src/flecs/distr/flecs.c:50891:52: note: in definition of macro ‘ECS_PRIMITIVE’
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |                                                     
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:50895:62: error: taking address of rvalue [-fpermissive]
50895 |         ecs_set(world, ecs_id(ecs_##type##_t), EcsPrimitive, {\
      |                                                              ^~
50896 |             .kind = primitive_kind\
      |             ~~~~~~~~~~~~~~~~~~~~~~~                           
50897 |         });
      |         ~                                                     
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50903:5: note: in expansion of macro ‘ECS_PRIMITIVE’
50903 |     ECS_PRIMITIVE(world, u16, EcsU16);
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50891:52: error: taking address of rvalue [-fpermissive]
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
50893 |             .name = #type,\
      |             ~~~~~~~~~~~~~~~                         
50894 |             .symbol = #type });\
      |             ~~~~~~~~~~~~~~~~~                       
../src/flecs/distr/flecs.c:50891:52: note: in definition of macro ‘ECS_PRIMITIVE’
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |                                                     
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:50895:62: error: taking address of rvalue [-fpermissive]
50895 |         ecs_set(world, ecs_id(ecs_##type##_t), EcsPrimitive, {\
      |                                                              ^~
50896 |             .kind = primitive_kind\
      |             ~~~~~~~~~~~~~~~~~~~~~~~                           
50897 |         });
      |         ~                                                     
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50904:5: note: in expansion of macro ‘ECS_PRIMITIVE’
50904 |     ECS_PRIMITIVE(world, u32, EcsU32);
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50891:52: error: taking address of rvalue [-fpermissive]
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
50893 |             .name = #type,\
      |             ~~~~~~~~~~~~~~~                         
50894 |             .symbol = #type });\
      |             ~~~~~~~~~~~~~~~~~                       
../src/flecs/distr/flecs.c:50891:52: note: in definition of macro ‘ECS_PRIMITIVE’
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |                                                     
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:50895:62: error: taking address of rvalue [-fpermissive]
50895 |         ecs_set(world, ecs_id(ecs_##type##_t), EcsPrimitive, {\
      |                                                              ^~
50896 |             .kind = primitive_kind\
      |             ~~~~~~~~~~~~~~~~~~~~~~~                           
50897 |         });
      |         ~                                                     
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50905:5: note: in expansion of macro ‘ECS_PRIMITIVE’
50905 |     ECS_PRIMITIVE(world, u64, EcsU64);
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50891:52: error: taking address of rvalue [-fpermissive]
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
50893 |             .name = #type,\
      |             ~~~~~~~~~~~~~~~                         
50894 |             .symbol = #type });\
      |             ~~~~~~~~~~~~~~~~~                       
../src/flecs/distr/flecs.c:50891:52: note: in definition of macro ‘ECS_PRIMITIVE’
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |                                                     
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:50895:62: error: taking address of rvalue [-fpermissive]
50895 |         ecs_set(world, ecs_id(ecs_##type##_t), EcsPrimitive, {\
      |                                                              ^~
50896 |             .kind = primitive_kind\
      |             ~~~~~~~~~~~~~~~~~~~~~~~                           
50897 |         });
      |         ~                                                     
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50906:5: note: in expansion of macro ‘ECS_PRIMITIVE’
50906 |     ECS_PRIMITIVE(world, uptr, EcsUPtr);
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50891:52: error: taking address of rvalue [-fpermissive]
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
50893 |             .name = #type,\
      |             ~~~~~~~~~~~~~~~                         
50894 |             .symbol = #type });\
      |             ~~~~~~~~~~~~~~~~~                       
../src/flecs/distr/flecs.c:50891:52: note: in definition of macro ‘ECS_PRIMITIVE’
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |                                                     
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:50895:62: error: taking address of rvalue [-fpermissive]
50895 |         ecs_set(world, ecs_id(ecs_##type##_t), EcsPrimitive, {\
      |                                                              ^~
50896 |             .kind = primitive_kind\
      |             ~~~~~~~~~~~~~~~~~~~~~~~                           
50897 |         });
      |         ~                                                     
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50907:5: note: in expansion of macro ‘ECS_PRIMITIVE’
50907 |     ECS_PRIMITIVE(world, i8, EcsI8);
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50891:52: error: taking address of rvalue [-fpermissive]
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
50893 |             .name = #type,\
      |             ~~~~~~~~~~~~~~~                         
50894 |             .symbol = #type });\
      |             ~~~~~~~~~~~~~~~~~                       
../src/flecs/distr/flecs.c:50891:52: note: in definition of macro ‘ECS_PRIMITIVE’
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |                                                     
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:50895:62: error: taking address of rvalue [-fpermissive]
50895 |         ecs_set(world, ecs_id(ecs_##type##_t), EcsPrimitive, {\
      |                                                              ^~
50896 |             .kind = primitive_kind\
      |             ~~~~~~~~~~~~~~~~~~~~~~~                           
50897 |         });
      |         ~                                                     
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50908:5: note: in expansion of macro ‘ECS_PRIMITIVE’
50908 |     ECS_PRIMITIVE(world, i16, EcsI16);
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50891:52: error: taking address of rvalue [-fpermissive]
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
50893 |             .name = #type,\
      |             ~~~~~~~~~~~~~~~                         
50894 |             .symbol = #type });\
      |             ~~~~~~~~~~~~~~~~~                       
../src/flecs/distr/flecs.c:50891:52: note: in definition of macro ‘ECS_PRIMITIVE’
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |                                                     
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:50895:62: error: taking address of rvalue [-fpermissive]
50895 |         ecs_set(world, ecs_id(ecs_##type##_t), EcsPrimitive, {\
      |                                                              ^~
50896 |             .kind = primitive_kind\
      |             ~~~~~~~~~~~~~~~~~~~~~~~                           
50897 |         });
      |         ~                                                     
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50909:5: note: in expansion of macro ‘ECS_PRIMITIVE’
50909 |     ECS_PRIMITIVE(world, i32, EcsI32);
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50891:52: error: taking address of rvalue [-fpermissive]
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
50893 |             .name = #type,\
      |             ~~~~~~~~~~~~~~~                         
50894 |             .symbol = #type });\
      |             ~~~~~~~~~~~~~~~~~                       
../src/flecs/distr/flecs.c:50891:52: note: in definition of macro ‘ECS_PRIMITIVE’
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |                                                     
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:50895:62: error: taking address of rvalue [-fpermissive]
50895 |         ecs_set(world, ecs_id(ecs_##type##_t), EcsPrimitive, {\
      |                                                              ^~
50896 |             .kind = primitive_kind\
      |             ~~~~~~~~~~~~~~~~~~~~~~~                           
50897 |         });
      |         ~                                                     
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50910:5: note: in expansion of macro ‘ECS_PRIMITIVE’
50910 |     ECS_PRIMITIVE(world, i64, EcsI64);
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50891:52: error: taking address of rvalue [-fpermissive]
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
50893 |             .name = #type,\
      |             ~~~~~~~~~~~~~~~                         
50894 |             .symbol = #type });\
      |             ~~~~~~~~~~~~~~~~~                       
../src/flecs/distr/flecs.c:50891:52: note: in definition of macro ‘ECS_PRIMITIVE’
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |                                                     
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:50895:62: error: taking address of rvalue [-fpermissive]
50895 |         ecs_set(world, ecs_id(ecs_##type##_t), EcsPrimitive, {\
      |                                                              ^~
50896 |             .kind = primitive_kind\
      |             ~~~~~~~~~~~~~~~~~~~~~~~                           
50897 |         });
      |         ~                                                     
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50911:5: note: in expansion of macro ‘ECS_PRIMITIVE’
50911 |     ECS_PRIMITIVE(world, iptr, EcsIPtr);
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50891:52: error: taking address of rvalue [-fpermissive]
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
50893 |             .name = #type,\
      |             ~~~~~~~~~~~~~~~                         
50894 |             .symbol = #type });\
      |             ~~~~~~~~~~~~~~~~~                       
../src/flecs/distr/flecs.c:50891:52: note: in definition of macro ‘ECS_PRIMITIVE’
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |                                                     
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:50895:62: error: taking address of rvalue [-fpermissive]
50895 |         ecs_set(world, ecs_id(ecs_##type##_t), EcsPrimitive, {\
      |                                                              ^~
50896 |             .kind = primitive_kind\
      |             ~~~~~~~~~~~~~~~~~~~~~~~                           
50897 |         });
      |         ~                                                     
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50912:5: note: in expansion of macro ‘ECS_PRIMITIVE’
50912 |     ECS_PRIMITIVE(world, f32, EcsF32);
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50891:52: error: taking address of rvalue [-fpermissive]
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
50893 |             .name = #type,\
      |             ~~~~~~~~~~~~~~~                         
50894 |             .symbol = #type });\
      |             ~~~~~~~~~~~~~~~~~                       
../src/flecs/distr/flecs.c:50891:52: note: in definition of macro ‘ECS_PRIMITIVE’
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |                                                     
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:50895:62: error: taking address of rvalue [-fpermissive]
50895 |         ecs_set(world, ecs_id(ecs_##type##_t), EcsPrimitive, {\
      |                                                              ^~
50896 |             .kind = primitive_kind\
      |             ~~~~~~~~~~~~~~~~~~~~~~~                           
50897 |         });
      |         ~                                                     
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50913:5: note: in expansion of macro ‘ECS_PRIMITIVE’
50913 |     ECS_PRIMITIVE(world, f64, EcsF64);
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50891:52: error: taking address of rvalue [-fpermissive]
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
50893 |             .name = #type,\
      |             ~~~~~~~~~~~~~~~                         
50894 |             .symbol = #type });\
      |             ~~~~~~~~~~~~~~~~~                       
../src/flecs/distr/flecs.c:50891:52: note: in definition of macro ‘ECS_PRIMITIVE’
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |                                                     
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:50895:62: error: taking address of rvalue [-fpermissive]
50895 |         ecs_set(world, ecs_id(ecs_##type##_t), EcsPrimitive, {\
      |                                                              ^~
50896 |             .kind = primitive_kind\
      |             ~~~~~~~~~~~~~~~~~~~~~~~                           
50897 |         });
      |         ~                                                     
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50914:5: note: in expansion of macro ‘ECS_PRIMITIVE’
50914 |     ECS_PRIMITIVE(world, string, EcsString);
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50891:52: error: taking address of rvalue [-fpermissive]
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
50893 |             .name = #type,\
      |             ~~~~~~~~~~~~~~~                         
50894 |             .symbol = #type });\
      |             ~~~~~~~~~~~~~~~~~                       
../src/flecs/distr/flecs.c:50891:52: note: in definition of macro ‘ECS_PRIMITIVE’
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |                                                     
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:50895:62: error: taking address of rvalue [-fpermissive]
50895 |         ecs_set(world, ecs_id(ecs_##type##_t), EcsPrimitive, {\
      |                                                              ^~
50896 |             .kind = primitive_kind\
      |             ~~~~~~~~~~~~~~~~~~~~~~~                           
50897 |         });
      |         ~                                                     
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50915:5: note: in expansion of macro ‘ECS_PRIMITIVE’
50915 |     ECS_PRIMITIVE(world, entity, EcsEntity);
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50891:52: error: taking address of rvalue [-fpermissive]
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~          
50893 |             .name = #type,\
      |             ~~~~~~~~~~~~~~~                         
50894 |             .symbol = #type });\
      |             ~~~~~~~~~~~~~~~~~                       
../src/flecs/distr/flecs.c:50891:52: note: in definition of macro ‘ECS_PRIMITIVE’
50891 |         ecs_entity_init(world, &(ecs_entity_desc_t){\
      |                                                    ^~
50892 |             .id = ecs_id(ecs_##type##_t),\
      |                                                     
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:50895:62: error: taking address of rvalue [-fpermissive]
50895 |         ecs_set(world, ecs_id(ecs_##type##_t), EcsPrimitive, {\
      |                                                              ^~
50896 |             .kind = primitive_kind\
      |             ~~~~~~~~~~~~~~~~~~~~~~~                           
50897 |         });
      |         ~                                                     
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50916:5: note: in expansion of macro ‘ECS_PRIMITIVE’
50916 |     ECS_PRIMITIVE(world, id, EcsId);
      |     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:50925:5: error: designator order for field ‘ecs_type_hooks_t::dtor’ does not match declaration order in ‘ecs_type_hooks_t’
50925 |     });
      |     ^
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50920:40: error: taking address of rvalue [-fpermissive]
50920 |     ecs_set_hooks(world, ecs_string_t, {
      |                                        ^
50921 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~     
50922 |         .copy = ecs_copy(ecs_string_t),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
50923 |         .move = ecs_move(ecs_string_t),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
50924 |         .dtor = ecs_dtor(ecs_string_t)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
50925 |     });
      |     ~                                   
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50928:66: error: taking address of rvalue [-fpermissive]
50928 |     ecs_set(world, ecs_id(EcsStruct),  EcsDefaultChildComponent, {ecs_id(EcsMember)});
      |                                                                  ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50929:66: error: taking address of rvalue [-fpermissive]
50929 |     ecs_set(world, ecs_id(EcsMember),  EcsDefaultChildComponent, {ecs_id(EcsMember)});
      |                                                                  ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50930:66: error: taking address of rvalue [-fpermissive]
50930 |     ecs_set(world, ecs_id(EcsEnum),    EcsDefaultChildComponent, {EcsConstant});
      |                                                                  ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:50931:66: error: taking address of rvalue [-fpermissive]
50931 |     ecs_set(world, ecs_id(EcsBitmask), EcsDefaultChildComponent, {EcsConstant});
      |                                                                  ^~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_rtt_struct_ctor(void*, int32_t, const ecs_type_info_t*)’:
../src/flecs/distr/flecs.c:51044:54: error: invalid conversion from ‘void*’ to ‘ecs_rtt_struct_ctx_t*’ [-fpermissive]
51044 |     ecs_rtt_struct_ctx_t *rtt_ctx = type_info->hooks.lifecycle_ctx;
      |                                     ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
      |                                                      |
      |                                                      void*
../src/flecs/distr/flecs.c: In function ‘void flecs_rtt_struct_dtor(void*, int32_t, const ecs_type_info_t*)’:
../src/flecs/distr/flecs.c:51058:54: error: invalid conversion from ‘void*’ to ‘ecs_rtt_struct_ctx_t*’ [-fpermissive]
51058 |     ecs_rtt_struct_ctx_t *rtt_ctx = type_info->hooks.lifecycle_ctx;
      |                                     ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
      |                                                      |
      |                                                      void*
../src/flecs/distr/flecs.c: In function ‘void flecs_rtt_struct_move(void*, void*, int32_t, const ecs_type_info_t*)’:
../src/flecs/distr/flecs.c:51073:54: error: invalid conversion from ‘void*’ to ‘ecs_rtt_struct_ctx_t*’ [-fpermissive]
51073 |     ecs_rtt_struct_ctx_t *rtt_ctx = type_info->hooks.lifecycle_ctx;
      |                                     ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
      |                                                      |
      |                                                      void*
../src/flecs/distr/flecs.c: In function ‘void flecs_rtt_struct_copy(void*, const void*, int32_t, const ecs_type_info_t*)’:
../src/flecs/distr/flecs.c:51104:54: error: invalid conversion from ‘void*’ to ‘ecs_rtt_struct_ctx_t*’ [-fpermissive]
51104 |     ecs_rtt_struct_ctx_t *rtt_ctx = type_info->hooks.lifecycle_ctx;
      |                                     ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
      |                                                      |
      |                                                      void*
../src/flecs/distr/flecs.c: In function ‘void flecs_rtt_free_lifecycle_struct_ctx(void*)’:
../src/flecs/distr/flecs.c:51133:43: error: invalid conversion from ‘void*’ to ‘ecs_rtt_struct_ctx_t*’ [-fpermissive]
51133 |     ecs_rtt_struct_ctx_t *lifecycle_ctx = ctx;
      |                                           ^~~
      |                                           |
      |                                           void*
../src/flecs/distr/flecs.c: In function ‘void flecs_rtt_init_default_hooks_struct(ecs_world_t*, ecs_entity_t, const ecs_type_info_t*)’:
../src/flecs/distr/flecs.c:51210:42: error: invalid conversion from ‘void*’ to ‘ecs_member_t*’ [-fpermissive]
51210 |     ecs_member_t *members = ecs_vec_first(&struct_info->members);
      |                             ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.c: In function ‘void flecs_rtt_array_ctor(void*, int32_t, const ecs_type_info_t*)’:
../src/flecs/distr/flecs.c:51314:53: error: invalid conversion from ‘void*’ to ‘ecs_rtt_array_ctx_t*’ [-fpermissive]
51314 |     ecs_rtt_array_ctx_t *rtt_ctx = type_info->hooks.lifecycle_ctx;
      |                                    ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
      |                                                     |
      |                                                     void*
../src/flecs/distr/flecs.c: In function ‘void flecs_rtt_array_dtor(void*, int32_t, const ecs_type_info_t*)’:
../src/flecs/distr/flecs.c:51332:53: error: invalid conversion from ‘void*’ to ‘ecs_rtt_array_ctx_t*’ [-fpermissive]
51332 |     ecs_rtt_array_ctx_t *rtt_ctx = type_info->hooks.lifecycle_ctx;
      |                                    ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
      |                                                     |
      |                                                     void*
../src/flecs/distr/flecs.c: In function ‘void flecs_rtt_array_move(void*, void*, int32_t, const ecs_type_info_t*)’:
../src/flecs/distr/flecs.c:51351:53: error: invalid conversion from ‘void*’ to ‘ecs_rtt_array_ctx_t*’ [-fpermissive]
51351 |     ecs_rtt_array_ctx_t *rtt_ctx = type_info->hooks.lifecycle_ctx;
      |                                    ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
      |                                                     |
      |                                                     void*
../src/flecs/distr/flecs.c: In function ‘void flecs_rtt_array_copy(void*, const void*, int32_t, const ecs_type_info_t*)’:
../src/flecs/distr/flecs.c:51371:53: error: invalid conversion from ‘void*’ to ‘ecs_rtt_array_ctx_t*’ [-fpermissive]
51371 |     ecs_rtt_array_ctx_t *rtt_ctx = type_info->hooks.lifecycle_ctx;
      |                                    ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
      |                                                     |
      |                                                     void*
../src/flecs/distr/flecs.c: In function ‘void flecs_rtt_vector_ctor(void*, int32_t, const ecs_type_info_t*)’:
../src/flecs/distr/flecs.c:51459:54: error: invalid conversion from ‘void*’ to ‘ecs_rtt_vector_ctx_t*’ [-fpermissive]
51459 |     ecs_rtt_vector_ctx_t *rtt_ctx = type_info->hooks.lifecycle_ctx;
      |                                     ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
      |                                                      |
      |                                                      void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:3942:31: error: invalid conversion from ‘void*’ to ‘ecs_vec_t*’ [-fpermissive]
 3942 | #define ECS_OFFSET(o, offset) reinterpret_cast<void*>((reinterpret_cast<uintptr_t>(o)) + (static_cast<uintptr_t>(offset)))
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.h:3948:36: note: in expansion of macro ‘ECS_OFFSET’
 3948 | #define ECS_ELEM(ptr, size, index) ECS_OFFSET(ptr, (size) * (index))
      |                                    ^~~~~~~~~~
../src/flecs/distr/flecs.c:51462:26: note: in expansion of macro ‘ECS_ELEM’
51462 |         ecs_vec_t *vec = ECS_ELEM(ptr, type_info->size, i);
      |                          ^~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_rtt_vector_dtor(void*, int32_t, const ecs_type_info_t*)’:
../src/flecs/distr/flecs.c:51475:54: error: invalid conversion from ‘void*’ to ‘ecs_rtt_vector_ctx_t*’ [-fpermissive]
51475 |     ecs_rtt_vector_ctx_t *rtt_ctx = type_info->hooks.lifecycle_ctx;
      |                                     ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
      |                                                      |
      |                                                      void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:3942:31: error: invalid conversion from ‘void*’ to ‘ecs_vec_t*’ [-fpermissive]
 3942 | #define ECS_OFFSET(o, offset) reinterpret_cast<void*>((reinterpret_cast<uintptr_t>(o)) + (static_cast<uintptr_t>(offset)))
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.h:3948:36: note: in expansion of macro ‘ECS_OFFSET’
 3948 | #define ECS_ELEM(ptr, size, index) ECS_OFFSET(ptr, (size) * (index))
      |                                    ^~~~~~~~~~
../src/flecs/distr/flecs.c:51479:26: note: in expansion of macro ‘ECS_ELEM’
51479 |         ecs_vec_t *vec = ECS_ELEM(ptr, type_info->size, i);
      |                          ^~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_rtt_vector_move(void*, void*, int32_t, const ecs_type_info_t*)’:
../src/flecs/distr/flecs.h:3942:31: error: invalid conversion from ‘void*’ to ‘ecs_vec_t*’ [-fpermissive]
 3942 | #define ECS_OFFSET(o, offset) reinterpret_cast<void*>((reinterpret_cast<uintptr_t>(o)) + (static_cast<uintptr_t>(offset)))
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.h:3948:36: note: in expansion of macro ‘ECS_OFFSET’
 3948 | #define ECS_ELEM(ptr, size, index) ECS_OFFSET(ptr, (size) * (index))
      |                                    ^~~~~~~~~~
../src/flecs/distr/flecs.c:51499:30: note: in expansion of macro ‘ECS_ELEM’
51499 |         ecs_vec_t *src_vec = ECS_ELEM(src_ptr, type_info->size, i);
      |                              ^~~~~~~~
../src/flecs/distr/flecs.h:3942:31: error: invalid conversion from ‘void*’ to ‘ecs_vec_t*’ [-fpermissive]
 3942 | #define ECS_OFFSET(o, offset) reinterpret_cast<void*>((reinterpret_cast<uintptr_t>(o)) + (static_cast<uintptr_t>(offset)))
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.h:3948:36: note: in expansion of macro ‘ECS_OFFSET’
 3948 | #define ECS_ELEM(ptr, size, index) ECS_OFFSET(ptr, (size) * (index))
      |                                    ^~~~~~~~~~
../src/flecs/distr/flecs.c:51500:30: note: in expansion of macro ‘ECS_ELEM’
51500 |         ecs_vec_t *dst_vec = ECS_ELEM(dst_ptr, type_info->size, i);
      |                              ^~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_rtt_vector_copy(void*, const void*, int32_t, const ecs_type_info_t*)’:
../src/flecs/distr/flecs.c:51515:54: error: invalid conversion from ‘void*’ to ‘ecs_rtt_vector_ctx_t*’ [-fpermissive]
51515 |     ecs_rtt_vector_ctx_t *rtt_ctx = type_info->hooks.lifecycle_ctx;
      |                                     ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
      |                                                      |
      |                                                      void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:3942:31: error: invalid conversion from ‘void*’ to ‘const ecs_vec_t*’ [-fpermissive]
 3942 | #define ECS_OFFSET(o, offset) reinterpret_cast<void*>((reinterpret_cast<uintptr_t>(o)) + (static_cast<uintptr_t>(offset)))
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.h:3948:36: note: in expansion of macro ‘ECS_OFFSET’
 3948 | #define ECS_ELEM(ptr, size, index) ECS_OFFSET(ptr, (size) * (index))
      |                                    ^~~~~~~~~~
../src/flecs/distr/flecs.c:51526:36: note: in expansion of macro ‘ECS_ELEM’
51526 |         const ecs_vec_t *src_vec = ECS_ELEM(src_ptr, type_info->size, i);
      |                                    ^~~~~~~~
../src/flecs/distr/flecs.h:3942:31: error: invalid conversion from ‘void*’ to ‘ecs_vec_t*’ [-fpermissive]
 3942 | #define ECS_OFFSET(o, offset) reinterpret_cast<void*>((reinterpret_cast<uintptr_t>(o)) + (static_cast<uintptr_t>(offset)))
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.h:3948:36: note: in expansion of macro ‘ECS_OFFSET’
 3948 | #define ECS_ELEM(ptr, size, index) ECS_OFFSET(ptr, (size) * (index))
      |                                    ^~~~~~~~~~
../src/flecs/distr/flecs.c:51527:30: note: in expansion of macro ‘ECS_ELEM’
51527 |         ecs_vec_t *dst_vec = ECS_ELEM(dst_ptr, type_info->size, i);
      |                              ^~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_rtt_init_default_hooks(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:51617:36: error: taking address of rvalue [-fpermissive]
51617 |                 &(ecs_type_hooks_t){.ctor = flecs_default_ctor});
      |                                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_meta_type_op_kind_t flecs_meta_primitive_to_op_kind(ecs_primitive_kind_t)’:
../src/flecs/distr/flecs.c:51640:27: error: invalid conversion from ‘int’ to ‘ecs_meta_type_op_kind_t’ [-fpermissive]
51640 |     return EcsOpPrimitive + kind;
      |            ~~~~~~~~~~~~~~~^~~~~~
      |                           |
      |                           int
../src/flecs/distr/flecs.c: In function ‘int flecs_meta_serialize_array_component(ecs_world_t*, ecs_entity_t, ecs_vec_t*)’:
../src/flecs/distr/flecs.c:51757:46: error: invalid conversion from ‘void*’ to ‘ecs_meta_type_op_t*’ [-fpermissive]
51757 |     ecs_meta_type_op_t *first = ecs_vec_first(ops);
      |                                 ~~~~~~~~~~~~~^~~~~
      |                                              |
      |                                              void*
../src/flecs/distr/flecs.c: In function ‘int flecs_meta_serialize_struct(ecs_world_t*, ecs_entity_t, ecs_size_t, ecs_vec_t*)’:
../src/flecs/distr/flecs.c:51808:42: error: invalid conversion from ‘void*’ to ‘ecs_member_t*’ [-fpermissive]
51808 |     ecs_member_t *members = ecs_vec_first(&ptr->members);
      |                             ~~~~~~~~~~~~~^~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_os_thread_t posix_thread_new(ecs_os_thread_callback_t, void*)’:
../src/flecs/distr/flecs.h:2607:47: error: invalid conversion from ‘void*’ to ‘pthread_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 2607 | #define ecs_os_malloc(size) ecs_os_api.malloc_(size)
      |                             ~~~~~~~~~~~~~~~~~~^~~~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c:52253:25: note: in expansion of macro ‘ecs_os_malloc’
52253 |     pthread_t *thread = ecs_os_malloc(sizeof(pthread_t));
      |                         ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_os_mutex_t posix_mutex_new()’:
../src/flecs/distr/flecs.h:2607:47: error: invalid conversion from ‘void*’ to ‘pthread_mutex_t*’ [-fpermissive]
 2607 | #define ecs_os_malloc(size) ecs_os_api.malloc_(size)
      |                             ~~~~~~~~~~~~~~~~~~^~~~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c:52361:30: note: in expansion of macro ‘ecs_os_malloc’
52361 |     pthread_mutex_t *mutex = ecs_os_malloc(sizeof(pthread_mutex_t));
      |                              ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_os_cond_t posix_cond_new()’:
../src/flecs/distr/flecs.h:2607:47: error: invalid conversion from ‘void*’ to ‘pthread_cond_t*’ [-fpermissive]
 2607 | #define ecs_os_malloc(size) ecs_os_api.malloc_(size)
      |                             ~~~~~~~~~~~~~~~~~~^~~~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c:52399:28: note: in expansion of macro ‘ecs_os_malloc’
52399 |     pthread_cond_t *cond = ecs_os_malloc(sizeof(pthread_cond_t));
      |                            ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘EcsPoly* flecs_pipeline_term_system(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:52805:41: error: invalid conversion from ‘void*’ to ‘EcsPoly*’ [-fpermissive]
52805 |     EcsPoly *poly = ecs_table_get_column(it->table, index, it->offset);
      |                     ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                         |
      |                                         void*
../src/flecs/distr/flecs.c: In function ‘void flecs_run_startup_systems(ecs_world_t*)’:
../src/flecs/distr/flecs.c:53260:76: error: expected primary-expression before ‘)’ token
53260 |     ecs_entity_t start_pip = ecs_pipeline_init(world, &(ecs_pipeline_desc_t){
      |                                                                            ^
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_pipeline_init(ecs_world_t*, const ecs_pipeline_desc_t*)’:
../src/flecs/distr/flecs.c:53402:41: error: taking address of rvalue [-fpermissive]
53402 |     ecs_set(world, result, EcsPipeline, { pq });
      |                                         ^~~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:53405:1: error: jump to label ‘error’
53405 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:53395:5: note: in expansion of macro ‘ecs_check’
53395 |     ecs_check(query->terms[0].id == EcsSystem,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:53398:27: note:   crosses initialization of ‘ecs_pipeline_state_t* pq’
53398 |     ecs_pipeline_state_t *pq = ecs_os_calloc_t(ecs_pipeline_state_t);
      |                           ^~
../src/flecs/distr/flecs.c:53405:1: error: jump to label ‘error’
53405 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:53393:5: note: in expansion of macro ‘ecs_check’
53393 |     ecs_check(query->terms != NULL, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:53398:27: note:   crosses initialization of ‘ecs_pipeline_state_t* pq’
53398 |     ecs_pipeline_state_t *pq = ecs_os_calloc_t(ecs_pipeline_state_t);
      |                           ^~
../src/flecs/distr/flecs.c:53405:1: error: jump to label ‘error’
53405 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:53374:5: note: in expansion of macro ‘ecs_check’
53374 |     ecs_check(desc != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:53398:27: note:   crosses initialization of ‘ecs_pipeline_state_t* pq’
53398 |     ecs_pipeline_state_t *pq = ecs_os_calloc_t(ecs_pipeline_state_t);
      |                           ^~
../src/flecs/distr/flecs.c:53387:18: note:   crosses initialization of ‘ecs_query_t* query’
53387 |     ecs_query_t *query = ecs_query_init(world, &qd);
      |                  ^~~~~
../src/flecs/distr/flecs.c:53381:22: note:   crosses initialization of ‘ecs_query_desc_t qd’
53381 |     ecs_query_desc_t qd = desc->query;
      |                      ^~
../src/flecs/distr/flecs.c:53376:18: note:   crosses initialization of ‘ecs_entity_t result’
53376 |     ecs_entity_t result = desc->entity;
      |                  ^~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void FlecsPipelineImport(ecs_world_t*)’:
../src/flecs/distr/flecs.c:3008:37: error: taking address of rvalue [-fpermissive]
 3008 |         .entity = ecs_entity(world, { .id = ecs_id(id_), .name = #id_, .symbol = #id_ }),\
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:53451:5: note: in expansion of macro ‘flecs_bootstrap_component’
53451 |     flecs_bootstrap_component(world, EcsPipeline);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:3007:53: error: expected primary-expression before ‘)’ token
 3007 |     ecs_component_init(world, &(ecs_component_desc_t){\
      |                                                     ^
../src/flecs/distr/flecs.c:53451:5: note: in expansion of macro ‘flecs_bootstrap_component’
53451 |     flecs_bootstrap_component(world, EcsPipeline);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:53458:46: error: taking address of rvalue [-fpermissive]
53458 |     ecs_entity_t phase_0 = ecs_entity(world, {0});
      |                                              ^~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:53459:55: note: in expansion of macro ‘ecs_ids’
53459 |     ecs_entity_t phase_1 = ecs_entity(world, { .add = ecs_ids(ecs_dependson(phase_0)) });
      |                                                       ^~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:53460:55: note: in expansion of macro ‘ecs_ids’
53460 |     ecs_entity_t phase_2 = ecs_entity(world, { .add = ecs_ids(ecs_dependson(phase_1)) });
      |                                                       ^~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:53461:55: note: in expansion of macro ‘ecs_ids’
53461 |     ecs_entity_t phase_3 = ecs_entity(world, { .add = ecs_ids(ecs_dependson(phase_2)) });
      |                                                       ^~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:53462:55: note: in expansion of macro ‘ecs_ids’
53462 |     ecs_entity_t phase_4 = ecs_entity(world, { .add = ecs_ids(ecs_dependson(phase_3)) });
      |                                                       ^~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:53463:55: note: in expansion of macro ‘ecs_ids’
53463 |     ecs_entity_t phase_5 = ecs_entity(world, { .add = ecs_ids(ecs_dependson(phase_4)) });
      |                                                       ^~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:53464:55: note: in expansion of macro ‘ecs_ids’
53464 |     ecs_entity_t phase_6 = ecs_entity(world, { .add = ecs_ids(ecs_dependson(phase_5)) });
      |                                                       ^~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:53465:55: note: in expansion of macro ‘ecs_ids’
53465 |     ecs_entity_t phase_7 = ecs_entity(world, { .add = ecs_ids(ecs_dependson(phase_6)) });
      |                                                       ^~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:53466:55: note: in expansion of macro ‘ecs_ids’
53466 |     ecs_entity_t phase_8 = ecs_entity(world, { .add = ecs_ids(ecs_dependson(phase_7)) });
      |                                                       ^~~~~~~
../src/flecs/distr/flecs.c:53480:39: error: taking address of rvalue [-fpermissive]
53480 |     ecs_set_hooks(world, EcsPipeline, {
      |                                       ^
53481 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~    
53482 |         .dtor = ecs_dtor(EcsPipeline),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
53483 |         .move = ecs_move(EcsPipeline)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
53484 |     });
      |     ~                                  
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:53487:37: error: taking address of rvalue [-fpermissive]
53487 |         .entity = ecs_entity(world, { .name = "BuiltinPipeline" }),
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:11890:53: note: in definition of macro ‘ecs_pipeline’
11890 |     ecs_pipeline_init(world, &(ecs_pipeline_desc_t) __VA_ARGS__ )
      |                                                     ^~~~~~~~~~~
../src/flecs/distr/flecs.c:53487:19: note: in expansion of macro ‘ecs_entity’
53487 |         .entity = ecs_entity(world, { .name = "BuiltinPipeline" }),
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.h:11890:51: error: expected primary-expression before ‘)’ token
11890 |     ecs_pipeline_init(world, &(ecs_pipeline_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:53486:23: note: in expansion of macro ‘ecs_pipeline’
53486 |     world->pipeline = ecs_pipeline(world, {
      |                       ^~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void* flecs_worker(void*)’:
../src/flecs/distr/flecs.c:53539:26: error: invalid conversion from ‘void*’ to ‘ecs_stage_t*’ [-fpermissive]
53539 |     ecs_stage_t *stage = arg;
      |                          ^~~
      |                          |
      |                          void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void* flecs_ast_new_(ecs_script_parser_t*, ecs_size_t, ecs_script_node_kind_t)’:
../src/flecs/distr/flecs.h:2005:44: error: invalid conversion from ‘void*’ to ‘ecs_script_node_t*’ [-fpermissive]
 2005 | #define flecs_calloc(a, size) flecs_bcalloc(flecs_allocator_get(a, size))
      |                               ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                            |
      |                                            void*
../src/flecs/distr/flecs.c:53840:33: note: in expansion of macro ‘flecs_calloc’
53840 |     ecs_script_node_t *result = flecs_calloc(a, size);
      |                                 ^~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘const char* flecs_parse_multiline_string(ecs_meta_cursor_t*, const char*, const char*, const char*)’:
../src/flecs/distr/flecs.c:54529:1: error: jump to label ‘error’
54529 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:54520:14: note:   from here
54520 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:54522:11: note:   crosses initialization of ‘char* strval’
54522 |     char *strval = ecs_strbuf_get(&str);
      |           ^~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_value_t flecs_dotresolve_var(ecs_world_t*, ecs_script_vars_t*, char*)’:
../src/flecs/distr/flecs.c:54579:5: error: designator order for field ‘ecs_value_t::type’ does not match declaration order in ‘ecs_value_t’
54579 |     };
      |     ^
../src/flecs/distr/flecs.c: In function ‘int flecs_meta_call(ecs_world_t*, ecs_value_stack_t*, const char*, const char*, const char*, ecs_meta_cursor_t*, const char*)’:
../src/flecs/distr/flecs.c:54611:45: error: invalid conversion from ‘void*’ to ‘char**’ [-fpermissive]
54611 |         char **result = flecs_expr_value_new(stack, ecs_id(ecs_string_t));
      |                         ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                             |
      |                                             void*
../src/flecs/distr/flecs.c:54622:45: error: invalid conversion from ‘void*’ to ‘char**’ [-fpermissive]
54622 |         char **result = flecs_expr_value_new(stack, ecs_id(ecs_string_t));
      |                         ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                             |
      |                                             void*
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t flecs_binary_expr_type(ecs_world_t*, const char*, const char*, const char*, ecs_value_t*, ecs_value_t*, ecs_expr_oper_t, ecs_entity_t*)’:
../src/flecs/distr/flecs.c:55077:1: error: jump to label ‘error’
55077 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10874:5: note: in expansion of macro ‘ecs_dummy_check’
10874 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:55022:9: note: in expansion of macro ‘ecs_throw’
55022 |         ecs_throw(ECS_INTERNAL_ERROR, "invalid operator");
      |         ^~~~~~~~~
../src/flecs/distr/flecs.c:55040:18: note:   crosses initialization of ‘ecs_entity_t rtype’
55040 |     ecs_entity_t rtype = flecs_largest_type(rtype_ptr);
      |                  ^~~~~
../src/flecs/distr/flecs.c:55039:18: note:   crosses initialization of ‘ecs_entity_t ltype’
55039 |     ecs_entity_t ltype = flecs_largest_type(ltype_ptr);
      |                  ^~~~~
../src/flecs/distr/flecs.c:55027:25: note:   crosses initialization of ‘const EcsPrimitive* rtype_ptr’
55027 |     const EcsPrimitive *rtype_ptr = ecs_get(world, rvalue->type, EcsPrimitive);
      |                         ^~~~~~~~~
../src/flecs/distr/flecs.c:55026:25: note:   crosses initialization of ‘const EcsPrimitive* ltype_ptr’
55026 |     const EcsPrimitive *ltype_ptr = ecs_get(world, lvalue->type, EcsPrimitive);
      |                         ^~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_binary_expr_do(ecs_world_t*, ecs_value_stack_t*, const char*, const char*, const char*, ecs_value_t*, ecs_value_t*, ecs_value_t*, ecs_expr_oper_t)’:
../src/flecs/distr/flecs.c:55246:1: error: jump to label ‘error’
55246 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:55169:14: note:   from here
55169 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:55176:17: note:   crosses initialization of ‘ecs_value_t tmp_storage’
55176 |     ecs_value_t tmp_storage = {0};
      |                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:55175:18: note:   crosses initialization of ‘ecs_value_t* storage’
55175 |     ecs_value_t *storage = result;
      |                  ^~~~~~~
../src/flecs/distr/flecs.c:55246:1: error: jump to label ‘error’
55246 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:55164:14: note:   from here
55164 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:55176:17: note:   crosses initialization of ‘ecs_value_t tmp_storage’
55176 |     ecs_value_t tmp_storage = {0};
      |                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:55175:18: note:   crosses initialization of ‘ecs_value_t* storage’
55175 |     ecs_value_t *storage = result;
      |                  ^~~~~~~
../src/flecs/distr/flecs.c: In function ‘const char* flecs_funccall_parse(ecs_world_t*, ecs_value_stack_t*, const char*, const char*, const char*, char*, ecs_meta_cursor_t*, ecs_value_t*, bool, const ecs_script_expr_run_desc_t*)’:
../src/flecs/distr/flecs.c:55366:29: error: invalid conversion from ‘const char*’ to ‘char*’ [-fpermissive]
55366 |         char *paren = strchr(ptr, '(');
      |                       ~~~~~~^~~~~~~~~~
      |                             |
      |                             const char*
../src/flecs/distr/flecs.c: In function ‘const char* flecs_script_expr_run(ecs_world_t*, ecs_value_stack_t*, const char*, ecs_value_t*, ecs_expr_oper_t, const ecs_script_expr_run_desc_t*)’:
../src/flecs/distr/flecs.c:55761:28: error: invalid conversion from ‘int’ to ‘ecs_expr_oper_t’ [-fpermissive]
55761 |                 unary_op = 0;
      |                            ^
      |                            |
      |                            int
../src/flecs/distr/flecs.c: In function ‘const char* flecs_script_comma_expr(ecs_script_parser_t*, const char*, bool)’:
../src/flecs/distr/flecs.c:56221:9: error: jump to case label
56221 |         default:\
      |         ^~~~~~~
../src/flecs/distr/flecs.c:56277:9: note: in definition of macro ‘Loop’
56277 |         __VA_ARGS__\
      |         ^~~~~~~~~~~~
56278 |     } while (true);
      |          
../src/flecs/distr/flecs.c:56345:9: note: in expansion of macro ‘LookAhead’
56345 |         LookAhead(
      |         ^~~~~~~~~
../src/flecs/distr/flecs.c:56216:17: note:   crosses initialization of ‘const char* old_lh_token_cur’
56216 |     const char *old_lh_token_cur = parser->token_cur;\
      |                 ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:56277:9: note: in definition of macro ‘Loop’
56277 |         __VA_ARGS__\
      |         ^~~~~~~~~~~~
56278 |     } while (true);
      |          
../src/flecs/distr/flecs.c:56345:9: note: in expansion of macro ‘LookAhead’
56345 |         LookAhead(
      |         ^~~~~~~~~
../src/flecs/distr/flecs.c:56234:5: note: in expansion of macro ‘LookAhead’
56234 |     LookAhead(\
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:56359:17: note: in expansion of macro ‘LookAhead_1’
56359 |                 LookAhead_1(',',
      |                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘const char* flecs_script_stmt(ecs_script_parser_t*, const char*)’:
../src/flecs/distr/flecs.c:56654:37: error: expected unqualified-id before ‘template’
56654 |         ecs_script_template_node_t *template = flecs_script_insert_template(
      |                                     ^~~~~~~~
../src/flecs/distr/flecs.c:56152:13: note: in definition of macro ‘Parse’
56152 |             __VA_ARGS__\
      |             ^~~~~~~~~~~~
56153 |         default:\
      |              
../src/flecs/distr/flecs.c:56653:5: note: in expansion of macro ‘Parse_1’
56653 |     Parse_1(EcsTokIdentifier,
      |     ^~~~~~~
../src/flecs/distr/flecs.c:56660:51: error: expected primary-expression before ‘template’
56660 |                 return flecs_script_scope(parser, template->scope, pos);
      |                                                   ^~~~~~~~
../src/flecs/distr/flecs.c:56152:13: note: in definition of macro ‘Parse’
56152 |             __VA_ARGS__\
      |             ^~~~~~~~~~~~
56153 |         default:\
      |              
../src/flecs/distr/flecs.c:56653:5: note: in expansion of macro ‘Parse_1’
56653 |     Parse_1(EcsTokIdentifier,
      |     ^~~~~~~
../src/flecs/distr/flecs.c:56657:9: note: in expansion of macro ‘Parse’
56657 |         Parse(
      |         ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_script_t* ecs_script_parse(ecs_world_t*, const char*, const char*)’:
../src/flecs/distr/flecs.h:2001:42: error: invalid conversion from ‘void*’ to ‘char*’ [-fpermissive]
 2001 | #define flecs_alloc(a, size) flecs_balloc(flecs_allocator_get(a, size))
      |                              ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.c:57100:26: note: in expansion of macro ‘flecs_alloc’
57100 |     impl->token_buffer = flecs_alloc(
      |                          ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘const char* flecs_term_parse_arg(ecs_script_parser_t*, const char*, int32_t)’:
../src/flecs/distr/flecs.c:56105:5: error: jump to label ‘error’
56105 |     error:\
      |     ^~~~~
../src/flecs/distr/flecs.c:57357:5: note: in expansion of macro ‘ParserEnd’
57357 |     ParserEnd;
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:56115:10: note:   from here
56115 |     goto error
      |          ^~~~~
../src/flecs/distr/flecs.c:57277:13: note: in expansion of macro ‘Error’
57277 |             Error("too many arguments in term");
      |             ^~~~~
../src/flecs/distr/flecs.c:56216:17: note:   crosses initialization of ‘const char* old_lh_token_cur’
56216 |     const char *old_lh_token_cur = parser->token_cur;\
      |                 ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:56234:5: note: in expansion of macro ‘LookAhead’
56234 |     LookAhead(\
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:57284:5: note: in expansion of macro ‘LookAhead_1’
57284 |     LookAhead_1(EcsTokIdentifier,
      |     ^~~~~~~~~~~
../src/flecs/distr/flecs.c:57282:10: note:   crosses initialization of ‘bool is_trav_flag’
57282 |     bool is_trav_flag = false;
      |          ^~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘const char* flecs_query_term_parse(ecs_script_parser_t*, const char*)’:
../src/flecs/distr/flecs.c:57627:14: error: jump to case label
57627 |         case '\n':\
      |              ^~~~
../src/flecs/distr/flecs.c:56152:13: note: in definition of macro ‘Parse’
56152 |             __VA_ARGS__\
      |             ^~~~~~~~~~~~
56153 |         default:\
      |              
../src/flecs/distr/flecs.c:56216:17: note:   crosses initialization of ‘const char* old_lh_token_cur’
56216 |     const char *old_lh_token_cur = parser->token_cur;\
      |                 ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:56152:13: note: in definition of macro ‘Parse’
56152 |             __VA_ARGS__\
      |             ^~~~~~~~~~~~
56153 |         default:\
      |              
../src/flecs/distr/flecs.c:56234:5: note: in expansion of macro ‘LookAhead’
56234 |     LookAhead(\
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:57623:13: note: in expansion of macro ‘LookAhead_1’
57623 |             LookAhead_1(',',
      |             ^~~~~~~~~~~
../src/flecs/distr/flecs.c:57628:14: error: jump to case label
57628 |         case '\0':
      |              ^~~~
../src/flecs/distr/flecs.c:56152:13: note: in definition of macro ‘Parse’
56152 |             __VA_ARGS__\
      |             ^~~~~~~~~~~~
56153 |         default:\
      |              
../src/flecs/distr/flecs.c:56216:17: note:   crosses initialization of ‘const char* old_lh_token_cur’
56216 |     const char *old_lh_token_cur = parser->token_cur;\
      |                 ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:56152:13: note: in definition of macro ‘Parse’
56152 |             __VA_ARGS__\
      |             ^~~~~~~~~~~~
56153 |         default:\
      |              
../src/flecs/distr/flecs.c:56234:5: note: in expansion of macro ‘LookAhead’
56234 |     LookAhead(\
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:57623:13: note: in expansion of macro ‘LookAhead_1’
57623 |             LookAhead_1(',',
      |             ^~~~~~~~~~~
../src/flecs/distr/flecs.c:56153:9: error: jump to case label
56153 |         default:\
      |         ^~~~~~~
../src/flecs/distr/flecs.c:57601:5: note: in expansion of macro ‘Parse’
57601 |     Parse(
      |     ^~~~~
../src/flecs/distr/flecs.c:56216:17: note:   crosses initialization of ‘const char* old_lh_token_cur’
56216 |     const char *old_lh_token_cur = parser->token_cur;\
      |                 ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:56152:13: note: in definition of macro ‘Parse’
56152 |             __VA_ARGS__\
      |             ^~~~~~~~~~~~
56153 |         default:\
      |              
../src/flecs/distr/flecs.c:56234:5: note: in expansion of macro ‘LookAhead’
56234 |     LookAhead(\
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:57623:13: note: in expansion of macro ‘LookAhead_1’
57623 |             LookAhead_1(',',
      |             ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_terms_parse(ecs_script_t*, ecs_term_t*, int32_t*)’:
../src/flecs/distr/flecs.c:57659:25: error: invalid conversion from ‘int’ to ‘ecs_oper_kind_t’ [-fpermissive]
57659 |     parser.extra_oper = 0;
      |                         ^
      |                         |
      |                         int
../src/flecs/distr/flecs.c:57674:29: error: invalid conversion from ‘int’ to ‘ecs_oper_kind_t’ [-fpermissive]
57674 |         parser.extra_oper = 0;
      |                             ^
      |                             |
      |                             int
../src/flecs/distr/flecs.c: In function ‘const char* flecs_term_parse(ecs_world_t*, const char*, const char*, ecs_term_t*, char*)’:
../src/flecs/distr/flecs.c:56087:9: error: expected primary-expression before ‘.’ token
56087 |         .pub.world = ECS_CONST_CAST(ecs_world_t*, w),\
      |         ^
../src/flecs/distr/flecs.c:57750:5: note: in expansion of macro ‘EcsParserFixedBuffer’
57750 |     EcsParserFixedBuffer(world, name, expr, token_buffer, 256);
      |     ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:56088:9: error: expected primary-expression before ‘.’ token
56088 |         .pub.name = script_name,\
      |         ^
../src/flecs/distr/flecs.c:57750:5: note: in expansion of macro ‘EcsParserFixedBuffer’
57750 |     EcsParserFixedBuffer(world, name, expr, token_buffer, 256);
      |     ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:56089:9: error: expected primary-expression before ‘.’ token
56089 |         .pub.code = expr\
      |         ^
../src/flecs/distr/flecs.c:57750:5: note: in expansion of macro ‘EcsParserFixedBuffer’
57750 |     EcsParserFixedBuffer(world, name, expr, token_buffer, 256);
      |     ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘const char* flecs_id_parse(const ecs_world_t*, const char*, const char*, ecs_id_t*)’:
../src/flecs/distr/flecs.c:56087:9: error: expected primary-expression before ‘.’ token
56087 |         .pub.world = ECS_CONST_CAST(ecs_world_t*, w),\
      |         ^
../src/flecs/distr/flecs.c:57775:5: note: in expansion of macro ‘EcsParserFixedBuffer’
57775 |     EcsParserFixedBuffer(world, name, expr, token_buffer, 256);
      |     ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:56088:9: error: expected primary-expression before ‘.’ token
56088 |         .pub.name = script_name,\
      |         ^
../src/flecs/distr/flecs.c:57775:5: note: in expansion of macro ‘EcsParserFixedBuffer’
57775 |     EcsParserFixedBuffer(world, name, expr, token_buffer, 256);
      |     ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:56089:9: error: expected primary-expression before ‘.’ token
56089 |         .pub.code = expr\
      |         ^
../src/flecs/distr/flecs.c:57775:5: note: in expansion of macro ‘EcsParserFixedBuffer’
57775 |     EcsParserFixedBuffer(world, name, expr, token_buffer, 256);
      |     ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘const char* ecs_query_args_parse(ecs_query_t*, ecs_iter_t*, const char*)’:
../src/flecs/distr/flecs.c:56087:9: error: expected primary-expression before ‘.’ token
56087 |         .pub.world = ECS_CONST_CAST(ecs_world_t*, w),\
      |         ^
../src/flecs/distr/flecs.c:57900:5: note: in expansion of macro ‘EcsParserFixedBuffer’
57900 |     EcsParserFixedBuffer(q->world, q_name, expr, token_buffer, 256);
      |     ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:56088:9: error: expected primary-expression before ‘.’ token
56088 |         .pub.name = script_name,\
      |         ^
../src/flecs/distr/flecs.c:57900:5: note: in expansion of macro ‘EcsParserFixedBuffer’
57900 |     EcsParserFixedBuffer(q->world, q_name, expr, token_buffer, 256);
      |     ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:56089:9: error: expected primary-expression before ‘.’ token
56089 |         .pub.code = expr\
      |         ^
../src/flecs/distr/flecs.c:57900:5: note: in expansion of macro ‘EcsParserFixedBuffer’
57900 |     EcsParserFixedBuffer(q->world, q_name, expr, token_buffer, 256);
      |     ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:57902:1: error: jump to label ‘error’
57902 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:57891:5: note: in expansion of macro ‘ecs_check’
57891 |     ecs_check(expr != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:56091:25: note:   crosses initialization of ‘ecs_script_parser_t parser’
56091 |     ecs_script_parser_t parser = {\
      |                         ^~~~~~
../src/flecs/distr/flecs.c:57900:5: note: in expansion of macro ‘EcsParserFixedBuffer’
57900 |     EcsParserFixedBuffer(q->world, q_name, expr, token_buffer, 256);
      |     ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:56086:23: note:   crosses initialization of ‘ecs_script_impl_t script’
56086 |     ecs_script_impl_t script = {\
      |                       ^~~~~~
../src/flecs/distr/flecs.c:57900:5: note: in expansion of macro ‘EcsParserFixedBuffer’
57900 |     EcsParserFixedBuffer(q->world, q_name, expr, token_buffer, 256);
      |     ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:57893:17: note:   crosses initialization of ‘const char* q_name’
57893 |     const char *q_name = q->entity ? ecs_get_name(q->world, q->entity) : NULL;
      |                 ^~~~~~
../src/flecs/distr/flecs.c:57902:1: error: jump to label ‘error’
57902 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:57890:5: note: in expansion of macro ‘ecs_check’
57890 |     ecs_check(it != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:56091:25: note:   crosses initialization of ‘ecs_script_parser_t parser’
56091 |     ecs_script_parser_t parser = {\
      |                         ^~~~~~
../src/flecs/distr/flecs.c:57900:5: note: in expansion of macro ‘EcsParserFixedBuffer’
57900 |     EcsParserFixedBuffer(q->world, q_name, expr, token_buffer, 256);
      |     ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:56086:23: note:   crosses initialization of ‘ecs_script_impl_t script’
56086 |     ecs_script_impl_t script = {\
      |                       ^~~~~~
../src/flecs/distr/flecs.c:57900:5: note: in expansion of macro ‘EcsParserFixedBuffer’
57900 |     EcsParserFixedBuffer(q->world, q_name, expr, token_buffer, 256);
      |     ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:57893:17: note:   crosses initialization of ‘const char* q_name’
57893 |     const char *q_name = q->entity ? ecs_get_name(q->world, q->entity) : NULL;
      |                 ^~~~~~
../src/flecs/distr/flecs.c: In function ‘int ecs_script_run(ecs_world_t*, const char*, const char*)’:
../src/flecs/distr/flecs.c:57998:1: error: jump to label ‘error’
57998 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:57983:14: note:   from here
57983 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:57986:18: note:   crosses initialization of ‘ecs_entity_t prev_scope’
57986 |     ecs_entity_t prev_scope = ecs_set_scope(world, 0);
      |                  ^~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int EcsScript_serialize(const ecs_serializer_t*, const void*)’:
../src/flecs/distr/flecs.c:58140:29: error: invalid conversion from ‘const void*’ to ‘const EcsScript*’ [-fpermissive]
58140 |     const EcsScript *data = ptr;
      |                             ^~~
      |                             |
      |                             const void*
../src/flecs/distr/flecs.c:58142:20: error: no matching function for call to ‘ecs_serializer_t::member(const ecs_serializer_t*&, const char [5]) const’
58142 |         ser->member(ser, "name");
      |         ~~~~~~~~~~~^~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:31809:12: note: candidate: ‘int ecs_serializer_t::member(const char*) const’
31809 | inline int ecs_serializer_t::member(const char *name) const {
      |            ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:31809:12: note:   candidate expects 1 argument, 2 provided
../src/flecs/distr/flecs.c:58143:19: error: no matching function for call to ‘ecs_serializer_t::value(const ecs_serializer_t*&, const ecs_entity_t&, const char**) const’
58143 |         ser->value(ser, ecs_id(ecs_string_t), &data->script->name);
      |         ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:15304:9: note: candidate: ‘template<class T> int ecs_serializer_t::value(const T&) const’
15304 |     int value(const T& value) const;
      |         ^~~~~
../src/flecs/distr/flecs.h:15304:9: note:   template argument deduction/substitution failed:
../src/flecs/distr/flecs.c:58143:19: note:   candidate expects 1 argument, 3 provided
58143 |         ser->value(ser, ecs_id(ecs_string_t), &data->script->name);
      |         ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:31799:12: note: candidate: ‘int ecs_serializer_t::value(ecs_entity_t, const void*) const’
31799 | inline int ecs_serializer_t::value(ecs_entity_t type, const void *v) const {
      |            ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:31799:12: note:   candidate expects 2 arguments, 3 provided
../src/flecs/distr/flecs.c:58144:20: error: no matching function for call to ‘ecs_serializer_t::member(const ecs_serializer_t*&, const char [5]) const’
58144 |         ser->member(ser, "code");
      |         ~~~~~~~~~~~^~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:31809:12: note: candidate: ‘int ecs_serializer_t::member(const char*) const’
31809 | inline int ecs_serializer_t::member(const char *name) const {
      |            ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:31809:12: note:   candidate expects 1 argument, 2 provided
../src/flecs/distr/flecs.c:58145:19: error: no matching function for call to ‘ecs_serializer_t::value(const ecs_serializer_t*&, const ecs_entity_t&, const char**) const’
58145 |         ser->value(ser, ecs_id(ecs_string_t), &data->script->code);
      |         ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:15304:9: note: candidate: ‘template<class T> int ecs_serializer_t::value(const T&) const’
15304 |     int value(const T& value) const;
      |         ^~~~~
../src/flecs/distr/flecs.h:15304:9: note:   template argument deduction/substitution failed:
../src/flecs/distr/flecs.c:58145:19: note:   candidate expects 1 argument, 3 provided
58145 |         ser->value(ser, ecs_id(ecs_string_t), &data->script->code);
      |         ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:31799:12: note: candidate: ‘int ecs_serializer_t::value(ecs_entity_t, const void*) const’
31799 | inline int ecs_serializer_t::value(ecs_entity_t type, const void *v) const {
      |            ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:31799:12: note:   candidate expects 2 arguments, 3 provided
../src/flecs/distr/flecs.c:58148:20: error: no matching function for call to ‘ecs_serializer_t::member(const ecs_serializer_t*&, const char [4]) const’
58148 |         ser->member(ser, "ast");
      |         ~~~~~~~~~~~^~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:31809:12: note: candidate: ‘int ecs_serializer_t::member(const char*) const’
31809 | inline int ecs_serializer_t::member(const char *name) const {
      |            ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:31809:12: note:   candidate expects 1 argument, 2 provided
../src/flecs/distr/flecs.c:58149:19: error: no matching function for call to ‘ecs_serializer_t::value(const ecs_serializer_t*&, const ecs_entity_t&, char**) const’
58149 |         ser->value(ser, ecs_id(ecs_string_t), &ast);
      |         ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:15304:9: note: candidate: ‘template<class T> int ecs_serializer_t::value(const T&) const’
15304 |     int value(const T& value) const;
      |         ^~~~~
../src/flecs/distr/flecs.h:15304:9: note:   template argument deduction/substitution failed:
../src/flecs/distr/flecs.c:58149:19: note:   candidate expects 1 argument, 3 provided
58149 |         ser->value(ser, ecs_id(ecs_string_t), &ast);
      |         ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:31799:12: note: candidate: ‘int ecs_serializer_t::value(ecs_entity_t, const void*) const’
31799 | inline int ecs_serializer_t::value(ecs_entity_t type, const void *v) const {
      |            ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:31799:12: note:   candidate expects 2 arguments, 3 provided
../src/flecs/distr/flecs.c:58153:20: error: no matching function for call to ‘ecs_serializer_t::member(const ecs_serializer_t*&, const char [5]) const’
58153 |         ser->member(ser, "name");
      |         ~~~~~~~~~~~^~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:31809:12: note: candidate: ‘int ecs_serializer_t::member(const char*) const’
31809 | inline int ecs_serializer_t::member(const char *name) const {
      |            ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:31809:12: note:   candidate expects 1 argument, 2 provided
../src/flecs/distr/flecs.c:58154:19: error: no matching function for call to ‘ecs_serializer_t::value(const ecs_serializer_t*&, const ecs_entity_t&, char**) const’
58154 |         ser->value(ser, ecs_id(ecs_string_t), &nullString);
      |         ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:15304:9: note: candidate: ‘template<class T> int ecs_serializer_t::value(const T&) const’
15304 |     int value(const T& value) const;
      |         ^~~~~
../src/flecs/distr/flecs.h:15304:9: note:   template argument deduction/substitution failed:
../src/flecs/distr/flecs.c:58154:19: note:   candidate expects 1 argument, 3 provided
58154 |         ser->value(ser, ecs_id(ecs_string_t), &nullString);
      |         ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:31799:12: note: candidate: ‘int ecs_serializer_t::value(ecs_entity_t, const void*) const’
31799 | inline int ecs_serializer_t::value(ecs_entity_t type, const void *v) const {
      |            ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:31799:12: note:   candidate expects 2 arguments, 3 provided
../src/flecs/distr/flecs.c:58155:20: error: no matching function for call to ‘ecs_serializer_t::member(const ecs_serializer_t*&, const char [5]) const’
58155 |         ser->member(ser, "code");
      |         ~~~~~~~~~~~^~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:31809:12: note: candidate: ‘int ecs_serializer_t::member(const char*) const’
31809 | inline int ecs_serializer_t::member(const char *name) const {
      |            ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:31809:12: note:   candidate expects 1 argument, 2 provided
../src/flecs/distr/flecs.c:58156:19: error: no matching function for call to ‘ecs_serializer_t::value(const ecs_serializer_t*&, const ecs_entity_t&, char**) const’
58156 |         ser->value(ser, ecs_id(ecs_string_t), &nullString);
      |         ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:15304:9: note: candidate: ‘template<class T> int ecs_serializer_t::value(const T&) const’
15304 |     int value(const T& value) const;
      |         ^~~~~
../src/flecs/distr/flecs.h:15304:9: note:   template argument deduction/substitution failed:
../src/flecs/distr/flecs.c:58156:19: note:   candidate expects 1 argument, 3 provided
58156 |         ser->value(ser, ecs_id(ecs_string_t), &nullString);
      |         ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:31799:12: note: candidate: ‘int ecs_serializer_t::value(ecs_entity_t, const void*) const’
31799 | inline int ecs_serializer_t::value(ecs_entity_t type, const void *v) const {
      |            ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:31799:12: note:   candidate expects 2 arguments, 3 provided
../src/flecs/distr/flecs.c:58157:20: error: no matching function for call to ‘ecs_serializer_t::member(const ecs_serializer_t*&, const char [4]) const’
58157 |         ser->member(ser, "ast");
      |         ~~~~~~~~~~~^~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:31809:12: note: candidate: ‘int ecs_serializer_t::member(const char*) const’
31809 | inline int ecs_serializer_t::member(const char *name) const {
      |            ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:31809:12: note:   candidate expects 1 argument, 2 provided
../src/flecs/distr/flecs.c:58158:19: error: no matching function for call to ‘ecs_serializer_t::value(const ecs_serializer_t*&, const ecs_entity_t&, char**) const’
58158 |         ser->value(ser, ecs_id(ecs_string_t), &nullString);
      |         ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:15304:9: note: candidate: ‘template<class T> int ecs_serializer_t::value(const T&) const’
15304 |     int value(const T& value) const;
      |         ^~~~~
../src/flecs/distr/flecs.h:15304:9: note:   template argument deduction/substitution failed:
../src/flecs/distr/flecs.c:58158:19: note:   candidate expects 1 argument, 3 provided
58158 |         ser->value(ser, ecs_id(ecs_string_t), &nullString);
      |         ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:31799:12: note: candidate: ‘int ecs_serializer_t::value(ecs_entity_t, const void*) const’
31799 | inline int ecs_serializer_t::value(ecs_entity_t type, const void *v) const {
      |            ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:31799:12: note:   candidate expects 2 arguments, 3 provided
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void FlecsScriptImport(ecs_world_t*)’:
../src/flecs/distr/flecs.c:58181:5: error: designator order for field ‘ecs_type_hooks_t::dtor’ does not match declaration order in ‘ecs_type_hooks_t’
58181 |     });
      |     ^
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:58177:37: error: taking address of rvalue [-fpermissive]
58177 |     ecs_set_hooks(world, EcsScript, {
      |                                     ^
58178 |         .ctor = flecs_default_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~  
58179 |         .move = ecs_move(EcsScript),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
58180 |         .dtor = ecs_dtor(EcsScript)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~  
58181 |     });
      |     ~                                
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:58185:23: error: taking address of rvalue [-fpermissive]
58185 |     ecs_struct(world, {
      |                       ^
58186 |         .entity = ecs_id(ecs_script_t),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
58187 |         .members = {
      |         ~~~~~~~~~~~~   
58188 |             { .name = "name", .type = ecs_id(ecs_string_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
58189 |             { .name = "code", .type = ecs_id(ecs_string_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
58190 |             { .name = "ast", .type = ecs_id(ecs_string_t) }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
58191 |         }
      |         ~              
58192 |     });
      |     ~                  
../src/flecs/distr/flecs.h:16131:49: note: in definition of macro ‘ecs_struct’
16131 |     ecs_struct_init(world, &(ecs_struct_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.h:16127:47: error: expected primary-expression before ‘)’ token
16127 |     ecs_opaque_init(world, &(ecs_opaque_desc_t) __VA_ARGS__ )
      |                                               ^
../src/flecs/distr/flecs.c:58194:5: note: in expansion of macro ‘ecs_opaque’
58194 |     ecs_opaque(world, {
      |     ^~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_primitive_kind_t flecs_expr_op_to_primitive_kind(ecs_meta_type_op_kind_t)’:
../src/flecs/distr/flecs.c:58243:17: error: invalid conversion from ‘int’ to ‘ecs_primitive_kind_t’ [-fpermissive]
58243 |     return kind - EcsOpPrimitive;
      |            ~~~~~^~~~~~~~~~~~~~~~
      |                 |
      |                 int
../src/flecs/distr/flecs.c: In function ‘int flecs_expr_ser_enum(const ecs_world_t*, ecs_meta_type_op_t*, const void*, ecs_strbuf_t*)’:
../src/flecs/distr/flecs.c:58273:1: error: jump to label ‘error’
58273 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:58255:5: note: in expansion of macro ‘ecs_check’
58255 |     ecs_check(enum_type != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:58261:26: note:   crosses initialization of ‘ecs_enum_constant_t* c’
58261 |     ecs_enum_constant_t *c = ecs_map_get_deref(&enum_type->constants,
      |                          ^
../src/flecs/distr/flecs.c:58257:13: note:   crosses initialization of ‘int32_t val’
58257 |     int32_t val = *(const int32_t*)base;
      |             ^~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int flecs_expr_ser_bitmask(const ecs_world_t*, ecs_meta_type_op_t*, const void*, ecs_strbuf_t*)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_bitmask_constant_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:58296:37: note: in expansion of macro ‘ecs_map_ptr’
58296 |         ecs_bitmask_constant_t *c = ecs_map_ptr(&it);
      |                                     ^~~~~~~~~~~
../src/flecs/distr/flecs.c:58322:1: error: jump to label ‘error’
58322 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:58286:5: note: in expansion of macro ‘ecs_check’
58286 |     ecs_check(bitmask_type != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:58294:9: note:   crosses initialization of ‘int count’
58294 |     int count = 0;
      |         ^~~~~
../src/flecs/distr/flecs.c:58293:20: note:   crosses initialization of ‘ecs_map_iter_t it’
58293 |     ecs_map_iter_t it = ecs_map_iter(&bitmask_type->constants);
      |                    ^~
../src/flecs/distr/flecs.c:58287:14: note:   crosses initialization of ‘uint32_t value’
58287 |     uint32_t value = *(const uint32_t*)ptr;
      |              ^~~~~
../src/flecs/distr/flecs.c: In function ‘int expr_ser_vector(const ecs_world_t*, ecs_meta_type_op_t*, const void*, ecs_strbuf_t*)’:
../src/flecs/distr/flecs.c:58403:30: error: invalid conversion from ‘const void*’ to ‘const ecs_vec_t*’ [-fpermissive]
58403 |     const ecs_vec_t *value = base;
      |                              ^~~~
      |                              |
      |                              const void*
../src/flecs/distr/flecs.c: In function ‘void flecs_script_template_ctor(void*, int32_t, const ecs_type_info_t*)’:
../src/flecs/distr/flecs.c:58678:36: error: invalid conversion from ‘void*’ to ‘ecs_world_t*’ [-fpermissive]
58678 |     ecs_world_t *world = ti->hooks.ctx;
      |                          ~~~~~~~~~~^~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.c:58693:28: error: expected unqualified-id before ‘template’
58693 |     ecs_script_template_t *template = script->template_;
      |                            ^~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:58694:16: error: expected primary-expression before ‘template’
58694 |     ecs_assert(template != NULL, ECS_INTERNAL_ERROR, NULL);
      |                ^~~~~~~~
../src/flecs/distr/flecs.h:10810:11: note: in definition of macro ‘ecs_assert’
10810 |     if (!(condition)) {\
      |           ^~~~~~~~~
../src/flecs/distr/flecs.c:58694:16: error: expected ‘)’ before ‘template’
58694 |     ecs_assert(template != NULL, ECS_INTERNAL_ERROR, NULL);
      |                ^~~~~~~~
../src/flecs/distr/flecs.h:10810:11: note: in definition of macro ‘ecs_assert’
10810 |     if (!(condition)) {\
      |           ^~~~~~~~~
../src/flecs/distr/flecs.h:10810:10: note: to match this ‘(’
10810 |     if (!(condition)) {\
      |          ^
../src/flecs/distr/flecs.c:58694:5: note: in expansion of macro ‘ecs_assert’
58694 |     ecs_assert(template != NULL, ECS_INTERNAL_ERROR, NULL);
      |     ^~~~~~~~~~
In file included from ../src/flecs/distr/flecs.h:713,
                 from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:58694:16: error: expected primary-expression before ‘template’
58694 |     ecs_assert(template != NULL, ECS_INTERNAL_ERROR, NULL);
      |                ^~~~~~~~
../src/flecs/distr/flecs.c:58694:5: note: in expansion of macro ‘ecs_assert’
58694 |     ecs_assert(template != NULL, ECS_INTERNAL_ERROR, NULL);
      |     ^~~~~~~~~~
../src/flecs/distr/flecs.c:58694:16: error: expected ‘)’ before ‘template’
58694 |     ecs_assert(template != NULL, ECS_INTERNAL_ERROR, NULL);
      |                ^~~~~~~~
../src/flecs/distr/flecs.c:58694:5: note: in expansion of macro ‘ecs_assert’
58694 |     ecs_assert(template != NULL, ECS_INTERNAL_ERROR, NULL);
      |     ^~~~~~~~~~
../src/flecs/distr/flecs.c:58695:30: error: expected primary-expression before ‘template’
58695 |     if (st->members.count != template->prop_defaults.count) {
      |                              ^~~~~~~~
../src/flecs/distr/flecs.c:58695:29: error: expected ‘)’ before ‘template’
58695 |     if (st->members.count != template->prop_defaults.count) {
      |        ~                    ^~~~~~~~~
      |                             )
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:58697:40: error: expected primary-expression before ‘template’
58697 |             " (%d), cannot construct", template->prop_defaults.count,
      |                                        ^~~~~~~~
../src/flecs/distr/flecs.h:10669:60: note: in definition of macro ‘ecs_err_’
10669 | #define ecs_err_(file, line, ...) ecs_log_(-3, file, line, __VA_ARGS__)
      |                                                            ^~~~~~~~~~~
../src/flecs/distr/flecs.c:58696:9: note: in expansion of macro ‘ecs_err’
58696 |         ecs_err("number of props (%d) of template '%s' does not match members"
      |         ^~~~~~~
../src/flecs/distr/flecs.c:58702:47: error: invalid conversion from ‘void*’ to ‘const ecs_member_t*’ [-fpermissive]
58702 |     const ecs_member_t *members = st->members.array;
      |                                   ~~~~~~~~~~~~^~~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c:58704:32: error: expected primary-expression before ‘template’
58704 |     ecs_script_var_t *values = template->prop_defaults.array;
      |                                ^~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_script_template_on_set(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:58743:28: error: expected unqualified-id before ‘template’
58743 |     ecs_script_template_t *template = script->template_;
      |                            ^~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:58744:16: error: expected primary-expression before ‘template’
58744 |     ecs_assert(template != NULL, ECS_INTERNAL_ERROR, NULL);
      |                ^~~~~~~~
../src/flecs/distr/flecs.h:10810:11: note: in definition of macro ‘ecs_assert’
10810 |     if (!(condition)) {\
      |           ^~~~~~~~~
../src/flecs/distr/flecs.c:58744:16: error: expected ‘)’ before ‘template’
58744 |     ecs_assert(template != NULL, ECS_INTERNAL_ERROR, NULL);
      |                ^~~~~~~~
../src/flecs/distr/flecs.h:10810:11: note: in definition of macro ‘ecs_assert’
10810 |     if (!(condition)) {\
      |           ^~~~~~~~~
../src/flecs/distr/flecs.h:10810:10: note: to match this ‘(’
10810 |     if (!(condition)) {\
      |          ^
../src/flecs/distr/flecs.c:58744:5: note: in expansion of macro ‘ecs_assert’
58744 |     ecs_assert(template != NULL, ECS_INTERNAL_ERROR, NULL);
      |     ^~~~~~~~~~
In file included from ../src/flecs/distr/flecs.h:713,
                 from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:58744:16: error: expected primary-expression before ‘template’
58744 |     ecs_assert(template != NULL, ECS_INTERNAL_ERROR, NULL);
      |                ^~~~~~~~
../src/flecs/distr/flecs.c:58744:5: note: in expansion of macro ‘ecs_assert’
58744 |     ecs_assert(template != NULL, ECS_INTERNAL_ERROR, NULL);
      |     ^~~~~~~~~~
../src/flecs/distr/flecs.c:58744:16: error: expected ‘)’ before ‘template’
58744 |     ecs_assert(template != NULL, ECS_INTERNAL_ERROR, NULL);
      |                ^~~~~~~~
../src/flecs/distr/flecs.c:58744:5: note: in expansion of macro ‘ecs_assert’
58744 |     ecs_assert(template != NULL, ECS_INTERNAL_ERROR, NULL);
      |     ^~~~~~~~~~
../src/flecs/distr/flecs.c:58745:33: error: expected primary-expression before ‘template’
58745 |     const ecs_type_info_t *ti = template->type_info;
      |                                 ^~~~~~~~
../src/flecs/distr/flecs.c:58753:30: error: expected unqualified-id before ‘using’
58753 |     ecs_vec_t prev_using = v.using;
      |                              ^~~~~
../src/flecs/distr/flecs.c:58754:7: error: expected unqualified-id before ‘using’
58754 |     v.using = template->using_;
      |       ^~~~~
../src/flecs/distr/flecs.c:58756:33: error: expected primary-expression before ‘template’
58756 |     ecs_script_scope_t *scope = template->node->scope;
      |                                 ^~~~~~~~
../src/flecs/distr/flecs.c:58762:20: error: expected primary-expression before ‘template’
58762 |             .pos = template->node->node.pos
      |                    ^~~~~~~~
../src/flecs/distr/flecs.c:58762:20: error: expected ‘}’ before ‘template’
../src/flecs/distr/flecs.c:58760:17: note: to match this ‘{’
58760 |         .node = {
      |                 ^
../src/flecs/distr/flecs.c:58762:20: error: expected ‘}’ before ‘template’
58762 |             .pos = template->node->node.pos
      |                    ^~~~~~~~
../src/flecs/distr/flecs.c:58759:41: note: to match this ‘{’
58759 |     ecs_script_entity_t instance_node = {
      |                                         ^
../src/flecs/distr/flecs.c:58762:20: error: expected ‘,’ or ‘;’ before ‘template’
58762 |             .pos = template->node->node.pos
      |                    ^~~~~~~~
../src/flecs/distr/flecs.c: At global scope:
../src/flecs/distr/flecs.c:58763:10: error: mixing declarations and function-definitions is forbidden
58763 |         },
      |          ^
../src/flecs/distr/flecs.c:58764:9: error: expected unqualified-id before ‘.’ token
58764 |         .scope = scope
      |         ^
../src/flecs/distr/flecs.c:58765:5: error: expected declaration before ‘}’ token
58765 |     };
      |     ^
../src/flecs/distr/flecs.c:58767:5: error: ‘v’ does not name a type
58767 |     v.entity = &instance_node;
      |     ^
../src/flecs/distr/flecs.c:58770:5: error: expected unqualified-id before ‘for’
58770 |     for (i = 0; i < it->count; i ++) {
      |     ^~~
../src/flecs/distr/flecs.c:58770:17: error: ‘i’ does not name a type
58770 |     for (i = 0; i < it->count; i ++) {
      |                 ^
../src/flecs/distr/flecs.c:58770:32: error: ‘i’ does not name a type
58770 |     for (i = 0; i < it->count; i ++) {
      |                                ^
../src/flecs/distr/flecs.c:58823:5: error: ‘v’ does not name a type
58823 |     v.using = prev_using;
      |     ^
../src/flecs/distr/flecs.c:58824:33: error: expected constructor, destructor, or type conversion before ‘(’ token
58824 |     flecs_script_eval_visit_fini(&v);
      |                                 ^
../src/flecs/distr/flecs.c:58825:1: error: expected declaration before ‘}’ token
58825 | }
      | ^
../src/flecs/distr/flecs.c: In function ‘int flecs_script_template_eval_prop(ecs_script_eval_visitor_t*, ecs_script_var_node_t*)’:
../src/flecs/distr/flecs.c:58832:28: error: expected unqualified-id before ‘template’
58832 |     ecs_script_template_t *template = v->template;
      |                            ^~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:58863:14: error: expected primary-expression before ‘template’
58863 |             &template->prop_defaults, ecs_script_var_t);
      |              ^~~~~~~~
../src/flecs/distr/flecs.h:865:40: note: in definition of macro ‘ECS_CAST’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                                        ^
../src/flecs/distr/flecs.c:58862:35: note: in expansion of macro ‘ecs_vec_append_t’
58862 |         ecs_script_var_t *value = ecs_vec_append_t(&v->base.script->allocator,
      |                                   ^~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:9657:47: error: expected primary-expression before ‘)’ token
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                               ^
../src/flecs/distr/flecs.c:58870:28: note: in expansion of macro ‘ecs_entity’
58870 |         ecs_entity_t mbr = ecs_entity(v->world, {
      |                            ^~~~~~~~~~
../src/flecs/distr/flecs.c:58875:43: error: taking address of rvalue [-fpermissive]
58875 |         ecs_set(v->world, mbr, EcsMember, { .type = var->value.type });
      |                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: At global scope:
../src/flecs/distr/flecs.c:58931:28: error: expected ‘,’ or ‘...’ before ‘template’
58931 |     ecs_script_template_t *template)
      |                            ^~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_script_template_preprocess(ecs_script_eval_visitor_t*, ecs_script_template_t*)’:
../src/flecs/distr/flecs.c:58934:17: error: expected unqualified-id before ‘=’ token
58934 |     v->template = template;
      |                 ^
../src/flecs/distr/flecs.c:58934:19: error: expected primary-expression before ‘template’
58934 |     v->template = template;
      |                   ^~~~~~~~
../src/flecs/distr/flecs.c:58937:44: error: expected primary-expression before ‘template’
58937 |     int result = ecs_script_visit_scope(v, template->node->scope);
      |                                            ^~~~~~~~
../src/flecs/distr/flecs.c:4837:59: note: in definition of macro ‘ecs_script_visit_scope’
 4837 |     ecs_script_visit_scope_((ecs_script_visit_t*)visitor, node)
      |                                                           ^~~~
../src/flecs/distr/flecs.c:58940:17: error: expected unqualified-id before ‘=’ token
58940 |     v->template = NULL;
      |                 ^
../src/flecs/distr/flecs.c: At global scope:
../src/flecs/distr/flecs.c:58947:28: error: expected ‘,’ or ‘...’ before ‘template’
58947 |     ecs_script_template_t *template)
      |                            ^~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int flecs_script_template_hoist_using(ecs_script_eval_visitor_t*, ecs_script_template_t*)’:
../src/flecs/distr/flecs.c:58951:28: error: expected primary-expression before ‘template’
58951 |             v->allocator, &template->using_, ecs_entity_t)[0] = v->module;
      |                            ^~~~~~~~
../src/flecs/distr/flecs.h:865:40: note: in definition of macro ‘ECS_CAST’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                                        ^
../src/flecs/distr/flecs.c:58950:9: note: in expansion of macro ‘ecs_vec_append_t’
58950 |         ecs_vec_append_t(
      |         ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:58954:38: error: expected unqualified-id before ‘using’
58954 |     int i, count = ecs_vec_count(&v->using);
      |                                      ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:58956:41: error: expected primary-expression before ‘template’
58956 |         ecs_vec_append_t(v->allocator, &template->using_, ecs_entity_t)[0] =
      |                                         ^~~~~~~~
../src/flecs/distr/flecs.h:865:40: note: in definition of macro ‘ECS_CAST’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                                        ^
../src/flecs/distr/flecs.c:58956:9: note: in expansion of macro ‘ecs_vec_append_t’
58956 |         ecs_vec_append_t(v->allocator, &template->using_, ecs_entity_t)[0] =
      |         ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:58957:31: error: expected unqualified-id before ‘using’
58957 |             ecs_vec_get_t(&v->using, ecs_entity_t, i)[0];
      |                               ^~~~~
../src/flecs/distr/flecs.h:865:40: note: in definition of macro ‘ECS_CAST’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                                        ^
../src/flecs/distr/flecs.c:58957:13: note: in expansion of macro ‘ecs_vec_get_t’
58957 |             ecs_vec_get_t(&v->using, ecs_entity_t, i)[0];
      |             ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c: At global scope:
../src/flecs/distr/flecs.c:58966:28: error: expected ‘,’ or ‘...’ before ‘template’
58966 |     ecs_script_template_t *template,
      |                            ^~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_script_template_hoist_vars(ecs_script_eval_visitor_t*, ecs_script_template_t*)’:
../src/flecs/distr/flecs.c:58969:9: error: ‘vars’ was not declared in this scope
58969 |     if (vars->parent) {
      |         ^~~~
../src/flecs/distr/flecs.c:58970:45: error: expected primary-expression before ‘template’
58970 |         flecs_script_template_hoist_vars(v, template, vars);
      |                                             ^~~~~~~~
../src/flecs/distr/flecs.c:58973:39: error: ‘vars’ was not declared in this scope
58973 |     int32_t i, count = ecs_vec_count(&vars->vars);
      |                                       ^~~~
../src/flecs/distr/flecs.c:58978:13: error: expected primary-expression before ‘template’
58978 |             template->vars, src->name, src->value.type);
      |             ^~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_script_template_t* flecs_script_template_init(ecs_script_impl_t*)’:
../src/flecs/distr/flecs.h:2001:42: error: invalid conversion from ‘void*’ to ‘ecs_script_template_t*’ [-fpermissive]
 2001 | #define flecs_alloc(a, size) flecs_balloc(flecs_allocator_get(a, size))
      |                              ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.h:2002:29: note: in expansion of macro ‘flecs_alloc’
 2002 | #define flecs_alloc_t(a, T) flecs_alloc(a, ECS_SIZEOF(T))
      |                             ^~~~~~~~~~~
../src/flecs/distr/flecs.c:58990:37: note: in expansion of macro ‘flecs_alloc_t’
58990 |     ecs_script_template_t *result = flecs_alloc_t(a, ecs_script_template_t);
      |                                     ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c: At global scope:
../src/flecs/distr/flecs.c:58999:28: error: expected ‘,’ or ‘...’ before ‘template’
58999 |     ecs_script_template_t *template)
      |                            ^~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_script_template_fini(ecs_script_impl_t*, ecs_script_template_t*)’:
../src/flecs/distr/flecs.c:59004:39: error: expected primary-expression before ‘template’
59004 |     int32_t i, count = ecs_vec_count(&template->prop_defaults);
      |                                       ^~~~~~~~
../src/flecs/distr/flecs.c:59005:47: error: expected primary-expression before ‘template’
59005 |     ecs_script_var_t *values = ecs_vec_first(&template->prop_defaults);
      |                                               ^~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:59015:24: error: expected primary-expression before ‘template’
59015 |     ecs_vec_fini_t(a, &template->prop_defaults, ecs_script_var_t);
      |                        ^~~~~~~~
../src/flecs/distr/flecs.h:1111:29: note: in definition of macro ‘ecs_vec_fini_t’
 1111 |     ecs_vec_fini(allocator, vec, ECS_SIZEOF(T))
      |                             ^~~
../src/flecs/distr/flecs.c:59016:24: error: expected primary-expression before ‘template’
59016 |     ecs_vec_fini_t(a, &template->using_, ecs_entity_t);
      |                        ^~~~~~~~
../src/flecs/distr/flecs.h:1111:29: note: in definition of macro ‘ecs_vec_fini_t’
 1111 |     ecs_vec_fini(allocator, vec, ECS_SIZEOF(T))
      |                             ^~~
../src/flecs/distr/flecs.c:59017:26: error: expected primary-expression before ‘template’
59017 |     ecs_script_vars_fini(template->vars);
      |                          ^~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:59018:44: error: expected primary-expression before ‘template’
59018 |     flecs_free_t(a, ecs_script_template_t, template);
      |                                            ^~~~~~~~
../src/flecs/distr/flecs.h:2012:29: note: in definition of macro ‘flecs_free_t’
 2012 |     flecs_bfree_w_dbg_info((ptr) ? flecs_allocator_get(a, ECS_SIZEOF(T)) : NULL, ptr, #T)
      |                             ^~~
../src/flecs/distr/flecs.c:59018:44: error: expected ‘)’ before ‘template’
59018 |     flecs_free_t(a, ecs_script_template_t, template);
      |                                            ^~~~~~~~
../src/flecs/distr/flecs.h:2012:29: note: in definition of macro ‘flecs_free_t’
 2012 |     flecs_bfree_w_dbg_info((ptr) ? flecs_allocator_get(a, ECS_SIZEOF(T)) : NULL, ptr, #T)
      |                             ^~~
../src/flecs/distr/flecs.h:2012:28: note: to match this ‘(’
 2012 |     flecs_bfree_w_dbg_info((ptr) ? flecs_allocator_get(a, ECS_SIZEOF(T)) : NULL, ptr, #T)
      |                            ^
../src/flecs/distr/flecs.c:59018:5: note: in expansion of macro ‘flecs_free_t’
59018 |     flecs_free_t(a, ecs_script_template_t, template);
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_script_eval_template(ecs_script_eval_visitor_t*, ecs_script_template_node_t*)’:
../src/flecs/distr/flecs.c:59026:20: error: expected unqualified-id before ‘)’ token
59026 |     if (v->template) {
      |                    ^
../src/flecs/distr/flecs.c:59036:28: error: expected unqualified-id before ‘template’
59036 |     ecs_script_template_t *template = flecs_script_template_init(v->base.script);
      |                            ^~~~~~~~
../src/flecs/distr/flecs.c:59037:5: error: expected primary-expression before ‘template’
59037 |     template->entity = template_entity;
      |     ^~~~~~~~
../src/flecs/distr/flecs.c:59038:5: error: expected primary-expression before ‘template’
59038 |     template->node = node;
      |     ^~~~~~~~
../src/flecs/distr/flecs.c:59040:45: error: expected primary-expression before ‘template’
59040 |     if (flecs_script_template_preprocess(v, template)) {
      |                                             ^~~~~~~~
../src/flecs/distr/flecs.c:59044:46: error: expected primary-expression before ‘template’
59044 |     if (flecs_script_template_hoist_using(v, template)) {
      |                                              ^~~~~~~~
../src/flecs/distr/flecs.c:59048:45: error: expected primary-expression before ‘template’
59048 |     if (flecs_script_template_hoist_vars(v, template, v->vars)) {
      |                                             ^~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:59055:58: error: taking address of rvalue [-fpermissive]
59055 |         ecs_set(v->world, template_entity, EcsComponent, {1, 1});
      |                                                          ^~~~~~
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:59058:5: error: expected primary-expression before ‘template’
59058 |     template->type_info = ecs_get_type_info(v->world, template_entity);
      |     ^~~~~~~~
../src/flecs/distr/flecs.c:59072:25: error: expected primary-expression before ‘template’
59072 |     script->template_ = template;
      |                         ^~~~~~~~
../src/flecs/distr/flecs.c:59075:69: error: taking address of rvalue [-fpermissive]
59075 |     ecs_set_hooks_id(v->world, template_entity, &(ecs_type_hooks_t) {
      |                                                                     ^
59076 |         .ctor = flecs_script_template_ctor,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                          
59077 |         .on_set = flecs_script_template_on_set,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                      
59078 |         .ctx = v->world
      |         ~~~~~~~~~~~~~~~                                              
59079 |     });
      |     ~                                                                
../src/flecs/distr/flecs.c:59085:1: error: jump to label ‘error’
59085 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:59049:14: note:   from here
59049 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:59062:16: note:   crosses initialization of ‘EcsScript* script’
59062 |     EcsScript *script = ecs_ensure(v->world, template_entity, EcsScript);
      |                ^~~~~~
../src/flecs/distr/flecs.c:59085:1: error: jump to label ‘error’
59085 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:59045:14: note:   from here
59045 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:59062:16: note:   crosses initialization of ‘EcsScript* script’
59062 |     EcsScript *script = ecs_ensure(v->world, template_entity, EcsScript);
      |                ^~~~~~
../src/flecs/distr/flecs.c:59085:1: error: jump to label ‘error’
59085 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:59041:14: note:   from here
59041 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:59062:16: note:   crosses initialization of ‘EcsScript* script’
59062 |     EcsScript *script = ecs_ensure(v->world, template_entity, EcsScript);
      |                ^~~~~~
../src/flecs/distr/flecs.c:59086:48: error: expected primary-expression before ‘template’
59086 |     flecs_script_template_fini(v->base.script, template);
      |                                                ^~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_script_vars_t* flecs_script_vars_push(ecs_script_vars_t*, ecs_stack_t*, ecs_allocator_t*)’:
../src/flecs/distr/flecs.h:1647:23: error: invalid conversion from ‘void*’ to ‘ecs_script_vars_t*’ [-fpermissive]
 1647 |     flecs_stack_calloc(stack, ECS_SIZEOF(T), ECS_ALIGNOF(T))
      |     ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                       |
      |                       void*
../src/flecs/distr/flecs.c:59654:33: note: in expansion of macro ‘flecs_stack_calloc_t’
59654 |     ecs_script_vars_t *result = flecs_stack_calloc_t(stack, ecs_script_vars_t);
      |                                 ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:59664:1: error: jump to label ‘error’
59664 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:59649:9: note: in expansion of macro ‘ecs_check’
59649 |         ecs_check(allocator == parent->allocator, ECS_INVALID_PARAMETER,
      |         ^~~~~~~~~
../src/flecs/distr/flecs.c:59654:24: note:   crosses initialization of ‘ecs_script_vars_t* result’
59654 |     ecs_script_vars_t *result = flecs_stack_calloc_t(stack, ecs_script_vars_t);
      |                        ^~~~~~
../src/flecs/distr/flecs.c:59653:25: note:   crosses initialization of ‘ecs_stack_cursor_t* cursor’
59653 |     ecs_stack_cursor_t *cursor = flecs_stack_get_cursor(stack);
      |                         ^~~~~~
../src/flecs/distr/flecs.c:59664:1: error: jump to label ‘error’
59664 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:59643:9: note: in expansion of macro ‘ecs_check’
59643 |         ecs_check(stack == parent->stack, ECS_INVALID_PARAMETER,
      |         ^~~~~~~~~
../src/flecs/distr/flecs.c:59654:24: note:   crosses initialization of ‘ecs_script_vars_t* result’
59654 |     ecs_script_vars_t *result = flecs_stack_calloc_t(stack, ecs_script_vars_t);
      |                        ^~~~~~
../src/flecs/distr/flecs.c:59653:25: note:   crosses initialization of ‘ecs_stack_cursor_t* cursor’
59653 |     ecs_stack_cursor_t *cursor = flecs_stack_get_cursor(stack);
      |                         ^~~~~~
../src/flecs/distr/flecs.c:59664:1: error: jump to label ‘error’
59664 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:59637:5: note: in expansion of macro ‘ecs_check’
59637 |     ecs_check(allocator || parent, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:59654:24: note:   crosses initialization of ‘ecs_script_vars_t* result’
59654 |     ecs_script_vars_t *result = flecs_stack_calloc_t(stack, ecs_script_vars_t);
      |                        ^~~~~~
../src/flecs/distr/flecs.c:59653:25: note:   crosses initialization of ‘ecs_stack_cursor_t* cursor’
59653 |     ecs_stack_cursor_t *cursor = flecs_stack_get_cursor(stack);
      |                         ^~~~~~
../src/flecs/distr/flecs.c:59664:1: error: jump to label ‘error’
59664 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:59635:5: note: in expansion of macro ‘ecs_check’
59635 |     ecs_check(stack || parent, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:59654:24: note:   crosses initialization of ‘ecs_script_vars_t* result’
59654 |     ecs_script_vars_t *result = flecs_stack_calloc_t(stack, ecs_script_vars_t);
      |                        ^~~~~~
../src/flecs/distr/flecs.c:59653:25: note:   crosses initialization of ‘ecs_stack_cursor_t* cursor’
59653 |     ecs_stack_cursor_t *cursor = flecs_stack_get_cursor(stack);
      |                         ^~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_script_vars_t* ecs_script_vars_push(ecs_script_vars_t*)’:
../src/flecs/distr/flecs.c:59697:1: error: jump to label ‘error’
59697 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:59691:5: note: in expansion of macro ‘ecs_check’
59691 |     ecs_check(parent != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:59693:22: note:   crosses initialization of ‘ecs_allocator_t* allocator’
59693 |     ecs_allocator_t *allocator = parent->allocator;
      |                      ^~~~~~~~~
../src/flecs/distr/flecs.c:59692:18: note:   crosses initialization of ‘ecs_stack_t* stack’
59692 |     ecs_stack_t *stack = parent->stack;
      |                  ^~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_script_vars_t* ecs_script_vars_pop(ecs_script_vars_t*)’:
../src/flecs/distr/flecs.c:59708:52: error: invalid conversion from ‘void*’ to ‘ecs_script_var_t*’ [-fpermissive]
59708 |         ecs_script_var_t *var_array = ecs_vec_first(&vars->vars);
      |                                       ~~~~~~~~~~~~~^~~~~~~~~~~~~
      |                                                    |
      |                                                    void*
../src/flecs/distr/flecs.c: In function ‘ecs_script_var_t* ecs_script_vars_declare(ecs_script_vars_t*, const char*)’:
../src/flecs/distr/flecs.c:59753:1: error: jump to label ‘error’
59753 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:59738:18: note:   from here
59738 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:59742:23: note:   crosses initialization of ‘ecs_script_var_t* var’
59742 |     ecs_script_var_t *var = ecs_vec_append_t(
      |                       ^~~
../src/flecs/distr/flecs.c: In function ‘ecs_script_var_t* ecs_script_vars_define_id(ecs_script_vars_t*, const char*, ecs_entity_t)’:
../src/flecs/distr/flecs.c:59783:1: error: jump to label ‘error’
59783 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:59766:5: note: in expansion of macro ‘ecs_check’
59766 |     ecs_check(ti != NULL, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:59769:23: note:   crosses initialization of ‘ecs_script_var_t* result’
59769 |     ecs_script_var_t *result = ecs_script_vars_declare(vars, name);
      |                       ^~~~~~
../src/flecs/distr/flecs.c:59783:1: error: jump to label ‘error’
59783 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:59762:5: note: in expansion of macro ‘ecs_check’
59762 |     ecs_check(vars->world != NULL, ECS_INVALID_OPERATION, "variable scope is "
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:59769:23: note:   crosses initialization of ‘ecs_script_var_t* result’
59769 |     ecs_script_var_t *result = ecs_script_vars_declare(vars, name);
      |                       ^~~~~~
../src/flecs/distr/flecs.c:59765:28: note:   crosses initialization of ‘const ecs_type_info_t* ti’
59765 |     const ecs_type_info_t *ti = ecs_get_type_info(vars->world, type);
      |                            ^~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t flecs_script_find_entity(ecs_script_eval_visitor_t*, ecs_entity_t, const char*)’:
../src/flecs/distr/flecs.c:60215:52: error: expected unqualified-id before ‘using’
60215 |         int32_t i, using_count = ecs_vec_count(&v->using);
      |                                                    ^~~~~
../src/flecs/distr/flecs.c:60217:27: error: expected unqualified-id before ‘using’
60217 |             ecs_entity_t *using = ecs_vec_first(&v->using);
      |                           ^~~~~
../src/flecs/distr/flecs.c:60220:31: error: expected primary-expression before ‘using’
60220 |                     v->world, using[i], path, NULL, NULL, false);
      |                               ^~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t flecs_script_find_entity_action(const ecs_world_t*, const char*, void*)’:
../src/flecs/distr/flecs.c:60255:36: error: invalid conversion from ‘void*’ to ‘ecs_script_eval_visitor_t*’ [-fpermissive]
60255 |     ecs_script_eval_visitor_t *v = ctx;
      |                                    ^~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.c: In function ‘int flecs_script_find_template_entity(ecs_script_eval_visitor_t*, const char*)’:
../src/flecs/distr/flecs.c:60265:43: error: expected unqualified-id before ‘;’ token
60265 |     ecs_script_template_t *t = v->template;
      |                                           ^
../src/flecs/distr/flecs.c: In function ‘int flecs_script_eval_id(ecs_script_eval_visitor_t*, void*, ecs_script_id_t*)’:
../src/flecs/distr/flecs.c:60298:20: error: expected unqualified-id before ‘)’ token
60298 |     if (v->template) {
      |                    ^
../src/flecs/distr/flecs.c:60334:28: error: expected unqualified-id before ‘)’ token
60334 |             if (v->template) {
      |                            ^
../src/flecs/distr/flecs.c: In function ‘int flecs_script_eval_scope(ecs_script_eval_visitor_t*, ecs_script_scope_t*)’:
../src/flecs/distr/flecs.c:60406:50: error: expected unqualified-id before ‘using’
60406 |     int32_t prev_using_count = ecs_vec_count(&v->using);
      |                                                  ^~~~~
../src/flecs/distr/flecs.c:60419:25: error: expected unqualified-id before ‘)’ token
60419 |         if (!v->template) {
      |                         ^
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:60426:32: error: expected unqualified-id before ‘using’
60426 |     ecs_vec_set_count_t(a, &v->using, ecs_entity_t, prev_using_count);
      |                                ^~~~~
../src/flecs/distr/flecs.h:1223:34: note: in definition of macro ‘ecs_vec_set_count_t’
 1223 |     ecs_vec_set_count(allocator, vec, ECS_SIZEOF(T), elem_count)
      |                                  ^~~
../src/flecs/distr/flecs.c: In function ‘int flecs_script_eval_entity(ecs_script_eval_visitor_t*, ecs_script_entity_t*)’:
../src/flecs/distr/flecs.c:60490:20: error: expected unqualified-id before ‘)’ token
60490 |     if (v->template) {
      |                    ^
../src/flecs/distr/flecs.c:60535:52: error: invalid conversion from ‘void*’ to ‘ecs_script_annot_t**’ [-fpermissive]
60535 |         ecs_script_annot_t **annots = ecs_vec_first(&v->annot);
      |                                       ~~~~~~~~~~~~~^~~~~~~~~~~
      |                                                    |
      |                                                    void*
../src/flecs/distr/flecs.c: In function ‘int flecs_script_eval_tag(ecs_script_eval_visitor_t*, ecs_script_tag_t*)’:
../src/flecs/distr/flecs.c:60584:20: error: expected unqualified-id before ‘)’ token
60584 |     if (v->template) {
      |                    ^
../src/flecs/distr/flecs.c:60600:20: error: expected unqualified-id before ‘)’ token
60600 |     if (v->template) {
      |                    ^
../src/flecs/distr/flecs.c: In function ‘int flecs_script_eval_component(ecs_script_eval_visitor_t*, ecs_script_component_t*)’:
../src/flecs/distr/flecs.c:60620:20: error: expected unqualified-id before ‘)’ token
60620 |     if (v->template) {
      |                    ^
../src/flecs/distr/flecs.c:60635:20: error: expected unqualified-id before ‘)’ token
60635 |     if (v->template) {
      |                    ^
../src/flecs/distr/flecs.c:60684:9: error: designator order for field ‘ecs_value_t::type’ does not match declaration order in ‘ecs_value_t’
60684 |         };
      |         ^
../src/flecs/distr/flecs.c: In function ‘int flecs_script_eval_var_component(ecs_script_eval_visitor_t*, ecs_script_var_component_t*)’:
../src/flecs/distr/flecs.c:60723:20: error: expected unqualified-id before ‘)’ token
60723 |     if (v->template) {
      |                    ^
../src/flecs/distr/flecs.c:60739:9: error: designator order for field ‘ecs_value_t::type’ does not match declaration order in ‘ecs_value_t’
60739 |         };
      |         ^
../src/flecs/distr/flecs.c: In function ‘int flecs_script_eval_default_component(ecs_script_eval_visitor_t*, ecs_script_default_component_t*)’:
../src/flecs/distr/flecs.c:60762:20: error: expected unqualified-id before ‘)’ token
60762 |     if (v->template) {
      |                    ^
../src/flecs/distr/flecs.c:60798:5: error: designator order for field ‘ecs_value_t::type’ does not match declaration order in ‘ecs_value_t’
60798 |     };
      |     ^
../src/flecs/distr/flecs.c: In function ‘int flecs_script_eval_with_var(ecs_script_eval_visitor_t*, ecs_script_var_node_t*)’:
../src/flecs/distr/flecs.c:60821:20: error: expected unqualified-id before ‘)’ token
60821 |     if (v->template) {
      |                    ^
../src/flecs/distr/flecs.c: In function ‘int flecs_script_eval_with_tag(ecs_script_eval_visitor_t*, ecs_script_tag_t*)’:
../src/flecs/distr/flecs.c:60841:20: error: expected unqualified-id before ‘)’ token
60841 |     if (v->template) {
      |                    ^
../src/flecs/distr/flecs.c: In function ‘int flecs_script_eval_with_component(ecs_script_eval_visitor_t*, ecs_script_component_t*)’:
../src/flecs/distr/flecs.c:60862:20: error: expected unqualified-id before ‘)’ token
60862 |     if (v->template) {
      |                    ^
../src/flecs/distr/flecs.c: In function ‘int flecs_script_eval_with(ecs_script_eval_visitor_t*, ecs_script_with_t*)’:
../src/flecs/distr/flecs.c:60923:1: error: jump to label ‘error’
60923 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:60908:14: note:   from here
60908 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:60911:18: note:   crosses initialization of ‘ecs_value_t* value’
60911 |     ecs_value_t *value = flecs_script_with_last(v);
      |                  ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int flecs_script_eval_using(ecs_script_eval_visitor_t*, ecs_script_using_t*)’:
../src/flecs/distr/flecs.c:60955:28: error: expected unqualified-id before ‘using’
60955 |                     a, &v->using, ecs_entity_t)[0] = it.entities[i];
      |                            ^~~~~
../src/flecs/distr/flecs.h:865:40: note: in definition of macro ‘ECS_CAST’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                                        ^
../src/flecs/distr/flecs.c:60954:17: note: in expansion of macro ‘ecs_vec_append_t’
60954 |                 ecs_vec_append_t(
      |                 ^~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:60964:41: error: taking address of rvalue [-fpermissive]
60964 |             from = ecs_entity(v->world, {
      |                                         ^
60965 |                 .name = node->name,
      |                 ~~~~~~~~~~~~~~~~~~~      
60966 |                 .root_sep = ""
      |                 ~~~~~~~~~~~~~~           
60967 |             });
      |             ~                            
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c:60974:33: error: expected unqualified-id before ‘using’
60974 |         ecs_vec_append_t(a, &v->using, ecs_entity_t)[0] = from;
      |                                 ^~~~~
../src/flecs/distr/flecs.h:865:40: note: in definition of macro ‘ECS_CAST’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                                        ^
../src/flecs/distr/flecs.c:60974:9: note: in expansion of macro ‘ecs_vec_append_t’
60974 |         ecs_vec_append_t(a, &v->using, ecs_entity_t)[0] = from;
      |         ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_script_eval_visit_init(ecs_script_impl_t*, ecs_script_eval_visitor_t*)’:
../src/flecs/distr/flecs.c:61261:38: error: expected unqualified-id before ‘using’
61261 |     ecs_vec_init_t(v->allocator, &v->using, ecs_entity_t, 0);
      |                                      ^~~~~
../src/flecs/distr/flecs.h:1094:29: note: in definition of macro ‘ecs_vec_init_t’
 1094 |     ecs_vec_init(allocator, vec, ECS_SIZEOF(T), elem_count)
      |                             ^~~
../src/flecs/distr/flecs.c:61267:40: error: expected unqualified-id before ‘using’
61267 |     ecs_vec_append_t(v->allocator, &v->using, ecs_entity_t)[0] =
      |                                        ^~~~~
../src/flecs/distr/flecs.h:865:40: note: in definition of macro ‘ECS_CAST’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                                        ^
../src/flecs/distr/flecs.c:61267:5: note: in expansion of macro ‘ecs_vec_append_t’
61267 |     ecs_vec_append_t(v->allocator, &v->using, ecs_entity_t)[0] =
      |     ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_script_eval_visit_fini(ecs_script_eval_visitor_t*)’:
../src/flecs/distr/flecs.c:61277:38: error: expected unqualified-id before ‘using’
61277 |     ecs_vec_fini_t(v->allocator, &v->using, ecs_entity_t);
      |                                      ^~~~~
../src/flecs/distr/flecs.h:1111:29: note: in definition of macro ‘ecs_vec_fini_t’
 1111 |     ecs_vec_fini(allocator, vec, ECS_SIZEOF(T))
      |                             ^~~
../src/flecs/distr/flecs.c: In function ‘int flecs_script_visit_free(ecs_script_t*)’:
../src/flecs/distr/flecs.c:61438:1: error: jump to label ‘error’
61438 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:61426:5: note: in expansion of macro ‘ecs_check’
61426 |     ecs_check(script != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:61427:24: note:   crosses initialization of ‘ecs_script_visit_t v’
61427 |     ecs_script_visit_t v = {
      |                        ^
../src/flecs/distr/flecs.c: In function ‘int ecs_script_ast_to_buf(ecs_script_t*, ecs_strbuf_t*)’:
../src/flecs/distr/flecs.c:61840:1: error: jump to label ‘error’
61840 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:61833:5: note: in expansion of macro ‘ecs_check’
61833 |     ecs_check(buf != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:61834:30: note:   crosses initialization of ‘ecs_script_str_visitor_t v’
61834 |     ecs_script_str_visitor_t v = { .buf = buf };
      |                              ^
../src/flecs/distr/flecs.c:61840:1: error: jump to label ‘error’
61840 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:61832:5: note: in expansion of macro ‘ecs_check’
61832 |     ecs_check(script != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:61834:30: note:   crosses initialization of ‘ecs_script_str_visitor_t v’
61834 |     ecs_script_str_visitor_t v = { .buf = buf };
      |                              ^
../src/flecs/distr/flecs.c: In function ‘char* ecs_script_ast_to_str(ecs_script_t*)’:
../src/flecs/distr/flecs.c:61855:1: error: jump to label ‘error’
61855 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:61848:5: note: in expansion of macro ‘ecs_check’
61848 |     ecs_check(script != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:61849:18: note:   crosses initialization of ‘ecs_strbuf_t buf’
61849 |     ecs_strbuf_t buf = ECS_STRBUF_INIT;
      |                  ^~~
../src/flecs/distr/flecs.c: In function ‘void MonitorStats(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:61944:40: error: invalid conversion from ‘void*’ to ‘ecs_monitor_stats_ctx_t*’ [-fpermissive]
61944 |     ecs_monitor_stats_ctx_t *ctx = it->ctx;
      |                                    ~~~~^~~
      |                                        |
      |                                        void*
../src/flecs/distr/flecs.c:61946:43: error: invalid conversion from ‘void*’ to ‘EcsStatsHeader*’ [-fpermissive]
61946 |     EcsStatsHeader *hdr = ecs_field_w_size(it, 0, 0);
      |                           ~~~~~~~~~~~~~~~~^~~~~~~~~~
      |                                           |
      |                                           void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:3942:31: error: invalid conversion from ‘void*’ to ‘ecs_map_t*’ [-fpermissive]
 3942 | #define ECS_OFFSET(o, offset) reinterpret_cast<void*>((reinterpret_cast<uintptr_t>(o)) + (static_cast<uintptr_t>(offset)))
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.h:3946:28: note: in expansion of macro ‘ECS_OFFSET’
 3946 | #define ECS_OFFSET_T(o, T) ECS_OFFSET(o, ECS_SIZEOF(T))
      |                            ^~~~~~~~~~
../src/flecs/distr/flecs.c:61969:21: note: in expansion of macro ‘ECS_OFFSET_T’
61969 |         stats_map = ECS_OFFSET_T(hdr, EcsStatsHeader);
      |                     ^~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void ReduceStats(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:62034:39: error: invalid conversion from ‘void*’ to ‘ecs_reduce_stats_ctx_t*’ [-fpermissive]
62034 |     ecs_reduce_stats_ctx_t *ctx = it->ctx;
      |                                   ~~~~^~~
      |                                       |
      |                                       void*
../src/flecs/distr/flecs.c:62045:43: error: invalid conversion from ‘void*’ to ‘const ecs_map_t*’ [-fpermissive]
62045 |         ecs_map_iter_t mit = ecs_map_iter(src);
      |                                           ^~~
      |                                           |
      |                                           void*
../src/flecs/distr/flecs.c:29702:22: note:   initializing argument 1 of ‘ecs_map_iter_t ecs_map_iter(const ecs_map_t*)’
29702 |     const ecs_map_t *map)
      |     ~~~~~~~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c:62049:17: error: invalid conversion from ‘void*’ to ‘ecs_map_t*’ [-fpermissive]
62049 |                 dst, ctx->api.stats_size, ecs_map_key(&mit));
      |                 ^~~
      |                 |
      |                 void*
../src/flecs/distr/flecs.c:29651:16: note:   initializing argument 1 of ‘void* ecs_map_ensure_alloc(ecs_map_t*, ecs_size_t, ecs_map_key_t)’
29651 |     ecs_map_t *map,
      |     ~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c: In function ‘void AggregateStats(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:62057:42: error: invalid conversion from ‘void*’ to ‘ecs_aggregate_stats_ctx_t*’ [-fpermissive]
62057 |     ecs_aggregate_stats_ctx_t *ctx = it->ctx;
      |                                      ~~~~^~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.c:62060:47: error: invalid conversion from ‘void*’ to ‘EcsStatsHeader*’ [-fpermissive]
62060 |     EcsStatsHeader *dst_hdr = ecs_field_w_size(it, 0, 0);
      |                               ~~~~~~~~~~~~~~~~^~~~~~~~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c:62061:47: error: invalid conversion from ‘void*’ to ‘EcsStatsHeader*’ [-fpermissive]
62061 |     EcsStatsHeader *src_hdr = ecs_field_w_size(it, 0, 1);
      |                               ~~~~~~~~~~~~~~~~^~~~~~~~~~
      |                                               |
      |                                               void*
../src/flecs/distr/flecs.c:62079:28: error: invalid conversion from ‘void*’ to ‘const ecs_map_t*’ [-fpermissive]
62079 |         mit = ecs_map_iter(src_map);
      |                            ^~~~~~~
      |                            |
      |                            void*
../src/flecs/distr/flecs.c:29702:22: note:   initializing argument 1 of ‘ecs_map_iter_t ecs_map_iter(const ecs_map_t*)’
29702 |     const ecs_map_t *map)
      |     ~~~~~~~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c:62090:17: error: invalid conversion from ‘void*’ to ‘ecs_map_t*’ [-fpermissive]
62090 |                 dst_map, ctx->api.stats_size, ecs_map_key(&mit));
      |                 ^~~~~~~
      |                 |
      |                 void*
../src/flecs/distr/flecs.c:29651:16: note:   initializing argument 1 of ‘void* ecs_map_ensure_alloc(ecs_map_t*, ecs_size_t, ecs_map_key_t)’
29651 |     ecs_map_t *map,
      |     ~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c: In function ‘void flecs_monitor_ctx_free(void*)’:
../src/flecs/distr/flecs.c:62127:36: error: invalid conversion from ‘void*’ to ‘ecs_monitor_stats_ctx_t*’ [-fpermissive]
62127 |     ecs_monitor_stats_ctx_t *ctx = ptr;
      |                                    ^~~
      |                                    |
      |                                    void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_stats_api_import(ecs_world_t*, ecs_stats_api_t*)’:
../src/flecs/distr/flecs.c:62157:30: error: taking address of rvalue [-fpermissive]
62157 |         q = ecs_query(world, {
      |                              ^
62158 |             .terms = {{ .id = api->query_component_id }},
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
62159 |             .cache_kind = EcsQueryCacheNone,
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
62160 |             .flags = EcsQueryMatchDisabled
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
62161 |         });
      |         ~                     
../src/flecs/distr/flecs.h:9700:47: note: in definition of macro ‘ecs_query’
 9700 |     ecs_query_init(world, &(ecs_query_desc_t) __VA_ARGS__ )
      |                                               ^~~~~~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:12349:49: note: in definition of macro ‘ecs_system’
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:62171:23: note: in expansion of macro ‘ecs_entity’
62171 |             .entity = ecs_entity(world, { .name = "Monitor1s", .add = ecs_ids(ecs_dependson(EcsPreFrame)) }),
      |                       ^~~~~~~~~~
../src/flecs/distr/flecs.c:62171:71: note: in expansion of macro ‘ecs_ids’
62171 |             .entity = ecs_entity(world, { .name = "Monitor1s", .add = ecs_ids(ecs_dependson(EcsPreFrame)) }),
      |                                                                       ^~~~~~~
../src/flecs/distr/flecs.h:12349:47: error: expected primary-expression before ‘)’ token
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                               ^
../src/flecs/distr/flecs.c:62170:9: note: in expansion of macro ‘ecs_system’
62170 |         ecs_system(world, {
      |         ^~~~~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:12349:49: note: in definition of macro ‘ecs_system’
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:62189:23: note: in expansion of macro ‘ecs_entity’
62189 |             .entity = ecs_entity(world, { .name = "Monitor1m", .add = ecs_ids(ecs_dependson(EcsPreFrame)) }),
      |                       ^~~~~~~~~~
../src/flecs/distr/flecs.c:62189:71: note: in expansion of macro ‘ecs_ids’
62189 |             .entity = ecs_entity(world, { .name = "Monitor1m", .add = ecs_ids(ecs_dependson(EcsPreFrame)) }),
      |                                                                       ^~~~~~~
../src/flecs/distr/flecs.h:12349:47: error: expected primary-expression before ‘)’ token
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                               ^
../src/flecs/distr/flecs.c:62188:16: note: in expansion of macro ‘ecs_system’
62188 |         mw1m = ecs_system(world, {
      |                ^~~~~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:12349:49: note: in definition of macro ‘ecs_system’
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:62210:23: note: in expansion of macro ‘ecs_entity’
62210 |             .entity = ecs_entity(world, { .name = "Monitor1h", .add = ecs_ids(ecs_dependson(EcsPreFrame)) }),
      |                       ^~~~~~~~~~
../src/flecs/distr/flecs.c:62210:71: note: in expansion of macro ‘ecs_ids’
62210 |             .entity = ecs_entity(world, { .name = "Monitor1h", .add = ecs_ids(ecs_dependson(EcsPreFrame)) }),
      |                                                                       ^~~~~~~
../src/flecs/distr/flecs.h:12349:47: error: expected primary-expression before ‘)’ token
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                               ^
../src/flecs/distr/flecs.c:62209:9: note: in expansion of macro ‘ecs_system’
62209 |         ecs_system(world, {
      |         ^~~~~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:12349:49: note: in definition of macro ‘ecs_system’
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:62233:23: note: in expansion of macro ‘ecs_entity’
62233 |             .entity = ecs_entity(world, { .name = "Monitor1d", .add = ecs_ids(ecs_dependson(EcsPreFrame)) }),
      |                       ^~~~~~~~~~
../src/flecs/distr/flecs.c:62233:71: note: in expansion of macro ‘ecs_ids’
62233 |             .entity = ecs_entity(world, { .name = "Monitor1d", .add = ecs_ids(ecs_dependson(EcsPreFrame)) }),
      |                                                                       ^~~~~~~
../src/flecs/distr/flecs.h:12349:47: error: expected primary-expression before ‘)’ token
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                               ^
../src/flecs/distr/flecs.c:62232:9: note: in expansion of macro ‘ecs_system’
62232 |         ecs_system(world, {
      |         ^~~~~~~~~~
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:12349:49: note: in definition of macro ‘ecs_system’
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:62256:23: note: in expansion of macro ‘ecs_entity’
62256 |             .entity = ecs_entity(world, { .name = "Monitor1w", .add = ecs_ids(ecs_dependson(EcsPreFrame)) }),
      |                       ^~~~~~~~~~
../src/flecs/distr/flecs.c:62256:71: note: in expansion of macro ‘ecs_ids’
62256 |             .entity = ecs_entity(world, { .name = "Monitor1w", .add = ecs_ids(ecs_dependson(EcsPreFrame)) }),
      |                                                                       ^~~~~~~
../src/flecs/distr/flecs.h:12349:47: error: expected primary-expression before ‘)’ token
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                               ^
../src/flecs/distr/flecs.c:62255:9: note: in expansion of macro ‘ecs_system’
62255 |         ecs_system(world, {
      |         ^~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void FlecsStatsImport(ecs_world_t*)’:
../src/flecs/distr/flecs.c:62301:37: error: taking address of rvalue [-fpermissive]
62301 |     EcsPeriod1s = ecs_entity(world, { .name = "EcsPeriod1s" });
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:62302:37: error: taking address of rvalue [-fpermissive]
62302 |     EcsPeriod1m = ecs_entity(world, { .name = "EcsPeriod1m" });
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:62303:37: error: taking address of rvalue [-fpermissive]
62303 |     EcsPeriod1h = ecs_entity(world, { .name = "EcsPeriod1h" });
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:62304:37: error: taking address of rvalue [-fpermissive]
62304 |     EcsPeriod1d = ecs_entity(world, { .name = "EcsPeriod1d" });
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:62305:37: error: taking address of rvalue [-fpermissive]
62305 |     EcsPeriod1w = ecs_entity(world, { .name = "EcsPeriod1w" });
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_pipeline_monitor_dtor(EcsPipelineStats*)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_pipeline_stats_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:62334:39: note: in expansion of macro ‘ecs_map_ptr’
62334 |         ecs_pipeline_stats_t *stats = ecs_map_ptr(&it);
      |                                       ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_pipeline_stats_copy_last(void*, void*)’:
../src/flecs/distr/flecs.c:62377:34: error: invalid conversion from ‘void*’ to ‘ecs_pipeline_stats_t*’ [-fpermissive]
62377 |     ecs_pipeline_stats_copy_last(stats, src);
      |                                  ^~~~~
      |                                  |
      |                                  void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:12820:27: note:   initializing argument 1 of ‘void ecs_pipeline_stats_copy_last(ecs_pipeline_stats_t*, const ecs_pipeline_stats_t*)’
12820 |     ecs_pipeline_stats_t *dst,
      |     ~~~~~~~~~~~~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c:62377:41: error: invalid conversion from ‘void*’ to ‘const ecs_pipeline_stats_t*’ [-fpermissive]
62377 |     ecs_pipeline_stats_copy_last(stats, src);
      |                                         ^~~
      |                                         |
      |                                         void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:12821:33: note:   initializing argument 2 of ‘void ecs_pipeline_stats_copy_last(ecs_pipeline_stats_t*, const ecs_pipeline_stats_t*)’
12821 |     const ecs_pipeline_stats_t *src);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c: In function ‘void flecs_pipeline_stats_get(ecs_world_t*, ecs_entity_t, void*)’:
../src/flecs/distr/flecs.c:62386:40: error: invalid conversion from ‘void*’ to ‘ecs_pipeline_stats_t*’ [-fpermissive]
62386 |     ecs_pipeline_stats_get(world, res, stats);
      |                                        ^~~~~
      |                                        |
      |                                        void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:12783:27: note:   initializing argument 3 of ‘bool ecs_pipeline_stats_get(ecs_world_t*, ecs_entity_t, ecs_pipeline_stats_t*)’
12783 |     ecs_pipeline_stats_t *stats);
      |     ~~~~~~~~~~~~~~~~~~~~~~^~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_pipeline_stats_reduce(void*, void*)’:
../src/flecs/distr/flecs.c:62394:31: error: invalid conversion from ‘void*’ to ‘ecs_pipeline_stats_t*’ [-fpermissive]
62394 |     ecs_pipeline_stats_reduce(stats, src);
      |                               ^~~~~
      |                               |
      |                               void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:12796:27: note:   initializing argument 1 of ‘void ecs_pipeline_stats_reduce(ecs_pipeline_stats_t*, const ecs_pipeline_stats_t*)’
12796 |     ecs_pipeline_stats_t *dst,
      |     ~~~~~~~~~~~~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c:62394:38: error: invalid conversion from ‘void*’ to ‘const ecs_pipeline_stats_t*’ [-fpermissive]
62394 |     ecs_pipeline_stats_reduce(stats, src);
      |                                      ^~~
      |                                      |
      |                                      void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:12797:33: note:   initializing argument 2 of ‘void ecs_pipeline_stats_reduce(ecs_pipeline_stats_t*, const ecs_pipeline_stats_t*)’
12797 |     const ecs_pipeline_stats_t *src);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c: In function ‘void flecs_pipeline_stats_reduce_last(void*, void*, int32_t)’:
../src/flecs/distr/flecs.c:62403:36: error: invalid conversion from ‘void*’ to ‘ecs_pipeline_stats_t*’ [-fpermissive]
62403 |     ecs_pipeline_stats_reduce_last(stats, last, reduce_count);
      |                                    ^~~~~
      |                                    |
      |                                    void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:12802:27: note:   initializing argument 1 of ‘void ecs_pipeline_stats_reduce_last(ecs_pipeline_stats_t*, const ecs_pipeline_stats_t*, int32_t)’
12802 |     ecs_pipeline_stats_t *stats,
      |     ~~~~~~~~~~~~~~~~~~~~~~^~~~~
../src/flecs/distr/flecs.c:62403:43: error: invalid conversion from ‘void*’ to ‘const ecs_pipeline_stats_t*’ [-fpermissive]
62403 |     ecs_pipeline_stats_reduce_last(stats, last, reduce_count);
      |                                           ^~~~
      |                                           |
      |                                           void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:12803:33: note:   initializing argument 2 of ‘void ecs_pipeline_stats_reduce_last(ecs_pipeline_stats_t*, const ecs_pipeline_stats_t*, int32_t)’
12803 |     const ecs_pipeline_stats_t *old,
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c: In function ‘void flecs_pipeline_stats_repeat_last(void*)’:
../src/flecs/distr/flecs.c:62410:36: error: invalid conversion from ‘void*’ to ‘ecs_pipeline_stats_t*’ [-fpermissive]
62410 |     ecs_pipeline_stats_repeat_last(stats);
      |                                    ^~~~~
      |                                    |
      |                                    void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:12809:27: note:   initializing argument 1 of ‘void ecs_pipeline_stats_repeat_last(ecs_pipeline_stats_t*)’
12809 |     ecs_pipeline_stats_t *stats);
      |     ~~~~~~~~~~~~~~~~~~~~~~^~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_pipeline_stats_fini(void*)’:
../src/flecs/distr/flecs.c:62417:29: error: invalid conversion from ‘void*’ to ‘ecs_pipeline_stats_t*’ [-fpermissive]
62417 |     ecs_pipeline_stats_fini(stats);
      |                             ^~~~~
      |                             |
      |                             void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:12791:27: note:   initializing argument 1 of ‘void ecs_pipeline_stats_fini(ecs_pipeline_stats_t*)’
12791 |     ecs_pipeline_stats_t *stats);
      |     ~~~~~~~~~~~~~~~~~~~~~~^~~~~
../src/flecs/distr/flecs.c: In function ‘void FlecsPipelineMonitorImport(ecs_world_t*)’:
../src/flecs/distr/flecs.c:62430:5: error: designator order for field ‘ecs_type_hooks_t::dtor’ does not match declaration order in ‘ecs_type_hooks_t’
62430 |     });
      |     ^
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:62425:44: error: taking address of rvalue [-fpermissive]
62425 |     ecs_set_hooks(world, EcsPipelineStats, {
      |                                            ^
62426 |         .ctor = ecs_ctor(EcsPipelineStats),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
62427 |         .copy = ecs_copy(EcsPipelineStats),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
62428 |         .move = ecs_move(EcsPipelineStats),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
62429 |         .dtor = ecs_dtor(EcsPipelineStats)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
62430 |     });
      |     ~                                       
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void ecs_metric_reduce(ecs_metric_t*, const ecs_metric_t*, int32_t, int32_t)’:
../src/flecs/distr/flecs.c:62572:1: error: jump to label ‘error’
62572 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62547:5: note: in expansion of macro ‘ecs_check’
62547 |     ecs_check(src != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:62554:17: note:   crosses initialization of ‘float fwindow’
62554 |     ecs_float_t fwindow = (ecs_float_t)ECS_STAT_WINDOW;
      |                 ^~~~~~~
../src/flecs/distr/flecs.c:62549:10: note:   crosses initialization of ‘bool min_set’
62549 |     bool min_set = false;
      |          ^~~~~~~
../src/flecs/distr/flecs.c:62572:1: error: jump to label ‘error’
62572 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62546:5: note: in expansion of macro ‘ecs_check’
62546 |     ecs_check(dst != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:62554:17: note:   crosses initialization of ‘float fwindow’
62554 |     ecs_float_t fwindow = (ecs_float_t)ECS_STAT_WINDOW;
      |                 ^~~~~~~
../src/flecs/distr/flecs.c:62549:10: note:   crosses initialization of ‘bool min_set’
62549 |     bool min_set = false;
      |          ^~~~~~~
../src/flecs/distr/flecs.c: In function ‘void ecs_metric_reduce_last(ecs_metric_t*, int32_t, int32_t)’:
../src/flecs/distr/flecs.c:62602:1: error: jump to label ‘error’
62602 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62581:5: note: in expansion of macro ‘ecs_check’
62581 |     ecs_check(m != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:62594:17: note:   crosses initialization of ‘float next’
62594 |     ecs_float_t next = m->gauge.avg[t];
      |                 ^~~~
../src/flecs/distr/flecs.c:62593:17: note:   crosses initialization of ‘float cur’
62593 |     ecs_float_t cur = m->gauge.avg[prev];
      |                 ^~~
../src/flecs/distr/flecs.c:62592:17: note:   crosses initialization of ‘float fcount’
62592 |     ecs_float_t fcount = (ecs_float_t)(count + 1);
      |                 ^~~~~~
../src/flecs/distr/flecs.c:62582:13: note:   crosses initialization of ‘int32_t t’
62582 |     int32_t t = t_next(prev);
      |             ^
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void ecs_world_stats_get(const ecs_world_t*, ecs_world_stats_t*)’:
../src/flecs/distr/flecs.h:886:45: error: taking address of rvalue [-fpermissive]
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                                             ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:884:25: note: in expansion of macro ‘ECS_EQ’
  884 | #define ECS_NEQ(a, b) (!ECS_EQ(a, b))
      |                         ^~~~~~
../src/flecs/distr/flecs.h:886:24: note: in expansion of macro ‘ECS_NEQ’
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:62715:9: note: in expansion of macro ‘ECS_NEQZERO’
62715 |     if (ECS_NEQZERO(delta_world_time) && ECS_NEQZERO(delta_frame_count)) {
      |         ^~~~~~~~~~~
../src/flecs/distr/flecs.h:886:45: error: taking address of rvalue [-fpermissive]
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                                             ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:884:25: note: in expansion of macro ‘ECS_EQ’
  884 | #define ECS_NEQ(a, b) (!ECS_EQ(a, b))
      |                         ^~~~~~
../src/flecs/distr/flecs.h:886:24: note: in expansion of macro ‘ECS_NEQ’
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:62715:42: note: in expansion of macro ‘ECS_NEQZERO’
62715 |     if (ECS_NEQZERO(delta_world_time) && ECS_NEQZERO(delta_frame_count)) {
      |                                          ^~~~~~~~~~~
../src/flecs/distr/flecs.c:62782:1: error: jump to label ‘error’
62782 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62691:5: note: in expansion of macro ‘ecs_check’
62691 |     ecs_check(s != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:62753:13: note:   crosses initialization of ‘int64_t outstanding_allocs’
62753 |     int64_t outstanding_allocs = ecs_os_api_malloc_count +
      |             ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62706:12: note:   crosses initialization of ‘double delta_world_time’
62706 |     double delta_world_time =
      |            ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62697:12: note:   crosses initialization of ‘double delta_frame_count’
62697 |     double delta_frame_count =
      |            ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62695:13: note:   crosses initialization of ‘int32_t t’
62695 |     int32_t t = s->t = t_next(s->t);
      |             ^
../src/flecs/distr/flecs.c:62782:1: error: jump to label ‘error’
62782 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62690:5: note: in expansion of macro ‘ecs_check’
62690 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:62753:13: note:   crosses initialization of ‘int64_t outstanding_allocs’
62753 |     int64_t outstanding_allocs = ecs_os_api_malloc_count +
      |             ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62706:12: note:   crosses initialization of ‘double delta_world_time’
62706 |     double delta_world_time =
      |            ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62697:12: note:   crosses initialization of ‘double delta_frame_count’
62697 |     double delta_frame_count =
      |            ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62695:13: note:   crosses initialization of ‘int32_t t’
62695 |     int32_t t = s->t = t_next(s->t);
      |             ^
../src/flecs/distr/flecs.c: In function ‘void ecs_query_stats_get(const ecs_world_t*, const ecs_query_t*, ecs_query_stats_t*)’:
../src/flecs/distr/flecs.c:62833:1: error: jump to label ‘error’
62833 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62824:5: note: in expansion of macro ‘ecs_check’
62824 |     ecs_check(s != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:62828:23: note:   crosses initialization of ‘ecs_query_count_t counts’
62828 |     ecs_query_count_t counts = ecs_query_count(query);
      |                       ^~~~~~
../src/flecs/distr/flecs.c:62827:13: note:   crosses initialization of ‘int32_t t’
62827 |     int32_t t = s->t = t_next(s->t);
      |             ^
../src/flecs/distr/flecs.c:62833:1: error: jump to label ‘error’
62833 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62823:5: note: in expansion of macro ‘ecs_check’
62823 |     ecs_check(query != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:62828:23: note:   crosses initialization of ‘ecs_query_count_t counts’
62828 |     ecs_query_count_t counts = ecs_query_count(query);
      |                       ^~~~~~
../src/flecs/distr/flecs.c:62827:13: note:   crosses initialization of ‘int32_t t’
62827 |     int32_t t = s->t = t_next(s->t);
      |             ^
../src/flecs/distr/flecs.c: In function ‘bool ecs_system_stats_get(const ecs_world_t*, ecs_entity_t, ecs_system_stats_t*)’:
../src/flecs/distr/flecs.c:62895:1: error: jump to label ‘error’
62895 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62878:5: note: in expansion of macro ‘ecs_check’
62878 |     ecs_check(system != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:62888:13: note:   crosses initialization of ‘int32_t t’
62888 |     int32_t t = s->query.t;
      |             ^
../src/flecs/distr/flecs.c:62882:25: note:   crosses initialization of ‘const ecs_system_t* ptr’
62882 |     const ecs_system_t *ptr = flecs_poly_get(world, system, ecs_system_t);
      |                         ^~~
../src/flecs/distr/flecs.c:62895:1: error: jump to label ‘error’
62895 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62877:5: note: in expansion of macro ‘ecs_check’
62877 |     ecs_check(s != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:62888:13: note:   crosses initialization of ‘int32_t t’
62888 |     int32_t t = s->query.t;
      |             ^
../src/flecs/distr/flecs.c:62882:25: note:   crosses initialization of ‘const ecs_system_t* ptr’
62882 |     const ecs_system_t *ptr = flecs_poly_get(world, system, ecs_system_t);
      |                         ^~~
../src/flecs/distr/flecs.c:62895:1: error: jump to label ‘error’
62895 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62876:5: note: in expansion of macro ‘ecs_check’
62876 |     ecs_check(world != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:62888:13: note:   crosses initialization of ‘int32_t t’
62888 |     int32_t t = s->query.t;
      |             ^
../src/flecs/distr/flecs.c:62882:25: note:   crosses initialization of ‘const ecs_system_t* ptr’
62882 |     const ecs_system_t *ptr = flecs_poly_get(world, system, ecs_system_t);
      |                         ^~~
../src/flecs/distr/flecs.c: In function ‘bool ecs_pipeline_stats_get(ecs_world_t*, ecs_entity_t, ecs_pipeline_stats_t*)’:
../src/flecs/distr/flecs.c:63045:1: error: jump to label ‘error’
63045 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62949:5: note: in expansion of macro ‘ecs_check’
62949 |     ecs_check(pipeline != 0, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:62980:13: note:   crosses initialization of ‘int32_t pip_count’
62980 |     int32_t pip_count = active_sys_count + ecs_vec_count(ops);
      |             ^~~~~~~~~
../src/flecs/distr/flecs.c:62979:24: note:   crosses initialization of ‘ecs_pipeline_op_t* op_last’
62979 |     ecs_pipeline_op_t *op_last = ecs_vec_last_t(ops, ecs_pipeline_op_t);
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:62978:24: note:   crosses initialization of ‘ecs_pipeline_op_t* op’
62978 |     ecs_pipeline_op_t *op = ecs_vec_first_t(ops, ecs_pipeline_op_t);
      |                        ^~
../src/flecs/distr/flecs.c:62977:16: note:   crosses initialization of ‘ecs_vec_t* ops’
62977 |     ecs_vec_t *ops = &pq->ops;
      |                ^~~
../src/flecs/distr/flecs.c:62962:16: note:   crosses initialization of ‘ecs_iter_t it’
62962 |     ecs_iter_t it = ecs_query_iter(stage, pq->query);
      |                ^~
../src/flecs/distr/flecs.c:62959:28: note:   crosses initialization of ‘int32_t active_sys_count’
62959 |     int32_t sys_count = 0, active_sys_count = 0;
      |                            ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62959:13: note:   crosses initialization of ‘int32_t sys_count’
62959 |     int32_t sys_count = 0, active_sys_count = 0;
      |             ^~~~~~~~~
../src/flecs/distr/flecs.c:62956:27: note:   crosses initialization of ‘ecs_pipeline_state_t* pq’
62956 |     ecs_pipeline_state_t *pq = pqc->state;
      |                           ^~
../src/flecs/distr/flecs.c:62952:24: note:   crosses initialization of ‘const EcsPipeline* pqc’
62952 |     const EcsPipeline *pqc = ecs_get(world, pipeline, EcsPipeline);
      |                        ^~~
../src/flecs/distr/flecs.c:62951:24: note:   crosses initialization of ‘const ecs_world_t* world’
62951 |     const ecs_world_t *world = ecs_get_world(stage);
      |                        ^~~~~
../src/flecs/distr/flecs.c:63045:1: error: jump to label ‘error’
63045 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62948:5: note: in expansion of macro ‘ecs_check’
62948 |     ecs_check(s != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:62980:13: note:   crosses initialization of ‘int32_t pip_count’
62980 |     int32_t pip_count = active_sys_count + ecs_vec_count(ops);
      |             ^~~~~~~~~
../src/flecs/distr/flecs.c:62979:24: note:   crosses initialization of ‘ecs_pipeline_op_t* op_last’
62979 |     ecs_pipeline_op_t *op_last = ecs_vec_last_t(ops, ecs_pipeline_op_t);
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:62978:24: note:   crosses initialization of ‘ecs_pipeline_op_t* op’
62978 |     ecs_pipeline_op_t *op = ecs_vec_first_t(ops, ecs_pipeline_op_t);
      |                        ^~
../src/flecs/distr/flecs.c:62977:16: note:   crosses initialization of ‘ecs_vec_t* ops’
62977 |     ecs_vec_t *ops = &pq->ops;
      |                ^~~
../src/flecs/distr/flecs.c:62962:16: note:   crosses initialization of ‘ecs_iter_t it’
62962 |     ecs_iter_t it = ecs_query_iter(stage, pq->query);
      |                ^~
../src/flecs/distr/flecs.c:62959:28: note:   crosses initialization of ‘int32_t active_sys_count’
62959 |     int32_t sys_count = 0, active_sys_count = 0;
      |                            ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62959:13: note:   crosses initialization of ‘int32_t sys_count’
62959 |     int32_t sys_count = 0, active_sys_count = 0;
      |             ^~~~~~~~~
../src/flecs/distr/flecs.c:62956:27: note:   crosses initialization of ‘ecs_pipeline_state_t* pq’
62956 |     ecs_pipeline_state_t *pq = pqc->state;
      |                           ^~
../src/flecs/distr/flecs.c:62952:24: note:   crosses initialization of ‘const EcsPipeline* pqc’
62952 |     const EcsPipeline *pqc = ecs_get(world, pipeline, EcsPipeline);
      |                        ^~~
../src/flecs/distr/flecs.c:62951:24: note:   crosses initialization of ‘const ecs_world_t* world’
62951 |     const ecs_world_t *world = ecs_get_world(stage);
      |                        ^~~~~
../src/flecs/distr/flecs.c:63045:1: error: jump to label ‘error’
63045 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62947:5: note: in expansion of macro ‘ecs_check’
62947 |     ecs_check(stage != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:62980:13: note:   crosses initialization of ‘int32_t pip_count’
62980 |     int32_t pip_count = active_sys_count + ecs_vec_count(ops);
      |             ^~~~~~~~~
../src/flecs/distr/flecs.c:62979:24: note:   crosses initialization of ‘ecs_pipeline_op_t* op_last’
62979 |     ecs_pipeline_op_t *op_last = ecs_vec_last_t(ops, ecs_pipeline_op_t);
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:62978:24: note:   crosses initialization of ‘ecs_pipeline_op_t* op’
62978 |     ecs_pipeline_op_t *op = ecs_vec_first_t(ops, ecs_pipeline_op_t);
      |                        ^~
../src/flecs/distr/flecs.c:62977:16: note:   crosses initialization of ‘ecs_vec_t* ops’
62977 |     ecs_vec_t *ops = &pq->ops;
      |                ^~~
../src/flecs/distr/flecs.c:62962:16: note:   crosses initialization of ‘ecs_iter_t it’
62962 |     ecs_iter_t it = ecs_query_iter(stage, pq->query);
      |                ^~
../src/flecs/distr/flecs.c:62959:28: note:   crosses initialization of ‘int32_t active_sys_count’
62959 |     int32_t sys_count = 0, active_sys_count = 0;
      |                            ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:62959:13: note:   crosses initialization of ‘int32_t sys_count’
62959 |     int32_t sys_count = 0, active_sys_count = 0;
      |             ^~~~~~~~~
../src/flecs/distr/flecs.c:62956:27: note:   crosses initialization of ‘ecs_pipeline_state_t* pq’
62956 |     ecs_pipeline_state_t *pq = pqc->state;
      |                           ^~
../src/flecs/distr/flecs.c:62952:24: note:   crosses initialization of ‘const EcsPipeline* pqc’
62952 |     const EcsPipeline *pqc = ecs_get(world, pipeline, EcsPipeline);
      |                        ^~~
../src/flecs/distr/flecs.c:62951:24: note:   crosses initialization of ‘const ecs_world_t* world’
62951 |     const ecs_world_t *world = ecs_get_world(stage);
      |                        ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_system_monitor_dtor(EcsSystemStats*)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_system_stats_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:63222:37: note: in expansion of macro ‘ecs_map_ptr’
63222 |         ecs_system_stats_t *stats = ecs_map_ptr(&it);
      |                                     ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_system_stats_copy_last(void*, void*)’:
../src/flecs/distr/flecs.c:63263:32: error: invalid conversion from ‘void*’ to ‘ecs_system_stats_t*’ [-fpermissive]
63263 |     ecs_system_stats_copy_last(stats, src);
      |                                ^~~~~
      |                                |
      |                                void*
../src/flecs/distr/flecs.c:62929:25: note:   initializing argument 1 of ‘void ecs_system_stats_copy_last(ecs_system_stats_t*, const ecs_system_stats_t*)’
62929 |     ecs_system_stats_t *dst,
      |     ~~~~~~~~~~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c:63263:39: error: invalid conversion from ‘void*’ to ‘const ecs_system_stats_t*’ [-fpermissive]
63263 |     ecs_system_stats_copy_last(stats, src);
      |                                       ^~~
      |                                       |
      |                                       void*
../src/flecs/distr/flecs.c:62930:31: note:   initializing argument 2 of ‘void ecs_system_stats_copy_last(ecs_system_stats_t*, const ecs_system_stats_t*)’
62930 |     const ecs_system_stats_t *src)
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c: In function ‘void flecs_system_stats_get(ecs_world_t*, ecs_entity_t, void*)’:
../src/flecs/distr/flecs.c:63272:38: error: invalid conversion from ‘void*’ to ‘ecs_system_stats_t*’ [-fpermissive]
63272 |     ecs_system_stats_get(world, res, stats);
      |                                      ^~~~~
      |                                      |
      |                                      void*
../src/flecs/distr/flecs.c:62874:25: note:   initializing argument 3 of ‘bool ecs_system_stats_get(const ecs_world_t*, ecs_entity_t, ecs_system_stats_t*)’
62874 |     ecs_system_stats_t *s)
      |     ~~~~~~~~~~~~~~~~~~~~^
../src/flecs/distr/flecs.c: In function ‘void flecs_system_stats_reduce(void*, void*)’:
../src/flecs/distr/flecs.c:63280:29: error: invalid conversion from ‘void*’ to ‘ecs_system_stats_t*’ [-fpermissive]
63280 |     ecs_system_stats_reduce(stats, src);
      |                             ^~~~~
      |                             |
      |                             void*
../src/flecs/distr/flecs.c:62900:25: note:   initializing argument 1 of ‘void ecs_system_stats_reduce(ecs_system_stats_t*, const ecs_system_stats_t*)’
62900 |     ecs_system_stats_t *dst,
      |     ~~~~~~~~~~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c:63280:36: error: invalid conversion from ‘void*’ to ‘const ecs_system_stats_t*’ [-fpermissive]
63280 |     ecs_system_stats_reduce(stats, src);
      |                                    ^~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.c:62901:31: note:   initializing argument 2 of ‘void ecs_system_stats_reduce(ecs_system_stats_t*, const ecs_system_stats_t*)’
62901 |     const ecs_system_stats_t *src)
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c: In function ‘void flecs_system_stats_reduce_last(void*, void*, int32_t)’:
../src/flecs/distr/flecs.c:63289:34: error: invalid conversion from ‘void*’ to ‘ecs_system_stats_t*’ [-fpermissive]
63289 |     ecs_system_stats_reduce_last(stats, last, reduce_count);
      |                                  ^~~~~
      |                                  |
      |                                  void*
../src/flecs/distr/flecs.c:62910:25: note:   initializing argument 1 of ‘void ecs_system_stats_reduce_last(ecs_system_stats_t*, const ecs_system_stats_t*, int32_t)’
62910 |     ecs_system_stats_t *dst,
      |     ~~~~~~~~~~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c:63289:41: error: invalid conversion from ‘void*’ to ‘const ecs_system_stats_t*’ [-fpermissive]
63289 |     ecs_system_stats_reduce_last(stats, last, reduce_count);
      |                                         ^~~~
      |                                         |
      |                                         void*
../src/flecs/distr/flecs.c:62911:31: note:   initializing argument 2 of ‘void ecs_system_stats_reduce_last(ecs_system_stats_t*, const ecs_system_stats_t*, int32_t)’
62911 |     const ecs_system_stats_t *src,
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c: In function ‘void flecs_system_stats_repeat_last(void*)’:
../src/flecs/distr/flecs.c:63296:34: error: invalid conversion from ‘void*’ to ‘ecs_system_stats_t*’ [-fpermissive]
63296 |     ecs_system_stats_repeat_last(stats);
      |                                  ^~~~~
      |                                  |
      |                                  void*
../src/flecs/distr/flecs.c:62921:25: note:   initializing argument 1 of ‘void ecs_system_stats_repeat_last(ecs_system_stats_t*)’
62921 |     ecs_system_stats_t *stats)
      |     ~~~~~~~~~~~~~~~~~~~~^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void FlecsSystemMonitorImport(ecs_world_t*)’:
../src/flecs/distr/flecs.c:63309:5: error: designator order for field ‘ecs_type_hooks_t::dtor’ does not match declaration order in ‘ecs_type_hooks_t’
63309 |     });
      |     ^
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c:63304:42: error: taking address of rvalue [-fpermissive]
63304 |     ecs_set_hooks(world, EcsSystemStats, {
      |                                          ^
63305 |         .ctor = ecs_ctor(EcsSystemStats),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
63306 |         .copy = ecs_copy(EcsSystemStats),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
63307 |         .move = ecs_move(EcsSystemStats),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
63308 |         .dtor = ecs_dtor(EcsSystemStats)
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
63309 |     });
      |     ~                                     
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_world_stats_get(ecs_world_t*, ecs_entity_t, void*)’:
../src/flecs/distr/flecs.c:63343:32: error: invalid conversion from ‘void*’ to ‘ecs_world_stats_t*’ [-fpermissive]
63343 |     ecs_world_stats_get(world, stats);
      |                                ^~~~~
      |                                |
      |                                void*
../src/flecs/distr/flecs.c:62688:24: note:   initializing argument 2 of ‘void ecs_world_stats_get(const ecs_world_t*, ecs_world_stats_t*)’
62688 |     ecs_world_stats_t *s)
      |     ~~~~~~~~~~~~~~~~~~~^
../src/flecs/distr/flecs.c: In function ‘void flecs_world_stats_copy_last(void*, void*)’:
../src/flecs/distr/flecs.c:63360:31: error: invalid conversion from ‘void*’ to ‘ecs_world_stats_t*’ [-fpermissive]
63360 |     ecs_world_stats_copy_last(stats, src);
      |                               ^~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.c:62811:24: note:   initializing argument 1 of ‘void ecs_world_stats_copy_last(ecs_world_stats_t*, const ecs_world_stats_t*)’
62811 |     ecs_world_stats_t *dst,
      |     ~~~~~~~~~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c:63360:38: error: invalid conversion from ‘void*’ to ‘const ecs_world_stats_t*’ [-fpermissive]
63360 |     ecs_world_stats_copy_last(stats, src);
      |                                      ^~~
      |                                      |
      |                                      void*
../src/flecs/distr/flecs.c:62812:30: note:   initializing argument 2 of ‘void ecs_world_stats_copy_last(ecs_world_stats_t*, const ecs_world_stats_t*)’
62812 |     const ecs_world_stats_t *src)
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c: In function ‘void flecs_world_stats_reduce(void*, void*)’:
../src/flecs/distr/flecs.c:63368:28: error: invalid conversion from ‘void*’ to ‘ecs_world_stats_t*’ [-fpermissive]
63368 |     ecs_world_stats_reduce(stats, src);
      |                            ^~~~~
      |                            |
      |                            void*
../src/flecs/distr/flecs.c:62787:24: note:   initializing argument 1 of ‘void ecs_world_stats_reduce(ecs_world_stats_t*, const ecs_world_stats_t*)’
62787 |     ecs_world_stats_t *dst,
      |     ~~~~~~~~~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c:63368:35: error: invalid conversion from ‘void*’ to ‘const ecs_world_stats_t*’ [-fpermissive]
63368 |     ecs_world_stats_reduce(stats, src);
      |                                   ^~~
      |                                   |
      |                                   void*
../src/flecs/distr/flecs.c:62788:30: note:   initializing argument 2 of ‘void ecs_world_stats_reduce(ecs_world_stats_t*, const ecs_world_stats_t*)’
62788 |     const ecs_world_stats_t *src)
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c: In function ‘void flecs_world_stats_reduce_last(void*, void*, int32_t)’:
../src/flecs/distr/flecs.c:63377:33: error: invalid conversion from ‘void*’ to ‘ecs_world_stats_t*’ [-fpermissive]
63377 |     ecs_world_stats_reduce_last(stats, last, reduce_count);
      |                                 ^~~~~
      |                                 |
      |                                 void*
../src/flecs/distr/flecs.c:62795:24: note:   initializing argument 1 of ‘void ecs_world_stats_reduce_last(ecs_world_stats_t*, const ecs_world_stats_t*, int32_t)’
62795 |     ecs_world_stats_t *dst,
      |     ~~~~~~~~~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c:63377:40: error: invalid conversion from ‘void*’ to ‘const ecs_world_stats_t*’ [-fpermissive]
63377 |     ecs_world_stats_reduce_last(stats, last, reduce_count);
      |                                        ^~~~
      |                                        |
      |                                        void*
../src/flecs/distr/flecs.c:62796:30: note:   initializing argument 2 of ‘void ecs_world_stats_reduce_last(ecs_world_stats_t*, const ecs_world_stats_t*, int32_t)’
62796 |     const ecs_world_stats_t *src,
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~^~~
../src/flecs/distr/flecs.c: In function ‘void flecs_world_stats_repeat_last(void*)’:
../src/flecs/distr/flecs.c:63384:33: error: invalid conversion from ‘void*’ to ‘ecs_world_stats_t*’ [-fpermissive]
63384 |     ecs_world_stats_repeat_last(stats);
      |                                 ^~~~~
      |                                 |
      |                                 void*
../src/flecs/distr/flecs.c:62804:24: note:   initializing argument 1 of ‘void ecs_world_stats_repeat_last(ecs_world_stats_t*)’
62804 |     ecs_world_stats_t *stats)
      |     ~~~~~~~~~~~~~~~~~~~^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void FlecsWorldMonitorImport(ecs_world_t*)’:
../src/flecs/distr/flecs.c:63392:41: error: taking address of rvalue [-fpermissive]
63392 |     ecs_set_hooks(world, EcsWorldStats, {
      |                                         ^
63393 |         .ctor = flecs_default_ctor
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~       
63394 |     });
      |     ~                                    
../src/flecs/distr/flecs.h:10023:59: note: in definition of macro ‘ecs_set_hooks’
10023 |     ecs_set_hooks_id(world, ecs_id(T), &(ecs_type_hooks_t)__VA_ARGS__)
      |                                                           ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void FlecsWorldSummaryImport(ecs_world_t*)’:
../src/flecs/distr/flecs.c:63485:23: error: taking address of rvalue [-fpermissive]
63485 |     ecs_struct(world, {
      |                       ^
63486 |         .entity = ecs_id(EcsWorldSummary),
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63487 |         .members = {
      |         ~~~~~~~~~~~~   
63488 |             { .name = "target_fps", .type = ecs_id(ecs_f64_t), .unit = EcsHertz },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63489 |             { .name = "time_scale", .type = ecs_id(ecs_f64_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63490 |             { .name = "frame_time_total", .type = ecs_id(ecs_f64_t), .unit = EcsSeconds },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63491 |             { .name = "system_time_total", .type = ecs_id(ecs_f64_t), .unit = EcsSeconds  },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63492 |             { .name = "merge_time_total", .type = ecs_id(ecs_f64_t), .unit = EcsSeconds  },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63493 |             { .name = "frame_time_last", .type = ecs_id(ecs_f64_t), .unit = EcsSeconds  },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63494 |             { .name = "system_time_last", .type = ecs_id(ecs_f64_t), .unit = EcsSeconds  },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63495 |             { .name = "merge_time_last", .type = ecs_id(ecs_f64_t), .unit = EcsSeconds  },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63496 |             { .name = "frame_count", .type = ecs_id(ecs_u64_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63497 |             { .name = "command_count", .type = ecs_id(ecs_u64_t) },
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63498 |             { .name = "build_info", .type = build_info }
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63499 |         }
      |         ~              
63500 |     });
      |     ~                  
../src/flecs/distr/flecs.h:16131:49: note: in definition of macro ‘ecs_struct’
16131 |     ecs_struct_init(world, &(ecs_struct_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10141:34: error: taking address of temporary array
10141 | #define ecs_ids(...) (ecs_id_t[]){ __VA_ARGS__, 0 }
      |                                  ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:12349:49: note: in definition of macro ‘ecs_system’
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:63505:19: note: in expansion of macro ‘ecs_entity’
63505 |         .entity = ecs_entity(world, {
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.c:63507:20: note: in expansion of macro ‘ecs_ids’
63507 |             .add = ecs_ids(ecs_pair(EcsDependsOn, EcsPreFrame))
      |                    ^~~~~~~
../src/flecs/distr/flecs.h:12349:47: error: expected primary-expression before ‘)’ token
12349 |     ecs_system_init(world, &(ecs_system_desc_t) __VA_ARGS__ )
      |                                               ^
../src/flecs/distr/flecs.c:63504:5: note: in expansion of macro ‘ecs_system’
63504 |     ecs_system(world, {
      |     ^~~~~~~~~~
../src/flecs/distr/flecs.c:63514:37: error: taking address of rvalue [-fpermissive]
63514 |         .entity = ecs_entity(world, {
      |                                     ^
63515 |             .name = "OnSetWorldSummary"
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~
63516 |         }),
      |         ~                            
../src/flecs/distr/flecs.h:9715:53: note: in definition of macro ‘ecs_observer’
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                     ^~~~~~~~~~~
../src/flecs/distr/flecs.c:63514:19: note: in expansion of macro ‘ecs_entity’
63514 |         .entity = ecs_entity(world, {
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.h:9715:51: error: expected primary-expression before ‘)’ token
 9715 |     ecs_observer_init(world, &(ecs_observer_desc_t) __VA_ARGS__ )
      |                                                   ^
../src/flecs/distr/flecs.c:63513:5: note: in expansion of macro ‘ecs_observer’
63513 |     ecs_observer(world, {
      |     ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:63522:47: error: taking address of rvalue [-fpermissive]
63522 |     ecs_set(world, EcsWorld, EcsWorldSummary, {
      |                                               ^
63523 |         .target_fps = (double)info->target_fps,
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63524 |         .time_scale = (double)info->time_scale
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
63525 |     });
      |     ~                                          
../src/flecs/distr/flecs.h:9788:81: note: in definition of macro ‘ecs_set’
 9788 |     ecs_set_id(world, entity, ecs_id(component), sizeof(component), &(component)__VA_ARGS__)
      |                                                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c: At global scope:
../src/flecs/distr/flecs.c:63550:1: sorry, unimplemented: non-trivial designated initializers not supported
63550 | };
      | ^
../src/flecs/distr/flecs.c: In function ‘void flecs_system_poly_fini(void*)’:
../src/flecs/distr/flecs.c:63735:23: error: invalid conversion from ‘void*’ to ‘ecs_system_t*’ [-fpermissive]
63735 |     flecs_system_fini(sys);
      |                       ^~~
      |                       |
      |                       void*
../src/flecs/distr/flecs.c:63712:38: note:   initializing argument 1 of ‘void flecs_system_fini(ecs_system_t*)’
63712 | void flecs_system_fini(ecs_system_t *sys) {
      |                        ~~~~~~~~~~~~~~^~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int flecs_system_init_timer(ecs_world_t*, ecs_entity_t, const ecs_system_desc_t*)’:
../src/flecs/distr/flecs.h:886:45: error: taking address of rvalue [-fpermissive]
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                                             ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:884:25: note: in expansion of macro ‘ECS_EQ’
  884 | #define ECS_NEQ(a, b) (!ECS_EQ(a, b))
      |                         ^~~~~~
../src/flecs/distr/flecs.h:886:24: note: in expansion of macro ‘ECS_NEQ’
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:63744:9: note: in expansion of macro ‘ECS_NEQZERO’
63744 |     if (ECS_NEQZERO(desc->interval) && ECS_NEQZERO(desc->rate)) {
      |         ^~~~~~~~~~~
../src/flecs/distr/flecs.h:886:45: error: taking address of rvalue [-fpermissive]
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                                             ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:884:25: note: in expansion of macro ‘ECS_EQ’
  884 | #define ECS_NEQ(a, b) (!ECS_EQ(a, b))
      |                         ^~~~~~
../src/flecs/distr/flecs.h:886:24: note: in expansion of macro ‘ECS_NEQ’
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:63744:40: note: in expansion of macro ‘ECS_NEQZERO’
63744 |     if (ECS_NEQZERO(desc->interval) && ECS_NEQZERO(desc->rate)) {
      |                                        ^~~~~~~~~~~
../src/flecs/distr/flecs.h:886:45: error: taking address of rvalue [-fpermissive]
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                                             ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:884:25: note: in expansion of macro ‘ECS_EQ’
  884 | #define ECS_NEQ(a, b) (!ECS_EQ(a, b))
      |                         ^~~~~~
../src/flecs/distr/flecs.h:886:24: note: in expansion of macro ‘ECS_NEQ’
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:63751:9: note: in expansion of macro ‘ECS_NEQZERO’
63751 |     if (ECS_NEQZERO(desc->interval) || ECS_NEQZERO(desc->rate) ||
      |         ^~~~~~~~~~~
../src/flecs/distr/flecs.h:886:45: error: taking address of rvalue [-fpermissive]
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                                             ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:884:25: note: in expansion of macro ‘ECS_EQ’
  884 | #define ECS_NEQ(a, b) (!ECS_EQ(a, b))
      |                         ^~~~~~
../src/flecs/distr/flecs.h:886:24: note: in expansion of macro ‘ECS_NEQ’
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:63751:40: note: in expansion of macro ‘ECS_NEQZERO’
63751 |     if (ECS_NEQZERO(desc->interval) || ECS_NEQZERO(desc->rate) ||
      |                                        ^~~~~~~~~~~
../src/flecs/distr/flecs.h:886:45: error: taking address of rvalue [-fpermissive]
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                                             ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:884:25: note: in expansion of macro ‘ECS_EQ’
  884 | #define ECS_NEQ(a, b) (!ECS_EQ(a, b))
      |                         ^~~~~~
../src/flecs/distr/flecs.h:886:24: note: in expansion of macro ‘ECS_NEQ’
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:63752:9: note: in expansion of macro ‘ECS_NEQZERO’
63752 |         ECS_NEQZERO(desc->tick_source))
      |         ^~~~~~~~~~~
../src/flecs/distr/flecs.h:886:45: error: taking address of rvalue [-fpermissive]
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                                             ^
../src/flecs/distr/flecs.h:2642:53: note: in definition of macro ‘ecs_os_memcmp’
 2642 | #define ecs_os_memcmp(ptr1, ptr2, num) memcmp(ptr1, ptr2, static_cast<size_t>(num))
      |                                                     ^~~~
../src/flecs/distr/flecs.h:884:25: note: in expansion of macro ‘ECS_EQ’
  884 | #define ECS_NEQ(a, b) (!ECS_EQ(a, b))
      |                         ^~~~~~
../src/flecs/distr/flecs.h:886:24: note: in expansion of macro ‘ECS_NEQ’
  886 | #define ECS_NEQZERO(a) ECS_NEQ(a, (uint64_t){0})
      |                        ^~~~~~~
../src/flecs/distr/flecs.c:63755:13: note: in expansion of macro ‘ECS_NEQZERO’
63755 |         if (ECS_NEQZERO(desc->interval)) {
      |             ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_entity_t ecs_system_init(ecs_world_t*, const ecs_system_desc_t*)’:
../src/flecs/distr/flecs.c:63788:36: error: taking address of rvalue [-fpermissive]
63788 |         entity = ecs_entity(world, {0});
      |                                    ^~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:63926:1: error: jump to label ‘error’
63926 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:63781:5: note: in expansion of macro ‘ecs_check’
63781 |     ecs_check(desc->_canary == 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:63791:14: note:   crosses initialization of ‘EcsPoly* poly’
63791 |     EcsPoly *poly = flecs_poly_bind(world, entity, ecs_system_t);
      |              ^~~~
../src/flecs/distr/flecs.c:63786:18: note:   crosses initialization of ‘ecs_entity_t entity’
63786 |     ecs_entity_t entity = desc->entity;
      |                  ^~~~~~
../src/flecs/distr/flecs.c:63926:1: error: jump to label ‘error’
63926 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:63780:5: note: in expansion of macro ‘ecs_check’
63780 |     ecs_check(desc != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:63791:14: note:   crosses initialization of ‘EcsPoly* poly’
63791 |     EcsPoly *poly = flecs_poly_bind(world, entity, ecs_system_t);
      |              ^~~~
../src/flecs/distr/flecs.c:63786:18: note:   crosses initialization of ‘ecs_entity_t entity’
63786 |     ecs_entity_t entity = desc->entity;
      |                  ^~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void FlecsSystemImport(ecs_world_t*)’:
../src/flecs/distr/flecs.c:3008:37: error: taking address of rvalue [-fpermissive]
 3008 |         .entity = ecs_entity(world, { .id = ecs_id(id_), .name = #id_, .symbol = #id_ }),\
      |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:9657:49: note: in definition of macro ‘ecs_entity’
 9657 |     ecs_entity_init(world, &(ecs_entity_desc_t) __VA_ARGS__ )
      |                                                 ^~~~~~~~~~~
../src/flecs/distr/flecs.c:63950:5: note: in expansion of macro ‘flecs_bootstrap_component’
63950 |     flecs_bootstrap_component(world, EcsTickSource);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:3007:53: error: expected primary-expression before ‘)’ token
 3007 |     ecs_component_init(world, &(ecs_component_desc_t){\
      |                                                     ^
../src/flecs/distr/flecs.c:63950:5: note: in expansion of macro ‘flecs_bootstrap_component’
63950 |     flecs_bootstrap_component(world, EcsTickSource);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int flecs_query_discover_vars(ecs_stage_t*, ecs_query_impl_t*)’:
../src/flecs/distr/flecs.h:2005:44: error: invalid conversion from ‘void*’ to ‘ecs_var_id_t*’ {aka ‘unsigned char*’} [-fpermissive]
 2005 | #define flecs_calloc(a, size) flecs_bcalloc(flecs_allocator_get(a, size))
      |                               ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                            |
      |                                            void*
../src/flecs/distr/flecs.h:2007:37: note: in expansion of macro ‘flecs_calloc’
 2007 | #define flecs_calloc_n(a, T, count) flecs_calloc(a, ECS_SIZEOF(T) * (count))
      |                                     ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:64184:43: note: in expansion of macro ‘flecs_calloc_n’
64184 |                         query->src_vars = flecs_calloc_n(&stage->allocator,
      |                                           ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:2001:42: error: invalid conversion from ‘void*’ to ‘ecs_query_var_t*’ [-fpermissive]
 2001 | #define flecs_alloc(a, size) flecs_balloc(flecs_allocator_get(a, size))
      |                              ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.c:64343:22: note: in expansion of macro ‘flecs_alloc’
64343 |         query_vars = flecs_alloc(&stage->allocator,
      |                      ^~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:3942:31: error: invalid conversion from ‘void*’ to ‘char**’ [-fpermissive]
 3942 | #define ECS_OFFSET(o, offset) reinterpret_cast<void*>((reinterpret_cast<uintptr_t>(o)) + (static_cast<uintptr_t>(offset)))
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.h:3948:36: note: in expansion of macro ‘ECS_OFFSET’
 3948 | #define ECS_ELEM(ptr, size, index) ECS_OFFSET(ptr, (size) * (index))
      |                                    ^~~~~~~~~~
../src/flecs/distr/flecs.c:64364:21: note: in expansion of macro ‘ECS_ELEM’
64364 |         var_names = ECS_ELEM(query_vars, ECS_SIZEOF(ecs_query_var_t),
      |                     ^~~~~~~~
../src/flecs/distr/flecs.c:64400:1: error: jump to label ‘error’
64400 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:64178:34: note:   from here
64178 |                             goto error;
      |                                  ^~~~~
../src/flecs/distr/flecs.c:64341:22: note:   crosses initialization of ‘ecs_query_var_t* query_vars’
64341 |     ecs_query_var_t *query_vars = &flecs_this_array;
      |                      ^~~~~~~~~~
../src/flecs/distr/flecs.c:64238:10: note:   crosses initialization of ‘bool replace_placeholders’
64238 |     bool replace_placeholders = false;
      |          ^~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:64237:18: note:   crosses initialization of ‘ecs_var_id_t placeholder’
64237 |     ecs_var_id_t placeholder = EcsVarNone - 1;
      |                  ^~~~~~~~~~~
../src/flecs/distr/flecs.c:64236:13: note:   crosses initialization of ‘int32_t var_count’
64236 |     int32_t var_count = ecs_vec_count(vars);
      |             ^~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘int flecs_query_compile(ecs_world_t*, ecs_stage_t*, ecs_query_impl_t*)’:
../src/flecs/distr/flecs.h:2001:42: error: invalid conversion from ‘void*’ to ‘ecs_query_op_t*’ [-fpermissive]
 2001 | #define flecs_alloc(a, size) flecs_balloc(flecs_allocator_get(a, size))
      |                              ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.h:2003:36: note: in expansion of macro ‘flecs_alloc’
 2003 | #define flecs_alloc_n(a, T, count) flecs_alloc(a, ECS_SIZEOF(T) * (count))
      |                                    ^~~~~~~~~~~
../src/flecs/distr/flecs.c:65063:22: note: in expansion of macro ‘flecs_alloc_n’
65063 |         query->ops = flecs_alloc_n(&stage->allocator, ecs_query_op_t, op_count);
      |                      ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_query_compile_term(ecs_world_t*, ecs_query_impl_t*, ecs_term_t*, ecs_query_compile_ctx_t*)’:
../src/flecs/distr/flecs.c:66555:1: error: jump to label ‘error’
66555 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:66355:14: note:   from here
66355 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:66435:23: note:   crosses initialization of ‘ecs_write_flags_t write_state’
66435 |     ecs_write_flags_t write_state = ctx->written;
      |                       ^~~~~~~~~~~
../src/flecs/distr/flecs.c:66555:1: error: jump to label ‘error’
66555 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:66321:14: note:   from here
66321 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:66435:23: note:   crosses initialization of ‘ecs_write_flags_t write_state’
66435 |     ecs_write_flags_t write_state = ctx->written;
      |                       ^~~~~~~~~~~
../src/flecs/distr/flecs.c:66555:1: error: jump to label ‘error’
66555 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:66315:14: note:   from here
66315 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:66435:23: note:   crosses initialization of ‘ecs_write_flags_t write_state’
66435 |     ecs_write_flags_t write_state = ctx->written;
      |                       ^~~~~~~~~~~
../src/flecs/distr/flecs.c:66555:1: error: jump to label ‘error’
66555 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:66272:18: note:   from here
66272 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:66435:23: note:   crosses initialization of ‘ecs_write_flags_t write_state’
66435 |     ecs_write_flags_t write_state = ctx->written;
      |                       ^~~~~~~~~~~
../src/flecs/distr/flecs.c:66304:10: note:   crosses initialization of ‘bool src_written’
66304 |     bool src_written = true;
      |          ^~~~~~~~~~~
../src/flecs/distr/flecs.c:66294:23: note:   crosses initialization of ‘ecs_write_flags_t cond_write_state’
66294 |     ecs_write_flags_t cond_write_state = ctx->cond_written;
      |                       ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:66290:10: note:   crosses initialization of ‘bool is_not’
66290 |     bool is_not = (term->oper == EcsNot) && !builtin_pred;
      |          ^~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_query_cache_table_match_t* flecs_query_cache_find_group_insertion_node(ecs_query_cache_t*, uint64_t)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_query_cache_table_list_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:66724:16: note: in expansion of macro ‘ecs_map_ptr’
66724 |         list = ecs_map_ptr(&it);
      |                ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_query_cache_table_match_t* flecs_query_cache_cache_add(ecs_world_t*, ecs_query_cache_table_t*)’:
../src/flecs/distr/flecs.c:66996:22: error: invalid conversion from ‘void*’ to ‘ecs_query_cache_table_match_t*’ [-fpermissive]
66996 |         flecs_bcalloc(&world->allocators.query_table_match);
      |         ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                      |
      |                      void*
../src/flecs/distr/flecs.c: In function ‘uint64_t flecs_query_cache_group_by_cascade(ecs_world_t*, ecs_table_t*, ecs_id_t, void*)’:
../src/flecs/distr/flecs.c:67021:24: error: invalid conversion from ‘void*’ to ‘ecs_term_t*’ [-fpermissive]
67021 |     ecs_term_t *term = ctx;
      |                        ^~~
      |                        |
      |                        void*
../src/flecs/distr/flecs.c: In function ‘ecs_query_cache_table_match_t* flecs_query_cache_add_table_match(ecs_query_cache_t*, ecs_query_cache_table_t*, ecs_table_t*)’:
../src/flecs/distr/flecs.c:67039:27: error: invalid conversion from ‘void*’ to ‘const ecs_table_record_t**’ [-fpermissive]
67039 |     qm->trs = flecs_balloc(&cache->allocators.trs);
      |               ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
      |                           |
      |                           void*
../src/flecs/distr/flecs.c: In function ‘void flecs_query_cache_set_table_match(ecs_query_cache_t*, ecs_query_cache_table_match_t*, ecs_iter_t*)’:
../src/flecs/distr/flecs.c:67076:35: error: invalid conversion from ‘void*’ to ‘ecs_id_t*’ {aka ‘long unsigned int*’} [-fpermissive]
67076 |             qm->ids = flecs_balloc(&cache->allocators.ids);
      |                       ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
      |                                   |
      |                                   void*
../src/flecs/distr/flecs.c:67095:39: error: invalid conversion from ‘void*’ to ‘ecs_entity_t*’ {aka ‘long unsigned int*’} [-fpermissive]
67095 |             qm->sources = flecs_balloc(&cache->allocators.sources);
      |                           ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                       |
      |                                       void*
../src/flecs/distr/flecs.c: In function ‘ecs_query_cache_table_t* flecs_query_cache_table_insert(ecs_world_t*, ecs_query_cache_t*, ecs_table_t*)’:
../src/flecs/distr/flecs.c:67115:48: error: invalid conversion from ‘void*’ to ‘ecs_query_cache_table_t*’ [-fpermissive]
67115 |     ecs_query_cache_table_t *qt = flecs_bcalloc(&world->allocators.query_table);
      |                                   ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                |
      |                                                void*
../src/flecs/distr/flecs.c: In function ‘void flecs_query_cache_update_table(ecs_query_cache_t*, ecs_table_t*, bool)’:
../src/flecs/distr/flecs.c:67314:58: error: invalid conversion from ‘void*’ to ‘ecs_query_cache_table_t*’ [-fpermissive]
67314 |         ecs_query_cache_table_t *qt = ecs_table_cache_get(&cache->cache, table);
      |                                       ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
      |                                                          |
      |                                                          void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_query_cache_table_match_free(ecs_query_cache_t*, ecs_query_cache_table_t*, ecs_query_cache_table_match_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_table_record_t**’ to type ‘void*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67350:45: note: in expansion of macro ‘ECS_CONST_CAST’
67350 |         flecs_bfree(&cache->allocators.trs, ECS_CONST_CAST(void*, cur->trs));
      |                                             ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_query_cache_unmatch_table(ecs_query_cache_t*, ecs_table_t*, ecs_query_cache_table_t*)’:
../src/flecs/distr/flecs.c:67390:35: error: invalid conversion from ‘void*’ to ‘ecs_query_cache_table_t*’ [-fpermissive]
67390 |         elem = ecs_table_cache_get(&cache->cache, table);
      |                ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
      |                                   |
      |                                   void*
../src/flecs/distr/flecs.c: In function ‘void flecs_query_cache_rematch_tables(ecs_world_t*, ecs_query_impl_t*)’:
../src/flecs/distr/flecs.c:67438:37: error: invalid conversion from ‘void*’ to ‘ecs_query_cache_table_t*’ [-fpermissive]
67438 |             qt = ecs_table_cache_get(&cache->cache, table);
      |                  ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
      |                                     |
      |                                     void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_query_cache_table_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:67475:22: note: in expansion of macro ‘flecs_table_cache_next’
67475 |         while ((qt = flecs_table_cache_next(&cache_it, ecs_query_cache_table_t))) {
      |                      ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_query_cache_notify(ecs_world_t*, ecs_query_t*, ecs_query_cache_event_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67497:30: note: in expansion of macro ‘flecs_query_impl’
67497 |     ecs_query_impl_t *impl = flecs_query_impl(q);
      |                              ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int flecs_query_cache_order_by(ecs_world_t*, ecs_query_impl_t*, ecs_entity_t, ecs_order_by_action_t, ecs_sort_table_action_t)’:
../src/flecs/distr/flecs.c:67567:1: error: jump to label ‘error’
67567 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67527:5: note: in expansion of macro ‘ecs_check’
67527 |     ecs_check(!ecs_id_is_wildcard(order_by),
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:67533:13: note:   crosses initialization of ‘int32_t order_by_term’
67533 |     int32_t order_by_term = -1;
      |             ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67532:16: note:   crosses initialization of ‘int32_t count’
67532 |     int32_t i, count = query->term_count;
      |                ^~~~~
../src/flecs/distr/flecs.c:67531:24: note:   crosses initialization of ‘const ecs_query_t* query’
67531 |     const ecs_query_t *query = cache->query;
      |                        ^~~~~
../src/flecs/distr/flecs.c:67567:1: error: jump to label ‘error’
67567 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67526:5: note: in expansion of macro ‘ecs_check’
67526 |     ecs_check(cache != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:67533:13: note:   crosses initialization of ‘int32_t order_by_term’
67533 |     int32_t order_by_term = -1;
      |             ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67532:16: note:   crosses initialization of ‘int32_t count’
67532 |     int32_t i, count = query->term_count;
      |                ^~~~~
../src/flecs/distr/flecs.c:67531:24: note:   crosses initialization of ‘const ecs_query_t* query’
67531 |     const ecs_query_t *query = cache->query;
      |                        ^~~~~
../src/flecs/distr/flecs.c:67567:1: error: jump to label ‘error’
67567 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67524:5: note: in expansion of macro ‘ecs_check’
67524 |     ecs_check(impl != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:67533:13: note:   crosses initialization of ‘int32_t order_by_term’
67533 |     int32_t order_by_term = -1;
      |             ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67532:16: note:   crosses initialization of ‘int32_t count’
67532 |     int32_t i, count = query->term_count;
      |                ^~~~~
../src/flecs/distr/flecs.c:67531:24: note:   crosses initialization of ‘const ecs_query_t* query’
67531 |     const ecs_query_t *query = cache->query;
      |                        ^~~~~
../src/flecs/distr/flecs.c:67525:24: note:   crosses initialization of ‘ecs_query_cache_t* cache’
67525 |     ecs_query_cache_t *cache = impl->cache;
      |                        ^~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_query_cache_on_event(ecs_iter_t*)’:
../src/flecs/distr/flecs.c:67603:29: error: invalid conversion from ‘void*’ to ‘ecs_observer_t*’ [-fpermissive]
67603 |     ecs_observer_t *o = it->ctx;
      |                         ~~~~^~~
      |                             |
      |                             void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_observer_t*’ to type ‘ecs_observer_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:2500:40: note: in expansion of macro ‘ECS_CONST_CAST’
 2500 | #define flecs_observer_impl(observer) (ECS_CONST_CAST(ecs_observer_impl_t*, observer))
      |                                        ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67604:35: note: in expansion of macro ‘flecs_observer_impl’
67604 |     ecs_observer_impl_t *o_impl = flecs_observer_impl(o);
      |                                   ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67612:33: error: invalid conversion from ‘void*’ to ‘ecs_query_impl_t*’ [-fpermissive]
67612 |     ecs_query_impl_t *impl = o->ctx;
      |                              ~~~^~~
      |                                 |
      |                                 void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_query_cache_table_cache_free(ecs_query_cache_t*)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_query_cache_table_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:67669:22: note: in expansion of macro ‘flecs_table_cache_next’
67669 |         while ((qt = flecs_table_cache_next(&it, ecs_query_cache_table_t))) {
      |                      ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_query_cache_fini(ecs_query_impl_t*)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_query_cache_table_list_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:67725:51: note: in expansion of macro ‘ecs_map_ptr’
67725 |             ecs_query_cache_table_list_t *group = ecs_map_ptr(&it);
      |                                                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_query_cache_t* flecs_query_cache_init(ecs_query_impl_t*, const ecs_query_desc_t*)’:
../src/flecs/distr/flecs.c:67788:46: error: invalid conversion from ‘void*’ to ‘ecs_query_cache_t*’ [-fpermissive]
67788 |     ecs_query_cache_t *result = flecs_bcalloc(&stage->allocators.query_cache);
      |                                 ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                              |
      |                                              void*
../src/flecs/distr/flecs.c:67814:40: error: invalid conversion from ‘void*’ to ‘ecs_entity_t*’ {aka ‘long unsigned int*’} [-fpermissive]
67814 |         result->sources = flecs_bcalloc(&result->allocators.sources);
      |                           ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                        |
      |                                        void*
../src/flecs/distr/flecs.c:67903:1: error: jump to label ‘error’
67903 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:67855:14: note:   from here
67855 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:67859:13: note:   crosses initialization of ‘int32_t cascade_by’
67859 |     int32_t cascade_by = result->cascade_by;
      |             ^~~~~~~~~~
../src/flecs/distr/flecs.c:67903:1: error: jump to label ‘error’
67903 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:67839:18: note:   from here
67839 |             goto error;
      |                  ^~~~~
../src/flecs/distr/flecs.c:67859:13: note:   crosses initialization of ‘int32_t cascade_by’
67859 |     int32_t cascade_by = result->cascade_by;
      |             ^~~~~~~~~~
../src/flecs/distr/flecs.c:67903:1: error: jump to label ‘error’
67903 | error:
      | ^~~~~
../src/flecs/distr/flecs.c:67798:14: note:   from here
67798 |         goto error;
      |              ^~~~~
../src/flecs/distr/flecs.c:67859:13: note:   crosses initialization of ‘int32_t cascade_by’
67859 |     int32_t cascade_by = result->cascade_by;
      |             ^~~~~~~~~~
../src/flecs/distr/flecs.c:67903:1: error: jump to label ‘error’
67903 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67768:5: note: in expansion of macro ‘ecs_check’
67768 |     ecs_check(!(world->flags & EcsWorldFini), ECS_INVALID_OPERATION,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:67859:13: note:   crosses initialization of ‘int32_t cascade_by’
67859 |     int32_t cascade_by = result->cascade_by;
      |             ^~~~~~~~~~
../src/flecs/distr/flecs.c:67796:18: note:   crosses initialization of ‘ecs_query_t* q’
67796 |     ecs_query_t *q = result->query = ecs_query_init(world, &desc);
      |                  ^
../src/flecs/distr/flecs.c:67794:19: note:   crosses initialization of ‘ecs_flags32_t query_flags’
67794 |     ecs_flags32_t query_flags = const_desc->flags | world->default_query_flags;
      |                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c:67792:25: note:   crosses initialization of ‘ecs_observer_desc_t observer_desc’
67792 |     ecs_observer_desc_t observer_desc = { .query = desc };
      |                         ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67788:24: note:   crosses initialization of ‘ecs_query_cache_t* result’
67788 |     ecs_query_cache_t *result = flecs_bcalloc(&stage->allocators.query_cache);
      |                        ^~~~~~
../src/flecs/distr/flecs.c:67774:18: note:   crosses initialization of ‘ecs_entity_t entity’
67774 |     ecs_entity_t entity = desc.entity;
      |                  ^~~~~~
../src/flecs/distr/flecs.c:67773:22: note:   crosses initialization of ‘ecs_query_desc_t desc’
67773 |     ecs_query_desc_t desc = *const_desc;
      |                      ^~~~
../src/flecs/distr/flecs.c:67903:1: error: jump to label ‘error’
67903 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67766:5: note: in expansion of macro ‘ecs_check’
67766 |     ecs_check(const_desc->_canary == 0, ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:67859:13: note:   crosses initialization of ‘int32_t cascade_by’
67859 |     int32_t cascade_by = result->cascade_by;
      |             ^~~~~~~~~~
../src/flecs/distr/flecs.c:67796:18: note:   crosses initialization of ‘ecs_query_t* q’
67796 |     ecs_query_t *q = result->query = ecs_query_init(world, &desc);
      |                  ^
../src/flecs/distr/flecs.c:67794:19: note:   crosses initialization of ‘ecs_flags32_t query_flags’
67794 |     ecs_flags32_t query_flags = const_desc->flags | world->default_query_flags;
      |                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c:67792:25: note:   crosses initialization of ‘ecs_observer_desc_t observer_desc’
67792 |     ecs_observer_desc_t observer_desc = { .query = desc };
      |                         ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67788:24: note:   crosses initialization of ‘ecs_query_cache_t* result’
67788 |     ecs_query_cache_t *result = flecs_bcalloc(&stage->allocators.query_cache);
      |                        ^~~~~~
../src/flecs/distr/flecs.c:67774:18: note:   crosses initialization of ‘ecs_entity_t entity’
67774 |     ecs_entity_t entity = desc.entity;
      |                  ^~~~~~
../src/flecs/distr/flecs.c:67773:22: note:   crosses initialization of ‘ecs_query_desc_t desc’
67773 |     ecs_query_desc_t desc = *const_desc;
      |                      ^~~~
../src/flecs/distr/flecs.c:67903:1: error: jump to label ‘error’
67903 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67765:5: note: in expansion of macro ‘ecs_check’
67765 |     ecs_check(const_desc != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:67859:13: note:   crosses initialization of ‘int32_t cascade_by’
67859 |     int32_t cascade_by = result->cascade_by;
      |             ^~~~~~~~~~
../src/flecs/distr/flecs.c:67796:18: note:   crosses initialization of ‘ecs_query_t* q’
67796 |     ecs_query_t *q = result->query = ecs_query_init(world, &desc);
      |                  ^
../src/flecs/distr/flecs.c:67794:19: note:   crosses initialization of ‘ecs_flags32_t query_flags’
67794 |     ecs_flags32_t query_flags = const_desc->flags | world->default_query_flags;
      |                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c:67792:25: note:   crosses initialization of ‘ecs_observer_desc_t observer_desc’
67792 |     ecs_observer_desc_t observer_desc = { .query = desc };
      |                         ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67788:24: note:   crosses initialization of ‘ecs_query_cache_t* result’
67788 |     ecs_query_cache_t *result = flecs_bcalloc(&stage->allocators.query_cache);
      |                        ^~~~~~
../src/flecs/distr/flecs.c:67774:18: note:   crosses initialization of ‘ecs_entity_t entity’
67774 |     ecs_entity_t entity = desc.entity;
      |                  ^~~~~~
../src/flecs/distr/flecs.c:67773:22: note:   crosses initialization of ‘ecs_query_desc_t desc’
67773 |     ecs_query_desc_t desc = *const_desc;
      |                      ^~~~
../src/flecs/distr/flecs.c:67903:1: error: jump to label ‘error’
67903 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67764:5: note: in expansion of macro ‘ecs_check’
67764 |     ecs_check(world != NULL, ECS_INTERNAL_ERROR, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:67859:13: note:   crosses initialization of ‘int32_t cascade_by’
67859 |     int32_t cascade_by = result->cascade_by;
      |             ^~~~~~~~~~
../src/flecs/distr/flecs.c:67796:18: note:   crosses initialization of ‘ecs_query_t* q’
67796 |     ecs_query_t *q = result->query = ecs_query_init(world, &desc);
      |                  ^
../src/flecs/distr/flecs.c:67794:19: note:   crosses initialization of ‘ecs_flags32_t query_flags’
67794 |     ecs_flags32_t query_flags = const_desc->flags | world->default_query_flags;
      |                   ^~~~~~~~~~~
../src/flecs/distr/flecs.c:67792:25: note:   crosses initialization of ‘ecs_observer_desc_t observer_desc’
67792 |     ecs_observer_desc_t observer_desc = { .query = desc };
      |                         ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67788:24: note:   crosses initialization of ‘ecs_query_cache_t* result’
67788 |     ecs_query_cache_t *result = flecs_bcalloc(&stage->allocators.query_cache);
      |                        ^~~~~~
../src/flecs/distr/flecs.c:67774:18: note:   crosses initialization of ‘ecs_entity_t entity’
67774 |     ecs_entity_t entity = desc.entity;
      |                  ^~~~~~
../src/flecs/distr/flecs.c:67773:22: note:   crosses initialization of ‘ecs_query_desc_t desc’
67773 |     ecs_query_desc_t desc = *const_desc;
      |                      ^~~~
../src/flecs/distr/flecs.c: In function ‘ecs_query_cache_table_t* flecs_query_cache_get_table(ecs_query_cache_t*, ecs_table_t*)’:
../src/flecs/distr/flecs.c:67911:31: error: invalid conversion from ‘void*’ to ‘ecs_query_cache_table_t*’ [-fpermissive]
67911 |     return ecs_table_cache_get(&cache->cache, table);
      |            ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void ecs_iter_set_group(ecs_iter_t*, uint64_t)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67924:27: note: in expansion of macro ‘flecs_query_impl’
67924 |     ecs_query_impl_t *q = flecs_query_impl(qit->query);
      |                           ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67947:1: error: jump to label ‘error’
67947 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67928:5: note: in expansion of macro ‘ecs_check’
67928 |     ecs_check(cache != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:67938:36: note:   crosses initialization of ‘ecs_query_cache_table_match_t* first’
67938 |     ecs_query_cache_table_match_t *first = node->first;
      |                                    ^~~~~
../src/flecs/distr/flecs.c:67930:35: note:   crosses initialization of ‘ecs_query_cache_table_list_t* node’
67930 |     ecs_query_cache_table_list_t *node = flecs_query_cache_get_group(
      |                                   ^~~~
../src/flecs/distr/flecs.c:67947:1: error: jump to label ‘error’
67947 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67925:5: note: in expansion of macro ‘ecs_check’
67925 |     ecs_check(q != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:67938:36: note:   crosses initialization of ‘ecs_query_cache_table_match_t* first’
67938 |     ecs_query_cache_table_match_t *first = node->first;
      |                                    ^~~~~
../src/flecs/distr/flecs.c:67930:35: note:   crosses initialization of ‘ecs_query_cache_table_list_t* node’
67930 |     ecs_query_cache_table_list_t *node = flecs_query_cache_get_group(
      |                                   ^~~~
../src/flecs/distr/flecs.c:67927:24: note:   crosses initialization of ‘ecs_query_cache_t* cache’
67927 |     ecs_query_cache_t *cache = q->cache;
      |                        ^~~~~
../src/flecs/distr/flecs.c:67947:1: error: jump to label ‘error’
67947 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67920:5: note: in expansion of macro ‘ecs_check’
67920 |     ecs_check(!(it->flags & EcsIterIsValid), ECS_INVALID_PARAMETER,
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:67938:36: note:   crosses initialization of ‘ecs_query_cache_table_match_t* first’
67938 |     ecs_query_cache_table_match_t *first = node->first;
      |                                    ^~~~~
../src/flecs/distr/flecs.c:67930:35: note:   crosses initialization of ‘ecs_query_cache_table_list_t* node’
67930 |     ecs_query_cache_table_list_t *node = flecs_query_cache_get_group(
      |                                   ^~~~
../src/flecs/distr/flecs.c:67927:24: note:   crosses initialization of ‘ecs_query_cache_t* cache’
67927 |     ecs_query_cache_t *cache = q->cache;
      |                        ^~~~~
../src/flecs/distr/flecs.c:67924:23: note:   crosses initialization of ‘ecs_query_impl_t* q’
67924 |     ecs_query_impl_t *q = flecs_query_impl(qit->query);
      |                       ^
../src/flecs/distr/flecs.c:67923:23: note:   crosses initialization of ‘ecs_query_iter_t* qit’
67923 |     ecs_query_iter_t *qit = &it->priv_.iter.query;
      |                       ^~~
../src/flecs/distr/flecs.c:67947:1: error: jump to label ‘error’
67947 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67919:5: note: in expansion of macro ‘ecs_check’
67919 |     ecs_check(it->next == ecs_query_next, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:67938:36: note:   crosses initialization of ‘ecs_query_cache_table_match_t* first’
67938 |     ecs_query_cache_table_match_t *first = node->first;
      |                                    ^~~~~
../src/flecs/distr/flecs.c:67930:35: note:   crosses initialization of ‘ecs_query_cache_table_list_t* node’
67930 |     ecs_query_cache_table_list_t *node = flecs_query_cache_get_group(
      |                                   ^~~~
../src/flecs/distr/flecs.c:67927:24: note:   crosses initialization of ‘ecs_query_cache_t* cache’
67927 |     ecs_query_cache_t *cache = q->cache;
      |                        ^~~~~
../src/flecs/distr/flecs.c:67924:23: note:   crosses initialization of ‘ecs_query_impl_t* q’
67924 |     ecs_query_impl_t *q = flecs_query_impl(qit->query);
      |                       ^
../src/flecs/distr/flecs.c:67923:23: note:   crosses initialization of ‘ecs_query_iter_t* qit’
67923 |     ecs_query_iter_t *qit = &it->priv_.iter.query;
      |                       ^~~
../src/flecs/distr/flecs.c:67947:1: error: jump to label ‘error’
67947 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67918:5: note: in expansion of macro ‘ecs_check’
67918 |     ecs_check(it != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:67938:36: note:   crosses initialization of ‘ecs_query_cache_table_match_t* first’
67938 |     ecs_query_cache_table_match_t *first = node->first;
      |                                    ^~~~~
../src/flecs/distr/flecs.c:67930:35: note:   crosses initialization of ‘ecs_query_cache_table_list_t* node’
67930 |     ecs_query_cache_table_list_t *node = flecs_query_cache_get_group(
      |                                   ^~~~
../src/flecs/distr/flecs.c:67927:24: note:   crosses initialization of ‘ecs_query_cache_t* cache’
67927 |     ecs_query_cache_t *cache = q->cache;
      |                        ^~~~~
../src/flecs/distr/flecs.c:67924:23: note:   crosses initialization of ‘ecs_query_impl_t* q’
67924 |     ecs_query_impl_t *q = flecs_query_impl(qit->query);
      |                       ^
../src/flecs/distr/flecs.c:67923:23: note:   crosses initialization of ‘ecs_query_iter_t* qit’
67923 |     ecs_query_iter_t *qit = &it->priv_.iter.query;
      |                       ^~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘const ecs_query_group_info_t* ecs_query_get_group_info(const ecs_query_t*, uint64_t)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:67957:9: note: in expansion of macro ‘flecs_query_impl’
67957 |         flecs_query_impl(query)->cache, group_id);
      |         ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_query_cache_build_sorted_table_range(ecs_query_cache_t*, ecs_query_cache_table_list_t*)’:
../src/flecs/distr/flecs.h:2001:42: error: invalid conversion from ‘void*’ to ‘sort_helper_t*’ [-fpermissive]
 2001 | #define flecs_alloc(a, size) flecs_balloc(flecs_allocator_get(a, size))
      |                              ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.h:2003:36: note: in expansion of macro ‘flecs_alloc’
 2003 | #define flecs_alloc_n(a, T, count) flecs_alloc(a, ECS_SIZEOF(T) * (count))
      |                                    ^~~~~~~~~~~
../src/flecs/distr/flecs.c:68269:29: note: in expansion of macro ‘flecs_alloc_n’
68269 |     sort_helper_t *helper = flecs_alloc_n(
      |                             ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c:68376:57: error: invalid conversion from ‘void*’ to ‘ecs_query_cache_table_match_t*’ [-fpermissive]
68376 |     ecs_query_cache_table_match_t *nodes = ecs_vec_first(&cache->table_slices);
      |                                            ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
      |                                                         |
      |                                                         void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_query_cache_sort_tables(ecs_world_t*, ecs_query_impl_t*)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_query_cache_table_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:68441:18: note: in expansion of macro ‘flecs_table_cache_next’
68441 |     while ((qt = flecs_table_cache_next(&it, ecs_query_cache_table_t))) {
      |                  ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘bool flecs_query_get_match_monitor(ecs_query_impl_t*, ecs_query_cache_table_match_t*)’:
../src/flecs/distr/flecs.c:68532:36: error: invalid conversion from ‘void*’ to ‘int32_t*’ {aka ‘int*’} [-fpermissive]
68532 |     int32_t *monitor = flecs_balloc(&cache->allocators.monitors);
      |                        ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘bool flecs_query_get_fixed_monitor(ecs_query_impl_t*, bool)’:
../src/flecs/distr/flecs.h:2001:42: error: invalid conversion from ‘void*’ to ‘int32_t*’ {aka ‘int*’} [-fpermissive]
 2001 | #define flecs_alloc(a, size) flecs_balloc(flecs_allocator_get(a, size))
      |                              ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                          |
      |                                          void*
../src/flecs/distr/flecs.h:2003:36: note: in expansion of macro ‘flecs_alloc’
 2003 | #define flecs_alloc_n(a, T, count) flecs_alloc(a, ECS_SIZEOF(T) * (count))
      |                                    ^~~~~~~~~~~
../src/flecs/distr/flecs.c:68591:25: note: in expansion of macro ‘flecs_alloc_n’
68591 |         impl->monitor = flecs_alloc_n(&impl->stage->allocator,
      |                         ^~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘bool flecs_query_check_cache_monitor(ecs_query_impl_t*)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_query_cache_table_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:68713:22: note: in expansion of macro ‘flecs_table_cache_next’
68713 |         while ((qt = flecs_table_cache_next(&it, ecs_query_cache_table_t))) {
      |                      ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘bool ecs_query_changed(ecs_query_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:68981:30: note: in expansion of macro ‘flecs_query_impl’
68981 |     ecs_query_impl_t *impl = flecs_query_impl(q);
      |                              ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘bool ecs_iter_changed(ecs_iter_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:69022:30: note: in expansion of macro ‘flecs_query_impl’
69022 |     ecs_query_impl_t *impl = flecs_query_impl(qit->query);
      |                              ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:69048:1: error: jump to label ‘error’
69048 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:69018:5: note: in expansion of macro ‘ecs_check’
69018 |     ecs_check(ECS_BIT_IS_SET(it->flags, EcsIterIsValid),
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:69023:18: note:   crosses initialization of ‘ecs_query_t* q’
69023 |     ecs_query_t *q = &impl->pub;
      |                  ^
../src/flecs/distr/flecs.c:69022:23: note:   crosses initialization of ‘ecs_query_impl_t* impl’
69022 |     ecs_query_impl_t *impl = flecs_query_impl(qit->query);
      |                       ^~~~
../src/flecs/distr/flecs.c:69021:23: note:   crosses initialization of ‘ecs_query_iter_t* qit’
69021 |     ecs_query_iter_t *qit = &it->priv_.iter.query;
      |                       ^~~
../src/flecs/distr/flecs.c:69048:1: error: jump to label ‘error’
69048 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:69017:5: note: in expansion of macro ‘ecs_check’
69017 |     ecs_check(it->next == ecs_query_next, ECS_UNSUPPORTED, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:69023:18: note:   crosses initialization of ‘ecs_query_t* q’
69023 |     ecs_query_t *q = &impl->pub;
      |                  ^
../src/flecs/distr/flecs.c:69022:23: note:   crosses initialization of ‘ecs_query_impl_t* impl’
69022 |     ecs_query_impl_t *impl = flecs_query_impl(qit->query);
      |                       ^~~~
../src/flecs/distr/flecs.c:69021:23: note:   crosses initialization of ‘ecs_query_iter_t* qit’
69021 |     ecs_query_iter_t *qit = &it->priv_.iter.query;
      |                       ^~~
../src/flecs/distr/flecs.c:69048:1: error: jump to label ‘error’
69048 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:69016:5: note: in expansion of macro ‘ecs_check’
69016 |     ecs_check(it != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:69023:18: note:   crosses initialization of ‘ecs_query_t* q’
69023 |     ecs_query_t *q = &impl->pub;
      |                  ^
../src/flecs/distr/flecs.c:69022:23: note:   crosses initialization of ‘ecs_query_impl_t* impl’
69022 |     ecs_query_impl_t *impl = flecs_query_impl(qit->query);
      |                       ^~~~
../src/flecs/distr/flecs.c:69021:23: note:   crosses initialization of ‘ecs_query_iter_t* qit’
69021 |     ecs_query_iter_t *qit = &it->priv_.iter.query;
      |                       ^~~
../src/flecs/distr/flecs.c: In function ‘bool flecs_query_select_w_id(const ecs_query_op_t*, bool, const ecs_query_run_ctx_t*, ecs_id_t, ecs_flags32_t)’:
../src/flecs/distr/flecs.c:69086:53: error: expected unqualified-id before ‘and’ token
69086 |     ecs_query_and_ctx_t *op_ctx = flecs_op_ctx(ctx, and);
      |                                                     ^~~
../src/flecs/distr/flecs.c:2045:61: note: in definition of macro ‘flecs_op_ctx’
 2045 | #define flecs_op_ctx(ctx, op_kind) (&flecs_op_ctx_(ctx)->is.op_kind)
      |                                                             ^~~~~~~
../src/flecs/distr/flecs.c:2045:68: error: expected primary-expression before ‘)’ token
 2045 | #define flecs_op_ctx(ctx, op_kind) (&flecs_op_ctx_(ctx)->is.op_kind)
      |                                                                    ^
../src/flecs/distr/flecs.c:69086:35: note: in expansion of macro ‘flecs_op_ctx’
69086 |     ecs_query_and_ctx_t *op_ctx = flecs_op_ctx(ctx, and);
      |                                   ^~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:69112:14: note: in expansion of macro ‘flecs_table_cache_next’
69112 |         tr = flecs_table_cache_next(&op_ctx->it, ecs_table_record_t);
      |              ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘bool flecs_query_with(const ecs_query_op_t*, bool, const ecs_query_run_ctx_t*)’:
../src/flecs/distr/flecs.c:69155:53: error: expected unqualified-id before ‘and’ token
69155 |     ecs_query_and_ctx_t *op_ctx = flecs_op_ctx(ctx, and);
      |                                                     ^~~
../src/flecs/distr/flecs.c:2045:61: note: in definition of macro ‘flecs_op_ctx’
 2045 | #define flecs_op_ctx(ctx, op_kind) (&flecs_op_ctx_(ctx)->is.op_kind)
      |                                                             ^~~~~~~
../src/flecs/distr/flecs.c:2045:68: error: expected primary-expression before ‘)’ token
 2045 | #define flecs_op_ctx(ctx, op_kind) (&flecs_op_ctx_(ctx)->is.op_kind)
      |                                                                    ^
../src/flecs/distr/flecs.c:69155:35: note: in expansion of macro ‘flecs_op_ctx’
69155 |     ecs_query_and_ctx_t *op_ctx = flecs_op_ctx(ctx, and);
      |                                   ^~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘bool flecs_query_select_id(const ecs_query_op_t*, bool, const ecs_query_run_ctx_t*, ecs_flags32_t)’:
../src/flecs/distr/flecs.c:69217:53: error: expected unqualified-id before ‘and’ token
69217 |     ecs_query_and_ctx_t *op_ctx = flecs_op_ctx(ctx, and);
      |                                                     ^~~
../src/flecs/distr/flecs.c:2045:61: note: in definition of macro ‘flecs_op_ctx’
 2045 | #define flecs_op_ctx(ctx, op_kind) (&flecs_op_ctx_(ctx)->is.op_kind)
      |                                                             ^~~~~~~
../src/flecs/distr/flecs.c:2045:68: error: expected primary-expression before ‘)’ token
 2045 | #define flecs_op_ctx(ctx, op_kind) (&flecs_op_ctx_(ctx)->is.op_kind)
      |                                                                    ^
../src/flecs/distr/flecs.c:69217:35: note: in expansion of macro ‘flecs_op_ctx’
69217 |     ecs_query_and_ctx_t *op_ctx = flecs_op_ctx(ctx, and);
      |                                   ^~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:69244:36: note: in expansion of macro ‘flecs_table_cache_next’
69244 |     const ecs_table_record_t *tr = flecs_table_cache_next(
      |                                    ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘bool flecs_query_with_id(const ecs_query_op_t*, bool, const ecs_query_run_ctx_t*)’:
../src/flecs/distr/flecs.c:69269:53: error: expected unqualified-id before ‘and’ token
69269 |     ecs_query_and_ctx_t *op_ctx = flecs_op_ctx(ctx, and);
      |                                                     ^~~
../src/flecs/distr/flecs.c:2045:61: note: in definition of macro ‘flecs_op_ctx’
 2045 | #define flecs_op_ctx(ctx, op_kind) (&flecs_op_ctx_(ctx)->is.op_kind)
      |                                                             ^~~~~~~
../src/flecs/distr/flecs.c:2045:68: error: expected primary-expression before ‘)’ token
 2045 | #define flecs_op_ctx(ctx, op_kind) (&flecs_op_ctx_(ctx)->is.op_kind)
      |                                                                    ^
../src/flecs/distr/flecs.c:69269:35: note: in expansion of macro ‘flecs_op_ctx’
69269 |     ecs_query_and_ctx_t *op_ctx = flecs_op_ctx(ctx, and);
      |                                   ^~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘bool flecs_query_and_any(const ecs_query_op_t*, bool, const ecs_query_run_ctx_t*)’:
../src/flecs/distr/flecs.c:69350:53: error: expected unqualified-id before ‘and’ token
69350 |     ecs_query_and_ctx_t *op_ctx = flecs_op_ctx(ctx, and);
      |                                                     ^~~
../src/flecs/distr/flecs.c:2045:61: note: in definition of macro ‘flecs_op_ctx’
 2045 | #define flecs_op_ctx(ctx, op_kind) (&flecs_op_ctx_(ctx)->is.op_kind)
      |                                                             ^~~~~~~
../src/flecs/distr/flecs.c:2045:68: error: expected primary-expression before ‘)’ token
 2045 | #define flecs_op_ctx(ctx, op_kind) (&flecs_op_ctx_(ctx)->is.op_kind)
      |                                                                    ^
../src/flecs/distr/flecs.c:69350:35: note: in expansion of macro ‘flecs_op_ctx’
69350 |     ecs_query_and_ctx_t *op_ctx = flecs_op_ctx(ctx, and);
      |                                   ^~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_query_reset_after_block(const ecs_query_op_t*, ecs_query_run_ctx_t*, ecs_query_ctrl_ctx_t*, bool)’:
../src/flecs/distr/flecs.c:70070:1: error: jump to label ‘done’
70070 | done:
      | ^~~~
../src/flecs/distr/flecs.c:70024:14: note:   from here
70024 |         goto done;
      |              ^~~~
../src/flecs/distr/flecs.c:70046:14: note:   crosses initialization of ‘ecs_id_t id’
70046 |     ecs_id_t id = flecs_query_op_get_id(op, ctx);
      |              ^~
../src/flecs/distr/flecs.c:70043:19: note:   crosses initialization of ‘ecs_flags16_t flags_2nd’
70043 |     ecs_flags16_t flags_2nd = flecs_query_ref_flags(op->flags, EcsQuerySecond);
      |                   ^~~~~~~~~
../src/flecs/distr/flecs.c:70042:19: note:   crosses initialization of ‘ecs_flags16_t flags_1st’
70042 |     ecs_flags16_t flags_1st = flecs_query_ref_flags(op->flags, EcsQueryFirst);
      |                   ^~~~~~~~~
../src/flecs/distr/flecs.c:70041:14: note:   crosses initialization of ‘uint64_t written_cur’
70041 |     uint64_t written_cur = written[op->prev + 1];
      |              ^~~~~~~~~~~
../src/flecs/distr/flecs.c:70040:15: note:   crosses initialization of ‘uint64_t* written’
70040 |     uint64_t *written = ctx->written;
      |               ^~~~~~~
../src/flecs/distr/flecs.c:70028:17: note:   crosses initialization of ‘ecs_iter_t* it’
70028 |     ecs_iter_t *it = ctx->it;
      |                 ^~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_query_iter_run_ctx_init(ecs_iter_t*, ecs_query_run_ctx_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:70523:30: note: in expansion of macro ‘ECS_CONST_CAST’
70523 |     ecs_query_impl_t *impl = ECS_CONST_CAST(ecs_query_impl_t*, qit->query);
      |                              ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘bool ecs_query_next(ecs_iter_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:70620:30: note: in expansion of macro ‘ECS_CONST_CAST’
70620 |     ecs_query_impl_t *impl = ECS_CONST_CAST(ecs_query_impl_t*, qit->query);
      |                              ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_query_iter_fini_ctx(ecs_iter_t*, ecs_query_iter_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:70716:37: note: in expansion of macro ‘flecs_query_impl’
70716 |     const ecs_query_impl_t *query = flecs_query_impl(qit->query);
      |                                     ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_query_iter_fini(ecs_iter_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:70753:24: note: in expansion of macro ‘flecs_query_impl’
70753 |     int32_t op_count = flecs_query_impl(qit->query)->op_count;
      |                        ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:70754:25: note: in expansion of macro ‘flecs_query_impl’
70754 |     int32_t var_count = flecs_query_impl(qit->query)->var_count;
      |                         ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_iter_t flecs_query_iter(const ecs_world_t*, const ecs_query_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:70786:30: note: in expansion of macro ‘flecs_query_impl’
70786 |     ecs_query_impl_t *impl = flecs_query_impl(q);
      |                              ^~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:70836:38: error: invalid conversion from ‘void*’ to ‘ecs_query_cache_table_match_t*’ [-fpermissive]
70836 |             qit->node = ecs_vec_first(&cache->table_slices);
      |                         ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
      |                                      |
      |                                      void*
../src/flecs/distr/flecs.c:2594:22: error: invalid conversion from ‘void*’ to ‘ecs_var_t*’ [-fpermissive]
 2594 |     flecs_iter_calloc(it, ECS_SIZEOF(T) * count, ECS_ALIGNOF(T))
      |     ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                      |
      |                      void*
../src/flecs/distr/flecs.c:70845:21: note: in expansion of macro ‘flecs_iter_calloc_n’
70845 |         qit->vars = flecs_iter_calloc_n(&it, ecs_var_t, var_count);
      |                     ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:2594:22: error: invalid conversion from ‘void*’ to ‘uint64_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 2594 |     flecs_iter_calloc(it, ECS_SIZEOF(T) * count, ECS_ALIGNOF(T))
      |     ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                      |
      |                      void*
../src/flecs/distr/flecs.c:70849:24: note: in expansion of macro ‘flecs_iter_calloc_n’
70849 |         qit->written = flecs_iter_calloc_n(&it, ecs_write_flags_t, op_count);
      |                        ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:2594:22: error: invalid conversion from ‘void*’ to ‘ecs_query_op_ctx_t*’ [-fpermissive]
 2594 |     flecs_iter_calloc(it, ECS_SIZEOF(T) * count, ECS_ALIGNOF(T))
      |     ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                      |
      |                      void*
../src/flecs/distr/flecs.c:70850:23: note: in expansion of macro ‘flecs_iter_calloc_n’
70850 |         qit->op_ctx = flecs_iter_calloc_n(&it, ecs_query_op_ctx_t, op_count);
      |                       ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:2594:22: error: invalid conversion from ‘void*’ to ‘ecs_query_op_profile_t*’ [-fpermissive]
 2594 |     flecs_iter_calloc(it, ECS_SIZEOF(T) * count, ECS_ALIGNOF(T))
      |     ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                      |
      |                      void*
../src/flecs/distr/flecs.c:70854:20: note: in expansion of macro ‘flecs_iter_calloc_n’
70854 |     qit->profile = flecs_iter_calloc_n(&it, ecs_query_op_profile_t, op_count);
      |                    ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:70868:1: error: jump to label ‘error’
70868 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:70803:5: note: in expansion of macro ‘ecs_check’
70803 |     ecs_check(!(it.real_world->flags & EcsWorldMultiThreaded) ||
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:70829:24: note:   crosses initialization of ‘ecs_query_cache_t* cache’
70829 |     ecs_query_cache_t *cache = impl->cache;
      |                        ^~~~~
../src/flecs/distr/flecs.c:70868:1: error: jump to label ‘error’
70868 | error:
      | ^~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.h:10841:14: note:   from here
10841 |         goto error;\
      |              ^~~~~
../src/flecs/distr/flecs.h:10858:5: note: in expansion of macro ‘ecs_dummy_check’
10858 |     ecs_dummy_check
      |     ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:70783:5: note: in expansion of macro ‘ecs_check’
70783 |     ecs_check(q != NULL, ECS_INVALID_PARAMETER, NULL);
      |     ^~~~~~~~~
../src/flecs/distr/flecs.c:70829:24: note:   crosses initialization of ‘ecs_query_cache_t* cache’
70829 |     ecs_query_cache_t *cache = impl->cache;
      |                        ^~~~~
../src/flecs/distr/flecs.c:70789:13: note:   crosses initialization of ‘int32_t op_count’
70789 |     int32_t op_count = impl->op_count ? impl->op_count : 1;
      |             ^~~~~~~~
../src/flecs/distr/flecs.c:70788:16: note:   crosses initialization of ‘int32_t var_count’
70788 |     int32_t i, var_count = impl->var_count;
      |                ^~~~~~~~~
../src/flecs/distr/flecs.c:70786:23: note:   crosses initialization of ‘ecs_query_impl_t* impl’
70786 |     ecs_query_impl_t *impl = flecs_query_impl(q);
      |                       ^~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘ecs_iter_t ecs_query_iter(const ecs_world_t*, const ecs_query_t*)’:
../src/flecs/distr/flecs.h:872:38: error: invalid ‘const_cast’ from type ‘const ecs_query_t*’ to type ‘ecs_query_impl_t*’
  872 | #define ECS_CONST_CAST(type, value) (const_cast<type>(value))
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1287:34: note: in expansion of macro ‘ECS_CONST_CAST’
 1287 | #define flecs_query_impl(query) (ECS_CONST_CAST(ecs_query_impl_t*, query))
      |                                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:70886:30: note: in expansion of macro ‘flecs_query_impl’
70886 |     ecs_query_impl_t *impl = flecs_query_impl(q);
      |                              ^~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘bool flecs_query_member_cmp(const ecs_query_op_t*, bool, ecs_query_run_ctx_t*, bool)’:
../src/flecs/distr/flecs.h:3942:31: error: invalid conversion from ‘void*’ to ‘ecs_entity_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 3942 | #define ECS_OFFSET(o, offset) reinterpret_cast<void*>((reinterpret_cast<uintptr_t>(o)) + (static_cast<uintptr_t>(offset)))
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.c:70987:19: note: in expansion of macro ‘ECS_OFFSET’
70987 |             val = ECS_OFFSET(ECS_ELEM(data, size, row), offset);
      |                   ^~~~~~~~~~
../src/flecs/distr/flecs.h:3942:31: error: invalid conversion from ‘void*’ to ‘ecs_entity_t*’ {aka ‘long unsigned int*’} [-fpermissive]
 3942 | #define ECS_OFFSET(o, offset) reinterpret_cast<void*>((reinterpret_cast<uintptr_t>(o)) + (static_cast<uintptr_t>(offset)))
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                               |
      |                               void*
../src/flecs/distr/flecs.c:71004:15: note: in expansion of macro ‘ECS_OFFSET’
71004 |         val = ECS_OFFSET(ECS_ELEM(data, size, row), offset);
      |               ^~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘bool flecs_query_pred_match(const ecs_query_op_t*, bool, ecs_query_run_ctx_t*, bool)’:
../src/flecs/distr/flecs.c:71269:74: error: invalid conversion from ‘void*’ to ‘const EcsIdentifier*’ [-fpermissive]
71269 |     const EcsIdentifier *names = l.table->data.columns[op_ctx->name_col].data;
      |                                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
      |                                                                          |
      |                                                                          void*
../src/flecs/distr/flecs.c: In function ‘bool flecs_query_toggle_cmp(const ecs_query_op_t*, bool, ecs_query_run_ctx_t*, ecs_flags64_t, ecs_flags64_t)’:
../src/flecs/distr/flecs.c:71551:1: error: jump to label ‘next_block’ [-fpermissive]
71551 | next_block:
      | ^~~~~~~~~~
../src/flecs/distr/flecs.c:71595:14: note:   from here
71595 |         goto next_block;
      |              ^~~~~~~~~~
../src/flecs/distr/flecs.c:71536:32: note:   skips initialization of ‘flecs_query_row_mask_t row_mask’
71536 |         flecs_query_row_mask_t row_mask = flecs_query_get_row_mask(
      |                                ^~~~~~~~
../src/flecs/distr/flecs.c:71613:1: error: jump to label ‘done’
71613 | done:
      | ^~~~
../src/flecs/distr/flecs.c:71556:22: note:   from here
71556 |                 goto done;
      |                      ^~~~
../src/flecs/distr/flecs.c:71568:13: note:   crosses initialization of ‘int32_t last_bit’
71568 |     int32_t last_bit = ECS_MIN(64, last - (block_index * 64));
      |             ^~~~~~~~
../src/flecs/distr/flecs.c:71567:13: note:   crosses initialization of ‘int32_t first_bit’
71567 |     int32_t first_bit = cur - (block_index * 64);
      |             ^~~~~~~~~
../src/flecs/distr/flecs.c:71613:1: error: jump to label ‘done’
71613 | done:
      | ^~~~
../src/flecs/distr/flecs.c:71544:22: note:   from here
71544 |                 goto done;
      |                      ^~~~
../src/flecs/distr/flecs.c:71568:13: note:   crosses initialization of ‘int32_t last_bit’
71568 |     int32_t last_bit = ECS_MIN(64, last - (block_index * 64));
      |             ^~~~~~~~
../src/flecs/distr/flecs.c:71567:13: note:   crosses initialization of ‘int32_t first_bit’
71567 |     int32_t first_bit = cur - (block_index * 64);
      |             ^~~~~~~~~
../src/flecs/distr/flecs.c:71613:1: error: jump to label ‘done’
71613 | done:
      | ^~~~
../src/flecs/distr/flecs.c:71515:18: note:   from here
71515 |             goto done;
      |                  ^~~~
../src/flecs/distr/flecs.c:71568:13: note:   crosses initialization of ‘int32_t last_bit’
71568 |     int32_t last_bit = ECS_MIN(64, last - (block_index * 64));
      |             ^~~~~~~~
../src/flecs/distr/flecs.c:71567:13: note:   crosses initialization of ‘int32_t first_bit’
71567 |     int32_t first_bit = cur - (block_index * 64);
      |             ^~~~~~~~~
../src/flecs/distr/flecs.c:71531:41: note:   crosses initialization of ‘int32_t row’
71531 |     int32_t new_block_index = cur / 64, row = first;
      |                                         ^~~
../src/flecs/distr/flecs.c:71531:13: note:   crosses initialization of ‘int32_t new_block_index’
71531 |     int32_t new_block_index = cur / 64, row = first;
      |             ^~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘bool flecs_query_trav_unknown_src_up_fixed_second(const ecs_query_op_t*, bool, const ecs_query_run_ctx_t*)’:
../src/flecs/distr/flecs.c:71844:43: error: invalid conversion from ‘void*’ to ‘ecs_trav_elem_t*’ [-fpermissive]
71844 |     ecs_trav_elem_t *elems = ecs_vec_first(&trav_ctx->cache.entities);
      |                              ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                           |
      |                                           void*
../src/flecs/distr/flecs.c:71847:19: error: expected unqualified-id before ‘and’ token
71847 |         trav_ctx->and.idr = el->idr; /* prevents lookup by select */
      |                   ^~~
../src/flecs/distr/flecs.c:71847:22: error: expected primary-expression before ‘.’ token
71847 |         trav_ctx->and.idr = el->idr; /* prevents lookup by select */
      |                      ^
../src/flecs/distr/flecs.c: In function ‘bool flecs_query_union_with_wildcard(const ecs_query_op_t*, bool, const ecs_query_run_ctx_t*, ecs_entity_t, bool)’:
../src/flecs/distr/flecs.c:72035:54: error: invalid conversion from ‘void*’ to ‘const ecs_switch_t*’ [-fpermissive]
72035 |     ecs_entity_t tgt = flecs_switch_get(op_ctx->idr->sparse, (uint32_t)e);
      |                                         ~~~~~~~~~~~~~^~~~~~
      |                                                      |
      |                                                      void*
../src/flecs/distr/flecs.c:31678:25: note:   initializing argument 1 of ‘uint64_t flecs_switch_get(const ecs_switch_t*, uint32_t)’
31678 |     const ecs_switch_t *sw,
      |     ~~~~~~~~~~~~~~~~~~~~^~
../src/flecs/distr/flecs.c: In function ‘bool flecs_query_union_with_tgt(const ecs_query_op_t*, bool, const ecs_query_run_ctx_t*, ecs_entity_t, ecs_entity_t, bool)’:
../src/flecs/distr/flecs.c:72099:56: error: invalid conversion from ‘void*’ to ‘const ecs_switch_t*’ [-fpermissive]
72099 |     ecs_entity_t e_tgt = flecs_switch_get(op_ctx->idr->sparse, (uint32_t)e);
      |                                           ~~~~~~~~~~~~~^~~~~~
      |                                                        |
      |                                                        void*
../src/flecs/distr/flecs.c:31678:25: note:   initializing argument 1 of ‘uint64_t flecs_switch_get(const ecs_switch_t*, uint32_t)’
31678 |     const ecs_switch_t *sw,
      |     ~~~~~~~~~~~~~~~~~~~~^~
../src/flecs/distr/flecs.c: In function ‘bool flecs_query_union_select_tgt(const ecs_query_op_t*, bool, const ecs_query_run_ctx_t*, ecs_entity_t, ecs_entity_t)’:
../src/flecs/distr/flecs.c:72157:55: error: invalid conversion from ‘void*’ to ‘const ecs_switch_t*’ [-fpermissive]
72157 |         op_ctx->cur = flecs_switch_first(op_ctx->idr->sparse, tgt);
      |                                          ~~~~~~~~~~~~~^~~~~~
      |                                                       |
      |                                                       void*
../src/flecs/distr/flecs.c:31692:25: note:   initializing argument 1 of ‘uint32_t flecs_switch_first(const ecs_switch_t*, uint64_t)’
31692 |     const ecs_switch_t *sw,
      |     ~~~~~~~~~~~~~~~~~~~~^~
../src/flecs/distr/flecs.c:72159:54: error: invalid conversion from ‘void*’ to ‘const ecs_switch_t*’ [-fpermissive]
72159 |         op_ctx->cur = flecs_switch_next(op_ctx->idr->sparse, (uint32_t)op_ctx->cur);
      |                                         ~~~~~~~~~~~~~^~~~~~
      |                                                      |
      |                                                      void*
../src/flecs/distr/flecs.c:31705:25: note:   initializing argument 1 of ‘uint32_t flecs_switch_next(const ecs_switch_t*, uint32_t)’
31705 |     const ecs_switch_t *sw,
      |     ~~~~~~~~~~~~~~~~~~~~^~
../src/flecs/distr/flecs.c: In function ‘bool flecs_query_union_select_wildcard(const ecs_query_op_t*, bool, const ecs_query_run_ctx_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.c:72193:62: error: invalid conversion from ‘void*’ to ‘const ecs_switch_t*’ [-fpermissive]
72193 |         op_ctx->tgt_iter = flecs_switch_targets(op_ctx->idr->sparse);
      |                                                 ~~~~~~~~~~~~~^~~~~~
      |                                                              |
      |                                                              void*
../src/flecs/distr/flecs.c:31720:25: note:   initializing argument 1 of ‘ecs_map_iter_t flecs_switch_targets(const ecs_switch_t*)’
31720 |     const ecs_switch_t *sw)
      |     ~~~~~~~~~~~~~~~~~~~~^~
../src/flecs/distr/flecs.c:72209:55: error: invalid conversion from ‘void*’ to ‘const ecs_switch_t*’ [-fpermissive]
72209 |         op_ctx->cur = flecs_switch_first(op_ctx->idr->sparse, op_ctx->tgt);
      |                                          ~~~~~~~~~~~~~^~~~~~
      |                                                       |
      |                                                       void*
../src/flecs/distr/flecs.c:31692:25: note:   initializing argument 1 of ‘uint32_t flecs_switch_first(const ecs_switch_t*, uint64_t)’
31692 |     const ecs_switch_t *sw,
      |     ~~~~~~~~~~~~~~~~~~~~^~
../src/flecs/distr/flecs.c:72211:54: error: invalid conversion from ‘void*’ to ‘const ecs_switch_t*’ [-fpermissive]
72211 |         op_ctx->cur = flecs_switch_next(op_ctx->idr->sparse, (uint32_t)op_ctx->cur);
      |                                         ~~~~~~~~~~~~~^~~~~~
      |                                                      |
      |                                                      void*
../src/flecs/distr/flecs.c:31705:25: note:   initializing argument 1 of ‘uint32_t flecs_switch_next(const ecs_switch_t*, uint32_t)’
31705 |     const ecs_switch_t *sw,
      |     ~~~~~~~~~~~~~~~~~~~~^~
../src/flecs/distr/flecs.c: In function ‘void flecs_query_union_set_shared(const ecs_query_op_t*, const ecs_query_run_ctx_t*)’:
../src/flecs/distr/flecs.c:72286:46: error: invalid conversion from ‘void*’ to ‘const ecs_switch_t*’ [-fpermissive]
72286 |     ecs_entity_t tgt = flecs_switch_get(idr->sparse, (uint32_t)src);
      |                                         ~~~~~^~~~~~
      |                                              |
      |                                              void*
../src/flecs/distr/flecs.c:31678:25: note:   initializing argument 1 of ‘uint64_t flecs_switch_get(const ecs_switch_t*, uint32_t)’
31678 |     const ecs_switch_t *sw,
      |     ~~~~~~~~~~~~~~~~~~~~^~
../src/flecs/distr/flecs.c: In function ‘bool flecs_query_union_self_up(const ecs_query_op_t*, bool, const ecs_query_run_ctx_t*)’:
../src/flecs/distr/flecs.c:72337:1: error: jump to label ‘next_for_union’
72337 | next_for_union:
      | ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:72322:18: note:   from here
72322 |             goto next_for_union;
      |                  ^~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:72331:21: note:   crosses initialization of ‘ecs_iter_t* it’
72331 |         ecs_iter_t *it = ctx->it;
      |                     ^~
../src/flecs/distr/flecs.c:72330:16: note:   crosses initialization of ‘int8_t field_index’
72330 |         int8_t field_index = op->field_index;
      |                ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘bool flecs_query_self_up_with(const ecs_query_op_t*, bool, const ecs_query_run_ctx_t*, bool)’:
../src/flecs/distr/flecs.c:72682:61: error: expected unqualified-id before ‘and’ token
72682 |             ecs_query_and_ctx_t *op_ctx = flecs_op_ctx(ctx, and);
      |                                                             ^~~
../src/flecs/distr/flecs.c:2045:61: note: in definition of macro ‘flecs_op_ctx’
 2045 | #define flecs_op_ctx(ctx, op_kind) (&flecs_op_ctx_(ctx)->is.op_kind)
      |                                                             ^~~~~~~
../src/flecs/distr/flecs.c:2045:68: error: expected primary-expression before ‘)’ token
 2045 | #define flecs_op_ctx(ctx, op_kind) (&flecs_op_ctx_(ctx)->is.op_kind)
      |                                                                    ^
../src/flecs/distr/flecs.c:72682:43: note: in expansion of macro ‘flecs_op_ctx’
72682 |             ecs_query_and_ctx_t *op_ctx = flecs_op_ctx(ctx, and);
      |                                           ^~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_query_build_down_cache(ecs_world_t*, ecs_allocator_t*, const ecs_query_run_ctx_t*, ecs_trav_cache_t*, ecs_entity_t, ecs_entity_t)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:73162:22: note: in expansion of macro ‘flecs_table_cache_next’
73162 |         while ((tr = flecs_table_cache_next(&it, ecs_table_record_t))) {
      |                      ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_trav_down_t* flecs_trav_down_ensure(const ecs_query_run_ctx_t*, ecs_trav_up_cache_t*, ecs_entity_t)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_map_val_t*’ {aka ‘long unsigned int*’} to type ‘ecs_trav_down_t**’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:1852:37: note: in expansion of macro ‘ECS_CAST’
 1852 | #define ecs_map_ensure_ref(m, T, k) ECS_CAST(T**, ecs_map_ensure(m, k))
      |                                     ^~~~~~~~
../src/flecs/distr/flecs.c:73319:30: note: in expansion of macro ‘ecs_map_ensure_ref’
73319 |     ecs_trav_down_t **trav = ecs_map_ensure_ref(
      |                              ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:2591:22: error: invalid conversion from ‘void*’ to ‘ecs_trav_down_t*’ [-fpermissive]
 2591 |     flecs_iter_calloc(it, ECS_SIZEOF(T), ECS_ALIGNOF(T))
      |     ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                      |
      |                      void*
../src/flecs/distr/flecs.c:73322:19: note: in expansion of macro ‘flecs_iter_calloc_t’
73322 |         trav[0] = flecs_iter_calloc_t(ctx->it, ecs_trav_down_t);
      |                   ^~~~~~~~~~~~~~~~~~~
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘void flecs_trav_entity_down_isa(ecs_world_t*, ecs_allocator_t*, ecs_trav_up_cache_t*, ecs_trav_down_t*, ecs_entity_t, ecs_entity_t, ecs_id_record_t*, bool, bool)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:73399:22: note: in expansion of macro ‘flecs_table_cache_next’
73399 |         while ((tr = flecs_table_cache_next(&it, ecs_table_record_t))) {
      |                      ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_trav_down_t* flecs_trav_entity_down(ecs_world_t*, ecs_allocator_t*, ecs_trav_up_cache_t*, ecs_trav_down_t*, ecs_entity_t, ecs_entity_t, ecs_id_record_t*, ecs_id_record_t*, bool, bool)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:73468:22: note: in expansion of macro ‘flecs_table_cache_next’
73468 |         while ((tr = flecs_table_cache_next(&it, ecs_table_record_t))) {
      |                      ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘void flecs_query_down_cache_fini(ecs_allocator_t*, ecs_trav_up_cache_t*)’:
../src/flecs/distr/flecs.h:879:36: error: invalid conversion from ‘void*’ to ‘ecs_trav_down_t*’ [-fpermissive]
  879 | #define ECS_PTR_CAST(type, value) (reinterpret_cast<type>(value))
      |                                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                                    |
      |                                    void*
../src/flecs/distr/flecs.h:1861:25: note: in expansion of macro ‘ECS_PTR_CAST’
 1861 | #define ecs_map_ptr(it) ECS_PTR_CAST(void*, ECS_CAST(uintptr_t, ecs_map_value(it)))
      |                         ^~~~~~~~~~~~
../src/flecs/distr/flecs.c:73564:30: note: in expansion of macro ‘ecs_map_ptr’
73564 |         ecs_trav_down_t *t = ecs_map_ptr(&it);
      |                              ^~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_trav_up_t* flecs_trav_up_ensure(const ecs_query_run_ctx_t*, ecs_trav_up_cache_t*, uint64_t)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_map_val_t*’ {aka ‘long unsigned int*’} to type ‘ecs_trav_up_t**’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.h:1852:37: note: in expansion of macro ‘ECS_CAST’
 1852 | #define ecs_map_ensure_ref(m, T, k) ECS_CAST(T**, ecs_map_ensure(m, k))
      |                                     ^~~~~~~~
../src/flecs/distr/flecs.c:73582:28: note: in expansion of macro ‘ecs_map_ensure_ref’
73582 |     ecs_trav_up_t **trav = ecs_map_ensure_ref(
      |                            ^~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:2591:22: error: invalid conversion from ‘void*’ to ‘ecs_trav_up_t*’ [-fpermissive]
 2591 |     flecs_iter_calloc(it, ECS_SIZEOF(T), ECS_ALIGNOF(T))
      |     ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                      |
      |                      void*
../src/flecs/distr/flecs.c:73585:19: note: in expansion of macro ‘flecs_iter_calloc_t’
73585 |         trav[0] = flecs_iter_calloc_t(ctx->it, ecs_trav_up_t);
      |                   ^~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘int32_t flecs_trav_type_search(ecs_trav_up_t*, const ecs_table_t*, ecs_id_record_t*, ecs_type_t*)’:
../src/flecs/distr/flecs.c:73598:49: error: invalid conversion from ‘void*’ to ‘ecs_table_record_t*’ [-fpermissive]
73598 |     ecs_table_record_t *tr = ecs_table_cache_get(&idr_with->cache, table);
      |                              ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                 |
      |                                                 void*
../src/flecs/distr/flecs.c: In function ‘ecs_trav_up_t* flecs_trav_table_up(const ecs_query_run_ctx_t*, ecs_allocator_t*, ecs_trav_up_cache_t*, const ecs_world_t*, ecs_entity_t, ecs_id_t, ecs_id_t, ecs_id_record_t*, ecs_id_record_t*)’:
../src/flecs/distr/flecs.c:73718:1: error: jump to label ‘not_found’
73718 | not_found:
      | ^~~~~~~~~
../src/flecs/distr/flecs.c:73651:14: note:   from here
73651 |         goto not_found;
      |              ^~~~~~~~~
../src/flecs/distr/flecs.c:73660:19: note:   crosses initialization of ‘ecs_flags32_t flags’
73660 |     ecs_flags32_t flags = table->flags;
      |                   ^~~~~
../src/flecs/distr/flecs.c:73654:16: note:   crosses initialization of ‘ecs_type_t type’
73654 |     ecs_type_t type = table->type;
      |                ^~~~
../src/flecs/distr/flecs.c:73720:1: error: jump to label ‘found’
73720 | found:
      | ^~~~~
../src/flecs/distr/flecs.c:73657:14: note:   from here
73657 |         goto found;
      |              ^~~~~
../src/flecs/distr/flecs.c:73660:19: note:   crosses initialization of ‘ecs_flags32_t flags’
73660 |     ecs_flags32_t flags = table->flags;
      |                   ^~~~~
../src/flecs/distr/flecs.c: In function ‘ecs_trav_up_t* flecs_query_get_up_cache(const ecs_query_run_ctx_t*, ecs_trav_up_cache_t*, ecs_table_t*, ecs_id_t, ecs_entity_t, ecs_id_record_t*, ecs_id_record_t*)’:
../src/flecs/distr/flecs.c:73748:49: error: invalid conversion from ‘void*’ to ‘ecs_table_record_t*’ [-fpermissive]
73748 |     ecs_table_record_t *tr = ecs_table_cache_get(&idr_trav->cache, table);
      |                              ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                 |
      |                                                 void*
In file included from ../src/flecs/distr/flecs.c:19:
../src/flecs/distr/flecs.c: In function ‘bool flecs_query_trivial_search(const ecs_query_run_ctx_t*, ecs_query_trivial_ctx_t*, bool, ecs_flags64_t)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:73848:40: note: in expansion of macro ‘flecs_table_cache_next’
73848 |         const ecs_table_record_t *tr = flecs_table_cache_next(
      |                                        ^~~~~~~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c: In function ‘bool flecs_query_is_trivial_search(const ecs_query_run_ctx_t*, ecs_query_trivial_ctx_t*, bool)’:
../src/flecs/distr/flecs.h:865:25: error: invalid ‘static_cast’ from type ‘ecs_table_cache_hdr_t*’ to type ‘ecs_table_record_t*’
  865 | #define ECS_CAST(T, V) (static_cast<T>(V))
      |                         ^~~~~~~~~~~~~~~~~
../src/flecs/distr/flecs.c:1114:6: note: in expansion of macro ‘ECS_CAST’
 1114 |     (ECS_CAST(T*, flecs_table_cache_next_(it)))
      |      ^~~~~~~~
../src/flecs/distr/flecs.c:73908:40: note: in expansion of macro ‘flecs_table_cache_next’
73908 |         const ecs_table_record_t *tr = flecs_table_cache_next(
      |                                        ^~~~~~~~~~~~~~~~~~~~~~
