diff options
| author | Tim Foley <tfoleyNV@users.noreply.github.com> | 2017-09-11 14:46:20 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-09-11 14:46:20 -0700 |
| commit | e2de1eaec725e979f98ad6f518b93b4d9ce55a36 (patch) | |
| tree | 29167b8abb5001cd3c2803807ec5c8eb3bc2329f /source/slang/check.cpp | |
| parent | 80fb7b05b851e645d821331fdbbcea1add686c9a (diff) | |
| parent | 2055d540c5dd420448a6924d784d5aed0efcd93d (diff) | |
Merge pull request #179 from tfoleyNV/ir-lowering-work
Support IR-based codegen for a few more examples.
Diffstat (limited to 'source/slang/check.cpp')
| -rw-r--r-- | source/slang/check.cpp | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/source/slang/check.cpp b/source/slang/check.cpp index ce9b2de55..e22db4186 100644 --- a/source/slang/check.cpp +++ b/source/slang/check.cpp @@ -146,13 +146,26 @@ namespace Slang { if (baseExpr) { - auto expr = new MemberExpr(); - expr->loc = loc; - expr->BaseExpression = baseExpr; - expr->name = declRef.GetName(); - expr->type = GetTypeForDeclRef(declRef); - expr->declRef = declRef; - return expr; + if (baseExpr->type->As<TypeType>()) + { + auto expr = new StaticMemberExpr(); + expr->loc = loc; + expr->BaseExpression = baseExpr; + expr->name = declRef.GetName(); + expr->type = GetTypeForDeclRef(declRef); + expr->declRef = declRef; + return expr; + } + else + { + auto expr = new MemberExpr(); + expr->loc = loc; + expr->BaseExpression = baseExpr; + expr->name = declRef.GetName(); + expr->type = GetTypeForDeclRef(declRef); + expr->declRef = declRef; + return expr; + } } else { @@ -4978,6 +4991,11 @@ namespace Slang } } + RefPtr<Expr> visitStaticMemberExpr(StaticMemberExpr* expr) + { + SLANG_UNEXPECTED("should not occur in unchecked AST"); + return expr; + } RefPtr<Expr> visitMemberExpr(MemberExpr * expr) { |
