Before this commit, inputs with invalid pp syntax are reported using
`Error::Parse` which is also used to report invalid post-pp syntax.
In svlint/svls, `Error::Parse` is reported to the user as "parse error"
without specifying if that's pre or post pp.
This commit makes it possible for future versions of svlint/svls to report
"preprocess error", thus helping users to identify pp issues.
- `Error::Preprocess` appears to be defined but unused.
- Add the argument `Option<(PathBuf, usize)>` to `Error::Preprocess`, same
as `Error::Parse`.
- Update `preprocess_str()` to use `Error::Preprocess` in all 5 instances.
- New argument `include_depth` on `preprocess_str()`.
- Existing function `preprocess()` is now a wrapper for private function
`preprocess_inner()` which uses `include_depth`.
- Commented arguments on all uses of `preprocess()` and `preprocess_str()`.
- Test `include_recursive` is fixed and not ignored.
- Without recursion limit, stack overflow occurs which crashes svls.
- Similarly to how `define is left in-place, `undef and `undefine are also
left in-place.
- Corresponding fixes to macro_LINE and macro_FILE.
- These directives were not in any testcases before this branch.
- Redefinitions are silently ignored.
- ifdef/ifndef will always treat them as defined.
- Enables compatibility with code from a silicon vendor I can think of.
- NOTE: Whitespace bugs around endif/undef are observable in testcases.
- Append the attached WhiteSpace on the end of TextMacroUsage.
That append replaces/corrects "separator is required".
- Ignore leading whitespace as suggested by the BNF in Syntax 22-2.
That SM change replaces/correct "remove leading whitespace".
- All tests now pass as expected.