Skip to content

Commit 8f1a75c

Browse files
committed
Skip serializing builin namespace
1 parent 665c6ed commit 8f1a75c

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

cobalt-ast/src/varmap.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,13 +145,16 @@ impl Serialize for Symbol<'_, '_> {
145145
self.serialize_state(serializer, &())
146146
}
147147
}
148+
fn skip_serializing_parent(p: &Option<Box<VarMap>>) -> bool {
149+
p.as_ref().map_or(true, |p| p.parent.is_none())
150+
}
148151

149152
#[derive(Debug, Clone, Default, SerializeState, DeserializeState)]
150153
#[serde(crate = "serde_state")]
151154
#[serde(serialize_state = "()")]
152155
#[serde(de_parameters = "'a", deserialize_state = "&'a CompCtx<'src, 'ctx>")]
153156
pub struct VarMap<'src, 'ctx> {
154-
#[serde(deserialize_state)]
157+
#[serde(deserialize_state, skip_serializing_if = "skip_serializing_parent")]
155158
pub parent: Option<Box<Self>>,
156159
#[serde(deserialize_state)]
157160
pub symbols: HashMap<Cow<'src, str>, Symbol<'src, 'ctx>>,
@@ -189,6 +192,12 @@ impl<'src, 'ctx> VarMap<'src, 'ctx> {
189192
self
190193
}
191194
}
195+
pub fn is_true_root(&self) -> bool {
196+
self.parent.is_none()
197+
}
198+
pub fn is_root(&self) -> bool {
199+
self.parent.as_ref().map_or(true, |p| p.parent.is_none())
200+
}
192201
pub fn insert(
193202
&mut self,
194203
name: &DottedName<'src>,

0 commit comments

Comments
 (0)