@@ -117,7 +117,8 @@ class BinaryReader {
117117 [[nodiscard]] Result ReadType (Type* out_value, const char * desc);
118118 [[nodiscard]] Result ReadRefType (Type* out_value, const char * desc);
119119 [[nodiscard]] Result ReadExternalKind (ExternalKind* out_value,
120- const char * desc);
120+ const char * desc,
121+ const char * type);
121122 [[nodiscard]] Result ReadStr (std::string_view* out_str, const char * desc);
122123 [[nodiscard]] Result ReadBytes (const void ** out_data,
123124 Address* out_data_size,
@@ -398,10 +399,11 @@ Result BinaryReader::ReadRefType(Type* out_value, const char* desc) {
398399}
399400
400401Result BinaryReader::ReadExternalKind (ExternalKind* out_value,
401- const char * desc) {
402+ const char * desc,
403+ const char * type) {
402404 uint8_t value = 0 ;
403405 CHECK_RESULT (ReadU8 (&value, desc));
404- ERROR_UNLESS (value < kExternalKindCount , " invalid export external kind: %d" ,
406+ ERROR_UNLESS (value < kExternalKindCount , " invalid %s external kind: %d" , type ,
405407 value);
406408 *out_value = static_cast <ExternalKind>(value);
407409 return Result::Ok;
@@ -2696,13 +2698,10 @@ Result BinaryReader::ReadImportSection(Offset section_size) {
26962698 std::string_view field_name;
26972699 CHECK_RESULT (ReadStr (&field_name, " import field name" ));
26982700
2699- uint8_t kind_u8;
2700- CHECK_RESULT (ReadU8 (&kind_u8, " import kind" ));
2701- ERROR_UNLESS (kind_u8 < kExternalKindCount , " malformed import kind: %d" ,
2702- kind_u8);
2703- ExternalKind kind = static_cast <ExternalKind>(kind_u8);
2704-
2701+ ExternalKind kind;
2702+ CHECK_RESULT (ReadExternalKind (&kind, " import kind" , " import" ));
27052703 CALLBACK (OnImport, i, kind, module_name, field_name);
2704+
27062705 switch (kind) {
27072706 case ExternalKind::Func: {
27082707 Index sig_index;
@@ -2872,7 +2871,7 @@ Result BinaryReader::ReadExportSection(Offset section_size) {
28722871 CHECK_RESULT (ReadStr (&name, " export item name" ));
28732872
28742873 ExternalKind kind;
2875- CHECK_RESULT (ReadExternalKind (&kind, " export kind" ));
2874+ CHECK_RESULT (ReadExternalKind (&kind, " export kind" , " export " ));
28762875
28772876 Index item_index;
28782877 CHECK_RESULT (ReadIndex (&item_index, " export item index" ));
@@ -2930,7 +2929,7 @@ Result BinaryReader::ReadElemSection(Offset section_size) {
29302929 CHECK_RESULT (ReadRefType (&elem_type, " table elem type" ));
29312930 } else {
29322931 ExternalKind kind;
2933- CHECK_RESULT (ReadExternalKind (&kind, " export kind" ));
2932+ CHECK_RESULT (ReadExternalKind (&kind, " export kind" , " export " ));
29342933 ERROR_UNLESS (kind == ExternalKind::Func,
29352934 " segment elem type must be func (%s)" ,
29362935 elem_type.GetName ().c_str ());
0 commit comments