Commit b381baf
GNU3 demangler: fix multi-level sr scope resolution without N prefix
GCC emits "sr St 6__and_I<T>E 5value" for std::__and_<T>::value in
enable_if expressions. The previous sr/else handler assumed exactly one
qualifier after the unresolved type, leaving trailing source-name
components unread and causing DemangleException in subsequent parsing.
Fix: loop over digit-started source names after the initial unresolved
type, treating each as an intermediate qualifier when it has template
args AND another source name follows, or as the final name otherwise.
Operator-name ("on") and destructor-name ("dn") final components fall
through to the existing DemangleBaseUnresolvedName() call.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>1 parent 56e1ae6 commit b381baf
1 file changed
Lines changed: 33 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1843 | 1843 | | |
1844 | 1844 | | |
1845 | 1845 | | |
| 1846 | + | |
| 1847 | + | |
| 1848 | + | |
| 1849 | + | |
| 1850 | + | |
| 1851 | + | |
| 1852 | + | |
| 1853 | + | |
| 1854 | + | |
| 1855 | + | |
| 1856 | + | |
| 1857 | + | |
| 1858 | + | |
| 1859 | + | |
| 1860 | + | |
| 1861 | + | |
| 1862 | + | |
| 1863 | + | |
| 1864 | + | |
| 1865 | + | |
| 1866 | + | |
| 1867 | + | |
| 1868 | + | |
| 1869 | + | |
| 1870 | + | |
| 1871 | + | |
| 1872 | + | |
| 1873 | + | |
| 1874 | + | |
| 1875 | + | |
| 1876 | + | |
| 1877 | + | |
| 1878 | + | |
1846 | 1879 | | |
1847 | 1880 | | |
1848 | 1881 | | |
| |||
0 commit comments