<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/58492>58492</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            lldb  Not able to get the right template argument type via python API.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          dprogm
      </td>
    </tr>
</table>

<pre>
    I am currently trying to write my own data formatter for some variadic template class. Here is a simple example:
```cpp
template<typename...T>
class MyVariadic
{
private:
  int which{1};
};

int main()
{
  MyVariadic<int, float> myVariadic;
  return 0;
}
```

The corresponding data formatter looks like this:

```python
class MyVariadicSyntheticChildrenProvider:

  def __init__(self, valobj, internal_dict):
    self.valobj = valobj

  def num_children(self):
    return 1

  def has_children(self):
    return True

  def get_child_index(self, name):
    return None

  def get_child_at_index(self, index):
    which = self.valobj.GetChildMemberWithName('which').signed

    numberOfArgs = self.valobj.GetType().GetNumberOfTemplateArguments()
    print("Number of Args: ", numberOfArgs)
    templateType = self.valobj.GetType().GetTemplateArgumentType(which)
    print("Template Type: ", templateType)

    return None

  def update(self):
    pass

def __lldb_init_module(debugger, dict):
  debugger.HandleCommand('type synthetic add -l type_formatters.MyVariadicSyntheticChildrenProvider -x "^MyVariadic<.+>$')
```

**My expectations are:**
- `GetNumberOfTemplateArguments()` returns 2, but it actually returns 1
- `GetTemplateArgumentType(which)` returns float, but it actually returns 'No Value'

I was also trying to get the type via `target.FindFirstType(typeAsString)` but without success. A similar issue can be found here https://github.com/llvm/llvm-project/issues/31647.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJydVVtvozoQ_jXkZVREINcHHtJ0c7YP7a600Z7HyOAJeNdgZJuk-fc7NqQhTU-3OhIC4_F8M_N5Lpnip_QRWAV5qzXWVp7A6pOoC7AKjlpYhOoE6lgDZ5bBXumKWYvarcCoCuHAtGBc5GCxaiQjhVwyY0L4ihpBGGBgBEkQ8IW5b5CsgughiFbBLOqevGm6nTNEkKztqcGaVRiG4TZIvnRyjwxPp5-9zR5nft8tGi0OXrs3ACBqC8dS5CWdGQfzhyC5P-sM1v7tjlZM1EG8COLlG2QYGk3WdDaI17CXillyjii6CF81NNpW1xBd2bwOfGh_WxJzii7BNKrm7gbeMC6V-m1Ait8IthTmQuM1ZnOyparf5-vHqbYlWpGvSyE53fd3rQ6Co34DBsBxD7udqIXd7YgRg3LvIj4wqbJfbkUUoK6Z3BGsdYRdSAdwx8PuLATJw1ntxkLdVru8d-XVyjVUz-L4Vrlk5pPKW93irX6BttOnMDm-DKJ0efcfUM-q_hCK2Ru0_v8aziel52bAVfgPWn8zT1hlqP8Vtnz2rlBGzrs0jueEFBpR1Miv_QDHJml92690Yd6D3lJJddnt_p7709u-5kirragDmGEBOFiqKpfutBl3OqD24GxQQECbnrGB6Svlc0U723_36a0vvbQP_X2fzjrgD19cGlq-FPTn7rNtuOsj7ydVQzU1VOlKRUqedfVSKd5Kp8wxa4uCiou8ua2SszT8ymouca2qihbdXbvmB-ZcrMA4hzsJbnf32g9M-Im6hrsXz8f0y1X_CoP43jXVeNIl1AdtKYjd83Si7t1gbpkVqqaern2X9bLu3B2Q4ifSahb11Bvw15S1FoQFltuWSZo-Z-H4GvZvmTGA7bryB9AU87OCn0xSV6DwB8E-wpFRcNKowRSk4qaGi55-OAjmPLJM03a4odreCG3O7rgjK_PDUnYWvVfOiSMVsqKvafMc3WhcuZEoJNM0H01LfZ_VkCH1-rbmULq5WVrb-BYfb-gpCKDNwlxV9CPl4fy5a7T6hS6zNh6ISN4k49lkHo4wHc9ms3iaRJPliKcJXyZLNrLCSkxdrgKlPnGT0VwexKhFUdrLJGc925fYu-kCq--P4ajVMv3_fk4Xk2U8KtMFjqfL6SJbzMcsTniW7aczkiVRRs84y0aSZShNGkzvKZNrPHac-ax-GIk0juJ4HMVRtIgm0TKMx3mcxyzG2TLBKeXyJEIa6zJ0foRKFyOdepeo-gwJpTDWXIRU2663ojdH-KyleHXKKYCiGnnLqff8DxTD4hY">