@@ -257,6 +257,7 @@ pub enum VarStorageKind {
257257pub enum Name < ' a > {
258258 Operator ( Operator < ' a > ) ,
259259 NonTemplate ( & ' a [ u8 ] ) ,
260+ AsInterface ( & ' a [ u8 ] ) ,
260261 Template ( Box < Name < ' a > > , Params < ' a > ) ,
261262 Discriminator ( i32 ) ,
262263 ParsedName ( Box < ParseResult < ' a > > ) ,
@@ -271,6 +272,10 @@ impl<'a> fmt::Debug for Name<'a> {
271272 . debug_tuple ( "NonTemplate" )
272273 . field ( & String :: from_utf8_lossy ( s) )
273274 . finish ( ) ,
275+ Name :: AsInterface ( s) => f
276+ . debug_tuple ( "AsInterface" )
277+ . field ( & String :: from_utf8_lossy ( s) )
278+ . finish ( ) ,
274279 Name :: Template ( ref name, ref params) => {
275280 f. debug_tuple ( "Template" ) . field ( name) . field ( params) . finish ( )
276281 }
@@ -875,6 +880,12 @@ impl<'a> ParserState<'a> {
875880 self . memorize_name ( & name) ;
876881 }
877882 name
883+ } else if self . consume ( b"Q" ) {
884+ let name = self . read_string ( ) ?;
885+ self . expect ( b"@" ) ?;
886+ let name = Name :: AsInterface ( name) ;
887+ self . memorize_name ( & name) ;
888+ name
878889 } else {
879890 let discriminator = self . read_number ( ) ?;
880891 Name :: Discriminator ( discriminator)
@@ -2176,6 +2187,11 @@ impl<'a> Serializer<'a> {
21762187 Name :: NonTemplate ( ref name) => {
21772188 self . w . write_all ( name) ?;
21782189 }
2190+ Name :: AsInterface ( ref name) => {
2191+ write ! ( self . w, "[" ) ?;
2192+ self . w . write_all ( name) ?;
2193+ write ! ( self . w, "]" ) ?;
2194+ }
21792195 Name :: Template ( ref name, ref params) => {
21802196 self . write_one_name ( name) ?;
21812197 self . write_tmpl_params ( & params) ?;
@@ -2273,6 +2289,11 @@ impl<'a> Serializer<'a> {
22732289 Name :: NonTemplate ( ref name) => {
22742290 self . w . write_all ( name) ?;
22752291 }
2292+ Name :: AsInterface ( ref name) => {
2293+ write ! ( self . w, "[" ) ?;
2294+ self . w . write_all ( name) ?;
2295+ write ! ( self . w, "]" ) ?;
2296+ }
22762297 Name :: Template ( ref name, ref params) => {
22772298 self . write_one_name ( name) ?;
22782299 self . write_tmpl_params ( & params) ?;
0 commit comments