| OLD | NEW |
| 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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:analyzer/dart/ast/ast.dart'; | 5 import 'package:analyzer/dart/ast/ast.dart'; |
| 6 import 'package:analyzer/dart/element/element.dart'; | 6 import 'package:analyzer/dart/element/element.dart'; |
| 7 import 'package:analyzer/error/error.dart'; | 7 import 'package:analyzer/error/error.dart'; |
| 8 import 'package:analyzer/src/generated/parser.dart' as analyzer; |
| 8 import 'package:front_end/src/fasta/analyzer/ast_builder.dart'; | 9 import 'package:front_end/src/fasta/analyzer/ast_builder.dart'; |
| 9 import 'package:front_end/src/fasta/analyzer/element_store.dart'; | 10 import 'package:front_end/src/fasta/analyzer/element_store.dart'; |
| 10 import 'package:front_end/src/fasta/builder/scope.dart'; | 11 import 'package:front_end/src/fasta/builder/scope.dart'; |
| 11 import 'package:front_end/src/fasta/kernel/kernel_builder.dart'; | 12 import 'package:front_end/src/fasta/kernel/kernel_builder.dart'; |
| 12 import 'package:front_end/src/fasta/kernel/kernel_library_builder.dart'; | 13 import 'package:front_end/src/fasta/kernel/kernel_library_builder.dart'; |
| 13 import 'package:front_end/src/fasta/parser/parser.dart'; | 14 import 'package:front_end/src/fasta/parser/parser.dart' as fasta; |
| 14 import 'package:front_end/src/fasta/scanner/string_scanner.dart'; | 15 import 'package:front_end/src/fasta/scanner/string_scanner.dart'; |
| 15 import 'package:front_end/src/fasta/scanner/token.dart'; | 16 import 'package:front_end/src/fasta/scanner/token.dart' as fasta; |
| 16 import 'package:test/test.dart'; | 17 import 'package:test/test.dart'; |
| 17 import 'package:test_reflective_loader/test_reflective_loader.dart'; | 18 import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| 18 | 19 |
| 19 import 'parser_test.dart'; | 20 import 'parser_test.dart'; |
| 20 | 21 |
| 21 main() { | 22 main() { |
| 22 defineReflectiveSuite(() { | 23 defineReflectiveSuite(() { |
| 23 defineReflectiveTests(ComplexParserTest_Fasta); | 24 defineReflectiveTests(ComplexParserTest_Fasta); |
| 25 defineReflectiveTests(TopLevelParserTest_Fasta); |
| 24 }); | 26 }); |
| 25 } | 27 } |
| 26 | 28 |
| 27 /** | 29 /** |
| 28 * Type of the "parse..." methods defined in the Fasta parser. | 30 * Type of the "parse..." methods defined in the Fasta parser. |
| 29 */ | 31 */ |
| 30 typedef Token ParseFunction(Token token); | 32 typedef fasta.Token ParseFunction(fasta.Token token); |
| 31 | 33 |
| 32 /** | 34 /** |
| 33 * Proxy implementation of [Builder] used by Fasta parser tests. | 35 * Proxy implementation of [Builder] used by Fasta parser tests. |
| 34 * | 36 * |
| 35 * All undeclared identifiers are presumed to resolve via an instance of this | 37 * All undeclared identifiers are presumed to resolve via an instance of this |
| 36 * class. | 38 * class. |
| 37 */ | 39 */ |
| 38 class BuilderProxy implements Builder { | 40 class BuilderProxy implements Builder { |
| 39 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | 41 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
| 40 } | 42 } |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 240 Element operator [](Builder builder) => | 242 Element operator [](Builder builder) => |
| 241 _elements.putIfAbsent(builder, () => new ElementProxy()); | 243 _elements.putIfAbsent(builder, () => new ElementProxy()); |
| 242 | 244 |
| 243 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | 245 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
| 244 } | 246 } |
| 245 | 247 |
| 246 /** | 248 /** |
| 247 * Implementation of [AbstractParserTestCase] specialized for testing the | 249 * Implementation of [AbstractParserTestCase] specialized for testing the |
| 248 * Fasta parser. | 250 * Fasta parser. |
| 249 */ | 251 */ |
| 250 class FastaParserTestCase implements AbstractParserTestCase { | 252 class FastaParserTestCase extends Object |
| 253 with ParserTestHelpers |
| 254 implements AbstractParserTestCase { |
| 255 ParserProxy _parserProxy; |
| 256 |
| 251 @override | 257 @override |
| 252 set enableGenericMethodComments(bool value) { | 258 set enableGenericMethodComments(bool value) { |
| 253 if (value == true) { | 259 if (value == true) { |
| 254 // TODO(paulberry,ahe): generic method comment syntax is not supported by | 260 // TODO(paulberry,ahe): generic method comment syntax is not supported by |
| 255 // Fasta. | 261 // Fasta. |
| 256 throw new UnimplementedError(); | 262 throw new UnimplementedError(); |
| 257 } | 263 } |
| 258 } | 264 } |
| 259 | 265 |
| 260 @override | 266 @override |
| 261 set enableNnbd(bool value) { | 267 set enableNnbd(bool value) { |
| 262 if (value == true) { | 268 if (value == true) { |
| 263 // TODO(paulberry,ahe): non-null-by-default syntax is not supported by | 269 // TODO(paulberry,ahe): non-null-by-default syntax is not supported by |
| 264 // Fasta. | 270 // Fasta. |
| 265 throw new UnimplementedError(); | 271 throw new UnimplementedError(); |
| 266 } | 272 } |
| 267 } | 273 } |
| 268 | 274 |
| 269 @override | 275 @override |
| 276 set enableUriInPartOf(bool value) { |
| 277 if (value == true) { |
| 278 // TODO(paulberry,ahe): URIs in "part of" declarations are not supported |
| 279 // by Fasta. |
| 280 throw new UnimplementedError(); |
| 281 } |
| 282 } |
| 283 |
| 284 @override |
| 285 analyzer.Parser get parser => _parserProxy; |
| 286 |
| 287 @override |
| 288 void assertNoErrors() { |
| 289 // TODO(paulberry): implement assertNoErrors |
| 290 } |
| 291 |
| 292 @override |
| 293 void createParser(String content) { |
| 294 var scanner = new StringScanner(content); |
| 295 _parserProxy = new ParserProxy(scanner.tokenize()); |
| 296 } |
| 297 |
| 298 @override |
| 270 CompilationUnit parseCompilationUnit(String source, | 299 CompilationUnit parseCompilationUnit(String source, |
| 271 [List<ErrorCode> errorCodes = const <ErrorCode>[]]) { | 300 [List<ErrorCode> errorCodes = const <ErrorCode>[]]) { |
| 272 // TODO(paulberry): implement parseCompilationUnit | 301 return _runParser(source, (parser) => parser.parseUnit, errorCodes) |
| 273 throw new UnimplementedError(); | 302 as CompilationUnit; |
| 274 } | 303 } |
| 275 | 304 |
| 276 @override | 305 @override |
| 277 CompilationUnit parseCompilationUnitWithOptions(String source, | 306 CompilationUnit parseCompilationUnitWithOptions(String source, |
| 278 [List<ErrorCode> errorCodes = const <ErrorCode>[]]) { | 307 [List<ErrorCode> errorCodes = const <ErrorCode>[]]) { |
| 279 // TODO(paulberry): implement parseCompilationUnitWithOptions | 308 // TODO(paulberry): implement parseCompilationUnitWithOptions |
| 280 throw new UnimplementedError(); | 309 throw new UnimplementedError(); |
| 281 } | 310 } |
| 282 | 311 |
| 283 @override | 312 @override |
| 313 CompilationUnit parseDirectives(String source, |
| 314 [List<ErrorCode> errorCodes = const <ErrorCode>[]]) { |
| 315 return _runParser(source, (parser) => parser.parseUnit, errorCodes); |
| 316 } |
| 317 |
| 318 @override |
| 284 Expression parseExpression(String source, | 319 Expression parseExpression(String source, |
| 285 [List<ErrorCode> errorCodes = const <ErrorCode>[]]) { | 320 [List<ErrorCode> errorCodes = const <ErrorCode>[]]) { |
| 286 return _runParser(source, (parser) => parser.parseExpression, errorCodes); | 321 return _runParser(source, (parser) => parser.parseExpression, errorCodes) |
| 322 as Expression; |
| 323 } |
| 324 |
| 325 @override |
| 326 CompilationUnitMember parseFullCompilationUnitMember() { |
| 327 return _parserProxy._run((parser) => parser.parseTopLevelDeclaration) |
| 328 as CompilationUnitMember; |
| 329 } |
| 330 |
| 331 @override |
| 332 Directive parseFullDirective() { |
| 333 return _parserProxy._run((parser) => parser.parseTopLevelDeclaration) |
| 334 as Directive; |
| 287 } | 335 } |
| 288 | 336 |
| 289 @override | 337 @override |
| 290 Statement parseStatement(String source, | 338 Statement parseStatement(String source, |
| 291 [List<ErrorCode> errorCodes = const <ErrorCode>[], | 339 [List<ErrorCode> errorCodes = const <ErrorCode>[], |
| 292 bool enableLazyAssignmentOperators]) { | 340 bool enableLazyAssignmentOperators]) { |
| 293 return _runParser(source, (parser) => parser.parseStatement, errorCodes); | 341 return _runParser(source, (parser) => parser.parseStatement, errorCodes) |
| 342 as Statement; |
| 294 } | 343 } |
| 295 | 344 |
| 296 Object _runParser(String source, ParseFunction getParseFuction(Parser parser), | 345 Object _runParser( |
| 346 String source, ParseFunction getParseFunction(fasta.Parser parser), |
| 297 [List<ErrorCode> errorCodes = const <ErrorCode>[]]) { | 347 [List<ErrorCode> errorCodes = const <ErrorCode>[]]) { |
| 298 if (errorCodes.isNotEmpty) { | 348 if (errorCodes.isNotEmpty) { |
| 299 // TODO(paulberry): Check that the parser generates the proper errors. | 349 // TODO(paulberry): Check that the parser generates the proper errors. |
| 300 throw new UnimplementedError(); | 350 throw new UnimplementedError(); |
| 301 } | 351 } |
| 302 var scanner = new StringScanner(source); | 352 createParser(source); |
| 303 var token = scanner.tokenize(); | 353 return _parserProxy._run(getParseFunction); |
| 304 var library = new KernelLibraryBuilderProxy(); | |
| 305 var member = new BuilderProxy(); | |
| 306 var elementStore = new ElementStoreProxy(); | |
| 307 var scope = new ScopeProxy(); | |
| 308 var astBuilder = new AstBuilder(library, member, elementStore, scope); | |
| 309 var parser = new Parser(astBuilder); | |
| 310 var parseFunction = getParseFuction(parser); | |
| 311 var endToken = parseFunction(token); | |
| 312 expect(endToken.isEof, isTrue); | |
| 313 expect(astBuilder.stack, hasLength(1)); | |
| 314 return astBuilder.pop(); | |
| 315 } | 354 } |
| 316 } | 355 } |
| 317 | 356 |
| 318 /** | 357 /** |
| 319 * Proxy implementation of [KernelClassElement] used by Fasta parser tests. | 358 * Proxy implementation of [KernelClassElement] used by Fasta parser tests. |
| 320 * | 359 * |
| 321 * Any element used as a type name is presumed to refer to an instance of this | 360 * Any element used as a type name is presumed to refer to an instance of this |
| 322 * class. | 361 * class. |
| 323 */ | 362 */ |
| 324 class InterfaceTypeProxy implements KernelInterfaceType { | 363 class InterfaceTypeProxy implements KernelInterfaceType { |
| 325 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | 364 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
| 326 } | 365 } |
| 327 | 366 |
| 328 /** | 367 /** |
| 329 * Proxy implementation of [KernelLibraryBuilderProxy] used by Fasta parser | 368 * Proxy implementation of [KernelLibraryBuilderProxy] used by Fasta parser |
| 330 * tests. | 369 * tests. |
| 331 */ | 370 */ |
| 332 class KernelLibraryBuilderProxy implements KernelLibraryBuilder { | 371 class KernelLibraryBuilderProxy implements KernelLibraryBuilder { |
| 333 @override | 372 @override |
| 334 final uri = Uri.parse('file:///test.dart'); | 373 final uri = Uri.parse('file:///test.dart'); |
| 335 | 374 |
| 336 @override | 375 @override |
| 337 Uri get fileUri => uri; | 376 Uri get fileUri => uri; |
| 338 | 377 |
| 339 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | 378 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
| 340 } | 379 } |
| 341 | 380 |
| 342 /** | 381 /** |
| 382 * Proxy implementation of the analyzer parser, implemented in terms of the |
| 383 * Fasta parser. |
| 384 * |
| 385 * This allows many of the analyzer parser tests to be run on Fasta, even if |
| 386 * they call into the analyzer parser class directly. |
| 387 */ |
| 388 class ParserProxy implements analyzer.Parser { |
| 389 /** |
| 390 * The token to parse next. |
| 391 */ |
| 392 fasta.Token _currentFastaToken; |
| 393 |
| 394 /** |
| 395 * The fasta parser being wrapped. |
| 396 */ |
| 397 final fasta.Parser _fastaParser; |
| 398 |
| 399 /** |
| 400 * The builder which creates the analyzer AST data structures expected by the |
| 401 * analyzer parser tests. |
| 402 */ |
| 403 final AstBuilder _astBuilder; |
| 404 |
| 405 /** |
| 406 * Creates a [ParserProxy] which is prepared to begin parsing at the given |
| 407 * Fasta token. |
| 408 */ |
| 409 factory ParserProxy(fasta.Token startingToken) { |
| 410 var library = new KernelLibraryBuilderProxy(); |
| 411 var member = new BuilderProxy(); |
| 412 var elementStore = new ElementStoreProxy(); |
| 413 var scope = new ScopeProxy(); |
| 414 var astBuilder = new AstBuilder(library, member, elementStore, scope); |
| 415 return new ParserProxy._( |
| 416 startingToken, new fasta.Parser(astBuilder), astBuilder); |
| 417 } |
| 418 |
| 419 ParserProxy._(this._currentFastaToken, this._fastaParser, this._astBuilder); |
| 420 |
| 421 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
| 422 |
| 423 @override |
| 424 CompilationUnit parseCompilationUnit2() { |
| 425 return _run((parser) => parser.parseUnit) as CompilationUnit; |
| 426 } |
| 427 |
| 428 /** |
| 429 * Runs a single parser function, and returns the result as an analyzer AST. |
| 430 */ |
| 431 Object _run(ParseFunction getParseFunction(fasta.Parser parser)) { |
| 432 var parseFunction = getParseFunction(_fastaParser); |
| 433 _currentFastaToken = parseFunction(_currentFastaToken); |
| 434 expect(_currentFastaToken.isEof, isTrue); |
| 435 expect(_astBuilder.stack, hasLength(1)); |
| 436 return _astBuilder.pop(); |
| 437 } |
| 438 } |
| 439 |
| 440 /** |
| 343 * Proxy implementation of [Scope] used by Fasta parser tests. | 441 * Proxy implementation of [Scope] used by Fasta parser tests. |
| 344 * | 442 * |
| 345 * Any name lookup request is satisfied by creating an instance of | 443 * Any name lookup request is satisfied by creating an instance of |
| 346 * [BuilderProxy]. | 444 * [BuilderProxy]. |
| 347 */ | 445 */ |
| 348 class ScopeProxy implements Scope { | 446 class ScopeProxy implements Scope { |
| 349 final _locals = <String, Builder>{}; | 447 final _locals = <String, Builder>{}; |
| 350 | 448 |
| 351 @override | 449 @override |
| 450 void operator []=(String name, Builder member) { |
| 451 _locals[name] = member; |
| 452 } |
| 453 |
| 454 @override |
| 455 Scope createNestedScope({bool isModifiable: true}) { |
| 456 return new Scope(<String, Builder>{}, this, isModifiable: isModifiable); |
| 457 } |
| 458 |
| 459 @override |
| 352 Builder lookup(String name, int charOffset, Uri fileUri) => | 460 Builder lookup(String name, int charOffset, Uri fileUri) => |
| 353 _locals.putIfAbsent(name, () => new BuilderProxy()); | 461 _locals.putIfAbsent(name, () => new BuilderProxy()); |
| 354 | 462 |
| 355 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); | 463 noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); |
| 356 } | 464 } |
| 465 |
| 466 /** |
| 467 * Tests of the fasta parser based on [TopLevelParserTestMixin]. |
| 468 */ |
| 469 @reflectiveTest |
| 470 class TopLevelParserTest_Fasta extends FastaParserTestCase |
| 471 with TopLevelParserTestMixin { |
| 472 @override |
| 473 @failingTest |
| 474 void test_function_literal_allowed_at_toplevel() { |
| 475 // TODO(paulberry): Unhandled event: UnnamedFunction |
| 476 super.test_function_literal_allowed_at_toplevel(); |
| 477 } |
| 478 |
| 479 @override |
| 480 @failingTest |
| 481 void |
| 482 test_function_literal_allowed_in_ArgumentList_in_ConstructorFieldInitializ
er() { |
| 483 // TODO(paulberry): Unhandled event: UnnamedFunction |
| 484 super |
| 485 .test_function_literal_allowed_in_ArgumentList_in_ConstructorFieldInitia
lizer(); |
| 486 } |
| 487 |
| 488 @override |
| 489 @failingTest |
| 490 void |
| 491 test_function_literal_allowed_in_IndexExpression_in_ConstructorFieldInitia
lizer() { |
| 492 // TODO(paulberry): Unhandled event: UnnamedFunction |
| 493 super |
| 494 .test_function_literal_allowed_in_IndexExpression_in_ConstructorFieldIni
tializer(); |
| 495 } |
| 496 |
| 497 @override |
| 498 @failingTest |
| 499 void |
| 500 test_function_literal_allowed_in_ListLiteral_in_ConstructorFieldInitialize
r() { |
| 501 // TODO(paulberry): Unhandled event: UnnamedFunction |
| 502 super |
| 503 .test_function_literal_allowed_in_ListLiteral_in_ConstructorFieldInitial
izer(); |
| 504 } |
| 505 |
| 506 @override |
| 507 @failingTest |
| 508 void |
| 509 test_function_literal_allowed_in_MapLiteral_in_ConstructorFieldInitializer
() { |
| 510 // TODO(paulberry): Unhandled event: UnnamedFunction |
| 511 super |
| 512 .test_function_literal_allowed_in_MapLiteral_in_ConstructorFieldInitiali
zer(); |
| 513 } |
| 514 |
| 515 @override |
| 516 @failingTest |
| 517 void |
| 518 test_function_literal_allowed_in_ParenthesizedExpression_in_ConstructorFie
ldInitializer() { |
| 519 // TODO(paulberry): Unhandled event: UnnamedFunction |
| 520 super |
| 521 .test_function_literal_allowed_in_ParenthesizedExpression_in_Constructor
FieldInitializer(); |
| 522 } |
| 523 |
| 524 @override |
| 525 @failingTest |
| 526 void |
| 527 test_function_literal_allowed_in_StringInterpolation_in_ConstructorFieldIn
itializer() { |
| 528 // TODO(paulberry): Unhandled event: UnnamedFunction |
| 529 super |
| 530 .test_function_literal_allowed_in_StringInterpolation_in_ConstructorFiel
dInitializer(); |
| 531 } |
| 532 |
| 533 @override |
| 534 @failingTest |
| 535 void test_import_as_show() { |
| 536 // TODO(paulberry): Unhandled event: IdentifierList |
| 537 super.test_import_as_show(); |
| 538 } |
| 539 |
| 540 @override |
| 541 @failingTest |
| 542 void test_import_show_hide() { |
| 543 // TODO(paulberry): Unhandled event: IdentifierList |
| 544 super.test_import_show_hide(); |
| 545 } |
| 546 |
| 547 @override |
| 548 @failingTest |
| 549 void test_parseClassDeclaration_abstract() { |
| 550 // TODO(paulberry): Unhandled event: ClassBody |
| 551 super.test_parseClassDeclaration_abstract(); |
| 552 } |
| 553 |
| 554 @override |
| 555 @failingTest |
| 556 void test_parseClassDeclaration_empty() { |
| 557 // TODO(paulberry): Unhandled event: ClassBody |
| 558 super.test_parseClassDeclaration_empty(); |
| 559 } |
| 560 |
| 561 @override |
| 562 @failingTest |
| 563 void test_parseClassDeclaration_extends() { |
| 564 // TODO(paulberry): Unhandled event: ClassBody |
| 565 super.test_parseClassDeclaration_extends(); |
| 566 } |
| 567 |
| 568 @override |
| 569 @failingTest |
| 570 void test_parseClassDeclaration_extendsAndImplements() { |
| 571 // TODO(paulberry): Unhandled event: ClassBody |
| 572 super.test_parseClassDeclaration_extendsAndImplements(); |
| 573 } |
| 574 |
| 575 @override |
| 576 @failingTest |
| 577 void test_parseClassDeclaration_extendsAndWith() { |
| 578 // TODO(paulberry): Unhandled event: TypeList |
| 579 super.test_parseClassDeclaration_extendsAndWith(); |
| 580 } |
| 581 |
| 582 @override |
| 583 @failingTest |
| 584 void test_parseClassDeclaration_extendsAndWithAndImplements() { |
| 585 // TODO(paulberry): Unhandled event: TypeList |
| 586 super.test_parseClassDeclaration_extendsAndWithAndImplements(); |
| 587 } |
| 588 |
| 589 @override |
| 590 @failingTest |
| 591 void test_parseClassDeclaration_implements() { |
| 592 // TODO(paulberry): Unhandled event: ClassBody |
| 593 super.test_parseClassDeclaration_implements(); |
| 594 } |
| 595 |
| 596 @override |
| 597 @failingTest |
| 598 void test_parseClassDeclaration_native() { |
| 599 // TODO(paulberry): TODO(paulberry,ahe): Fasta parser doesn't appear to supp
ort "native" syntax yet. |
| 600 super.test_parseClassDeclaration_native(); |
| 601 } |
| 602 |
| 603 @override |
| 604 @failingTest |
| 605 void test_parseClassDeclaration_nonEmpty() { |
| 606 // TODO(paulberry): Unhandled event: NoFieldInitializer |
| 607 super.test_parseClassDeclaration_nonEmpty(); |
| 608 } |
| 609 |
| 610 @override |
| 611 @failingTest |
| 612 void test_parseClassDeclaration_typeAlias_implementsC() { |
| 613 // TODO(paulberry): Unhandled event: TypeList |
| 614 super.test_parseClassDeclaration_typeAlias_implementsC(); |
| 615 } |
| 616 |
| 617 @override |
| 618 @failingTest |
| 619 void test_parseClassDeclaration_typeAlias_withB() { |
| 620 // TODO(paulberry): Unhandled event: TypeList |
| 621 super.test_parseClassDeclaration_typeAlias_withB(); |
| 622 } |
| 623 |
| 624 @override |
| 625 @failingTest |
| 626 void test_parseClassDeclaration_typeParameters() { |
| 627 // TODO(paulberry): Unhandled event: TypeVariable |
| 628 super.test_parseClassDeclaration_typeParameters(); |
| 629 } |
| 630 |
| 631 @override |
| 632 @failingTest |
| 633 void test_parseCompilationUnit_abstractAsPrefix_parameterized() { |
| 634 // TODO(paulberry): Unhandled event: Qualified |
| 635 super.test_parseCompilationUnit_abstractAsPrefix_parameterized(); |
| 636 } |
| 637 |
| 638 @override |
| 639 @failingTest |
| 640 void test_parseCompilationUnit_builtIn_asFunctionName() { |
| 641 // TODO(paulberry): Unhandled event: TopLevelMethod |
| 642 super.test_parseCompilationUnit_builtIn_asFunctionName(); |
| 643 } |
| 644 |
| 645 @override |
| 646 @failingTest |
| 647 void test_parseCompilationUnit_directives_multiple() { |
| 648 // TODO(paulberry): Unhandled event: LibraryName |
| 649 super.test_parseCompilationUnit_directives_multiple(); |
| 650 } |
| 651 |
| 652 @override |
| 653 @failingTest |
| 654 void test_parseCompilationUnit_directives_single() { |
| 655 // TODO(paulberry): Unhandled event: LibraryName |
| 656 super.test_parseCompilationUnit_directives_single(); |
| 657 } |
| 658 |
| 659 @override |
| 660 @failingTest |
| 661 void test_parseCompilationUnit_empty() { |
| 662 // TODO(paulberry): No objects placed on stack |
| 663 super.test_parseCompilationUnit_empty(); |
| 664 } |
| 665 |
| 666 @override |
| 667 @failingTest |
| 668 void test_parseCompilationUnit_exportAsPrefix() { |
| 669 // TODO(paulberry): TODO(paulberry,ahe): Fasta parser doesn't appear to hand
le this case correctly. |
| 670 super.test_parseCompilationUnit_exportAsPrefix(); |
| 671 } |
| 672 |
| 673 @override |
| 674 @failingTest |
| 675 void test_parseCompilationUnit_exportAsPrefix_parameterized() { |
| 676 // TODO(paulberry): Unhandled event: TypeArguments |
| 677 super.test_parseCompilationUnit_exportAsPrefix_parameterized(); |
| 678 } |
| 679 |
| 680 @override |
| 681 @failingTest |
| 682 void test_parseCompilationUnit_operatorAsPrefix_parameterized() { |
| 683 // TODO(paulberry): Unhandled event: Qualified |
| 684 super.test_parseCompilationUnit_operatorAsPrefix_parameterized(); |
| 685 } |
| 686 |
| 687 @override |
| 688 @failingTest |
| 689 void test_parseCompilationUnit_script() { |
| 690 // TODO(paulberry): No objects placed on stack |
| 691 super.test_parseCompilationUnit_script(); |
| 692 } |
| 693 |
| 694 @override |
| 695 @failingTest |
| 696 void test_parseCompilationUnit_skipFunctionBody_withInterpolation() { |
| 697 // TODO(paulberry): Unhandled event: TopLevelMethod |
| 698 super.test_parseCompilationUnit_skipFunctionBody_withInterpolation(); |
| 699 } |
| 700 |
| 701 @override |
| 702 @failingTest |
| 703 void test_parseCompilationUnit_topLevelDeclaration() { |
| 704 // TODO(paulberry): Unhandled event: ClassBody |
| 705 super.test_parseCompilationUnit_topLevelDeclaration(); |
| 706 } |
| 707 |
| 708 @override |
| 709 @failingTest |
| 710 void test_parseCompilationUnit_typedefAsPrefix() { |
| 711 // TODO(paulberry): TODO(paulberry,ahe): Fasta parser doesn't appear to hand
le this case correctly. |
| 712 super.test_parseCompilationUnit_typedefAsPrefix(); |
| 713 } |
| 714 |
| 715 @override |
| 716 @failingTest |
| 717 void test_parseCompilationUnitMember_abstractAsPrefix() { |
| 718 // TODO(paulberry): Unhandled event: Qualified |
| 719 super.test_parseCompilationUnitMember_abstractAsPrefix(); |
| 720 } |
| 721 |
| 722 @override |
| 723 @failingTest |
| 724 void test_parseCompilationUnitMember_class() { |
| 725 // TODO(paulberry): Unhandled event: ClassBody |
| 726 super.test_parseCompilationUnitMember_class(); |
| 727 } |
| 728 |
| 729 @override |
| 730 @failingTest |
| 731 void test_parseCompilationUnitMember_classTypeAlias() { |
| 732 // TODO(paulberry): Unhandled event: TypeList |
| 733 super.test_parseCompilationUnitMember_classTypeAlias(); |
| 734 } |
| 735 |
| 736 @override |
| 737 @failingTest |
| 738 void test_parseCompilationUnitMember_constVariable() { |
| 739 // TODO(paulberry): Unhandled event: FieldInitializer |
| 740 super.test_parseCompilationUnitMember_constVariable(); |
| 741 } |
| 742 |
| 743 @override |
| 744 @failingTest |
| 745 void test_parseCompilationUnitMember_finalVariable() { |
| 746 // TODO(paulberry): Unhandled event: FieldInitializer |
| 747 super.test_parseCompilationUnitMember_finalVariable(); |
| 748 } |
| 749 |
| 750 @override |
| 751 @failingTest |
| 752 void test_parseCompilationUnitMember_function_external_noType() { |
| 753 // TODO(paulberry): Unhandled event: TopLevelMethod |
| 754 super.test_parseCompilationUnitMember_function_external_noType(); |
| 755 } |
| 756 |
| 757 @override |
| 758 @failingTest |
| 759 void test_parseCompilationUnitMember_function_external_type() { |
| 760 // TODO(paulberry): Unhandled event: TopLevelMethod |
| 761 super.test_parseCompilationUnitMember_function_external_type(); |
| 762 } |
| 763 |
| 764 @override |
| 765 @failingTest |
| 766 void test_parseCompilationUnitMember_function_generic_noReturnType() { |
| 767 // TODO(paulberry): Unhandled event: TypeVariable |
| 768 super.test_parseCompilationUnitMember_function_generic_noReturnType(); |
| 769 } |
| 770 |
| 771 @override |
| 772 @failingTest |
| 773 void |
| 774 test_parseCompilationUnitMember_function_generic_noReturnType_annotated()
{ |
| 775 // TODO(paulberry,ahe): Fasta doesn't appear to support annotated type |
| 776 // parameters. |
| 777 super |
| 778 .test_parseCompilationUnitMember_function_generic_noReturnType_annotated
(); |
| 779 } |
| 780 |
| 781 @override |
| 782 @failingTest |
| 783 void test_parseCompilationUnitMember_function_generic_returnType() { |
| 784 // TODO(paulberry): Unhandled event: TypeVariable |
| 785 super.test_parseCompilationUnitMember_function_generic_returnType(); |
| 786 } |
| 787 |
| 788 @override |
| 789 @failingTest |
| 790 void test_parseCompilationUnitMember_function_generic_void() { |
| 791 // TODO(paulberry): Unhandled event: VoidKeyword |
| 792 super.test_parseCompilationUnitMember_function_generic_void(); |
| 793 } |
| 794 |
| 795 @override |
| 796 @failingTest |
| 797 void test_parseCompilationUnitMember_function_noType() { |
| 798 // TODO(paulberry): Unhandled event: TopLevelMethod |
| 799 super.test_parseCompilationUnitMember_function_noType(); |
| 800 } |
| 801 |
| 802 @override |
| 803 @failingTest |
| 804 void test_parseCompilationUnitMember_function_type() { |
| 805 // TODO(paulberry): Unhandled event: TopLevelMethod |
| 806 super.test_parseCompilationUnitMember_function_type(); |
| 807 } |
| 808 |
| 809 @override |
| 810 @failingTest |
| 811 void test_parseCompilationUnitMember_function_void() { |
| 812 // TODO(paulberry): Unhandled event: VoidKeyword |
| 813 super.test_parseCompilationUnitMember_function_void(); |
| 814 } |
| 815 |
| 816 @override |
| 817 @failingTest |
| 818 void test_parseCompilationUnitMember_getter_external_noType() { |
| 819 // TODO(paulberry): Unhandled event: TopLevelMethod |
| 820 super.test_parseCompilationUnitMember_getter_external_noType(); |
| 821 } |
| 822 |
| 823 @override |
| 824 @failingTest |
| 825 void test_parseCompilationUnitMember_getter_external_type() { |
| 826 // TODO(paulberry): Unhandled event: TopLevelMethod |
| 827 super.test_parseCompilationUnitMember_getter_external_type(); |
| 828 } |
| 829 |
| 830 @override |
| 831 @failingTest |
| 832 void test_parseCompilationUnitMember_getter_noType() { |
| 833 // TODO(paulberry): Unhandled event: TopLevelMethod |
| 834 super.test_parseCompilationUnitMember_getter_noType(); |
| 835 } |
| 836 |
| 837 @override |
| 838 @failingTest |
| 839 void test_parseCompilationUnitMember_getter_type() { |
| 840 // TODO(paulberry): Unhandled event: TopLevelMethod |
| 841 super.test_parseCompilationUnitMember_getter_type(); |
| 842 } |
| 843 |
| 844 @override |
| 845 @failingTest |
| 846 void test_parseCompilationUnitMember_setter_external_noType() { |
| 847 // TODO(paulberry): Unhandled event: TopLevelMethod |
| 848 super.test_parseCompilationUnitMember_setter_external_noType(); |
| 849 } |
| 850 |
| 851 @override |
| 852 @failingTest |
| 853 void test_parseCompilationUnitMember_setter_external_type() { |
| 854 // TODO(paulberry): Unhandled event: VoidKeyword |
| 855 super.test_parseCompilationUnitMember_setter_external_type(); |
| 856 } |
| 857 |
| 858 @override |
| 859 @failingTest |
| 860 void test_parseCompilationUnitMember_setter_noType() { |
| 861 // TODO(paulberry): Unhandled event: TopLevelMethod |
| 862 super.test_parseCompilationUnitMember_setter_noType(); |
| 863 } |
| 864 |
| 865 @override |
| 866 @failingTest |
| 867 void test_parseCompilationUnitMember_setter_type() { |
| 868 // TODO(paulberry): Unhandled event: VoidKeyword |
| 869 super.test_parseCompilationUnitMember_setter_type(); |
| 870 } |
| 871 |
| 872 @override |
| 873 @failingTest |
| 874 void test_parseCompilationUnitMember_typeAlias_abstract() { |
| 875 // TODO(paulberry): Unhandled event: TypeList |
| 876 super.test_parseCompilationUnitMember_typeAlias_abstract(); |
| 877 } |
| 878 |
| 879 @override |
| 880 @failingTest |
| 881 void test_parseCompilationUnitMember_typeAlias_generic() { |
| 882 // TODO(paulberry): Unhandled event: TypeVariable |
| 883 super.test_parseCompilationUnitMember_typeAlias_generic(); |
| 884 } |
| 885 |
| 886 @override |
| 887 @failingTest |
| 888 void test_parseCompilationUnitMember_typeAlias_implements() { |
| 889 // TODO(paulberry): Unhandled event: TypeList |
| 890 super.test_parseCompilationUnitMember_typeAlias_implements(); |
| 891 } |
| 892 |
| 893 @override |
| 894 @failingTest |
| 895 void test_parseCompilationUnitMember_typeAlias_noImplements() { |
| 896 // TODO(paulberry): Unhandled event: TypeList |
| 897 super.test_parseCompilationUnitMember_typeAlias_noImplements(); |
| 898 } |
| 899 |
| 900 @override |
| 901 @failingTest |
| 902 void test_parseCompilationUnitMember_typedef() { |
| 903 // TODO(paulberry): Unhandled event: FunctionTypeAlias |
| 904 super.test_parseCompilationUnitMember_typedef(); |
| 905 } |
| 906 |
| 907 @override |
| 908 @failingTest |
| 909 void test_parseCompilationUnitMember_variable() { |
| 910 // TODO(paulberry): Unhandled event: FieldInitializer |
| 911 super.test_parseCompilationUnitMember_variable(); |
| 912 } |
| 913 |
| 914 @override |
| 915 @failingTest |
| 916 void test_parseCompilationUnitMember_variableGet() { |
| 917 // TODO(paulberry): Unhandled event: FieldInitializer |
| 918 super.test_parseCompilationUnitMember_variableGet(); |
| 919 } |
| 920 |
| 921 @override |
| 922 @failingTest |
| 923 void test_parseCompilationUnitMember_variableSet() { |
| 924 // TODO(paulberry): Unhandled event: FieldInitializer |
| 925 super.test_parseCompilationUnitMember_variableSet(); |
| 926 } |
| 927 |
| 928 @override |
| 929 @failingTest |
| 930 void test_parseDirective_export() { |
| 931 // TODO(paulberry): Unhandled event: Export |
| 932 super.test_parseDirective_export(); |
| 933 } |
| 934 |
| 935 @override |
| 936 @failingTest |
| 937 void test_parseDirective_import() { |
| 938 // TODO(paulberry): Unhandled event: Import |
| 939 super.test_parseDirective_import(); |
| 940 } |
| 941 |
| 942 @override |
| 943 @failingTest |
| 944 void test_parseDirective_library() { |
| 945 // TODO(paulberry): Unhandled event: LibraryName |
| 946 super.test_parseDirective_library(); |
| 947 } |
| 948 |
| 949 @override |
| 950 @failingTest |
| 951 void test_parseDirective_part() { |
| 952 // TODO(paulberry): Unhandled event: Part |
| 953 super.test_parseDirective_part(); |
| 954 } |
| 955 |
| 956 @override |
| 957 @failingTest |
| 958 void test_parseDirective_partOf() { |
| 959 // TODO(paulberry): Unhandled event: PartOf |
| 960 super.test_parseDirective_partOf(); |
| 961 } |
| 962 |
| 963 @override |
| 964 @failingTest |
| 965 void test_parseDirectives_complete() { |
| 966 // TODO(paulberry): Unhandled event: LibraryName |
| 967 super.test_parseDirectives_complete(); |
| 968 } |
| 969 |
| 970 @override |
| 971 @failingTest |
| 972 void test_parseDirectives_empty() { |
| 973 // TODO(paulberry): No objects placed on stack |
| 974 super.test_parseDirectives_empty(); |
| 975 } |
| 976 |
| 977 @override |
| 978 @failingTest |
| 979 void test_parseDirectives_mixed() { |
| 980 // TODO(paulberry): Unhandled event: LibraryName |
| 981 super.test_parseDirectives_mixed(); |
| 982 } |
| 983 |
| 984 @override |
| 985 @failingTest |
| 986 void test_parseDirectives_multiple() { |
| 987 // TODO(paulberry): Unhandled event: LibraryName |
| 988 super.test_parseDirectives_multiple(); |
| 989 } |
| 990 |
| 991 @override |
| 992 @failingTest |
| 993 void test_parseDirectives_script() { |
| 994 // TODO(paulberry): No objects placed on stack |
| 995 super.test_parseDirectives_script(); |
| 996 } |
| 997 |
| 998 @override |
| 999 @failingTest |
| 1000 void test_parseDirectives_single() { |
| 1001 // TODO(paulberry): Unhandled event: LibraryName |
| 1002 super.test_parseDirectives_single(); |
| 1003 } |
| 1004 |
| 1005 @override |
| 1006 @failingTest |
| 1007 void test_parseDirectives_topLevelDeclaration() { |
| 1008 // TODO(paulberry): Unhandled event: ClassBody |
| 1009 super.test_parseDirectives_topLevelDeclaration(); |
| 1010 } |
| 1011 |
| 1012 @override |
| 1013 @failingTest |
| 1014 void test_parseEnumDeclaration_one() { |
| 1015 // TODO(paulberry): Unhandled event: Enum |
| 1016 super.test_parseEnumDeclaration_one(); |
| 1017 } |
| 1018 |
| 1019 @override |
| 1020 @failingTest |
| 1021 void test_parseEnumDeclaration_trailingComma() { |
| 1022 // TODO(paulberry): Unhandled event: Enum |
| 1023 super.test_parseEnumDeclaration_trailingComma(); |
| 1024 } |
| 1025 |
| 1026 @override |
| 1027 @failingTest |
| 1028 void test_parseEnumDeclaration_two() { |
| 1029 // TODO(paulberry): Unhandled event: Enum |
| 1030 super.test_parseEnumDeclaration_two(); |
| 1031 } |
| 1032 |
| 1033 @override |
| 1034 @failingTest |
| 1035 void test_parseExportDirective_configuration_multiple() { |
| 1036 // TODO(paulberry): Unhandled event: Export |
| 1037 super.test_parseExportDirective_configuration_multiple(); |
| 1038 } |
| 1039 |
| 1040 @override |
| 1041 @failingTest |
| 1042 void test_parseExportDirective_configuration_single() { |
| 1043 // TODO(paulberry): Unhandled event: Export |
| 1044 super.test_parseExportDirective_configuration_single(); |
| 1045 } |
| 1046 |
| 1047 @override |
| 1048 @failingTest |
| 1049 void test_parseExportDirective_hide() { |
| 1050 // TODO(paulberry): Unhandled event: IdentifierList |
| 1051 super.test_parseExportDirective_hide(); |
| 1052 } |
| 1053 |
| 1054 @override |
| 1055 @failingTest |
| 1056 void test_parseExportDirective_hide_show() { |
| 1057 // TODO(paulberry): Unhandled event: IdentifierList |
| 1058 super.test_parseExportDirective_hide_show(); |
| 1059 } |
| 1060 |
| 1061 @override |
| 1062 @failingTest |
| 1063 void test_parseExportDirective_noCombinator() { |
| 1064 // TODO(paulberry): Unhandled event: Export |
| 1065 super.test_parseExportDirective_noCombinator(); |
| 1066 } |
| 1067 |
| 1068 @override |
| 1069 @failingTest |
| 1070 void test_parseExportDirective_show() { |
| 1071 // TODO(paulberry): Unhandled event: IdentifierList |
| 1072 super.test_parseExportDirective_show(); |
| 1073 } |
| 1074 |
| 1075 @override |
| 1076 @failingTest |
| 1077 void test_parseExportDirective_show_hide() { |
| 1078 // TODO(paulberry): Unhandled event: IdentifierList |
| 1079 super.test_parseExportDirective_show_hide(); |
| 1080 } |
| 1081 |
| 1082 @override |
| 1083 @failingTest |
| 1084 void test_parseFunctionDeclaration_function() { |
| 1085 // TODO(paulberry): Unhandled event: TopLevelMethod |
| 1086 super.test_parseFunctionDeclaration_function(); |
| 1087 } |
| 1088 |
| 1089 @override |
| 1090 @failingTest |
| 1091 void test_parseFunctionDeclaration_functionWithTypeParameters() { |
| 1092 // TODO(paulberry): Unhandled event: TypeVariable |
| 1093 super.test_parseFunctionDeclaration_functionWithTypeParameters(); |
| 1094 } |
| 1095 |
| 1096 @override |
| 1097 @failingTest |
| 1098 void test_parseFunctionDeclaration_functionWithTypeParameters_comment() { |
| 1099 // TODO(paulberry,ahe): generic method comment syntax is not supported by |
| 1100 // Fasta. |
| 1101 super.test_parseFunctionDeclaration_functionWithTypeParameters_comment(); |
| 1102 } |
| 1103 |
| 1104 @override |
| 1105 @failingTest |
| 1106 void test_parseFunctionDeclaration_getter() { |
| 1107 // TODO(paulberry): Unhandled event: TopLevelMethod |
| 1108 super.test_parseFunctionDeclaration_getter(); |
| 1109 } |
| 1110 |
| 1111 @override |
| 1112 @failingTest |
| 1113 void test_parseFunctionDeclaration_setter() { |
| 1114 // TODO(paulberry): Unhandled event: TopLevelMethod |
| 1115 super.test_parseFunctionDeclaration_setter(); |
| 1116 } |
| 1117 |
| 1118 @override |
| 1119 @failingTest |
| 1120 void test_parseImportDirective_configuration_multiple() { |
| 1121 // TODO(paulberry): Unhandled event: Import |
| 1122 super.test_parseImportDirective_configuration_multiple(); |
| 1123 } |
| 1124 |
| 1125 @override |
| 1126 @failingTest |
| 1127 void test_parseImportDirective_configuration_single() { |
| 1128 // TODO(paulberry): Unhandled event: Import |
| 1129 super.test_parseImportDirective_configuration_single(); |
| 1130 } |
| 1131 |
| 1132 @override |
| 1133 @failingTest |
| 1134 void test_parseImportDirective_deferred() { |
| 1135 // TODO(paulberry): Unhandled event: Import |
| 1136 super.test_parseImportDirective_deferred(); |
| 1137 } |
| 1138 |
| 1139 @override |
| 1140 @failingTest |
| 1141 void test_parseImportDirective_hide() { |
| 1142 // TODO(paulberry): Unhandled event: IdentifierList |
| 1143 super.test_parseImportDirective_hide(); |
| 1144 } |
| 1145 |
| 1146 @override |
| 1147 @failingTest |
| 1148 void test_parseImportDirective_noCombinator() { |
| 1149 // TODO(paulberry): Unhandled event: Import |
| 1150 super.test_parseImportDirective_noCombinator(); |
| 1151 } |
| 1152 |
| 1153 @override |
| 1154 @failingTest |
| 1155 void test_parseImportDirective_prefix() { |
| 1156 // TODO(paulberry): Unhandled event: Import |
| 1157 super.test_parseImportDirective_prefix(); |
| 1158 } |
| 1159 |
| 1160 @override |
| 1161 @failingTest |
| 1162 void test_parseImportDirective_prefix_hide_show() { |
| 1163 // TODO(paulberry): Unhandled event: IdentifierList |
| 1164 super.test_parseImportDirective_prefix_hide_show(); |
| 1165 } |
| 1166 |
| 1167 @override |
| 1168 @failingTest |
| 1169 void test_parseImportDirective_prefix_show_hide() { |
| 1170 // TODO(paulberry): Unhandled event: IdentifierList |
| 1171 super.test_parseImportDirective_prefix_show_hide(); |
| 1172 } |
| 1173 |
| 1174 @override |
| 1175 @failingTest |
| 1176 void test_parseImportDirective_show() { |
| 1177 // TODO(paulberry): Unhandled event: IdentifierList |
| 1178 super.test_parseImportDirective_show(); |
| 1179 } |
| 1180 |
| 1181 @override |
| 1182 @failingTest |
| 1183 void test_parseLibraryDirective() { |
| 1184 // TODO(paulberry): Unhandled event: LibraryName |
| 1185 super.test_parseLibraryDirective(); |
| 1186 } |
| 1187 |
| 1188 @override |
| 1189 @failingTest |
| 1190 void test_parsePartDirective() { |
| 1191 // TODO(paulberry): Unhandled event: Part |
| 1192 super.test_parsePartDirective(); |
| 1193 } |
| 1194 |
| 1195 @override |
| 1196 @failingTest |
| 1197 void test_parsePartOfDirective_name() { |
| 1198 // TODO(paulberry): Unhandled event: PartOf |
| 1199 super.test_parsePartOfDirective_name(); |
| 1200 } |
| 1201 |
| 1202 @override |
| 1203 @failingTest |
| 1204 void test_parsePartOfDirective_uri() { |
| 1205 // TODO(paulberry,ahe): URIs in "part of" declarations are not supported by |
| 1206 // Fasta. |
| 1207 super.test_parsePartOfDirective_uri(); |
| 1208 } |
| 1209 |
| 1210 @override |
| 1211 @failingTest |
| 1212 void test_parseTypeAlias_function_noParameters() { |
| 1213 // TODO(paulberry): Unhandled event: FunctionTypeAlias |
| 1214 super.test_parseTypeAlias_function_noParameters(); |
| 1215 } |
| 1216 |
| 1217 @override |
| 1218 @failingTest |
| 1219 void test_parseTypeAlias_function_noReturnType() { |
| 1220 // TODO(paulberry): Unhandled event: FunctionTypeAlias |
| 1221 super.test_parseTypeAlias_function_noReturnType(); |
| 1222 } |
| 1223 |
| 1224 @override |
| 1225 @failingTest |
| 1226 void test_parseTypeAlias_function_parameterizedReturnType() { |
| 1227 // TODO(paulberry): Unhandled event: TypeArguments |
| 1228 super.test_parseTypeAlias_function_parameterizedReturnType(); |
| 1229 } |
| 1230 |
| 1231 @override |
| 1232 @failingTest |
| 1233 void test_parseTypeAlias_function_parameters() { |
| 1234 // TODO(paulberry): Unhandled event: FunctionTypeAlias |
| 1235 super.test_parseTypeAlias_function_parameters(); |
| 1236 } |
| 1237 |
| 1238 @override |
| 1239 @failingTest |
| 1240 void test_parseTypeAlias_function_typeParameters() { |
| 1241 // TODO(paulberry): Unhandled event: TypeVariable |
| 1242 super.test_parseTypeAlias_function_typeParameters(); |
| 1243 } |
| 1244 |
| 1245 @override |
| 1246 @failingTest |
| 1247 void test_parseTypeAlias_function_voidReturnType() { |
| 1248 // TODO(paulberry): Unhandled event: VoidKeyword |
| 1249 super.test_parseTypeAlias_function_voidReturnType(); |
| 1250 } |
| 1251 } |
| OLD | NEW |