Coverage Report

Created: 2025-07-01 06:18

/src/WasmEdge/lib/loader/ast/component/component_alias.cpp
Line
Count
Source (jump to first uncovered line)
1
// SPDX-License-Identifier: Apache-2.0
2
// SPDX-FileCopyrightText: 2019-2024 Second State INC
3
4
#include "loader/loader.h"
5
6
namespace WasmEdge {
7
namespace Loader {
8
9
0
Expect<void> Loader::loadAlias(AST::Component::Alias &Alias) {
10
0
  auto ReportError = [this](auto E) {
11
0
    return logLoadError(E, FMgr.getLastOffset(), ASTNodeAttr::Comp_Alias);
12
0
  };
13
  // alias ::= s:<sort> t:<aliastarget> => (alias t (s))
14
15
0
  EXPECTED_TRY(loadSort(Alias.getSort()).map_error(ReportError));
16
0
  EXPECTED_TRY(loadAliasTarget(Alias.getTarget()).map_error(ReportError));
17
0
  return {};
18
0
}
19
20
0
Expect<void> Loader::loadAliasTarget(AST::Component::AliasTarget &AliasTarget) {
21
0
  auto ReportError = [this](auto E) {
22
0
    return logLoadError(E, FMgr.getLastOffset(), ASTNodeAttr::Comp_AliasTarget);
23
0
  };
24
  // aliastarget ::= 0x00 i:<instanceidx> n:<string>         => export i n
25
  //               | 0x01 i:<core:instanceidx> n:<core:name> => core export i n
26
  //               | 0x02 ct:<u32> idx:<u32>                 => outer ct idx
27
28
0
  EXPECTED_TRY(auto Flag, FMgr.readByte().map_error(ReportError));
29
0
  switch (Flag) {
30
0
  case 0x00:
31
0
  case 0x01: {
32
0
    auto &Ex = AliasTarget.emplace<AST::Component::AliasTargetExport>();
33
0
    EXPECTED_TRY(Ex.getInstanceIdx(), FMgr.readU32().map_error(ReportError));
34
0
    EXPECTED_TRY(Ex.getName(), FMgr.readName().map_error(ReportError));
35
0
    return {};
36
0
  }
37
0
  case 0x02: {
38
0
    auto &Out = AliasTarget.emplace<AST::Component::AliasTargetOuter>();
39
0
    EXPECTED_TRY(Out.getComponent(), FMgr.readU32().map_error(ReportError));
40
0
    EXPECTED_TRY(Out.getIndex(), FMgr.readU32().map_error(ReportError));
41
0
    return {};
42
0
  }
43
0
  default:
44
0
    return logLoadError(ErrCode::Value::MalformedAliasTarget,
45
0
                        FMgr.getLastOffset(), ASTNodeAttr::Comp_AliasTarget);
46
0
  }
47
0
}
48
49
} // namespace Loader
50
} // namespace WasmEdge