diff --git a/near-sdk-macros/src/lib.rs b/near-sdk-macros/src/lib.rs index edb149e0b..a6a257dd8 100644 --- a/near-sdk-macros/src/lib.rs +++ b/near-sdk-macros/src/lib.rs @@ -62,13 +62,6 @@ fn has_nested_near_macros(item: TokenStream) -> bool { .is_some() } -fn check_duplicate_contract_state() -> bool { - static CONTRACT_STATE_DEFINED: ::std::sync::atomic::AtomicBool = - ::std::sync::atomic::AtomicBool::new(false); - - CONTRACT_STATE_DEFINED.swap(true, ::std::sync::atomic::Ordering::AcqRel) -} - #[proc_macro_attribute] pub fn near(attr: TokenStream, item: TokenStream) -> TokenStream { if attr.to_string().contains("event_json") { @@ -111,16 +104,6 @@ pub fn near(attr: TokenStream, item: TokenStream) -> TokenStream { let mut expanded: proc_macro2::TokenStream = quote! {}; if near_macro_args.contract_state.unwrap_or(false) { - if check_duplicate_contract_state() { - return TokenStream::from( - syn::Error::new( - Span::call_site(), - "Contract state can only be defined once per crate", - ) - .to_compile_error(), - ); - } - if let Some(metadata) = near_macro_args.contract_metadata { expanded = quote! {#[#near_sdk_crate::near_bindgen(#metadata)]} } else { diff --git a/near-sdk/compilation_tests/all.rs b/near-sdk/compilation_tests/all.rs index c200ccac6..28468b166 100644 --- a/near-sdk/compilation_tests/all.rs +++ b/near-sdk/compilation_tests/all.rs @@ -41,5 +41,4 @@ fn compilation_tests() { t.pass("compilation_tests/contract_metadata_bindgen.rs"); t.pass("compilation_tests/types.rs"); t.compile_fail("compilation_tests/nested_near_error.rs"); - t.compile_fail("compilation_tests/double_contract_state_error.rs"); } diff --git a/near-sdk/compilation_tests/double_contract_state_error.rs b/near-sdk/compilation_tests/double_contract_state_error.rs deleted file mode 100644 index bd15b957a..000000000 --- a/near-sdk/compilation_tests/double_contract_state_error.rs +++ /dev/null @@ -1,13 +0,0 @@ -use near_sdk::near; - -#[near(contract_state)] -pub struct Contract {} - -pub mod mod1 { - use near_sdk::near; - - #[near(contract_state)] - struct Contract {} -} - -fn main() {} diff --git a/near-sdk/compilation_tests/double_contract_state_error.stderr b/near-sdk/compilation_tests/double_contract_state_error.stderr deleted file mode 100644 index c0a1f206f..000000000 --- a/near-sdk/compilation_tests/double_contract_state_error.stderr +++ /dev/null @@ -1,7 +0,0 @@ -error: Contract state can only be defined once per crate - --> compilation_tests/double_contract_state_error.rs:9:5 - | -9 | #[near(contract_state)] - | ^^^^^^^^^^^^^^^^^^^^^^^ - | - = note: this error originates in the attribute macro `near` (in Nightly builds, run with -Z macro-backtrace for more info)