>       for (i = 0; i < st->tokenIndex; i++)
>       {
> +             const tokenInfo *const t = st->token[i];
> +
> +             /* stop if we find the token used to generate the tag name, or
> +              * a name token in the middle yet not preceded by a scope 
> separator */
> +             if ((t == nameToken ||
> +                  (t->type == nameToken->type &&
> +                   t->keyword == nameToken->keyword &&
> +                   t->lineNumber == nameToken->lineNumber &&
> +                   strcmp(vStringValue(t->name), 
> vStringValue(nameToken->name)) == 0)) ||
> +                 (t->type == TOKEN_NAME && seenType &&
> +                  (i > 0 && st->token[i - 1]->type != TOKEN_DOUBLE_COLON)))

@b4n, leaving out the template parameters is sort of bad, they really are part 
of the type.  Makes it quite long of course, but showing `std::map` for 
`std::map<std::string, std::pair<std::string, int>>` is missing a lot of 
information.

Also another test that has parens and semi-arbitary expressions in the type :)

```
    decltype(std::declval<type_with_member_function_foo>().foo()) n2 = n1;
```

I am assuming trying these sorts of things now is better than waiting until you 
finish and then point out something else missing :)

---
Reply to this email directly or view it on GitHub:
https://github.com/geany/geany/pull/889/files#r50983640

Reply via email to