mirror of
				https://github.com/rust-lang/rust-analyzer.git
				synced 2025-11-03 05:13:35 +00:00 
			
		
		
		
	Bump parser step limit a little
This commit is contained in:
		
							parent
							
								
									7d6fcbc0be
								
							
						
					
					
						commit
						f5db6e0e95
					
				
					 3 changed files with 7 additions and 1 deletions
				
			
		
							
								
								
									
										1
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										1
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
								
							| 
						 | 
				
			
			@ -1071,6 +1071,7 @@ name = "parser"
 | 
			
		|||
version = "0.0.0"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "drop_bomb",
 | 
			
		||||
 "limit",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,3 +11,5 @@ doctest = false
 | 
			
		|||
 | 
			
		||||
[dependencies]
 | 
			
		||||
drop_bomb = "0.1.4"
 | 
			
		||||
 | 
			
		||||
limit = { path = "../limit", version = "0.0.0" }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,7 @@
 | 
			
		|||
use std::cell::Cell;
 | 
			
		||||
 | 
			
		||||
use drop_bomb::DropBomb;
 | 
			
		||||
use limit::Limit;
 | 
			
		||||
 | 
			
		||||
use crate::{
 | 
			
		||||
    event::Event,
 | 
			
		||||
| 
						 | 
				
			
			@ -26,6 +27,8 @@ pub(crate) struct Parser<'t> {
 | 
			
		|||
    steps: Cell<u32>,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static PARSER_STEP_LIMIT: Limit = Limit::new(15_000_000);
 | 
			
		||||
 | 
			
		||||
impl<'t> Parser<'t> {
 | 
			
		||||
    pub(super) fn new(token_source: &'t mut dyn TokenSource) -> Parser<'t> {
 | 
			
		||||
        Parser { token_source, events: Vec::new(), steps: Cell::new(0) }
 | 
			
		||||
| 
						 | 
				
			
			@ -48,7 +51,7 @@ impl<'t> Parser<'t> {
 | 
			
		|||
        assert!(n <= 3);
 | 
			
		||||
 | 
			
		||||
        let steps = self.steps.get();
 | 
			
		||||
        assert!(steps <= 10_000_000, "the parser seems stuck");
 | 
			
		||||
        assert!(PARSER_STEP_LIMIT.check(steps as usize).is_ok(), "the parser seems stuck");
 | 
			
		||||
        self.steps.set(steps + 1);
 | 
			
		||||
 | 
			
		||||
        self.token_source.lookahead_nth(n).kind
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue