| 196 | } |
| 197 | |
| 198 | fn substitute_simple_define( |
| 199 | &mut self, |
| 200 | span: &mut Span, |
| 201 | suppress: &FxHashSet<SmolStr>, |
| 202 | ) -> Result<bool, Diagnostic> { |
| 203 | let macro_name_token = get_token(&self.tokens[*self.i]); |
| 204 | let macro_name_span = get_span(&self.tokens[*self.i]); |
| 205 | let macro_name: SmolStr = macro_name_token.to_string().into(); |
| 206 | let Some(simple_define_body) = self.simple_defines.get(&*macro_name) else { |
| 207 | return Ok(false); |
| 208 | }; |
| 209 | if suppress.contains(&*macro_name) { |
| 210 | return Ok(false); |
| 211 | } |
| 212 | self.tokens.splice( |
| 213 | *self.i..(*self.i + 1), |
| 214 | simple_define_body |
| 215 | .iter() |
| 216 | .map(|token| (macro_name_span.start, token.clone(), macro_name_span.end)), |
| 217 | ); |
| 218 | let mut suppress = suppress.clone(); |
| 219 | suppress.insert(macro_name); |
| 220 | span.end += simple_define_body.len() - 1; |
| 221 | let subspan_end = *self.i + simple_define_body.len(); |
| 222 | let mut subspan = *self.i..subspan_end; |
| 223 | self.process(&mut subspan, &suppress)?; |
| 224 | span.end = |
| 225 | ((span.end as isize) + ((subspan.end as isize) - (subspan_end as isize))) as usize; |
| 226 | Ok(true) |
| 227 | } |
| 228 | |
| 229 | fn substitute_function_define( |
| 230 | &mut self, |