summaryrefslogtreecommitdiffstats
path: root/source/slang/mangle.cpp
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2019-02-02 11:58:54 -0500
committerTim Foley <tfoleyNV@users.noreply.github.com>2019-02-02 08:58:54 -0800
commit3726194fbe3da234eb30b6371e5b4ab1ea388f93 (patch)
tree815bb6162f76aeb2bd517126b802cc511cd0322a /source/slang/mangle.cpp
parent6f2c03430afdf963eed53c08d0b63342af722868 (diff)
Feature/as refactor review (#821)
* Replace dynamicCast with as where does not change behavior (ie not Type derived). Use free function where scoping is clear. * Replace uses of dynamicCast with as when there is no difference in behavior. * Remove the IsXXXX methods from Type. * Don't have separate smart pointer to store canonicalType on Type. * Simplify Slang.FilteredMemberRefList.Adjust, such does the cast directly. * Use free as where appropriate. * Use free function version of casts where appropriate. * Fix text in casting.md * Fix typos in decl-refs.md * Remove the uses of free function as on RefDecl. Add 'canAs' to RefDecl as a way to test if a cast is possible. Moved 'as' into RefDeclBase. * Use 'is' to test for as cast on smart pointers. Fix small scope issue. * * Cache stringType and enumTypeType on the Session * Make DeclRefType::Create return a RefPtr * Make casting of result use the *method* .as (cos using free function would mean objects being wrongly destroyed) * Make results from createInstance ref'd to avoid possible leaks. * Fix typo in template parameter for is on RefPtr.
Diffstat (limited to 'source/slang/mangle.cpp')
-rw-r--r--source/slang/mangle.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/source/slang/mangle.cpp b/source/slang/mangle.cpp
index b153cb8dd..1ccd32b07 100644
--- a/source/slang/mangle.cpp
+++ b/source/slang/mangle.cpp
@@ -264,9 +264,11 @@ namespace Slang
// Special case: accessors need some way to distinguish themselves
// so that a getter/setter/ref-er don't all compile to the same name.
- if(declRef.as<GetterDecl>()) emitRaw(context, "Ag");
- if(declRef.as<SetterDecl>()) emitRaw(context, "As");
- if(declRef.as<RefAccessorDecl>()) emitRaw(context, "Ar");
+ {
+ if (declRef.is<GetterDecl>()) emitRaw(context, "Ag");
+ if (declRef.is<SetterDecl>()) emitRaw(context, "As");
+ if (declRef.is<RefAccessorDecl>()) emitRaw(context, "Ar");
+ }
// Are we the "inner" declaration beneath a generic decl?
if(parentGenericDeclRef && (parentGenericDeclRef.getDecl()->inner.Ptr() == declRef.getDecl()))
@@ -294,15 +296,15 @@ namespace Slang
UInt genericParameterCount = 0;
for( auto mm : getMembers(parentGenericDeclRef) )
{
- if(mm.as<GenericTypeParamDecl>())
+ if(as<GenericTypeParamDecl>(mm))
{
genericParameterCount++;
}
- else if(mm.as<GenericValueParamDecl>())
+ else if(as<GenericValueParamDecl>(mm))
{
genericParameterCount++;
}
- else if(mm.as<GenericTypeConstraintDecl>())
+ else if(as<GenericTypeConstraintDecl>(mm))
{
genericParameterCount++;
}
@@ -358,7 +360,7 @@ namespace Slang
// Don't print result type for an initializer/constructor,
// since it is implicit in the qualified name.
- if (!callableDeclRef.as<ConstructorDecl>())
+ if (!callableDeclRef.is<ConstructorDecl>())
{
emitType(context, GetResultType(callableDeclRef));
}