diff options
Diffstat (limited to 'source/API/SBType.cpp')
| -rw-r--r-- | source/API/SBType.cpp | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/source/API/SBType.cpp b/source/API/SBType.cpp index e2ef07cf5c47..80d48754c89b 100644 --- a/source/API/SBType.cpp +++ b/source/API/SBType.cpp @@ -415,21 +415,31 @@ uint32_t SBType::GetNumberOfTemplateArguments() { } lldb::SBType SBType::GetTemplateArgumentType(uint32_t idx) { - if (IsValid()) { - TemplateArgumentKind kind = eTemplateArgumentKindNull; - CompilerType template_arg_type = - m_opaque_sp->GetCompilerType(false).GetTemplateArgument(idx, kind); - if (template_arg_type.IsValid()) - return SBType(template_arg_type); + if (!IsValid()) + return SBType(); + + CompilerType type; + switch(GetTemplateArgumentKind(idx)) { + case eTemplateArgumentKindType: + type = m_opaque_sp->GetCompilerType(false).GetTypeTemplateArgument(idx); + break; + case eTemplateArgumentKindIntegral: + type = m_opaque_sp->GetCompilerType(false) + .GetIntegralTemplateArgument(idx) + ->type; + break; + default: + break; } + if (type.IsValid()) + return SBType(type); return SBType(); } lldb::TemplateArgumentKind SBType::GetTemplateArgumentKind(uint32_t idx) { - TemplateArgumentKind kind = eTemplateArgumentKindNull; if (IsValid()) - m_opaque_sp->GetCompilerType(false).GetTemplateArgument(idx, kind); - return kind; + return m_opaque_sp->GetCompilerType(false).GetTemplateArgumentKind(idx); + return eTemplateArgumentKindNull; } SBTypeList::SBTypeList() : m_opaque_ap(new TypeListImpl()) {} |
