Clearer error on importing both gpui and gpui2

This commit is contained in:
Conrad Irwin
2023-10-26 10:39:52 +02:00
parent 9c10152c89
commit 51aa0d6a94
3 changed files with 18 additions and 0 deletions
+1
View File
@@ -82,6 +82,7 @@ const NSWindowAnimationBehaviorUtilityWindow: NSInteger = 4;
#[ctor]
unsafe fn build_classes() {
::util::gpui1_loaded();
WINDOW_CLASS = build_window_class("GPUIWindow", class!(NSWindow));
PANEL_CLASS = build_window_class("GPUIPanel", class!(NSPanel));
VIEW_CLASS = {
+2
View File
@@ -81,6 +81,8 @@ const NSDragOperationCopy: NSDragOperation = 1;
#[ctor]
unsafe fn build_classes() {
::util::gpui2_loaded();
WINDOW_CLASS = build_window_class("GPUIWindow", class!(NSWindow));
PANEL_CLASS = build_window_class("GPUIPanel", class!(NSPanel));
VIEW_CLASS = {
+15
View File
@@ -13,6 +13,7 @@ use std::{
ops::{AddAssign, Range, RangeInclusive},
panic::Location,
pin::Pin,
sync::atomic::AtomicU32,
task::{Context, Poll},
};
@@ -410,6 +411,20 @@ impl<T: Ord + Clone> RangeExt<T> for RangeInclusive<T> {
}
}
static GPUI_LOADED: AtomicU32 = AtomicU32::new(0);
pub fn gpui2_loaded() {
if GPUI_LOADED.fetch_add(2, std::sync::atomic::Ordering::SeqCst) != 0 {
panic!("=========\nYou are loading both GPUI1 and GPUI2 in the same build!\nFix Your Dependencies with cargo tree!\n=========")
}
}
pub fn gpui1_loaded() {
if GPUI_LOADED.fetch_add(1, std::sync::atomic::Ordering::SeqCst) != 0 {
panic!("=========\nYou are loading both GPUI1 and GPUI2 in the same build!\nFix Your Dependencies with cargo tree!\n=========")
}
}
#[cfg(test)]
mod tests {
use super::*;