From bc81d582c972bc98be75be5b0f4f046ccaa6a34f Mon Sep 17 00:00:00 2001 From: Rune Tynan Date: Tue, 14 Feb 2023 12:29:33 -0500 Subject: [PATCH 1/2] Add v7 support to rust-analyzer --- crates/proc-macro-api/src/version.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/crates/proc-macro-api/src/version.rs b/crates/proc-macro-api/src/version.rs index 40125c2a512..ad0e8942c4b 100644 --- a/crates/proc-macro-api/src/version.rs +++ b/crates/proc-macro-api/src/version.rs @@ -120,17 +120,20 @@ pub fn read_version(dylib_path: &AbsPath) -> io::Result { let version = u32::from_be_bytes([dot_rustc[4], dot_rustc[5], dot_rustc[6], dot_rustc[7]]); // Last supported version is: // https://github.com/rust-lang/rust/commit/0696e79f2740ad89309269b460579e548a5cd632 - match version { - 5 | 6 => {} + let snappy_portion = match version { + 5 | 6 => &dot_rustc[8..], + 7 => { + let len_bytes = &dot_rustc[8..12]; + let data_len = u32::from_be_bytes(len_bytes.try_into().unwrap()) as usize; + &dot_rustc[12..data_len + 12] + }, _ => { return Err(io::Error::new( io::ErrorKind::InvalidData, format!("unsupported metadata version {version}"), )); } - } - - let snappy_portion = &dot_rustc[8..]; + }; let mut snappy_decoder = SnapDecoder::new(snappy_portion); From 853f0472454aca14f9fe39b06895b3d5b90c86f7 Mon Sep 17 00:00:00 2001 From: Rune Tynan Date: Tue, 14 Feb 2023 14:45:05 -0500 Subject: [PATCH 2/2] Cargo fmt --- crates/proc-macro-api/src/version.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/proc-macro-api/src/version.rs b/crates/proc-macro-api/src/version.rs index ad0e8942c4b..cf637ec359a 100644 --- a/crates/proc-macro-api/src/version.rs +++ b/crates/proc-macro-api/src/version.rs @@ -126,7 +126,7 @@ pub fn read_version(dylib_path: &AbsPath) -> io::Result { let len_bytes = &dot_rustc[8..12]; let data_len = u32::from_be_bytes(len_bytes.try_into().unwrap()) as usize; &dot_rustc[12..data_len + 12] - }, + } _ => { return Err(io::Error::new( io::ErrorKind::InvalidData,