From 369279e91dde1b056d8d0e3bb83e7ba3f96321af Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Fri, 12 Feb 2021 14:31:56 -0500 Subject: Diagnostic location highlighting (#1700) * #include an absolute path didn't work - because paths were taken to always be relative. * WIP: First pass in supporting output of line error information. * Add support for lexing to better be able to indicate SourceLocation information. * Fix lexer usage in DiagnosticSink in C++ extractor. * Update diagnostics tests to have line location info. * Fixed test expected output that now have source location information in them. * Better handling of tab. * Fix test expected results for tabbing change. * DiagnosticLexer -> DiagnosticSink::SourceLocationLexer Added line continuation tests. * Fix typo. * Added String::appendRepeatedChar * Change to rerun tests. Co-authored-by: Tim Foley --- tests/preprocessor/define-function-like.slang.expected | 4 ++++ tests/preprocessor/define-redefine.slang.expected | 2 ++ tests/preprocessor/error.slang.expected | 2 ++ tests/preprocessor/include-multiple.slang.expected | 4 ++++ tests/preprocessor/line.slang.expected | 12 ++++++++++++ tests/preprocessor/output-includes.slang.expected | 4 ++++ tests/preprocessor/undef.slang.expected | 2 ++ tests/preprocessor/warning.slang.expected | 2 ++ 8 files changed, 32 insertions(+) (limited to 'tests/preprocessor') diff --git a/tests/preprocessor/define-function-like.slang.expected b/tests/preprocessor/define-function-like.slang.expected index aed62dc31..1e4b4dcc9 100644 --- a/tests/preprocessor/define-function-like.slang.expected +++ b/tests/preprocessor/define-function-like.slang.expected @@ -1,7 +1,11 @@ result code = -1 standard error = { tests/preprocessor/define-function-like.slang(16): error 30015: undefined identifier 'x'. +#define M (x) - (x) + ^ tests/preprocessor/define-function-like.slang(16): error 30015: undefined identifier 'x'. +#define M (x) - (x) + ^ } standard output = { } diff --git a/tests/preprocessor/define-redefine.slang.expected b/tests/preprocessor/define-redefine.slang.expected index 2542c05d8..9b376bfe8 100644 --- a/tests/preprocessor/define-redefine.slang.expected +++ b/tests/preprocessor/define-redefine.slang.expected @@ -1,6 +1,8 @@ result code = 0 standard error = { tests/preprocessor/define-redefine.slang(10): warning 15400: redefinition of macro 'FOO' +#define FOO 2.0f + ^~~ tests/preprocessor/define-redefine.slang(6): note: see previous definition of 'FOO' } standard output = { diff --git a/tests/preprocessor/error.slang.expected b/tests/preprocessor/error.slang.expected index 56742c5d5..927819780 100644 --- a/tests/preprocessor/error.slang.expected +++ b/tests/preprocessor/error.slang.expected @@ -1,6 +1,8 @@ result code = -1 standard error = { tests/preprocessor/error.slang(11): error 15900: #error: This isn't valid! +#error This isn't valid! + ^~~~~ } standard output = { } diff --git a/tests/preprocessor/include-multiple.slang.expected b/tests/preprocessor/include-multiple.slang.expected index d52a5a2ab..f254ecf2f 100644 --- a/tests/preprocessor/include-multiple.slang.expected +++ b/tests/preprocessor/include-multiple.slang.expected @@ -1,8 +1,12 @@ result code = -1 standard error = { tests/preprocessor/include-a.slang.h(3): error 30201: function 'bar' already has a body +int bar() { return foo(); } + ^~~ tests/preprocessor/include-a.slang.h(3): note: see previous definition of 'bar' tests/preprocessor/include-a.slang.h(3): error 30201: function 'bar' already has a body +int bar() { return foo(); } + ^~~ tests/preprocessor/include-a.slang.h(3): note: see previous definition of 'bar' } standard output = { diff --git a/tests/preprocessor/line.slang.expected b/tests/preprocessor/line.slang.expected index 8c7f72ada..bea5b2a70 100644 --- a/tests/preprocessor/line.slang.expected +++ b/tests/preprocessor/line.slang.expected @@ -1,11 +1,23 @@ result code = -1 standard error = { tests/preprocessor/line.slang(4): error 30015: undefined identifier 'FooA'. +FooA a() { return 0; } +^~~~ b.slang(99): error 30015: undefined identifier 'FooB'. +FooB b() { return 0; } +^~~~ tests/preprocessor/line.slang(10): error 30015: undefined identifier 'FooC'. +FooC c() { return 0; } +^~~~ d.slang(603): error 30015: undefined identifier 'FooD'. +FooD d() { return 0; } +^~~~ d.slang(40): error 30015: undefined identifier 'FooE'. +FooE e() { return 0; } +^~~~ tests/preprocessor/line.slang(19): error 30015: undefined identifier 'FooF'. +FooF f() { return 0; } +^~~~ } standard output = { } diff --git a/tests/preprocessor/output-includes.slang.expected b/tests/preprocessor/output-includes.slang.expected index 791621aa3..84f0a4411 100644 --- a/tests/preprocessor/output-includes.slang.expected +++ b/tests/preprocessor/output-includes.slang.expected @@ -7,8 +7,12 @@ standard error = { (0): note: include 'tests/preprocessor/include-a.slang.h' (0): note: include 'tests/preprocessor/include-a.slang.h' tests/preprocessor/include-a.slang.h(3): error 30201: function 'bar' already has a body +int bar() { return foo(); } + ^~~ tests/preprocessor/include-a.slang.h(3): note: see previous definition of 'bar' tests/preprocessor/include-a.slang.h(3): error 30201: function 'bar' already has a body +int bar() { return foo(); } + ^~~ tests/preprocessor/include-a.slang.h(3): note: see previous definition of 'bar' } standard output = { diff --git a/tests/preprocessor/undef.slang.expected b/tests/preprocessor/undef.slang.expected index 2f7026487..8ea240124 100644 --- a/tests/preprocessor/undef.slang.expected +++ b/tests/preprocessor/undef.slang.expected @@ -1,6 +1,8 @@ result code = 0 standard error = { tests/preprocessor/undef.slang(5): warning 15401: macro 'FOO' is not defined +#undef FOO + ^~~ } standard output = { } diff --git a/tests/preprocessor/warning.slang.expected b/tests/preprocessor/warning.slang.expected index 0c765e31b..66b1e5f17 100644 --- a/tests/preprocessor/warning.slang.expected +++ b/tests/preprocessor/warning.slang.expected @@ -1,6 +1,8 @@ result code = 0 standard error = { tests/preprocessor/warning.slang(9): warning 15901: #warning: You wouldn't like me when I'm angry... +#warning You wouldn't like me when I'm angry... + ^~~~~~~ } standard output = { } -- cgit v1.2.3