@@ -81,63 +81,136 @@ namespace ts {
8181
8282 describe ( "printNode" , ( ) => {
8383 const printsCorrectly = makePrintsCorrectly ( "printsNodeCorrectly" ) ;
84- let sourceFile : SourceFile ;
85- before ( ( ) => sourceFile = createSourceFile ( "source.ts" , "" , ScriptTarget . ES2015 ) ) ;
86- // tslint:disable boolean-trivia
87- const syntheticNode = createClassDeclaration (
88- undefined ,
89- undefined ,
90- /*name*/ createIdentifier ( "C" ) ,
91- undefined ,
92- undefined ,
93- createNodeArray ( [
94- createProperty (
95- undefined ,
84+ printsCorrectly ( "class" , { } , printer => printer . printNode (
85+ EmitHint . Unspecified ,
86+ createClassDeclaration (
87+ /*decorators*/ undefined ,
88+ /*modifiers*/ undefined ,
89+ /*name*/ createIdentifier ( "C" ) ,
90+ /*typeParameters*/ undefined ,
91+ /*heritageClauses*/ undefined ,
92+ [ createProperty (
93+ /*decorators*/ undefined ,
9694 createNodeArray ( [ createToken ( SyntaxKind . PublicKeyword ) ] ) ,
9795 createIdentifier ( "prop" ) ,
98- undefined ,
99- undefined ,
100- undefined
101- )
102- ] )
103- ) ;
96+ /*questionToken*/ undefined ,
97+ /*type*/ undefined ,
98+ /*initializer*/ undefined
99+ ) ]
100+ ) ,
101+ createSourceFile ( "source.ts" , "" , ScriptTarget . ES2015 )
102+ ) ) ;
103+
104+ printsCorrectly ( "namespaceExportDeclaration" , { } , printer => printer . printNode (
105+ EmitHint . Unspecified ,
106+ createNamespaceExportDeclaration ( "B" ) ,
107+ createSourceFile ( "source.ts" , "" , ScriptTarget . ES2015 )
108+ ) ) ;
104109
105110 // https://github.com/Microsoft/TypeScript/issues/15971
106- const classWithOptionalMethodAndProperty = createClassDeclaration (
107- undefined ,
108- /* modifiers */ createNodeArray ( [ createToken ( SyntaxKind . DeclareKeyword ) ] ) ,
109- /* name */ createIdentifier ( "X" ) ,
110- undefined ,
111- undefined ,
112- createNodeArray ( [
113- createMethod (
114- undefined ,
115- undefined ,
116- undefined ,
117- /* name */ createIdentifier ( "method" ) ,
118- /* questionToken */ createToken ( SyntaxKind . QuestionToken ) ,
119- undefined ,
120- undefined ,
121- /* type */ createKeywordTypeNode ( SyntaxKind . VoidKeyword ) ,
122- undefined
111+ printsCorrectly ( "classWithOptionalMethodAndProperty" , { } , printer => printer . printNode (
112+ EmitHint . Unspecified ,
113+ createClassDeclaration (
114+ /*decorators*/ undefined ,
115+ /*modifiers*/ [ createToken ( SyntaxKind . DeclareKeyword ) ] ,
116+ /*name*/ createIdentifier ( "X" ) ,
117+ /*typeParameters*/ undefined ,
118+ /*heritageClauses*/ undefined ,
119+ [
120+ createMethod (
121+ /*decorators*/ undefined ,
122+ /*modifiers*/ undefined ,
123+ /*asteriskToken*/ undefined ,
124+ /*name*/ createIdentifier ( "method" ) ,
125+ /*questionToken*/ createToken ( SyntaxKind . QuestionToken ) ,
126+ /*typeParameters*/ undefined ,
127+ [ ] ,
128+ /*type*/ createKeywordTypeNode ( SyntaxKind . VoidKeyword ) ,
129+ /*body*/ undefined
130+ ) ,
131+ createProperty (
132+ /*decorators*/ undefined ,
133+ /*modifiers*/ undefined ,
134+ /*name*/ createIdentifier ( "property" ) ,
135+ /*questionToken*/ createToken ( SyntaxKind . QuestionToken ) ,
136+ /*type*/ createKeywordTypeNode ( SyntaxKind . StringKeyword ) ,
137+ /*initializer*/ undefined
138+ ) ,
139+ ]
140+ ) ,
141+ createSourceFile ( "source.ts" , "" , ScriptTarget . ES2015 )
142+ ) ) ;
143+
144+ // https://github.com/Microsoft/TypeScript/issues/15651
145+ printsCorrectly ( "functionTypes" , { } , printer => printer . printNode (
146+ EmitHint . Unspecified ,
147+ createTupleTypeNode ( [
148+ createFunctionTypeNode (
149+ /*typeArguments*/ undefined ,
150+ [ createParameter (
151+ /*decorators*/ undefined ,
152+ /*modifiers*/ undefined ,
153+ /*dotDotDotToken*/ undefined ,
154+ createIdentifier ( "args" )
155+ ) ] ,
156+ createKeywordTypeNode ( SyntaxKind . AnyKeyword )
123157 ) ,
124- createProperty (
125- undefined ,
126- undefined ,
127- /* name */ createIdentifier ( "property" ) ,
128- /* questionToken */ createToken ( SyntaxKind . QuestionToken ) ,
129- /* type */ createKeywordTypeNode ( SyntaxKind . StringKeyword ) ,
130- undefined
158+ createFunctionTypeNode (
159+ [ createTypeParameterDeclaration ( "T" ) ] ,
160+ [ createParameter (
161+ /*decorators*/ undefined ,
162+ /*modifiers*/ undefined ,
163+ /*dotDotDotToken*/ undefined ,
164+ createIdentifier ( "args" )
165+ ) ] ,
166+ createKeywordTypeNode ( SyntaxKind . AnyKeyword )
131167 ) ,
132- ] )
133- ) ;
134-
135- // tslint:enable boolean-trivia
136- printsCorrectly ( "class" , { } , printer => printer . printNode ( EmitHint . Unspecified , syntheticNode , sourceFile ) ) ;
137-
138- printsCorrectly ( "namespaceExportDeclaration" , { } , printer => printer . printNode ( EmitHint . Unspecified , createNamespaceExportDeclaration ( "B" ) , sourceFile ) ) ;
139-
140- printsCorrectly ( "classWithOptionalMethodAndProperty" , { } , printer => printer . printNode ( EmitHint . Unspecified , classWithOptionalMethodAndProperty , sourceFile ) ) ;
168+ createFunctionTypeNode (
169+ /*typeArguments*/ undefined ,
170+ [ createParameter (
171+ /*decorators*/ undefined ,
172+ /*modifiers*/ undefined ,
173+ createToken ( SyntaxKind . DotDotDotToken ) ,
174+ createIdentifier ( "args" )
175+ ) ] ,
176+ createKeywordTypeNode ( SyntaxKind . AnyKeyword )
177+ ) ,
178+ createFunctionTypeNode (
179+ /*typeArguments*/ undefined ,
180+ [ createParameter (
181+ /*decorators*/ undefined ,
182+ /*modifiers*/ undefined ,
183+ /*dotDotDotToken*/ undefined ,
184+ createIdentifier ( "args" ) ,
185+ createToken ( SyntaxKind . QuestionToken )
186+ ) ] ,
187+ createKeywordTypeNode ( SyntaxKind . AnyKeyword )
188+ ) ,
189+ createFunctionTypeNode (
190+ /*typeArguments*/ undefined ,
191+ [ createParameter (
192+ /*decorators*/ undefined ,
193+ /*modifiers*/ undefined ,
194+ /*dotDotDotToken*/ undefined ,
195+ createIdentifier ( "args" ) ,
196+ /*questionToken*/ undefined ,
197+ createKeywordTypeNode ( SyntaxKind . AnyKeyword )
198+ ) ] ,
199+ createKeywordTypeNode ( SyntaxKind . AnyKeyword )
200+ ) ,
201+ createFunctionTypeNode (
202+ /*typeArguments*/ undefined ,
203+ [ createParameter (
204+ /*decorators*/ undefined ,
205+ /*modifiers*/ undefined ,
206+ /*dotDotDotToken*/ undefined ,
207+ createObjectBindingPattern ( [ ] )
208+ ) ] ,
209+ createKeywordTypeNode ( SyntaxKind . AnyKeyword )
210+ ) ,
211+ ] ) ,
212+ createSourceFile ( "source.ts" , "" , ScriptTarget . ES2015 )
213+ ) ) ;
141214 } ) ;
142215 } ) ;
143216}
0 commit comments