diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2021-03-31 13:11:49 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-03-31 13:11:49 -0400 |
| commit | 5fde038b1a6b3c8b335cd5b380c3ee8d15403052 (patch) | |
| tree | 27975331c960edc405a5294031fd6a4a79eff964 /tools | |
| parent | 5fefb120e0c2469563e937f4ee39b391d7678cdf (diff) | |
Support for __LINE__ and __FILE__ in preprocessor (#1772)
* #include an absolute path didn't work - because paths were taken to always be relative.
* First pass support for __LINE__ and __FILE__.
* Test include handling with __FILE__
Fix diagnostic compare when input is empty.
* Fix some issues in preprocessor handling of special macros like __LINE__
Add a more complex test.
* Use CONCAT2 in tests, because preprocessor doesn't quite get parameter expansion correct.
* Make __FILE__ and __LINE__ behave more like Clang/Gcc.
* A test for preprocessor bug.
* Fix __LINE__ and __FILE__ in macro expansion, should be initiating location.
* Fix some comments.
* Small tidy up around builtin macros.
* Small improvements for macro type names.
Escape found paths.
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/slang-test/parse-diagnostic-util.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/tools/slang-test/parse-diagnostic-util.cpp b/tools/slang-test/parse-diagnostic-util.cpp index 41dae07f7..db16d0c7e 100644 --- a/tools/slang-test/parse-diagnostic-util.cpp +++ b/tools/slang-test/parse-diagnostic-util.cpp @@ -384,8 +384,27 @@ static SlangResult _findDownstreamCompiler(const UnownedStringSlice& slice, Slan return nullptr; } +static bool _isWhitespace(const UnownedStringSlice& slice) +{ + for (const char c : slice) + { + if (!CharUtil::isWhitespace(c)) + { + return false; + } + } + return true; +} + /* static */SlangResult ParseDiagnosticUtil::parseDiagnostics(const UnownedStringSlice& inText, List<DownstreamDiagnostic>& outDiagnostics) { + if (_isWhitespace(inText)) + { + // If it's empty, then there are no diagnostics to add. + outDiagnostics.clear(); + return SLANG_OK; + } + // TODO(JS): // As it stands output of downstream compilers isn't standardized. This can be improved upon - and if so // we should have a function that will parse the standardized output |
