@@ -81,63 +81,136 @@ namespace ts {
81
81
82
82
describe ( "printNode" , ( ) => {
83
83
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 ,
96
94
createNodeArray ( [ createToken ( SyntaxKind . PublicKeyword ) ] ) ,
97
95
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
+ ) ) ;
104
109
105
110
// 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 )
123
157
) ,
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 )
131
167
) ,
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
+ ) ) ;
141
214
} ) ;
142
215
} ) ;
143
216
}
0 commit comments