From 9f59d0dc92db8a8ecef57d6fb5eb39b63e24bca4 Mon Sep 17 00:00:00 2001 From: Armin Ronacher Date: Mon, 15 Jul 2019 17:12:38 +0200 Subject: [PATCH] Support storage classes in function types (#46) --- src/lib.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 37c5553..b593173 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -849,7 +849,15 @@ impl<'a> ParserState<'a> { fn read_func_type(&mut self) -> Result> { let calling_conv = self.read_calling_conv()?; - let return_type = self.read_var_type(StorageClass::empty())?; + // this might have to be conditional on template context. For now + // this does not cause issues. For more information see + // https://github.com/mstange/msvc-demangler-rust/issues/21 + let sc = if self.consume(b"?") { + self.read_storage_class() + } else { + StorageClass::empty() + }; + let return_type = self.read_var_type(sc)?; let params = self.read_func_params()?; Ok(Type::NonMemberFunction( calling_conv,