diff --git a/asm-lsp/parser.rs b/asm-lsp/parser.rs index 6efd4618..92d2ca6a 100644 --- a/asm-lsp/parser.rs +++ b/asm-lsp/parser.rs @@ -32,12 +32,16 @@ use url_escape::encode_www_form_urlencoded; /// Current function assumes that the RST file is already read and that it's been given a reference /// to its contents (`&str`). /// +/// # Errors +/// +/// This function will not error, it maintains a `Result` return type for compatibility +/// with a macro in the server's test code +/// /// # Panics /// /// This function is highly specialized to parse a specific file and will panic /// for most mal-formed/unexpected inputs -#[must_use] -pub fn populate_riscv_registers(rst_contents: &str) -> Vec { +pub fn populate_riscv_registers(rst_contents: &str) -> Result> { enum ParseState { FileStart, SectionStart, @@ -136,7 +140,7 @@ pub fn populate_riscv_registers(rst_contents: &str) -> Vec { } } - registers + Ok(registers) } /// Parse all of the RISCV instruction rst files inside of `docs_dir` diff --git a/asm-lsp/serialized/directives/avr b/asm-lsp/serialized/directives/avr index dfcafe52..55830828 100644 Binary files a/asm-lsp/serialized/directives/avr and b/asm-lsp/serialized/directives/avr differ diff --git a/asm-lsp/serialized/directives/gas b/asm-lsp/serialized/directives/gas index 89e73878..7cfb8068 100644 Binary files a/asm-lsp/serialized/directives/gas and b/asm-lsp/serialized/directives/gas differ diff --git a/asm-lsp/serialized/directives/masm b/asm-lsp/serialized/directives/masm index 10eb334c..6e70ff41 100644 Binary files a/asm-lsp/serialized/directives/masm and b/asm-lsp/serialized/directives/masm differ diff --git a/asm-lsp/serialized/directives/nasm b/asm-lsp/serialized/directives/nasm index 39694cd6..75edb6ac 100644 Binary files a/asm-lsp/serialized/directives/nasm and b/asm-lsp/serialized/directives/nasm differ diff --git a/asm-lsp/serialized/opcodes/arm b/asm-lsp/serialized/opcodes/arm index bf72491e..a573a714 100644 Binary files a/asm-lsp/serialized/opcodes/arm and b/asm-lsp/serialized/opcodes/arm differ diff --git a/asm-lsp/serialized/opcodes/arm64 b/asm-lsp/serialized/opcodes/arm64 index 765cde54..efff20d3 100644 Binary files a/asm-lsp/serialized/opcodes/arm64 and b/asm-lsp/serialized/opcodes/arm64 differ diff --git a/asm-lsp/serialized/opcodes/riscv b/asm-lsp/serialized/opcodes/riscv index 8ae01fe5..a2284be7 100644 Binary files a/asm-lsp/serialized/opcodes/riscv and b/asm-lsp/serialized/opcodes/riscv differ diff --git a/asm-lsp/serialized/opcodes/x86 b/asm-lsp/serialized/opcodes/x86 index ddfaa920..89badc8c 100644 Binary files a/asm-lsp/serialized/opcodes/x86 and b/asm-lsp/serialized/opcodes/x86 differ diff --git a/asm-lsp/serialized/opcodes/x86_64 b/asm-lsp/serialized/opcodes/x86_64 index c557383f..2122dd15 100644 Binary files a/asm-lsp/serialized/opcodes/x86_64 and b/asm-lsp/serialized/opcodes/x86_64 differ diff --git a/asm-lsp/serialized/opcodes/z80 b/asm-lsp/serialized/opcodes/z80 index e1e7117b..97dd187b 100644 Binary files a/asm-lsp/serialized/opcodes/z80 and b/asm-lsp/serialized/opcodes/z80 differ diff --git a/asm-lsp/serialized/registers/6502 b/asm-lsp/serialized/registers/6502 index 0f2cfb3d..09a0783e 100644 Binary files a/asm-lsp/serialized/registers/6502 and b/asm-lsp/serialized/registers/6502 differ diff --git a/asm-lsp/serialized/registers/arm b/asm-lsp/serialized/registers/arm index 4db49cc3..b5b2977f 100644 Binary files a/asm-lsp/serialized/registers/arm and b/asm-lsp/serialized/registers/arm differ diff --git a/asm-lsp/serialized/registers/arm64 b/asm-lsp/serialized/registers/arm64 index c5029fa7..08df61f4 100644 Binary files a/asm-lsp/serialized/registers/arm64 and b/asm-lsp/serialized/registers/arm64 differ diff --git a/asm-lsp/serialized/registers/power-isa b/asm-lsp/serialized/registers/power-isa index 020d234f..1d67760d 100644 Binary files a/asm-lsp/serialized/registers/power-isa and b/asm-lsp/serialized/registers/power-isa differ diff --git a/asm-lsp/serialized/registers/x86 b/asm-lsp/serialized/registers/x86 index 3798b183..b8fbe4ed 100644 Binary files a/asm-lsp/serialized/registers/x86 and b/asm-lsp/serialized/registers/x86 differ diff --git a/asm-lsp/serialized/registers/x86_64 b/asm-lsp/serialized/registers/x86_64 index fdc0051f..ab137d24 100644 Binary files a/asm-lsp/serialized/registers/x86_64 and b/asm-lsp/serialized/registers/x86_64 differ diff --git a/asm-lsp/serialized/registers/z80 b/asm-lsp/serialized/registers/z80 index 17ba7475..59cc338b 100644 Binary files a/asm-lsp/serialized/registers/z80 and b/asm-lsp/serialized/registers/z80 differ diff --git a/asm-lsp/test.rs b/asm-lsp/test.rs index c35f93b3..df11c40c 100644 --- a/asm-lsp/test.rs +++ b/asm-lsp/test.rs @@ -19,7 +19,7 @@ mod tests { parser::{ populate_6502_instructions, populate_arm_instructions, populate_avr_directives, populate_ca65_directives, populate_masm_nasm_directives, - populate_power_isa_instructions, populate_riscv_instructions, + populate_power_isa_instructions, populate_riscv_instructions, populate_riscv_registers, }, populate_gas_directives, populate_instructions, populate_name_to_directive_map, populate_name_to_instruction_map, populate_name_to_register_map, populate_registers, Arch, @@ -2410,13 +2410,13 @@ Width: 8 bits", * Serialization Tests *************************************************************************/ macro_rules! serialized_registers_test { - ($serialized_path:literal, $raw_path:literal) => { + ($serialized_path:literal, $raw_path:literal, $populate_fn:expr) => { let mut cmp_map = HashMap::new(); let regs_ser = include_bytes!($serialized_path); let ser_vec = bincode::deserialize::>(regs_ser).unwrap(); let regs_raw = include_str!($raw_path); - let mut raw_vec = populate_registers(regs_raw).unwrap(); + let mut raw_vec = $populate_fn(regs_raw).unwrap(); // HACK: Windows line endings... if cfg!(target_os = "windows") { @@ -2450,49 +2450,64 @@ Width: 8 bits", fn serialized_x86_registers_are_up_to_date() { serialized_registers_test!( "serialized/registers/x86", - "../docs_store/registers/x86.xml" + "../docs_store/registers/x86.xml", + populate_registers ); } #[test] fn serialized_x86_64_registers_are_up_to_date() { serialized_registers_test!( "serialized/registers/x86_64", - "../docs_store/registers/x86_64.xml" + "../docs_store/registers/x86_64.xml", + populate_registers ); } #[test] fn serialized_arm_registers_are_up_to_date() { serialized_registers_test!( "serialized/registers/arm", - "../docs_store/registers/arm.xml" + "../docs_store/registers/arm.xml", + populate_registers ); } #[test] fn serialized_arm64_registers_are_up_to_date() { serialized_registers_test!( "serialized/registers/arm64", - "../docs_store/registers/arm64.xml" + "../docs_store/registers/arm64.xml", + populate_registers ); } #[test] fn serialized_z80_registers_are_up_to_date() { serialized_registers_test!( "serialized/registers/z80", - "../docs_store/registers/z80.xml" + "../docs_store/registers/z80.xml", + populate_registers + ); + } + #[test] + fn serialized_riscv_registers_are_up_to_date() { + serialized_registers_test!( + "serialized/registers/riscv", + "../docs_store/registers/riscv.rst.txt", + populate_riscv_registers ); } #[test] fn serialized_6502_registers_are_up_to_date() { serialized_registers_test!( "serialized/registers/6502", - "../docs_store/registers/6502.xml" + "../docs_store/registers/6502.xml", + populate_registers ); } #[test] fn serialized_power_isa_registers_are_up_to_date() { serialized_registers_test!( "serialized/registers/power-isa", - "../docs_store/registers/power-isa.xml" + "../docs_store/registers/power-isa.xml", + populate_registers ); } diff --git a/asm_docs_parsing/src/main.rs b/asm_docs_parsing/src/main.rs index e5307d89..631a81e0 100644 --- a/asm_docs_parsing/src/main.rs +++ b/asm_docs_parsing/src/main.rs @@ -117,7 +117,7 @@ fn run(opts: &SerializeDocs) -> Result<()> { } (false, Some(arch_in)) => { if arch_in == Arch::RISCV { - populate_riscv_registers(&conts) + populate_riscv_registers(&conts)? } else { populate_registers(&conts)? }