@@ -73,13 +73,27 @@ namespace TestNamespace
7373
7474 } ) ;
7575
76+ it ( "generics in identifier" , function ( ) {
77+
78+ const input = `
79+ namespace TestNamespace
80+ {
81+ class Dictionary<T, Dictionary<string, string>> { }
82+ }` ;
83+ let tokens : Token [ ] = TokenizerUtil . tokenize ( input ) ;
84+
85+ tokens . should . contain ( Tokens . ClassKeyword ( "class" , 4 , 5 ) ) ;
86+ tokens . should . contain ( Tokens . ClassIdentifier ( "Dictionary<T, Dictionary<string, string>>" , 4 , 11 ) ) ;
87+ } ) ;
88+
7689 it ( "inheritance" , function ( ) {
7790
7891const input = `
7992namespace TestNamespace
8093{
8194 class PublicClass : IInterface, IInterfaceTwo { }
8295 class PublicClass<T> : IInterface<T>, IInterfaceTwo { }
96+ class PublicClass<T> : Dictionary<T, Dictionary<string, string>>, IMap<T, Dictionary<string, string>> { }
8397}` ;
8498 let tokens : Token [ ] = TokenizerUtil . tokenize ( input ) ;
8599
@@ -89,9 +103,12 @@ namespace TestNamespace
89103 tokens . should . contain ( Tokens . Type ( "IInterfaceTwo" , 4 , 43 ) ) ;
90104
91105 tokens . should . contain ( Tokens . ClassKeyword ( "class" , 5 , 5 ) ) ;
92- tokens . should . contain ( Tokens . ClassIdentifier ( "PublicClass" , 5 , 11 ) ) ;
106+ tokens . should . contain ( Tokens . ClassIdentifier ( "PublicClass<T> " , 5 , 11 ) ) ;
93107 tokens . should . contain ( Tokens . Type ( "IInterface<T>" , 5 , 28 ) ) ;
94108 tokens . should . contain ( Tokens . Type ( "IInterfaceTwo" , 5 , 43 ) ) ;
109+
110+ tokens . should . contain ( Tokens . Type ( "Dictionary<T, Dictionary<string, string>>" , 6 , 28 ) ) ;
111+ tokens . should . contain ( Tokens . Type ( "IMap<T, Dictionary<string, string>>" , 6 , 71 ) ) ;
95112 } ) ;
96113
97114 it ( "generic constraints" , function ( ) {
@@ -105,13 +122,13 @@ namespace TestNamespace
105122 let tokens : Token [ ] = TokenizerUtil . tokenize ( input ) ;
106123
107124 tokens . should . contain ( Tokens . ClassKeyword ( "class" , 4 , 5 ) ) ;
108- tokens . should . contain ( Tokens . ClassIdentifier ( "PublicClass" , 4 , 11 ) ) ;
125+ tokens . should . contain ( Tokens . ClassIdentifier ( "PublicClass<T> " , 4 , 11 ) ) ;
109126 tokens . should . contain ( Tokens . Keyword ( "where" , 4 , 26 ) ) ;
110127 tokens . should . contain ( Tokens . Type ( "T" , 4 , 32 ) ) ;
111128 tokens . should . contain ( Tokens . Type ( "ISomething" , 4 , 36 ) ) ;
112129
113130 tokens . should . contain ( Tokens . ClassKeyword ( "class" , 5 , 5 ) ) ;
114- tokens . should . contain ( Tokens . ClassIdentifier ( "PublicClass" , 5 , 11 ) ) ;
131+ tokens . should . contain ( Tokens . ClassIdentifier ( "PublicClass<T, X> " , 5 , 11 ) ) ;
115132 tokens . should . contain ( Tokens . Type ( "Dictionary<T, List<string>[]>" , 5 , 31 ) ) ;
116133 tokens . should . contain ( Tokens . Type ( "ISomething" , 5 , 62 ) ) ;
117134 tokens . should . contain ( Tokens . Keyword ( "where" , 5 , 73 ) ) ;
0 commit comments