diff options
Diffstat (limited to 'src/resolve-names.cc')
-rw-r--r-- | src/resolve-names.cc | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/resolve-names.cc b/src/resolve-names.cc index c18dd557..c2d48b5f 100644 --- a/src/resolve-names.cc +++ b/src/resolve-names.cc @@ -203,7 +203,7 @@ void NameResolver::ResolveLocalVar(Var* var) { } Result NameResolver::BeginBlockExpr(BlockExpr* expr) { - PushLabel(expr->block->label); + PushLabel(expr->block.label); return Result::Ok; } @@ -213,7 +213,7 @@ Result NameResolver::EndBlockExpr(BlockExpr* expr) { } Result NameResolver::BeginLoopExpr(LoopExpr* expr) { - PushLabel(expr->block->label); + PushLabel(expr->block.label); return Result::Ok; } @@ -233,7 +233,7 @@ Result NameResolver::OnBrIfExpr(BrIfExpr* expr) { } Result NameResolver::OnBrTableExpr(BrTableExpr* expr) { - for (Var& target : *expr->targets) + for (Var& target : expr->targets) ResolveLabelVar(&target); ResolveLabelVar(&expr->default_target); return Result::Ok; @@ -260,7 +260,7 @@ Result NameResolver::OnGetLocalExpr(GetLocalExpr* expr) { } Result NameResolver::BeginIfExpr(IfExpr* expr) { - PushLabel(expr->true_->label); + PushLabel(expr->true_.label); return Result::Ok; } @@ -285,7 +285,7 @@ Result NameResolver::OnTeeLocalExpr(TeeLocalExpr* expr) { } Result NameResolver::BeginTryExpr(TryExpr* expr) { - PushLabel(expr->block->label); + PushLabel(expr->block.label); return Result::Ok; } @@ -390,14 +390,14 @@ Result NameResolver::VisitModule(Module* module) { } void NameResolver::VisitScriptModule(ScriptModule* script_module) { - if (script_module->type == ScriptModule::Type::Text) - VisitModule(script_module->text); + if (auto* tsm = dyn_cast<TextScriptModule>(script_module)) + VisitModule(&tsm->module); } void NameResolver::VisitCommand(Command* command) { switch (command->type) { case CommandType::Module: - VisitModule(cast<ModuleCommand>(command)->module); + VisitModule(&cast<ModuleCommand>(command)->module); break; case CommandType::Action: @@ -423,16 +423,17 @@ void NameResolver::VisitCommand(Command* command) { * should try to resolve names when possible. */ ErrorHandlerNop new_error_handler; NameResolver new_resolver(lexer_, script_, &new_error_handler); - new_resolver.VisitScriptModule(assert_invalid_command->module); + new_resolver.VisitScriptModule(assert_invalid_command->module.get()); break; } case CommandType::AssertUnlinkable: - VisitScriptModule(cast<AssertUnlinkableCommand>(command)->module); + VisitScriptModule(cast<AssertUnlinkableCommand>(command)->module.get()); break; case CommandType::AssertUninstantiable: - VisitScriptModule(cast<AssertUninstantiableCommand>(command)->module); + VisitScriptModule( + cast<AssertUninstantiableCommand>(command)->module.get()); break; } } |