diff --git a/parser/src/cfg/tests.rs b/parser/src/cfg/tests.rs index 814c78038..e6a1458b1 100644 --- a/parser/src/cfg/tests.rs +++ b/parser/src/cfg/tests.rs @@ -556,7 +556,8 @@ fn test_include_bad2_has_original_filename() { } #[test] -fn parse_submacro() { +fn parse_bad_submacro() { + // Test exists since it used to crash. It should not crash. let _lk = match CFG_PARSE_LOCK.lock() { Ok(guard) => guard, Err(poisoned) => poisoned.into_inner(), @@ -565,7 +566,7 @@ fn parse_submacro() { let source = r#" (defsrc a) (deflayer base - (macro M-S-()) + (macro M-s-()) ) "#; parse_cfg_raw_string(source, &mut s, "test") @@ -576,6 +577,29 @@ fn parse_submacro() { .unwrap_err(); } +#[test] +fn parse_bad_submacro_2() { + // Test exists since it used to crash. It should not crash. + let _lk = match CFG_PARSE_LOCK.lock() { + Ok(guard) => guard, + Err(poisoned) => poisoned.into_inner(), + }; + let mut s = ParsedState::default(); + let source = r#" +(defsrc a) +(deflayer base + (macro M-s-g) +) +"#; + parse_cfg_raw_string(source, &mut s, "test") + .map_err(|e| { + eprintln!("{:?}", error_with_source(e)); + "" + }) + .unwrap_err(); +} + + #[test] fn parse_switch() { let _lk = match CFG_PARSE_LOCK.lock() {