diff --git a/src/protocol/parser/pass_symbols.rs b/src/protocol/parser/pass_symbols.rs index f4bbe5365700fae21e6adb76ebfaea3831f22c87..28d7ba5fce047bdc25d8133f5b7cb6beb42f66e8 100644 --- a/src/protocol/parser/pass_symbols.rs +++ b/src/protocol/parser/pass_symbols.rs @@ -112,7 +112,7 @@ impl PassSymbols { fn visit_pragma_range(&mut self, modules: &mut [Module], module_idx: usize, ctx: &mut PassCtx, range_idx: usize) -> Result<(), ParseError> { let module = &mut modules[module_idx]; let range = &module.tokens.ranges[range_idx]; - let mut iter = module.tokens.iter_range(range); + let mut iter = module.tokens.iter_range(range.start, module.tokens.tokens.len() as u32); // Consume pragma name let (pragma_section, pragma_start, _) = consume_pragma(&module.source, &mut iter)?; @@ -126,9 +126,12 @@ impl PassSymbols { // Consume the domain-name let (module_name, module_span) = consume_domain_ident(&module.source, &mut iter)?; - if iter.next().is_some() { - return Err(ParseError::new_error_str_at_pos(&module.source, iter.last_valid_pos(), "expected end of #module pragma after module name")); - } + + // TODO: Fix with newer token range parsing + module.tokens.ranges[range_idx as usize].end = iter.token_index(); + // if iter.next().is_some() { + // return Err(ParseError::new_error_str_at_pos(&module.source, iter.last_valid_pos(), "expected end of #module pragma after module name")); + // } // Add to heap and symbol table let pragma_span = InputSpan::from_positions(pragma_start, module_span.end); @@ -188,7 +191,7 @@ impl PassSymbols { module.tokens.start_pos(range), module.tokens.end_pos(range) ); - let mut iter = module.tokens.iter_range(range); + let mut iter = module.tokens.iter_range(range.start, range.end); // First ident must be type of symbol let (kw_text, _) = consume_any_ident(&module.source, &mut iter).unwrap();