summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-ast-decl.cpp
diff options
context:
space:
mode:
authorEllie Hermaszewska <ellieh@nvidia.com>2023-07-07 03:52:00 +0800
committerGitHub <noreply@github.com>2023-07-06 15:52:00 -0400
commitcdfea42f1b28c6ec7b13500a64be823f67bf8e0a (patch)
tree4444c21ac369ce8f4c99370fcd47153eeb35581f /source/slang/slang-ast-decl.cpp
parent4a88139a86596fd1a546af84ab3210ea3013c58d (diff)
Fix erroneous error claiming variable is being used before its declaration (#2958)
* Simplify type of diagnoseImpl * Show source line for Note diagnostics, opting out of this where appropriate * Make declared after use diagnostic clearer * Fix erroneous error claiming variable is being used before its declaration Closes https://github.com/shader-slang/slang/issues/2936 * Fix build on msvc --------- Co-authored-by: jsmall-nvidia <jsmall@nvidia.com>
Diffstat (limited to 'source/slang/slang-ast-decl.cpp')
-rw-r--r--source/slang/slang-ast-decl.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/source/slang/slang-ast-decl.cpp b/source/slang/slang-ast-decl.cpp
index 261378b9a..2f1c7c47e 100644
--- a/source/slang/slang-ast-decl.cpp
+++ b/source/slang/slang-ast-decl.cpp
@@ -102,4 +102,20 @@ void ContainerDecl::buildMemberDictionary()
SLANG_ASSERT(isMemberDictionaryValid());
}
+bool isLocalVar(const Decl* decl)
+{
+ const auto varDecl = as<VarDecl>(decl);
+ if(!varDecl)
+ return false;
+ const Decl* pp = varDecl->parentDecl;
+ if(as<ScopeDecl>(pp))
+ return true;
+ while(auto genericDecl = as<GenericDecl>(pp))
+ pp = genericDecl->inner;
+ if(as<FunctionDeclBase>(pp))
+ return true;
+
+ return false;
+}
+
} // namespace Slang