diff options
| -rw-r--r-- | source/slang/slang-parser.cpp | 21 | ||||
| -rw-r--r-- | tests/diagnostics/nested-func.slang | 12 | ||||
| -rw-r--r-- | tests/diagnostics/uninitialized-local-variables.slang | 4 |
3 files changed, 35 insertions, 2 deletions
diff --git a/source/slang/slang-parser.cpp b/source/slang/slang-parser.cpp index 8fb3be39c..172e3130f 100644 --- a/source/slang/slang-parser.cpp +++ b/source/slang/slang-parser.cpp @@ -5783,6 +5783,27 @@ DeclStmt* Parser::parseVarDeclrStatement(Modifiers modifiers) FillPosition(varDeclrStatement); auto decl = ParseDeclWithModifiers(this, currentScope->containerDecl, modifiers); varDeclrStatement->decl = decl; + + if (as<VarDeclBase>(decl)) + { + } + else if (as<DeclGroup>(decl)) + { + } + else if (as<AggTypeDecl>(decl)) + { + } + else if (as<TypeDefDecl>(decl)) + { + } + else if (as<UsingDecl>(decl)) + { + } + else + { + sink->diagnose(decl->loc, Diagnostics::declNotAllowed, decl->astNodeType); + } + return varDeclrStatement; } diff --git a/tests/diagnostics/nested-func.slang b/tests/diagnostics/nested-func.slang new file mode 100644 index 000000000..42634cb8a --- /dev/null +++ b/tests/diagnostics/nested-func.slang @@ -0,0 +1,12 @@ +//DIAGNOSTIC_TEST:SIMPLE(filecheck=CHECK): + + +struct VertexOutput{float Input;} +float4 fragmentMain(VertexOutput vertex) : SV_Target +{ + // CHECK: ([[# @LINE+1]]): error 30102 + static float GetValue(int val) { return vertex.Input; } // Simplified example + float a = GetValue(vertex.Input); + + // etc +} diff --git a/tests/diagnostics/uninitialized-local-variables.slang b/tests/diagnostics/uninitialized-local-variables.slang index 3c3dba881..d8cea8a65 100644 --- a/tests/diagnostics/uninitialized-local-variables.slang +++ b/tests/diagnostics/uninitialized-local-variables.slang @@ -1,10 +1,10 @@ //TEST:SIMPLE(filecheck=CHK): -target spirv +float f(float) { return 1; } + // Should not warn here (unconditionalBranch) float3 unconditional(int mode) { - float f(float) { return 1; } - float k0; float k1; |
