MCPcopy Create free account
hub / github.com/WebAssembly/wabt / ParseModuleFieldList

Method ParseModuleFieldList

src/wast-parser.cc:1452–1491  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1450}
1451
1452Result WastParser::ParseModuleFieldList(Module* module) {
1453 WABT_TRACE(ParseModuleFieldList);
1454
1455 // Reset module-specific state.
1456 resolve_ref_types_.clear();
1457 resolve_type_vectors_.clear();
1458 resolve_funcs_.clear();
1459
1460 while (IsModuleField(PeekPair()) || PeekIsCustom()) {
1461 if (PeekIsCustom()) {
1462 CHECK_RESULT(ParseCustomSectionAnnotation(module));
1463 continue;
1464 }
1465 if (Failed(ParseModuleField(module))) {
1466 CHECK_RESULT(Synchronize(IsModuleField));
1467 }
1468 }
1469
1470 // Module parsing is completed, type names can be resolved now.
1471 Result result = Result::Ok;
1472
1473 for (auto it : resolve_ref_types_) {
1474 result |= ResolveTargetRefType(*module, it.target_type, it.var, errors_);
1475 }
1476
1477 for (auto it : resolve_type_vectors_) {
1478 result |=
1479 ResolveTargetTypeVector(*module, it.target_vector, &it.vars, errors_);
1480 }
1481
1482 for (auto it : resolve_funcs_) {
1483 result |= ResolveTargetTypeVector(*module, &it.types, &it.vars, errors_);
1484 it.target_func->local_types.Set(it.types);
1485 }
1486
1487 CHECK_RESULT(result);
1488 CHECK_RESULT(ResolveFuncTypes(module, errors_));
1489 CHECK_RESULT(ResolveNamesModule(module, errors_));
1490 return Result::Ok;
1491}
1492
1493Result WastParser::ParseModuleField(Module* module) {
1494 WABT_TRACE(ParseModuleField);

Callers

nothing calls this directly

Calls 6

IsModuleFieldFunction · 0.85
FailedFunction · 0.85
ResolveFuncTypesFunction · 0.85
ResolveNamesModuleFunction · 0.85
clearMethod · 0.45
SetMethod · 0.45

Tested by

no test coverage detected