private static()

in src/Microsoft.Diagnostics.Runtime/Implementation/DACNameParser.cs [919:938]


        private static (int Start, int End) GetTypeNameExtent(string name, int cur, bool parsingGenericArgList)
        {
            int start = cur;

            // Have to be aware the ` character is not ALWAYS a generic arity specifier, because of 'names' like this
            //
            // CAdviseEvents<IVsSolutionBuildManager\,IVsUpdateSolutionEvents\,{IVsSolutionBuildManager::`vcall'{20}'\,0}\,{IVsSolutionBuildManager::`vcall'{24}'\,0}>
            //
            while (cur < name.Length &&
                   name[cur] != GenericArgListAssemblyQualifiedTypeNameOrArrayStartSpecifier &&
                   name[cur] != GenericArgListAssemblyQualifiedTypeNameOrArrayEndSpecifier &&
                   (name[cur] != ArgSeparator || !parsingGenericArgList) &&
                   (name[cur] != NestedClassSpecifier || parsingGenericArgList) && // allow + when parsing generic arg type names because generic arg names can be nested types
                   (name[cur] != GenericAritySpecifier || ((cur + 1 < name.Length) && !char.IsDigit(name[cur + 1]))))
            {
                cur++;
            }

            return (start, cur);
        }