@@ -1816,6 +1816,74 @@ class C {
18161816 )
18171817
18181818
1819+ def test_template_function_instantiation () -> None :
1820+ content = """
1821+ template <typename T> T tFunction(T val);
1822+ template <typename T> T tFunction(T val) { return val; }
1823+ template bool tFunction(bool val);
1824+ """
1825+ data = parse_string (content , cleandoc = True )
1826+
1827+ assert data == ParsedData (
1828+ namespace = NamespaceScope (
1829+ functions = [
1830+ Function (
1831+ return_type = Type (
1832+ typename = PQName (segments = [NameSpecifier (name = "T" )])
1833+ ),
1834+ name = PQName (segments = [NameSpecifier (name = "tFunction" )]),
1835+ parameters = [
1836+ Parameter (
1837+ type = Type (
1838+ typename = PQName (segments = [NameSpecifier (name = "T" )])
1839+ ),
1840+ name = "val" ,
1841+ )
1842+ ],
1843+ template = TemplateDecl (
1844+ params = [TemplateTypeParam (typekey = "typename" , name = "T" )]
1845+ ),
1846+ ),
1847+ Function (
1848+ return_type = Type (
1849+ typename = PQName (segments = [NameSpecifier (name = "T" )])
1850+ ),
1851+ name = PQName (segments = [NameSpecifier (name = "tFunction" )]),
1852+ parameters = [
1853+ Parameter (
1854+ type = Type (
1855+ typename = PQName (segments = [NameSpecifier (name = "T" )])
1856+ ),
1857+ name = "val" ,
1858+ )
1859+ ],
1860+ has_body = True ,
1861+ template = TemplateDecl (
1862+ params = [TemplateTypeParam (typekey = "typename" , name = "T" )]
1863+ ),
1864+ ),
1865+ Function (
1866+ return_type = Type (
1867+ typename = PQName (segments = [FundamentalSpecifier (name = "bool" )])
1868+ ),
1869+ name = PQName (segments = [NameSpecifier (name = "tFunction" )]),
1870+ parameters = [
1871+ Parameter (
1872+ type = Type (
1873+ typename = PQName (
1874+ segments = [FundamentalSpecifier (name = "bool" )]
1875+ )
1876+ ),
1877+ name = "val" ,
1878+ )
1879+ ],
1880+ template = TemplateDecl (),
1881+ ),
1882+ ]
1883+ )
1884+ )
1885+
1886+
18191887def test_template_instantiation () -> None :
18201888 content = """
18211889 template class MyClass<1,2>;
0 commit comments