OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 import 'package:expect/expect.dart'; | 5 import 'package:expect/expect.dart'; |
6 import 'parser_helper.dart'; | 6 import 'parser_helper.dart'; |
7 import 'package:compiler/src/tree/tree.dart'; | 7 import 'package:compiler/src/tree/tree.dart'; |
8 | 8 |
9 testUnparse(String statement) { | 9 testUnparse(String statement) { |
10 Node node = parseStatement(statement); | 10 Node node = parseStatement(statement); |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 testImport() { | 92 testImport() { |
93 testUnparseTopLevelWithMetadata('import "søhest";'); | 93 testUnparseTopLevelWithMetadata('import "søhest";'); |
94 testUnparseTopLevelWithMetadata('import "søhest" as fiskehest;'); | 94 testUnparseTopLevelWithMetadata('import "søhest" as fiskehest;'); |
95 } | 95 } |
96 | 96 |
97 testExport() { | 97 testExport() { |
98 testUnparseTopLevelWithMetadata('export "søhest";'); | 98 testUnparseTopLevelWithMetadata('export "søhest";'); |
99 } | 99 } |
100 | 100 |
101 testConditionalImport() { | 101 testConditionalImport() { |
102 testUnparseTopLevelWithMetadata( | 102 testUnparseTopLevelWithMetadata('import "søhest" if(some.dotted.id)"other";'); |
103 'import "søhest" if(some.dotted.id)"other";'); | 103 testUnparseTopLevelWithMetadata('import "søhest" if(id=="some str")"other";'); |
104 testUnparseTopLevelWithMetadata( | 104 testUnparseTopLevelWithMetadata('import "søhest"' |
105 'import "søhest" if(id=="some str")"other";'); | |
106 testUnparseTopLevelWithMetadata( | |
107 'import "søhest"' | |
108 ' if(id=="some str")"other"' | 105 ' if(id=="some str")"other"' |
109 ' if(id)"other2";'); | 106 ' if(id)"other2";'); |
110 testUnparseTopLevelWithMetadata( | 107 testUnparseTopLevelWithMetadata( |
111 'import "søhest" if(some.dotted.id)"other" as fiskehest;'); | 108 'import "søhest" if(some.dotted.id)"other" as fiskehest;'); |
112 testUnparseTopLevelWithMetadata( | 109 testUnparseTopLevelWithMetadata( |
113 'import "søhest" if(id=="some str")"other" as fiskehest;'); | 110 'import "søhest" if(id=="some str")"other" as fiskehest;'); |
114 testUnparseTopLevelWithMetadata( | 111 testUnparseTopLevelWithMetadata('import "søhest"' |
115 'import "søhest"' | |
116 ' if(id=="some str")"other"' | 112 ' if(id=="some str")"other"' |
117 ' if(id)"other2"' | 113 ' if(id)"other2"' |
118 ' as fiskehest;'); | 114 ' as fiskehest;'); |
119 testUnparseTopLevelWithMetadata( | 115 testUnparseTopLevelWithMetadata( |
120 'import "søhest" if(some.dotted.id)"other" deferred as fiskehest;'); | 116 'import "søhest" if(some.dotted.id)"other" deferred as fiskehest;'); |
121 testUnparseTopLevelWithMetadata( | 117 testUnparseTopLevelWithMetadata( |
122 'import "søhest" if(id=="some str")"other" deferred as fiskehest;'); | 118 'import "søhest" if(id=="some str")"other" deferred as fiskehest;'); |
123 testUnparseTopLevelWithMetadata( | 119 testUnparseTopLevelWithMetadata('import "søhest"' |
124 'import "søhest"' | |
125 ' if(id=="some str")"other"' | 120 ' if(id=="some str")"other"' |
126 ' if(id)"other2"' | 121 ' if(id)"other2"' |
127 ' deferred as fiskehest;'); | 122 ' deferred as fiskehest;'); |
128 testUnparseTopLevelWithMetadata( | 123 testUnparseTopLevelWithMetadata('import "søhest"' |
129 'import "søhest"' | |
130 ' if(id=="some str")"other"' | 124 ' if(id=="some str")"other"' |
131 ' if(id)"other2"' | 125 ' if(id)"other2"' |
132 ' deferred as fiskehest' | 126 ' deferred as fiskehest' |
133 ' show foo,bar;'); | 127 ' show foo,bar;'); |
134 } | 128 } |
135 | 129 |
136 testConditionalExport() { | 130 testConditionalExport() { |
137 testUnparseTopLevelWithMetadata( | 131 testUnparseTopLevelWithMetadata('export "søhest" if(some.dotted.id)"other";'); |
138 'export "søhest" if(some.dotted.id)"other";'); | 132 testUnparseTopLevelWithMetadata('export "søhest" if(id=="some str")"other";'); |
139 testUnparseTopLevelWithMetadata( | 133 testUnparseTopLevelWithMetadata('export "søhest"' |
140 'export "søhest" if(id=="some str")"other";'); | |
141 testUnparseTopLevelWithMetadata( | |
142 'export "søhest"' | |
143 ' if(id=="some str")"other"' | 134 ' if(id=="some str")"other"' |
144 ' if(id)"other2";'); | 135 ' if(id)"other2";'); |
145 testUnparseTopLevelWithMetadata( | 136 testUnparseTopLevelWithMetadata('export "søhest"' |
146 'export "søhest"' | |
147 ' if(id=="some str")"other"' | 137 ' if(id=="some str")"other"' |
148 ' if(id)"other2"' | 138 ' if(id)"other2"' |
149 ' show foo,bar;'); | 139 ' show foo,bar;'); |
150 } | 140 } |
151 | 141 |
152 testPart() { | 142 testPart() { |
153 testUnparseTopLevelWithMetadata('part "søhest";'); | 143 testUnparseTopLevelWithMetadata('part "søhest";'); |
154 } | 144 } |
155 | 145 |
156 testPartOf() { | 146 testPartOf() { |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 testUnparseMemberAndAsMemberOfFoo("factory Foo()=Bar.baz;"); | 260 testUnparseMemberAndAsMemberOfFoo("factory Foo()=Bar.baz;"); |
271 testUnparseMemberAndAsMemberOfFoo("factory Foo()=Bar<T>;"); | 261 testUnparseMemberAndAsMemberOfFoo("factory Foo()=Bar<T>;"); |
272 testUnparseMemberAndAsMemberOfFoo("factory Foo()=Bar<List<T>,T>;"); | 262 testUnparseMemberAndAsMemberOfFoo("factory Foo()=Bar<List<T>,T>;"); |
273 testUnparseMemberAndAsMemberOfFoo("factory Foo()=Bar<T>.baz;"); | 263 testUnparseMemberAndAsMemberOfFoo("factory Foo()=Bar<T>.baz;"); |
274 testUnparseMemberAndAsMemberOfFoo("factory Foo()=Bar<List<T>,T>.baz;"); | 264 testUnparseMemberAndAsMemberOfFoo("factory Foo()=Bar<List<T>,T>.baz;"); |
275 testUnparseMemberAndAsMemberOfFoo("factory Foo()=prefix.Bar;"); | 265 testUnparseMemberAndAsMemberOfFoo("factory Foo()=prefix.Bar;"); |
276 testUnparseMemberAndAsMemberOfFoo("factory Foo()=prefix.Bar.baz;"); | 266 testUnparseMemberAndAsMemberOfFoo("factory Foo()=prefix.Bar.baz;"); |
277 testUnparseMemberAndAsMemberOfFoo("factory Foo()=prefix.Bar<T>;"); | 267 testUnparseMemberAndAsMemberOfFoo("factory Foo()=prefix.Bar<T>;"); |
278 testUnparseMemberAndAsMemberOfFoo("factory Foo()=prefix.Bar<List<T>,T>;"); | 268 testUnparseMemberAndAsMemberOfFoo("factory Foo()=prefix.Bar<List<T>,T>;"); |
279 testUnparseMemberAndAsMemberOfFoo("factory Foo()=prefix.Bar<T>.baz;"); | 269 testUnparseMemberAndAsMemberOfFoo("factory Foo()=prefix.Bar<T>.baz;"); |
280 testUnparseMemberAndAsMemberOfFoo( | 270 testUnparseMemberAndAsMemberOfFoo("factory Foo()=prefix.Bar<List<T>,T>.baz;"); |
281 "factory Foo()=prefix.Bar<List<T>,T>.baz;"); | |
282 testUnparseMemberAndAsMemberOfFoo("const factory Foo()=Bar;"); | 271 testUnparseMemberAndAsMemberOfFoo("const factory Foo()=Bar;"); |
283 testUnparseMemberAndAsMemberOfFoo("const factory Foo()=Bar.baz;"); | 272 testUnparseMemberAndAsMemberOfFoo("const factory Foo()=Bar.baz;"); |
284 testUnparseMemberAndAsMemberOfFoo("const factory Foo()=Bar<T>;"); | 273 testUnparseMemberAndAsMemberOfFoo("const factory Foo()=Bar<T>;"); |
285 testUnparseMemberAndAsMemberOfFoo("const factory Foo()=Bar<List<T>,T>;"); | 274 testUnparseMemberAndAsMemberOfFoo("const factory Foo()=Bar<List<T>,T>;"); |
286 testUnparseMemberAndAsMemberOfFoo("const factory Foo()=Bar<T>.baz;"); | 275 testUnparseMemberAndAsMemberOfFoo("const factory Foo()=Bar<T>.baz;"); |
287 testUnparseMemberAndAsMemberOfFoo( | 276 testUnparseMemberAndAsMemberOfFoo("const factory Foo()=Bar<List<T>,T>.baz;"); |
288 "const factory Foo()=Bar<List<T>,T>.baz;"); | |
289 testUnparseMemberAndAsMemberOfFoo("const factory Foo()=prefix.Bar;"); | 277 testUnparseMemberAndAsMemberOfFoo("const factory Foo()=prefix.Bar;"); |
290 testUnparseMemberAndAsMemberOfFoo("const factory Foo()=prefix.Bar.baz;"); | 278 testUnparseMemberAndAsMemberOfFoo("const factory Foo()=prefix.Bar.baz;"); |
291 testUnparseMemberAndAsMemberOfFoo("const factory Foo()=prefix.Bar<T>;"); | 279 testUnparseMemberAndAsMemberOfFoo("const factory Foo()=prefix.Bar<T>;"); |
292 testUnparseMemberAndAsMemberOfFoo( | 280 testUnparseMemberAndAsMemberOfFoo( |
293 "const factory Foo()=prefix.Bar<List<T>,T>;"); | 281 "const factory Foo()=prefix.Bar<List<T>,T>;"); |
294 testUnparseMemberAndAsMemberOfFoo("const factory Foo()=prefix.Bar<T>.baz;"); | 282 testUnparseMemberAndAsMemberOfFoo("const factory Foo()=prefix.Bar<T>.baz;"); |
295 testUnparseMemberAndAsMemberOfFoo( | 283 testUnparseMemberAndAsMemberOfFoo( |
296 "const factory Foo()=prefix.Bar<List<T>,T>.baz;"); | 284 "const factory Foo()=prefix.Bar<List<T>,T>.baz;"); |
297 testUnparseMemberAndAsMemberOfFoo("external factory Foo()=Bar;"); | 285 testUnparseMemberAndAsMemberOfFoo("external factory Foo()=Bar;"); |
298 testUnparseMemberAndAsMemberOfFoo("external factory Foo()=Bar.baz;"); | 286 testUnparseMemberAndAsMemberOfFoo("external factory Foo()=Bar.baz;"); |
299 testUnparseMemberAndAsMemberOfFoo("external factory Foo()=Bar<T>;"); | 287 testUnparseMemberAndAsMemberOfFoo("external factory Foo()=Bar<T>;"); |
300 testUnparseMemberAndAsMemberOfFoo("external factory Foo()=Bar<List<T>,T>;"); | 288 testUnparseMemberAndAsMemberOfFoo("external factory Foo()=Bar<List<T>,T>;"); |
301 testUnparseMemberAndAsMemberOfFoo("external factory Foo()=Bar<T>.baz;"); | 289 testUnparseMemberAndAsMemberOfFoo("external factory Foo()=Bar<T>.baz;"); |
302 testUnparseMemberAndAsMemberOfFoo( | 290 testUnparseMemberAndAsMemberOfFoo( |
303 "external factory Foo()=Bar<List<T>,T>.baz;"); | 291 "external factory Foo()=Bar<List<T>,T>.baz;"); |
304 testUnparseMemberAndAsMemberOfFoo("external factory Foo()=prefix.Bar;"); | 292 testUnparseMemberAndAsMemberOfFoo("external factory Foo()=prefix.Bar;"); |
305 testUnparseMemberAndAsMemberOfFoo("external factory Foo()=prefix.Bar.baz;"); | 293 testUnparseMemberAndAsMemberOfFoo("external factory Foo()=prefix.Bar.baz;"); |
306 testUnparseMemberAndAsMemberOfFoo("external factory Foo()=prefix.Bar<T>;"); | 294 testUnparseMemberAndAsMemberOfFoo("external factory Foo()=prefix.Bar<T>;"); |
307 testUnparseMemberAndAsMemberOfFoo( | 295 testUnparseMemberAndAsMemberOfFoo( |
308 "external factory Foo()=prefix.Bar<List<T>,T>;"); | 296 "external factory Foo()=prefix.Bar<List<T>,T>;"); |
309 testUnparseMemberAndAsMemberOfFoo( | 297 testUnparseMemberAndAsMemberOfFoo( |
310 "external factory Foo()=prefix.Bar<T>.baz;"); | 298 "external factory Foo()=prefix.Bar<T>.baz;"); |
311 testUnparseMemberAndAsMemberOfFoo( | 299 testUnparseMemberAndAsMemberOfFoo( |
312 "external factory Foo()=prefix.Bar<List<T>,T>.baz;"); | 300 "external factory Foo()=prefix.Bar<List<T>,T>.baz;"); |
313 testUnparseMemberAndAsMemberOfFoo("external const factory Foo()=Bar;"); | 301 testUnparseMemberAndAsMemberOfFoo("external const factory Foo()=Bar;"); |
314 testUnparseMemberAndAsMemberOfFoo("external const factory Foo()=Bar.baz;"); | 302 testUnparseMemberAndAsMemberOfFoo("external const factory Foo()=Bar.baz;"); |
315 testUnparseMemberAndAsMemberOfFoo("external const factory Foo()=Bar<T>;"); | 303 testUnparseMemberAndAsMemberOfFoo("external const factory Foo()=Bar<T>;"); |
316 testUnparseMemberAndAsMemberOfFoo( | 304 testUnparseMemberAndAsMemberOfFoo( |
317 "external const factory Foo()=Bar<List<T>,T>;"); | 305 "external const factory Foo()=Bar<List<T>,T>;"); |
318 testUnparseMemberAndAsMemberOfFoo( | 306 testUnparseMemberAndAsMemberOfFoo("external const factory Foo()=Bar<T>.baz;"); |
319 "external const factory Foo()=Bar<T>.baz;"); | |
320 testUnparseMemberAndAsMemberOfFoo( | 307 testUnparseMemberAndAsMemberOfFoo( |
321 "external const factory Foo()=Bar<List<T>,T>.baz;"); | 308 "external const factory Foo()=Bar<List<T>,T>.baz;"); |
322 testUnparseMemberAndAsMemberOfFoo( | 309 testUnparseMemberAndAsMemberOfFoo("external const factory Foo()=prefix.Bar;"); |
323 "external const factory Foo()=prefix.Bar;"); | |
324 testUnparseMemberAndAsMemberOfFoo( | 310 testUnparseMemberAndAsMemberOfFoo( |
325 "external const factory Foo()=prefix.Bar.baz;"); | 311 "external const factory Foo()=prefix.Bar.baz;"); |
326 testUnparseMemberAndAsMemberOfFoo( | 312 testUnparseMemberAndAsMemberOfFoo( |
327 "external const factory Foo()=prefix.Bar<T>;"); | 313 "external const factory Foo()=prefix.Bar<T>;"); |
328 testUnparseMemberAndAsMemberOfFoo( | 314 testUnparseMemberAndAsMemberOfFoo( |
329 "external const factory Foo()=prefix.Bar<List<T>,T>;"); | 315 "external const factory Foo()=prefix.Bar<List<T>,T>;"); |
330 testUnparseMemberAndAsMemberOfFoo( | 316 testUnparseMemberAndAsMemberOfFoo( |
331 "external const factory Foo()=prefix.Bar<T>.baz;"); | 317 "external const factory Foo()=prefix.Bar<T>.baz;"); |
332 testUnparseMemberAndAsMemberOfFoo( | 318 testUnparseMemberAndAsMemberOfFoo( |
333 "external const factory Foo()=prefix.Bar<List<T>,T>.baz;"); | 319 "external const factory Foo()=prefix.Bar<List<T>,T>.baz;"); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
371 index++; | 357 index++; |
372 } | 358 } |
373 sb.write(');'); | 359 sb.write(');'); |
374 | 360 |
375 FunctionExpression node = parseMember(sb.toString()); | 361 FunctionExpression node = parseMember(sb.toString()); |
376 index = 0; | 362 index = 0; |
377 for (VariableDefinitions parameter in node.parameters.nodes) { | 363 for (VariableDefinitions parameter in node.parameters.nodes) { |
378 Expect.equals(variableDeclarations[index], unparse(parameter)); | 364 Expect.equals(variableDeclarations[index], unparse(parameter)); |
379 index++; | 365 index++; |
380 } | 366 } |
381 | |
382 } | 367 } |
383 | 368 |
384 testParameters() { | 369 testParameters() { |
385 testUnparseParameters( | 370 testUnparseParameters(["foo", "bar=0", "int baz", "int boz=0"]); |
386 ["foo", "bar=0", "int baz", "int boz=0"]); | |
387 testUnparseParameters( | 371 testUnparseParameters( |
388 ["this.foo", "this.bar=0", "int this.baz", "int this.boz=0"]); | 372 ["this.foo", "this.bar=0", "int this.baz", "int this.boz=0"]); |
389 testUnparseParameters( | 373 testUnparseParameters( |
390 ["foo()", "void bar()", "int baz(a)", "int boz(int a,int b)=null"]); | 374 ["foo()", "void bar()", "int baz(a)", "int boz(int a,int b)=null"]); |
391 testUnparseParameters( | 375 testUnparseParameters([ |
392 ["this.foo()", | 376 "this.foo()", |
393 //"void this.bar()", // Commented out due to Issue 7852 | 377 //"void this.bar()", // Commented out due to Issue 7852 |
394 //"int this.baz(a)", // Commented out due to Issue 7852 | 378 //"int this.baz(a)", // Commented out due to Issue 7852 |
395 //"int this.boz(int a,int b)=null" // Commented out due to Issue 7852 | 379 //"int this.boz(int a,int b)=null" // Commented out due to Issue 7852 |
396 ]); | 380 ]); |
397 testUnparseParameters( | 381 testUnparseParameters( |
398 ["@a foo", "@b @c bar=0", "@D(0) int baz", "@E([f],{g:h}) int boz=0"]); | 382 ["@a foo", "@b @c bar=0", "@D(0) int baz", "@E([f],{g:h}) int boz=0"]); |
399 } | 383 } |
400 | 384 |
401 testSymbolLiterals() { | 385 testSymbolLiterals() { |
402 testUnparse("#+;"); | 386 testUnparse("#+;"); |
403 testUnparse("#-;"); | 387 testUnparse("#-;"); |
404 testUnparse("#*;"); | 388 testUnparse("#*;"); |
405 testUnparse("#/;"); | 389 testUnparse("#/;"); |
406 testUnparse("#~/;"); | 390 testUnparse("#~/;"); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
439 testPart(); | 423 testPart(); |
440 testPartOf(); | 424 testPartOf(); |
441 testCombinators(); | 425 testCombinators(); |
442 testDeferredImport(); | 426 testDeferredImport(); |
443 testRedirectingFactoryConstructors(); | 427 testRedirectingFactoryConstructors(); |
444 testClassDeclarations(); | 428 testClassDeclarations(); |
445 testMixinApplications(); | 429 testMixinApplications(); |
446 testParameters(); | 430 testParameters(); |
447 testSymbolLiterals(); | 431 testSymbolLiterals(); |
448 } | 432 } |
OLD | NEW |