Coverage Report

Created: 2026-08-14 06:41

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/WasmEdge/lib/loader/ast/component/component_alias.cpp
Line
Count
Source
1
// SPDX-License-Identifier: Apache-2.0
2
// SPDX-FileCopyrightText: Copyright The WasmEdge Authors
3
4
#include "loader/loader.h"
5
6
namespace WasmEdge {
7
namespace Loader {
8
9
502
Expect<void> Loader::loadCoreAlias(AST::Component::CoreAlias &Alias) {
10
502
  auto ReportError = [this](auto E) {
11
7
    return logLoadError(E, FMgr.getLastOffset(), ASTNodeAttr::Comp_Alias);
12
7
  };
13
  // core:alias       ::= s:<core:sort> t:<core:aliastarget> => (alias t (s))
14
  // core:aliastarget ::= 0x01 ct:<u32> idx:<u32>            => outer ct idx
15
16
502
  EXPECTED_TRY(loadCoreSort(Alias.getSort()).map_error(ReportError));
17
996
  EXPECTED_TRY(uint8_t Flag, FMgr.readByte().map_error(ReportError));
18
996
  if (Flag != 0x01) {
19
1
    return logLoadError(ErrCode::Value::MalformedAliasTarget,
20
1
                        FMgr.getLastOffset(), ASTNodeAttr::Comp_Alias);
21
1
  }
22
991
  EXPECTED_TRY(uint32_t Ct, FMgr.readU32().map_error(ReportError));
23
991
  EXPECTED_TRY(uint32_t Idx, FMgr.readU32().map_error(ReportError));
24
494
  Alias.setComponentJump(Ct);
25
494
  Alias.setIndex(Idx);
26
494
  return {};
27
991
}
28
29
9.99k
Expect<void> Loader::loadAlias(AST::Component::Alias &Alias) {
30
9.99k
  auto ReportError = [this](auto E) {
31
87
    return logLoadError(E, FMgr.getLastOffset(), ASTNodeAttr::Comp_Alias);
32
87
  };
33
  // alias       ::= s:<sort> t:<aliastarget>                => (alias t (s))
34
  // aliastarget ::= 0x00 i:<instanceidx> n:<string>         => export i n
35
  //               | 0x01 i:<core:instanceidx> n:<core:name> => core export i n
36
  //               | 0x02 ct:<u32> idx:<u32>                 => outer ct idx
37
38
9.99k
  EXPECTED_TRY(loadSort(Alias.getSort()).map_error(ReportError));
39
19.8k
  EXPECTED_TRY(uint8_t Flag, FMgr.readByte().map_error(ReportError));
40
19.8k
  switch (Flag) {
41
1.92k
  case 0x00:
42
2.79k
  case 0x01: {
43
2.79k
    EXPECTED_TRY(uint32_t Idx, FMgr.readU32().map_error(ReportError));
44
2.79k
    EXPECTED_TRY(std::string Name, FMgr.readName().map_error(ReportError));
45
2.78k
    Alias.setExport(Idx, Name);
46
2.78k
    break;
47
2.79k
  }
48
7.12k
  case 0x02: {
49
7.12k
    EXPECTED_TRY(uint32_t Ct, FMgr.readU32().map_error(ReportError));
50
7.12k
    EXPECTED_TRY(uint32_t Idx, FMgr.readU32().map_error(ReportError));
51
7.11k
    Alias.setOuter(Ct, Idx);
52
7.11k
    break;
53
7.12k
  }
54
11
  default:
55
11
    return logLoadError(ErrCode::Value::MalformedAliasTarget,
56
11
                        FMgr.getLastOffset(), ASTNodeAttr::Comp_Alias);
57
19.8k
  }
58
9.90k
  Alias.setTargetType(static_cast<AST::Component::Alias::TargetType>(Flag));
59
9.90k
  return {};
60
19.8k
}
61
62
} // namespace Loader
63
} // namespace WasmEdge