diff options
| author | Tim Foley <tfoley@nvidia.com> | 2018-01-21 17:23:03 -0800 |
|---|---|---|
| committer | Tim Foley <tfoley@nvidia.com> | 2018-01-21 18:06:40 -0800 |
| commit | ef2f92fee8463fff2bf66f07eac228ff38df319f (patch) | |
| tree | 258dba1d71337ec0c020085d35284307f106466d /source/slang/lower-to-ir.cpp | |
| parent | 41311209af4963f44acf34942d42828590d4b156 (diff) | |
Trying to get generic extensions to work
- Don't drop specializations on a method when adding it to requirement dictionary
- Handle extension declarations under a generic when emitting to IR
Diffstat (limited to 'source/slang/lower-to-ir.cpp')
| -rw-r--r-- | source/slang/lower-to-ir.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/source/slang/lower-to-ir.cpp b/source/slang/lower-to-ir.cpp index 5d710725a..42d6dc303 100644 --- a/source/slang/lower-to-ir.cpp +++ b/source/slang/lower-to-ir.cpp @@ -3734,6 +3734,8 @@ struct DeclLoweringVisitor : DeclVisitor<DeclLoweringVisitor, LoweredValInfo> LoweredValInfo visitGenericDecl(GenericDecl * genDecl) { + // TODO: Should this just always visit/lower the inner decl? + if (auto innerFuncDecl = genDecl->inner->As<FuncDecl>()) return lowerFuncDecl(innerFuncDecl); else if (auto innerStructDecl = genDecl->inner->As<StructDecl>()) @@ -3741,6 +3743,10 @@ struct DeclLoweringVisitor : DeclVisitor<DeclLoweringVisitor, LoweredValInfo> visitAggTypeDecl(innerStructDecl); return LoweredValInfo(); } + else if( auto extensionDecl = genDecl->inner->As<ExtensionDecl>() ) + { + return visitExtensionDecl(extensionDecl); + } SLANG_RELEASE_ASSERT(false); UNREACHABLE_RETURN(LoweredValInfo()); } |
