summaryrefslogtreecommitdiffstats
path: root/source/slang/lower.cpp
diff options
context:
space:
mode:
authorTim Foley <tfoley@nvidia.com>2017-07-08 17:47:31 -0700
committerTim Foley <tfoley@nvidia.com>2017-07-08 18:22:26 -0700
commit780a0bcd3724cad77cb65f931f111273776c9ca4 (patch)
tree559e7c1d6c8cd43121f8e16d8f7686fc1608bb8a /source/slang/lower.cpp
parenta40b6679931f672a911070fcc7eeb41c52e8b8fd (diff)
Add back `UnparsedStmt`
If the user doesn't use any `import` declarations, there is no reason to parse their code at all, so having the option of falling back to `UnparsedStmt` can potentially save us some headaches down the road. The new rule now is that if you have the "no checking" flag on, *and* the parser hasn't yet seen any `import` declarations, then it still used `UnparsedStmt` to avoid touching function bodies. Otherwise, I go ahead and parse function bodies, and assume I can rewrite any code I can semantically understand.
Diffstat (limited to 'source/slang/lower.cpp')
-rw-r--r--source/slang/lower.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/source/slang/lower.cpp b/source/slang/lower.cpp
index 8a4b7a4b1..0d54faf0b 100644
--- a/source/slang/lower.cpp
+++ b/source/slang/lower.cpp
@@ -688,6 +688,16 @@ struct LoweringVisitor
addStmt(loweredStmt);
}
+ void visitUnparsedStmt(UnparsedStmt* stmt)
+ {
+ RefPtr<UnparsedStmt> loweredStmt = new UnparsedStmt();
+ lowerStmtFields(loweredStmt, stmt);
+
+ loweredStmt->tokens = stmt->tokens;
+
+ addStmt(loweredStmt);
+ }
+
void visitCaseStmt(CaseStmt* stmt)
{
RefPtr<CaseStmt> loweredStmt = new CaseStmt();