| 7 | namespace Loader { |
| 8 | |
| 9 | Expect<void> Loader::loadCoreAlias(AST::Component::CoreAlias &Alias) { |
| 10 | auto ReportError = [this](auto E) { |
| 11 | return logLoadError(E, FMgr.getLastOffset(), ASTNodeAttr::Comp_Alias); |
| 12 | }; |
| 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 | EXPECTED_TRY(loadCoreSort(Alias.getSort()).map_error(ReportError)); |
| 17 | EXPECTED_TRY(uint8_t Flag, FMgr.readByte().map_error(ReportError)); |
| 18 | if (Flag != 0x01) { |
| 19 | return logLoadError(ErrCode::Value::MalformedAliasTarget, |
| 20 | FMgr.getLastOffset(), ASTNodeAttr::Comp_Alias); |
| 21 | } |
| 22 | EXPECTED_TRY(uint32_t Ct, FMgr.readU32().map_error(ReportError)); |
| 23 | EXPECTED_TRY(uint32_t Idx, FMgr.readU32().map_error(ReportError)); |
| 24 | Alias.setComponentJump(Ct); |
| 25 | Alias.setIndex(Idx); |
| 26 | return {}; |
| 27 | } |
| 28 | |
| 29 | Expect<void> Loader::loadAlias(AST::Component::Alias &Alias) { |
| 30 | auto ReportError = [this](auto E) { |
nothing calls this directly
no test coverage detected