From 115f3f2d58c87e87834648604fbcc09165ce5020 Mon Sep 17 00:00:00 2001 From: Andrzej Janik Date: Fri, 1 Nov 2024 19:59:35 +0000 Subject: [PATCH] Improve recovery from unknown directive --- ptx_parser/src/lib.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ptx_parser/src/lib.rs b/ptx_parser/src/lib.rs index c9b929a..1ea2d71 100644 --- a/ptx_parser/src/lib.rs +++ b/ptx_parser/src/lib.rs @@ -400,6 +400,7 @@ fn directive<'a, 'input>( ) -> PResult>>> { with_recovery( alt(( + // When adding a new variant here remember to add its first token into recovery parser down below function.map(|(linking, func)| Some(ast::Directive::Method(linking, func))), file.map(|_| None), section.map(|_| None), @@ -407,7 +408,14 @@ fn directive<'a, 'input>( .map(|((linking, var), _)| Some(ast::Directive::Variable(linking, var))), )), take_till(1.., |(token, _)| match token { - Token::DotVisible | Token::DotFile | Token::DotSection => true, + // visibility + Token::DotExtern | Token::DotVisible | Token::DotWeak + // methods + | Token::DotFunc | Token::DotEntry + // module variables + | Token::DotGlobal | Token::DotConst | Token::DotShared + // other sections + | Token::DotFile | Token::DotSection => true, _ => false, }), PtxError::UnrecognizedDirective,