mirror of
				https://github.com/rust-lang/rust-analyzer.git
				synced 2025-10-30 19:49:36 +00:00 
			
		
		
		
	Merge pull request #20219 from ChayimFriedman2/expr-store-mem
	
		
			
	
		
	
	
		
	
		
			Some checks are pending
		
		
	
	
		
			
				
	
				metrics / build_metrics (push) Waiting to run
				
			
		
			
				
	
				metrics / generate_final_metrics (push) Blocked by required conditions
				
			
		
			
				
	
				metrics / other_metrics (diesel-1.4.8) (push) Blocked by required conditions
				
			
		
			
				
	
				metrics / other_metrics (hyper-0.14.18) (push) Blocked by required conditions
				
			
		
			
				
	
				metrics / other_metrics (ripgrep-13.0.0) (push) Blocked by required conditions
				
			
		
			
				
	
				metrics / other_metrics (self) (push) Blocked by required conditions
				
			
		
			
				
	
				metrics / other_metrics (webrender-2022) (push) Blocked by required conditions
				
			
		
			
				
	
				rustdoc / rustdoc (push) Waiting to run
				
			
		
		
	
	
				
					
				
			
		
			Some checks are pending
		
		
	
	metrics / build_metrics (push) Waiting to run
				
			metrics / generate_final_metrics (push) Blocked by required conditions
				
			metrics / other_metrics (diesel-1.4.8) (push) Blocked by required conditions
				
			metrics / other_metrics (hyper-0.14.18) (push) Blocked by required conditions
				
			metrics / other_metrics (ripgrep-13.0.0) (push) Blocked by required conditions
				
			metrics / other_metrics (self) (push) Blocked by required conditions
				
			metrics / other_metrics (webrender-2022) (push) Blocked by required conditions
				
			rustdoc / rustdoc (push) Waiting to run
				
			perf: Put the expression stuff in the expression store behind an `Option<Box>`
This commit is contained in:
		
						commit
						4b29a9d6ea
					
				
					 28 changed files with 456 additions and 308 deletions
				
			
		|  | @ -242,11 +242,7 @@ impl<'db> SourceAnalyzer<'db> { | |||
| 
 | ||||
|     fn binding_id_of_pat(&self, pat: &ast::IdentPat) -> Option<BindingId> { | ||||
|         let pat_id = self.pat_id(&pat.clone().into())?; | ||||
|         if let Pat::Bind { id, .. } = self.store()?.pats[pat_id.as_pat()?] { | ||||
|             Some(id) | ||||
|         } else { | ||||
|             None | ||||
|         } | ||||
|         if let Pat::Bind { id, .. } = self.store()?[pat_id.as_pat()?] { Some(id) } else { None } | ||||
|     } | ||||
| 
 | ||||
|     pub(crate) fn expr_adjustments(&self, expr: &ast::Expr) -> Option<&[Adjustment]> { | ||||
|  | @ -995,7 +991,7 @@ impl<'db> SourceAnalyzer<'db> { | |||
|         let parent_hir_path = path | ||||
|             .parent_path() | ||||
|             .and_then(|p| collector.lower_path(p, &mut ExprCollector::impl_trait_error_allocator)); | ||||
|         let store = collector.store.finish(); | ||||
|         let (store, _) = collector.store.finish(); | ||||
| 
 | ||||
|         // Case where path is a qualifier of a use tree, e.g. foo::bar::{Baz, Qux} where we are
 | ||||
|         // trying to resolve foo::bar.
 | ||||
|  | @ -1204,7 +1200,7 @@ impl<'db> SourceAnalyzer<'db> { | |||
|         let mut collector = ExprCollector::new(db, self.resolver.module(), self.file_id); | ||||
|         let hir_path = | ||||
|             collector.lower_path(path.clone(), &mut ExprCollector::impl_trait_error_allocator)?; | ||||
|         let store = collector.store.finish(); | ||||
|         let (store, _) = collector.store.finish(); | ||||
|         Some(resolve_hir_path_( | ||||
|             db, | ||||
|             &self.resolver, | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Chayim Refael Friedman
						Chayim Refael Friedman