From f85809f55a0609d19a951564a10726945e667c75 Mon Sep 17 00:00:00 2001 From: damc Date: Mon, 25 Jul 2022 22:08:03 +0200 Subject: [PATCH] ppTests macro_FILE --- sv-parser-pp/src/preprocess.rs | 17 +++++++++++++ sv-parser-pp/testcases/expected/macro_FILE.sv | 13 ++++++++++ sv-parser-pp/testcases/macro_FILE.sv | 24 +++++++++++++++++++ 3 files changed, 54 insertions(+) create mode 100644 sv-parser-pp/testcases/expected/macro_FILE.sv create mode 100644 sv-parser-pp/testcases/macro_FILE.sv diff --git a/sv-parser-pp/src/preprocess.rs b/sv-parser-pp/src/preprocess.rs index c2f5398..3b44cb2 100644 --- a/sv-parser-pp/src/preprocess.rs +++ b/sv-parser-pp/src/preprocess.rs @@ -1362,6 +1362,23 @@ mod tests { ); } // }}} + #[test] + #[allow(non_snake_case)] + fn macro_FILE() { // {{{ + let (ret, _) = preprocess( + testfile_path("macro_FILE.sv"), + &HashMap::new(), + &[] as &[String], + false, + false, + ) + .unwrap(); + assert_eq!( + ret.text(), + testfile_contents("expected/macro_FILE.sv") + ); + } // }}} + #[test] fn macro_multiline_comment() { // {{{ let (ret, _) = preprocess( diff --git a/sv-parser-pp/testcases/expected/macro_FILE.sv b/sv-parser-pp/testcases/expected/macro_FILE.sv new file mode 100644 index 0000000..402c6d1 --- /dev/null +++ b/sv-parser-pp/testcases/expected/macro_FILE.sv @@ -0,0 +1,13 @@ +// __FILE__ = `__FILE__ + +// This block SHOULD be emitted from the preprocessor. + + +// Emitted instead. + + +// The following define should have no effect. +`define __FILE__ "FOO" + +// The following undef should have no effect. +// NOTE: Comparison against expected value are destined to fail in testcase. diff --git a/sv-parser-pp/testcases/macro_FILE.sv b/sv-parser-pp/testcases/macro_FILE.sv new file mode 100644 index 0000000..2ae8404 --- /dev/null +++ b/sv-parser-pp/testcases/macro_FILE.sv @@ -0,0 +1,24 @@ +// __FILE__ = `__FILE__ + +`ifdef __FILE__ +// This block SHOULD be emitted from the preprocessor. +`elsif UNDEFINED +// NOT emitted. +`endif + +`ifndef __FILE__ +// This block should NOT be emitted from the preprocessor. +// However, following (conditional) definition should make it through the +// preprocessor parsing stage without error. +`define __FILE__ "(null)" +`elsif UNDEFINED +// Emitted instead. +`endif + +// The following define should have no effect. +`define __FILE__ "FOO" + +// The following undef should have no effect. +`undef __FILE__ + +// NOTE: Comparison against expected value are destined to fail in testcase.