mirror of
https://github.com/encounter/msvc-demangler-rust.git
synced 2026-07-10 12:18:38 -07:00
Handle RTTIBaseClassArray
This commit is contained in:
+11
@@ -193,6 +193,7 @@ pub enum Operator<'a> {
|
||||
LiteralOperatorName,
|
||||
|
||||
RTTITypeDescriptor(StorageClass, Box<Type<'a>>),
|
||||
RTTIBaseClassArray,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
@@ -800,6 +801,9 @@ impl<'a> ParserState<'a> {
|
||||
let t = self.read_var_type(storage_class)?;
|
||||
Operator::RTTITypeDescriptor(storage_class, Box::new(t))
|
||||
}
|
||||
b'2' => {
|
||||
Operator::RTTIBaseClassArray
|
||||
}
|
||||
_ => panic!("unknown RTTI Operator Name"),
|
||||
}
|
||||
}
|
||||
@@ -1759,6 +1763,9 @@ impl<'a> Serializer<'a> {
|
||||
write!(self.w, "::`RTTI Type Descriptor'")?;
|
||||
return Ok(());
|
||||
},
|
||||
&Operator::RTTIBaseClassArray => {
|
||||
"`RTTI Base Class Array'"
|
||||
}
|
||||
};
|
||||
write!(self.w, "{}", s)?;
|
||||
Ok(())
|
||||
@@ -2097,6 +2104,10 @@ mod tests {
|
||||
"??_R0?AV?$KxTree@V?$KxSpe@DI@@I@@@8",
|
||||
"class KxTree<class KxSpe<char,unsigned int>,unsigned int>::`RTTI Type Descriptor'",
|
||||
);
|
||||
expect(
|
||||
"??_R2A@@8",
|
||||
"A::`RTTI Base Class Array'"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
Reference in New Issue
Block a user