From the documentation comment above NestedNameSpecifierLoc::getLocalSourceRange()
/// Retrieve the source range covering just the last part of /// this nested-name-specifier, not including the prefix. /// /// For example, if this instance refers to a nested-name-specifier /// \c \::std::vector<int>::, the returned source range would cover /// from "vector" to the last '::'.
We would expect that for a nested-name-specifier with a dependent template specialization type: T::template ST<int>:: NestedNameSpecifierLoc::getLocalSourceRange() would return template ST<int>:: but instead it returns T::template ST<int>::.
The issue might as well be coming from DependentTemplateSpecializationTypeLoc::getLocalSourceRange() which is
indirectly called from NestedNameSpecifierLoc::getLocalSourceRange(). I couldn't determine what is the intended behaviour for that though.