diff --git a/sway-core/src/decl_engine/engine.rs b/sway-core/src/decl_engine/engine.rs index c170d8a1664..cf1bc2318a0 100644 --- a/sway-core/src/decl_engine/engine.rs +++ b/sway-core/src/decl_engine/engine.rs @@ -190,16 +190,16 @@ macro_rules! decl_engine_clear_module { self.parents.write().unwrap().retain(|key, _| { match key { AssociatedItemDeclId::TraitFn(decl_id) => { - self.get_trait_fn(decl_id).span().source_id().map_or(false, |src_id| &src_id.module_id() != module_id) + self.get_trait_fn(decl_id).span().source_id().map_or(true, |src_id| &src_id.module_id() != module_id) }, AssociatedItemDeclId::Function(decl_id) => { - self.get_function(decl_id).span().source_id().map_or(false, |src_id| &src_id.module_id() != module_id) + self.get_function(decl_id).span().source_id().map_or(true, |src_id| &src_id.module_id() != module_id) }, AssociatedItemDeclId::Type(decl_id) => { - self.get_type(decl_id).span().source_id().map_or(false, |src_id| &src_id.module_id() != module_id) + self.get_type(decl_id).span().source_id().map_or(true, |src_id| &src_id.module_id() != module_id) }, AssociatedItemDeclId::Constant(decl_id) => { - self.get_constant(decl_id).span().source_id().map_or(false, |src_id| &src_id.module_id() != module_id) + self.get_constant(decl_id).span().source_id().map_or(true, |src_id| &src_id.module_id() != module_id) }, } }); @@ -207,7 +207,7 @@ macro_rules! decl_engine_clear_module { $( self.$slab.retain(|_k, ty| match ty.span().source_id() { Some(source_id) => &source_id.module_id() != module_id, - None => false, + None => true, }); )* } diff --git a/sway-core/src/decl_engine/parsed_engine.rs b/sway-core/src/decl_engine/parsed_engine.rs index c3c15fc0709..463117735fd 100644 --- a/sway-core/src/decl_engine/parsed_engine.rs +++ b/sway-core/src/decl_engine/parsed_engine.rs @@ -142,7 +142,7 @@ macro_rules! decl_engine_clear_module { let span = $getter(item); match span.source_id() { Some(source_id) => &source_id.module_id() != module_id, - None => false, + None => true, } }); )* diff --git a/sway-core/src/type_system/engine.rs b/sway-core/src/type_system/engine.rs index c6f316e3a78..b8a732892bb 100644 --- a/sway-core/src/type_system/engine.rs +++ b/sway-core/src/type_system/engine.rs @@ -72,14 +72,14 @@ impl TypeEngine { pub fn clear_module(&mut self, module_id: &ModuleId) { self.slab.retain(|_, tsi| match tsi.source_id { Some(source_id) => &source_id.module_id() != module_id, - None => false, + None => true, }); self.id_map .write() .unwrap() .retain(|tsi, _| match tsi.source_id { Some(source_id) => &source_id.module_id() != module_id, - None => false, + None => true, }); } diff --git a/sway-lsp/tests/lib.rs b/sway-lsp/tests/lib.rs index 4b6cc507b67..1345a1daf6d 100644 --- a/sway-lsp/tests/lib.rs +++ b/sway-lsp/tests/lib.rs @@ -60,6 +60,7 @@ async fn open(server: &ServerState, entry_point: PathBuf) -> Url { async fn init_and_open(service: &mut LspService, entry_point: PathBuf) -> Url { let _ = lsp::initialize_request(service).await; lsp::initialized_notification(service).await; + eprintln!("entry_point: {:?}", entry_point); let (uri, sway_program) = load_sway_example(entry_point); lsp::did_open_notification(service, &uri, &sway_program).await; uri @@ -138,7 +139,7 @@ async fn did_change_stress_test() { shutdown_and_exit(&mut service).await; } -// #[tokio::test] +#[tokio::test] #[allow(dead_code)] async fn did_change_stress_test_random_wait() { std::env::set_var("RUST_BACKTRACE", "1"); @@ -147,15 +148,16 @@ async fn did_change_stress_test_random_wait() { default_panic(panic_info); // Print the panic message std::process::exit(1); })); - let (mut service, _) = LspService::build(ServerState::new) .custom_method("sway/metrics", ServerState::metrics) .finish(); - let bench_dir = sway_workspace_dir().join("sway-lsp/tests/fixtures/benchmark"); - let uri = init_and_open(&mut service, bench_dir.join("src/main.sw")).await; - let times = 40000; + let example_dir = sway_workspace_dir() + .join(e2e_language_dir()) + .join("generics_in_contract"); + let uri = init_and_open(&mut service, example_dir.join("src/main.sw")).await; + let times = 400; for version in 0..times { - eprintln!("version: {}", version); + //eprintln!("version: {}", version); let _ = lsp::did_change_request(&mut service, &uri, version + 1).await; if version == 0 { service.inner().wait_for_parsing().await; @@ -165,7 +167,6 @@ async fn did_change_stress_test_random_wait() { rand::random::() % 30 + 1, )) .await; - // there is a 10% chance that a longer 300-1000ms wait will be added if rand::random::() % 10 < 1 { tokio::time::sleep(tokio::time::Duration::from_millis(