diff --git a/sv-parser-parser/src/general/compiler_directives.rs b/sv-parser-parser/src/general/compiler_directives.rs index b70d231..bd75985 100644 --- a/sv-parser-parser/src/general/compiler_directives.rs +++ b/sv-parser-parser/src/general/compiler_directives.rs @@ -214,8 +214,9 @@ pub(crate) fn text_macro_definition(s: Span) -> IResult IResult { pub(crate) fn text_macro_usage(s: Span) -> IResult { let (s, a) = symbol("`")(s)?; begin_keywords("directive"); - let (s, b) = text_macro_identifier(s)?; + let ret = text_macro_identifier(s); end_keywords(); + let (s, b) = ret?; let (s, c) = opt(paren(list_of_actual_arguments))(s)?; Ok((s, TextMacroUsage { nodes: (a, b, c) })) } diff --git a/sv-parser-parser/src/tests.rs b/sv-parser-parser/src/tests.rs index 94f41a5..3f3e1b5 100644 --- a/sv-parser-parser/src/tests.rs +++ b/sv-parser-parser/src/tests.rs @@ -45,6 +45,17 @@ macro_rules! error_test { mod unit { use super::*; + #[test] + fn test_resetall_then_multi_param_module() { + clear_version(); + clear_directive(); + test!( + source_text, + "`resetall\nmodule test #(parameter A = 1, parameter B = 2) (o); output o; endmodule\n", + Ok((_, _)) + ); + } + #[test] fn test_chained_method_call() { test!(method_call, "variable.method1().method2()", Ok((_, _)));