pomsky_syntax/exprs/
reference.rs1use crate::Span;
7
8#[derive(Clone, Copy, PartialEq, Eq)]
9pub struct Reference<'i> {
10 pub target: ReferenceTarget<'i>,
11 pub span: Span,
12}
13
14#[derive(Clone, Copy, PartialEq, Eq)]
15pub enum ReferenceTarget<'i> {
16 Named(&'i str),
17 Number(u32),
18 Relative(i32),
19}
20
21impl<'i> Reference<'i> {
22 pub(crate) fn new(target: ReferenceTarget<'i>, span: Span) -> Self {
23 Reference { target, span }
24 }
25
26 #[cfg(feature = "dbg")]
27 pub(super) fn pretty_print(&self, buf: &mut crate::PrettyPrinter) {
28 buf.push_str("::");
29 match self.target {
30 ReferenceTarget::Named(n) => buf.write(n),
31 ReferenceTarget::Number(i) => buf.write_fmt(i),
32 ReferenceTarget::Relative(o) => {
33 buf.push(if o < 0 { '-' } else { '+' });
34 buf.write_fmt(o);
35 }
36 }
37 }
38}