Skip to content

Commit 5ba10e6

Browse files
authored
Merge pull request #84 from Supercolony-net/bugfix/rust-analyzer-vs-code
Fix rust-analyser for VSCode
2 parents 5b2df32 + cfdde2e commit 5ba10e6

4 files changed

Lines changed: 19 additions & 5 deletions

File tree

utils/brush_lang/proc_macros/contract.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ use quote::{
1414
use syn::Item;
1515

1616
pub(crate) fn generate(_attrs: TokenStream, ink_module: TokenStream) -> TokenStream {
17+
if internal::skip() {
18+
return (quote! {}).into()
19+
}
1720
let input: TokenStream2 = ink_module.into();
1821
let attrs: TokenStream2 = _attrs.into();
1922
let mut module = syn::parse2::<syn::ItemMod>(input.clone()).expect("Can't parse contract module");

utils/brush_lang/proc_macros/internal.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,3 +290,10 @@ pub(crate) fn extract_attr(attrs: &mut Vec<syn::Attribute>, ident: &str) -> Vec<
290290
pub(crate) fn new_attribute(attr_stream: TokenStream2) -> syn::Attribute {
291291
syn::parse2::<Attributes>(attr_stream).unwrap().attr()[0].clone()
292292
}
293+
294+
pub(crate) const INK_PREFIX: &str = "ink_lang=";
295+
296+
#[inline]
297+
pub(crate) fn skip() -> bool {
298+
std::env::args().find(|arg| arg.contains(INK_PREFIX)).is_none()
299+
}

utils/brush_lang/proc_macros/metadata.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,15 +123,16 @@ pub(crate) enum LockType {
123123
/// Function returns exclusively locked file for metadata.
124124
/// It stores file in the target folder where `ink_lang` is stored.
125125
pub(crate) fn get_locked_file(t: LockType) -> File {
126-
const PREFIX: &str = "ink_lang=";
126+
use crate::internal::INK_PREFIX;
127127
const SUFFIX: &str = "target/";
128+
128129
let target: String = env::args()
129-
.find(|arg| arg.contains(PREFIX))
130-
.expect("Unable to find PREFIX");
130+
.find(|arg| arg.contains(INK_PREFIX))
131+
.expect(format!("Unable to find PREFIX: {:?}", env::args()).as_str());
131132
let target: String = target
132133
.chars()
133-
.skip(PREFIX.len())
134-
.take(target.find(SUFFIX).expect("Unable to find debug/deps") - PREFIX.len() + SUFFIX.len())
134+
.skip(INK_PREFIX.len())
135+
.take(target.find(SUFFIX).expect("Unable to find debug/deps") - INK_PREFIX.len() + SUFFIX.len())
135136
.collect();
136137

137138
let target_dir = Utf8PathBuf::from_str(target.as_str()).expect("Can't generate Path from target");

utils/brush_lang/proc_macros/trait_definition.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ use syn::{
2020
};
2121

2222
pub(crate) fn generate(_attrs: TokenStream, _input: TokenStream) -> TokenStream {
23+
if crate::internal::skip() {
24+
return (quote! {}).into()
25+
}
2326
let attrs: proc_macro2::TokenStream = _attrs.into();
2427
let mut trait_item = parse_macro_input!(_input as ItemTrait);
2528
let trait_without_ink_attrs;

0 commit comments

Comments
 (0)