MCPcopy Create free account
hub / github.com/aspizu/goboscript / substitute_simple_define

Method substitute_simple_define

src/pre_processor.rs:198–227  ·  view source on GitHub ↗
(
        &mut self,
        span: &mut Span,
        suppress: &FxHashSet<SmolStr>,
    )

Source from the content-addressed store, hash-verified

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,

Callers 1

processMethod · 0.80

Calls 4

get_tokenFunction · 0.85
get_spanFunction · 0.85
processMethod · 0.80
to_stringMethod · 0.45

Tested by

no test coverage detected