| 607 | } |
| 608 | |
| 609 | Result NameResolver::VisitModule(Module* module) { |
| 610 | current_module_ = module; |
| 611 | CheckDuplicateBindings(&module->elem_segment_bindings, "elem"); |
| 612 | CheckDuplicateBindings(&module->func_bindings, "function"); |
| 613 | CheckDuplicateBindings(&module->global_bindings, "global"); |
| 614 | CheckDuplicateBindings(&module->type_bindings, "type"); |
| 615 | CheckDuplicateBindings(&module->table_bindings, "table"); |
| 616 | CheckDuplicateBindings(&module->memory_bindings, "memory"); |
| 617 | CheckDuplicateBindings(&module->tag_bindings, "tag"); |
| 618 | |
| 619 | for (Func* func : module->funcs) |
| 620 | VisitFunc(func); |
| 621 | for (Export* export_ : module->exports) |
| 622 | VisitExport(export_); |
| 623 | for (Global* global : module->globals) |
| 624 | VisitGlobal(global); |
| 625 | for (Tag* tag : module->tags) |
| 626 | VisitTag(tag); |
| 627 | for (Table* table : module->tables) |
| 628 | VisitTable(table); |
| 629 | for (ElemSegment* elem_segment : module->elem_segments) |
| 630 | VisitElemSegment(elem_segment); |
| 631 | for (DataSegment* data_segment : module->data_segments) |
| 632 | VisitDataSegment(data_segment); |
| 633 | for (Var* start : module->starts) |
| 634 | ResolveFuncVar(start); |
| 635 | current_module_ = nullptr; |
| 636 | return result_; |
| 637 | } |
| 638 | |
| 639 | void NameResolver::VisitScriptModule(ScriptModule* script_module) { |
| 640 | if (auto* tsm = dyn_cast<TextScriptModule>(script_module)) { |
no outgoing calls
no test coverage detected