diff --git a/Cargo.lock b/Cargo.lock index da6876ef57a..5514585ffc3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4380,20 +4380,14 @@ dependencies = [ [[package]] name = "ctor" -version = "0.4.3" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec09e802f5081de6157da9a75701d6c713d8dc3ba52571fd4bd25f412644e8a6" +checksum = "6d765eb1c0bda10d31e0ea185f5ee15da532d60b0912d2bd1441783439e749c5" dependencies = [ - "ctor-proc-macro", - "dtor", + "link-section", + "linktime-proc-macro", ] -[[package]] -name = "ctor-proc-macro" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2931af7e13dc045d8e9d26afccc6fa115d64e115c9c84b1166288b46f6782c2" - [[package]] name = "ctrlc" version = "3.5.0" @@ -5181,21 +5175,6 @@ dependencies = [ "dtoa", ] -[[package]] -name = "dtor" -version = "0.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97cbdf2ad6846025e8e25df05171abfb30e3ababa12ee0a0e44b9bbe570633a8" -dependencies = [ - "dtor-proc-macro", -] - -[[package]] -name = "dtor-proc-macro" -version = "0.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7454e41ff9012c00d53cf7f475c5e3afa3b91b7c90568495495e8d9bf47a1055" - [[package]] name = "dunce" version = "1.0.5" @@ -10075,6 +10054,12 @@ dependencies = [ "cc", ] +[[package]] +name = "link-section" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d1e908a416d6e9f725743b84a36feea40c4c131e805fbc26d61f9f451f36080" + [[package]] name = "linkify" version = "0.10.0" @@ -10084,6 +10069,12 @@ dependencies = [ "memchr", ] +[[package]] +name = "linktime-proc-macro" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44cd706ff0d503ee32b2071166510ca27e281228de10cd3aa8d35ff94560f81" + [[package]] name = "linux-raw-sys" version = "0.4.15" diff --git a/Cargo.toml b/Cargo.toml index 817018a9509..9880a3f517f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -563,7 +563,7 @@ core-video = { version = "0.5.2", features = ["metal"] } cpal = "0.17" crash-handler = "0.7" criterion = { version = "0.5", features = ["html_reports"] } -ctor = "0.4.0" +ctor = "1.0.6" dap-types = { git = "https://github.com/zed-industries/dap-types", rev = "1b461b310481d01e02b2603c16d7144b926339f8" } dashmap = "6.0" derive_more = { version = "2.1.1", features = [ diff --git a/crates/action_log/src/action_log.rs b/crates/action_log/src/action_log.rs index 89b91cb7501..0471ae45dd8 100644 --- a/crates/action_log/src/action_log.rs +++ b/crates/action_log/src/action_log.rs @@ -1334,7 +1334,7 @@ mod tests { use std::env; use util::{RandomCharIter, path}; - #[ctor::ctor] + #[ctor::ctor(unsafe)] fn init_logger() { zlog::init_test(); } diff --git a/crates/agent/src/tests/mod.rs b/crates/agent/src/tests/mod.rs index 84e0db98ea0..8eb236b9598 100644 --- a/crates/agent/src/tests/mod.rs +++ b/crates/agent/src/tests/mod.rs @@ -4552,7 +4552,7 @@ async fn setup(cx: &mut TestAppContext, model: TestModel) -> ThreadTest { } #[cfg(test)] -#[ctor::ctor] +#[ctor::ctor(unsafe)] fn init_logger() { if std::env::var("RUST_LOG").is_ok() { env_logger::init(); diff --git a/crates/auto_update/src/auto_update.rs b/crates/auto_update/src/auto_update.rs index f1afa96c230..15afca8e8b6 100644 --- a/crates/auto_update/src/auto_update.rs +++ b/crates/auto_update/src/auto_update.rs @@ -1175,7 +1175,7 @@ mod tests { }; use tempfile::tempdir; - #[ctor::ctor] + #[ctor::ctor(unsafe)] fn init_logger() { zlog::init_test(); } diff --git a/crates/buffer_diff/src/buffer_diff.rs b/crates/buffer_diff/src/buffer_diff.rs index 62c8f2c884d..cc89f8c314d 100644 --- a/crates/buffer_diff/src/buffer_diff.rs +++ b/crates/buffer_diff/src/buffer_diff.rs @@ -2168,7 +2168,7 @@ mod tests { use unindent::Unindent as _; use util::test::marked_text_ranges; - #[ctor::ctor] + #[ctor::ctor(unsafe)] fn init_logger() { zlog::init_test(); } diff --git a/crates/collab/tests/integration/integration_tests.rs b/crates/collab/tests/integration/integration_tests.rs index dcdb346be82..7fc56a3c86c 100644 --- a/crates/collab/tests/integration/integration_tests.rs +++ b/crates/collab/tests/integration/integration_tests.rs @@ -50,7 +50,7 @@ use unindent::Unindent as _; use util::{path, rel_path::rel_path, uri}; use workspace::{Pane, ParticipantLocation}; -#[ctor::ctor] +#[ctor::ctor(unsafe)] fn init_logger() { zlog::init_test(); } diff --git a/crates/diagnostics/src/diagnostics_tests.rs b/crates/diagnostics/src/diagnostics_tests.rs index c587e61c4f4..6352532484c 100644 --- a/crates/diagnostics/src/diagnostics_tests.rs +++ b/crates/diagnostics/src/diagnostics_tests.rs @@ -30,7 +30,7 @@ use unindent::Unindent as _; use util::{RandomCharIter, path, post_inc, rel_path::rel_path}; use workspace::MultiWorkspace; -#[ctor::ctor] +#[ctor::ctor(unsafe)] fn init_logger() { zlog::init_test(); } diff --git a/crates/edit_prediction/src/edit_prediction_tests.rs b/crates/edit_prediction/src/edit_prediction_tests.rs index 140b5519469..5eb4662af51 100644 --- a/crates/edit_prediction/src/edit_prediction_tests.rs +++ b/crates/edit_prediction/src/edit_prediction_tests.rs @@ -3904,7 +3904,7 @@ async fn test_upsell_dismissed_via_dismissable_api(cx: &mut TestAppContext) { kvp.delete_kvp(ZedPredictUpsell::KEY.into()).await.unwrap(); } -#[ctor::ctor] +#[ctor::ctor(unsafe)] fn init_logger() { zlog::init_test(); } diff --git a/crates/editor/src/test.rs b/crates/editor/src/test.rs index 22f686668bd..13be412b95a 100644 --- a/crates/editor/src/test.rs +++ b/crates/editor/src/test.rs @@ -23,7 +23,7 @@ use ui::{App, BorrowAppContext, IntoElement, px}; use util::test::{generate_marked_text, marked_text_offsets, marked_text_ranges}; #[cfg(test)] -#[ctor::ctor] +#[ctor::ctor(unsafe)] fn init_logger() { zlog::init_test(); } diff --git a/crates/extension_host/src/extension_store_test.rs b/crates/extension_host/src/extension_store_test.rs index dc554d965ad..011e1a1d6bc 100644 --- a/crates/extension_host/src/extension_store_test.rs +++ b/crates/extension_host/src/extension_store_test.rs @@ -29,7 +29,7 @@ use theme::ThemeRegistry; use util::{rel_path::rel_path_buf, test::TempTree}; #[cfg(test)] -#[ctor::ctor] +#[ctor::ctor(unsafe)] fn init_logger() { zlog::init_test(); } diff --git a/crates/file_finder/src/file_finder_tests.rs b/crates/file_finder/src/file_finder_tests.rs index bafd484fdee..42466134f84 100644 --- a/crates/file_finder/src/file_finder_tests.rs +++ b/crates/file_finder/src/file_finder_tests.rs @@ -14,7 +14,7 @@ use workspace::{ open_paths, }; -#[ctor::ctor] +#[ctor::ctor(unsafe)] fn init_logger() { zlog::init_test(); } diff --git a/crates/git_ui/src/project_diff.rs b/crates/git_ui/src/project_diff.rs index cd91c6704e6..6a729aee442 100644 --- a/crates/git_ui/src/project_diff.rs +++ b/crates/git_ui/src/project_diff.rs @@ -1852,7 +1852,7 @@ mod tests { use super::*; - #[ctor::ctor] + #[ctor::ctor(unsafe)] fn init_logger() { zlog::init_test(); } diff --git a/crates/gpui_macos/src/platform.rs b/crates/gpui_macos/src/platform.rs index 92df05b39a7..87346991d64 100644 --- a/crates/gpui_macos/src/platform.rs +++ b/crates/gpui_macos/src/platform.rs @@ -69,7 +69,7 @@ const MAC_PLATFORM_IVAR: &str = "platform"; static mut APP_CLASS: *const Class = ptr::null(); static mut APP_DELEGATE_CLASS: *const Class = ptr::null(); -#[ctor] +#[ctor(unsafe)] unsafe fn build_classes() { unsafe { APP_CLASS = { @@ -79,7 +79,7 @@ unsafe fn build_classes() { } }; unsafe { - APP_DELEGATE_CLASS = unsafe { + APP_DELEGATE_CLASS = { let mut decl = ClassDecl::new("GPUIApplicationDelegate", class!(NSResponder)).unwrap(); decl.add_ivar::<*mut c_void>(MAC_PLATFORM_IVAR); decl.add_method( diff --git a/crates/gpui_macos/src/screen_capture.rs b/crates/gpui_macos/src/screen_capture.rs index a7eaa3e140a..5ece21a34c8 100644 --- a/crates/gpui_macos/src/screen_capture.rs +++ b/crates/gpui_macos/src/screen_capture.rs @@ -284,7 +284,7 @@ pub(crate) fn get_sources() -> oneshot::Receiver i32; } -#[ctor] +#[ctor(unsafe)] unsafe fn build_classes() { unsafe { WINDOW_CLASS = build_window_class("GPUIWindow", class!(NSWindow)); @@ -130,181 +130,177 @@ unsafe fn build_classes() { VIEW_CLASS = { let mut decl = ClassDecl::new("GPUIView", class!(NSView)).unwrap(); decl.add_ivar::<*mut c_void>(WINDOW_STATE_IVAR); - unsafe { - decl.add_method(sel!(dealloc), dealloc_view as extern "C" fn(&Object, Sel)); + decl.add_method(sel!(dealloc), dealloc_view as extern "C" fn(&Object, Sel)); - decl.add_method( - sel!(performKeyEquivalent:), - handle_key_equivalent as extern "C" fn(&Object, Sel, id) -> BOOL, - ); - decl.add_method( - sel!(keyDown:), - handle_key_down as extern "C" fn(&Object, Sel, id), - ); - decl.add_method( - sel!(keyUp:), - handle_key_up as extern "C" fn(&Object, Sel, id), - ); - decl.add_method( - sel!(mouseDown:), - handle_view_event as extern "C" fn(&Object, Sel, id), - ); - decl.add_method( - sel!(mouseUp:), - handle_view_event as extern "C" fn(&Object, Sel, id), - ); - decl.add_method( - sel!(rightMouseDown:), - handle_view_event as extern "C" fn(&Object, Sel, id), - ); - decl.add_method( - sel!(rightMouseUp:), - handle_view_event as extern "C" fn(&Object, Sel, id), - ); - decl.add_method( - sel!(otherMouseDown:), - handle_view_event as extern "C" fn(&Object, Sel, id), - ); - decl.add_method( - sel!(otherMouseUp:), - handle_view_event as extern "C" fn(&Object, Sel, id), - ); - decl.add_method( - sel!(mouseMoved:), - handle_view_event as extern "C" fn(&Object, Sel, id), - ); - decl.add_method( - sel!(resetCursorRects), - reset_cursor_rects as extern "C" fn(&Object, Sel), - ); - decl.add_method( - sel!(pressureChangeWithEvent:), - handle_view_event as extern "C" fn(&Object, Sel, id), - ); - decl.add_method( - sel!(mouseExited:), - handle_view_event as extern "C" fn(&Object, Sel, id), - ); - decl.add_method( - sel!(magnifyWithEvent:), - handle_view_event as extern "C" fn(&Object, Sel, id), - ); - decl.add_method( - sel!(mouseDragged:), - handle_view_event as extern "C" fn(&Object, Sel, id), - ); - decl.add_method( - sel!(rightMouseDragged:), - handle_view_event as extern "C" fn(&Object, Sel, id), - ); - decl.add_method( - sel!(otherMouseDragged:), - handle_view_event as extern "C" fn(&Object, Sel, id), - ); - decl.add_method( - sel!(scrollWheel:), - handle_view_event as extern "C" fn(&Object, Sel, id), - ); - decl.add_method( - sel!(swipeWithEvent:), - handle_view_event as extern "C" fn(&Object, Sel, id), - ); - decl.add_method( - sel!(flagsChanged:), - handle_view_event as extern "C" fn(&Object, Sel, id), - ); + decl.add_method( + sel!(performKeyEquivalent:), + handle_key_equivalent as extern "C" fn(&Object, Sel, id) -> BOOL, + ); + decl.add_method( + sel!(keyDown:), + handle_key_down as extern "C" fn(&Object, Sel, id), + ); + decl.add_method( + sel!(keyUp:), + handle_key_up as extern "C" fn(&Object, Sel, id), + ); + decl.add_method( + sel!(mouseDown:), + handle_view_event as extern "C" fn(&Object, Sel, id), + ); + decl.add_method( + sel!(mouseUp:), + handle_view_event as extern "C" fn(&Object, Sel, id), + ); + decl.add_method( + sel!(rightMouseDown:), + handle_view_event as extern "C" fn(&Object, Sel, id), + ); + decl.add_method( + sel!(rightMouseUp:), + handle_view_event as extern "C" fn(&Object, Sel, id), + ); + decl.add_method( + sel!(otherMouseDown:), + handle_view_event as extern "C" fn(&Object, Sel, id), + ); + decl.add_method( + sel!(otherMouseUp:), + handle_view_event as extern "C" fn(&Object, Sel, id), + ); + decl.add_method( + sel!(mouseMoved:), + handle_view_event as extern "C" fn(&Object, Sel, id), + ); + decl.add_method( + sel!(resetCursorRects), + reset_cursor_rects as extern "C" fn(&Object, Sel), + ); + decl.add_method( + sel!(pressureChangeWithEvent:), + handle_view_event as extern "C" fn(&Object, Sel, id), + ); + decl.add_method( + sel!(mouseExited:), + handle_view_event as extern "C" fn(&Object, Sel, id), + ); + decl.add_method( + sel!(magnifyWithEvent:), + handle_view_event as extern "C" fn(&Object, Sel, id), + ); + decl.add_method( + sel!(mouseDragged:), + handle_view_event as extern "C" fn(&Object, Sel, id), + ); + decl.add_method( + sel!(rightMouseDragged:), + handle_view_event as extern "C" fn(&Object, Sel, id), + ); + decl.add_method( + sel!(otherMouseDragged:), + handle_view_event as extern "C" fn(&Object, Sel, id), + ); + decl.add_method( + sel!(scrollWheel:), + handle_view_event as extern "C" fn(&Object, Sel, id), + ); + decl.add_method( + sel!(swipeWithEvent:), + handle_view_event as extern "C" fn(&Object, Sel, id), + ); + decl.add_method( + sel!(flagsChanged:), + handle_view_event as extern "C" fn(&Object, Sel, id), + ); - decl.add_method( - sel!(makeBackingLayer), - make_backing_layer as extern "C" fn(&Object, Sel) -> id, - ); + decl.add_method( + sel!(makeBackingLayer), + make_backing_layer as extern "C" fn(&Object, Sel) -> id, + ); - decl.add_protocol(Protocol::get("CALayerDelegate").unwrap()); - decl.add_method( - sel!(viewDidChangeBackingProperties), - view_did_change_backing_properties as extern "C" fn(&Object, Sel), - ); - decl.add_method( - sel!(setFrameSize:), - set_frame_size as extern "C" fn(&Object, Sel, NSSize), - ); - decl.add_method( - sel!(displayLayer:), - display_layer as extern "C" fn(&Object, Sel, id), - ); + decl.add_protocol(Protocol::get("CALayerDelegate").unwrap()); + decl.add_method( + sel!(viewDidChangeBackingProperties), + view_did_change_backing_properties as extern "C" fn(&Object, Sel), + ); + decl.add_method( + sel!(setFrameSize:), + set_frame_size as extern "C" fn(&Object, Sel, NSSize), + ); + decl.add_method( + sel!(displayLayer:), + display_layer as extern "C" fn(&Object, Sel, id), + ); - decl.add_protocol(Protocol::get("NSTextInputClient").unwrap()); - decl.add_method( - sel!(validAttributesForMarkedText), - valid_attributes_for_marked_text as extern "C" fn(&Object, Sel) -> id, - ); - decl.add_method( - sel!(hasMarkedText), - has_marked_text as extern "C" fn(&Object, Sel) -> BOOL, - ); - decl.add_method( - sel!(markedRange), - marked_range as extern "C" fn(&Object, Sel) -> NSRange, - ); - decl.add_method( - sel!(selectedRange), - selected_range as extern "C" fn(&Object, Sel) -> NSRange, - ); - decl.add_method( - sel!(firstRectForCharacterRange:actualRange:), - first_rect_for_character_range - as extern "C" fn(&Object, Sel, NSRange, id) -> NSRect, - ); - decl.add_method( - sel!(insertText:replacementRange:), - insert_text as extern "C" fn(&Object, Sel, id, NSRange), - ); - decl.add_method( - sel!(setMarkedText:selectedRange:replacementRange:), - set_marked_text as extern "C" fn(&Object, Sel, id, NSRange, NSRange), - ); - decl.add_method(sel!(unmarkText), unmark_text as extern "C" fn(&Object, Sel)); - decl.add_method( - sel!(attributedSubstringForProposedRange:actualRange:), - attributed_substring_for_proposed_range - as extern "C" fn(&Object, Sel, NSRange, *mut c_void) -> id, - ); - decl.add_method( - sel!(viewDidChangeEffectiveAppearance), - view_did_change_effective_appearance as extern "C" fn(&Object, Sel), - ); + decl.add_protocol(Protocol::get("NSTextInputClient").unwrap()); + decl.add_method( + sel!(validAttributesForMarkedText), + valid_attributes_for_marked_text as extern "C" fn(&Object, Sel) -> id, + ); + decl.add_method( + sel!(hasMarkedText), + has_marked_text as extern "C" fn(&Object, Sel) -> BOOL, + ); + decl.add_method( + sel!(markedRange), + marked_range as extern "C" fn(&Object, Sel) -> NSRange, + ); + decl.add_method( + sel!(selectedRange), + selected_range as extern "C" fn(&Object, Sel) -> NSRange, + ); + decl.add_method( + sel!(firstRectForCharacterRange:actualRange:), + first_rect_for_character_range + as extern "C" fn(&Object, Sel, NSRange, id) -> NSRect, + ); + decl.add_method( + sel!(insertText:replacementRange:), + insert_text as extern "C" fn(&Object, Sel, id, NSRange), + ); + decl.add_method( + sel!(setMarkedText:selectedRange:replacementRange:), + set_marked_text as extern "C" fn(&Object, Sel, id, NSRange, NSRange), + ); + decl.add_method(sel!(unmarkText), unmark_text as extern "C" fn(&Object, Sel)); + decl.add_method( + sel!(attributedSubstringForProposedRange:actualRange:), + attributed_substring_for_proposed_range + as extern "C" fn(&Object, Sel, NSRange, *mut c_void) -> id, + ); + decl.add_method( + sel!(viewDidChangeEffectiveAppearance), + view_did_change_effective_appearance as extern "C" fn(&Object, Sel), + ); - // Suppress beep on keystrokes with modifier keys. - decl.add_method( - sel!(doCommandBySelector:), - do_command_by_selector as extern "C" fn(&Object, Sel, Sel), - ); + // Suppress beep on keystrokes with modifier keys. + decl.add_method( + sel!(doCommandBySelector:), + do_command_by_selector as extern "C" fn(&Object, Sel, Sel), + ); - decl.add_method( - sel!(acceptsFirstMouse:), - accepts_first_mouse as extern "C" fn(&Object, Sel, id) -> BOOL, - ); + decl.add_method( + sel!(acceptsFirstMouse:), + accepts_first_mouse as extern "C" fn(&Object, Sel, id) -> BOOL, + ); - decl.add_method( - sel!(characterIndexForPoint:), - character_index_for_point as extern "C" fn(&Object, Sel, NSPoint) -> u64, - ); - } + decl.add_method( + sel!(characterIndexForPoint:), + character_index_for_point as extern "C" fn(&Object, Sel, NSPoint) -> u64, + ); decl.register() }; BLURRED_VIEW_CLASS = { let mut decl = ClassDecl::new("BlurredView", class!(NSVisualEffectView)).unwrap(); - unsafe { - decl.add_method( - sel!(initWithFrame:), - blurred_view_init_with_frame as extern "C" fn(&Object, Sel, NSRect) -> id, - ); - decl.add_method( - sel!(updateLayer), - blurred_view_update_layer as extern "C" fn(&Object, Sel), - ); - decl.register() - } + decl.add_method( + sel!(initWithFrame:), + blurred_view_init_with_frame as extern "C" fn(&Object, Sel, NSRect) -> id, + ); + decl.add_method( + sel!(updateLayer), + blurred_view_update_layer as extern "C" fn(&Object, Sel), + ); + decl.register() }; } } diff --git a/crates/language/src/buffer_tests.rs b/crates/language/src/buffer_tests.rs index a13678a27d2..493003c5b17 100644 --- a/crates/language/src/buffer_tests.rs +++ b/crates/language/src/buffer_tests.rs @@ -38,7 +38,7 @@ pub static TRAILING_WHITESPACE_REGEX: LazyLock = LazyLock::new(|| }); #[cfg(test)] -#[ctor::ctor] +#[ctor::ctor(unsafe)] fn init_logger() { zlog::init_test(); } diff --git a/crates/lsp/src/lsp.rs b/crates/lsp/src/lsp.rs index 1fa39f32cb2..c9ccfa4a3c2 100644 --- a/crates/lsp/src/lsp.rs +++ b/crates/lsp/src/lsp.rs @@ -2083,7 +2083,7 @@ mod tests { use gpui::TestAppContext; use std::str::FromStr; - #[ctor::ctor] + #[ctor::ctor(unsafe)] fn init_logger() { zlog::init_test(); } diff --git a/crates/multi_buffer/src/multi_buffer_tests.rs b/crates/multi_buffer/src/multi_buffer_tests.rs index 1538c325267..3fa5ac19d1a 100644 --- a/crates/multi_buffer/src/multi_buffer_tests.rs +++ b/crates/multi_buffer/src/multi_buffer_tests.rs @@ -12,7 +12,7 @@ use util::RandomCharIter; use util::rel_path::rel_path; use util::test::sample_text; -#[ctor::ctor] +#[ctor::ctor(unsafe)] fn init_logger() { zlog::init_test(); } diff --git a/crates/rope/src/rope.rs b/crates/rope/src/rope.rs index d6a4db3396c..4d5aa410ae7 100644 --- a/crates/rope/src/rope.rs +++ b/crates/rope/src/rope.rs @@ -1732,7 +1732,7 @@ mod tests { use std::{cmp::Ordering, env, io::Read}; use util::RandomCharIter; - #[ctor::ctor] + #[ctor::ctor(unsafe)] fn init_logger() { zlog::init_test(); } diff --git a/crates/sum_tree/src/sum_tree.rs b/crates/sum_tree/src/sum_tree.rs index 251a194d2c7..352db3c65a3 100644 --- a/crates/sum_tree/src/sum_tree.rs +++ b/crates/sum_tree/src/sum_tree.rs @@ -1396,7 +1396,7 @@ mod tests { use rand::{distr::StandardUniform, prelude::*}; use std::cmp; - #[ctor::ctor] + #[ctor::ctor(unsafe)] fn init_logger() { zlog::init_test(); } diff --git a/crates/tab_switcher/src/tab_switcher_tests.rs b/crates/tab_switcher/src/tab_switcher_tests.rs index 7dc74ee7474..0700781ebb8 100644 --- a/crates/tab_switcher/src/tab_switcher_tests.rs +++ b/crates/tab_switcher/src/tab_switcher_tests.rs @@ -7,7 +7,7 @@ use serde_json::json; use util::{path, rel_path::rel_path}; use workspace::{ActivatePreviousItem, AppState, MultiWorkspace, Workspace, item::test::TestItem}; -#[ctor::ctor] +#[ctor::ctor(unsafe)] fn init_logger() { zlog::init_test(); } diff --git a/crates/text/src/tests.rs b/crates/text/src/tests.rs index e6e7534cb28..61cd45b0f1a 100644 --- a/crates/text/src/tests.rs +++ b/crates/text/src/tests.rs @@ -9,7 +9,7 @@ use std::{ }; #[cfg(test)] -#[ctor::ctor] +#[ctor::ctor(unsafe)] fn init_logger() { zlog::init_test(); } diff --git a/crates/watch/src/watch.rs b/crates/watch/src/watch.rs index 71dab748200..cffe3216c24 100644 --- a/crates/watch/src/watch.rs +++ b/crates/watch/src/watch.rs @@ -285,7 +285,7 @@ mod tests { futures::future::join_all(tasks).await; } - #[ctor::ctor] + #[ctor::ctor(unsafe)] fn init_logger() { zlog::init_test(); }