diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/bugs/keyword-undefined-identifier.slang | 35 | ||||
| -rw-r--r-- | tests/bugs/keyword-undefined-identifier.slang.expected | 7 |
2 files changed, 42 insertions, 0 deletions
diff --git a/tests/bugs/keyword-undefined-identifier.slang b/tests/bugs/keyword-undefined-identifier.slang new file mode 100644 index 000000000..e1f46f517 --- /dev/null +++ b/tests/bugs/keyword-undefined-identifier.slang @@ -0,0 +1,35 @@ +// keyword-undeclared-identifier.slang + +//DIAGNOSTIC_TEST:SIMPLE: + +// Test that using a contextual keyword in +// a context where it is an underfined +// identifier produces a reasonable error +// message instead of an internal compiler error +// +// Note that HLSL has keywords with very +// common names like `triangle` and `sample`, +// so it is easy for those to collide with +// local variable names. +// +// Slang decides to make almost all keywords +// contextual, so that they are looked up +// in lexical scope and can be shadowed by +// user-defined variables or functions. +// +// The problem in this case is that code +// could easily be refactored so that it +// uses one of the contextual keywrods in +// a place where it is no longer shadowed, +// but contextually needs to be treated +// as an expression. + +int instanceTest() +{ + return instance; +} + +int triangleTest() +{ + return triangle; +} diff --git a/tests/bugs/keyword-undefined-identifier.slang.expected b/tests/bugs/keyword-undefined-identifier.slang.expected new file mode 100644 index 000000000..00c9fe8db --- /dev/null +++ b/tests/bugs/keyword-undefined-identifier.slang.expected @@ -0,0 +1,7 @@ +result code = -1 +standard error = { +tests/bugs/keyword-undefined-identifier.slang(29): error 30015: undefined identifier 'instance'. +tests/bugs/keyword-undefined-identifier.slang(34): error 30015: undefined identifier 'triangle'. +} +standard output = { +} |
