| 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/ast/standard_ast_factory.dart'; | 6 import 'package:analyzer/dart/ast/standard_ast_factory.dart'; |
| 7 import 'package:analyzer/dart/ast/token.dart'; | 7 import 'package:analyzer/dart/ast/token.dart'; |
| 8 import 'package:analyzer/dart/element/element.dart'; | 8 import 'package:analyzer/dart/element/element.dart'; |
| 9 import 'package:analyzer/dart/element/type.dart'; | 9 import 'package:analyzer/dart/element/type.dart'; |
| 10 import 'package:analyzer/src/dart/element/element.dart'; | 10 import 'package:analyzer/src/dart/element/element.dart'; |
| (...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 476 } | 476 } |
| 477 return new _ExprBuilder(this).buildInitializer(k); | 477 return new _ExprBuilder(this).buildInitializer(k); |
| 478 } | 478 } |
| 479 | 479 |
| 480 @override | 480 @override |
| 481 Expression getExpression(kernel.Expression expression) { | 481 Expression getExpression(kernel.Expression expression) { |
| 482 return new _ExprBuilder(this).build(expression); | 482 return new _ExprBuilder(this).build(expression); |
| 483 } | 483 } |
| 484 | 484 |
| 485 @override | 485 @override |
| 486 List<List<kernel.VariableDeclaration>> getFunctionTypeParameters( |
| 487 kernel.FunctionType type) { |
| 488 int positionalCount = type.positionalParameters.length; |
| 489 var positionalParameters = |
| 490 new List<kernel.VariableDeclaration>(positionalCount); |
| 491 for (int i = 0; i < positionalCount; i++) { |
| 492 String name = i < type.positionalParameterNames.length |
| 493 ? type.positionalParameterNames[i] |
| 494 : 'arg_$i'; |
| 495 positionalParameters[i] = new kernel.VariableDeclaration(name, |
| 496 type: type.positionalParameters[i]); |
| 497 } |
| 498 |
| 499 var namedParameters = type.namedParameters |
| 500 .map((k) => new kernel.VariableDeclaration(k.name, type: k.type)) |
| 501 .toList(growable: false); |
| 502 |
| 503 return [positionalParameters, namedParameters]; |
| 504 } |
| 505 |
| 506 @override |
| 486 InterfaceType getInterfaceType( | 507 InterfaceType getInterfaceType( |
| 487 ElementImpl context, kernel.Supertype kernelType) { | 508 ElementImpl context, kernel.Supertype kernelType) { |
| 488 return _getInterfaceType( | 509 return _getInterfaceType( |
| 489 context, kernelType.className.canonicalName, kernelType.typeArguments); | 510 context, kernelType.className.canonicalName, kernelType.typeArguments); |
| 490 } | 511 } |
| 491 | 512 |
| 492 @override | 513 @override |
| 493 LibraryElement getLibrary(String uriStr) { | 514 LibraryElement getLibrary(String uriStr) { |
| 494 return _resynthesizer.getLibrary(uriStr); | 515 return _resynthesizer.getLibrary(uriStr); |
| 495 } | 516 } |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 533 } | 554 } |
| 534 | 555 |
| 535 if (kernelType is kernel.FunctionType) { | 556 if (kernelType is kernel.FunctionType) { |
| 536 var functionElement = new FunctionElementImpl.synthetic([], null); | 557 var functionElement = new FunctionElementImpl.synthetic([], null); |
| 537 functionElement.enclosingElement = context; | 558 functionElement.enclosingElement = context; |
| 538 | 559 |
| 539 functionElement.typeParameters = kernelType.typeParameters.map((k) { | 560 functionElement.typeParameters = kernelType.typeParameters.map((k) { |
| 540 return new TypeParameterElementImpl.forKernel(functionElement, k); | 561 return new TypeParameterElementImpl.forKernel(functionElement, k); |
| 541 }).toList(growable: false); | 562 }).toList(growable: false); |
| 542 | 563 |
| 564 var parameters = getFunctionTypeParameters(kernelType); |
| 543 functionElement.parameters = ParameterElementImpl.forKernelParameters( | 565 functionElement.parameters = ParameterElementImpl.forKernelParameters( |
| 544 functionElement, | 566 functionElement, |
| 545 kernelType.requiredParameterCount, | 567 kernelType.requiredParameterCount, |
| 546 kernelType.positionalParameters | 568 parameters[0], |
| 547 .map((t) => new kernel.VariableDeclaration(null, type: t)) | 569 parameters[1]); |
| 548 .toList(), | |
| 549 kernelType.namedParameters | |
| 550 .map((t) => new kernel.VariableDeclaration(t.name, type: t.type)) | |
| 551 .toList()); | |
| 552 | 570 |
| 553 functionElement.returnType = | 571 functionElement.returnType = |
| 554 getType(functionElement, kernelType.returnType); | 572 getType(functionElement, kernelType.returnType); |
| 555 return functionElement.type; | 573 return functionElement.type; |
| 556 } | 574 } |
| 557 | 575 |
| 558 // TODO(scheglov) Support other kernel types. | 576 // TODO(scheglov) Support other kernel types. |
| 559 throw new UnimplementedError('For ${kernelType.runtimeType}'); | 577 throw new UnimplementedError('For ${kernelType.runtimeType}'); |
| 560 } | 578 } |
| 561 | 579 |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 687 for (var typeParameter in ctx.typeParameters) { | 705 for (var typeParameter in ctx.typeParameters) { |
| 688 if (typeParameter.name == name) { | 706 if (typeParameter.name == name) { |
| 689 return typeParameter; | 707 return typeParameter; |
| 690 } | 708 } |
| 691 } | 709 } |
| 692 } | 710 } |
| 693 } | 711 } |
| 694 throw new StateError('Not found $kernelTypeParameter in $context'); | 712 throw new StateError('Not found $kernelTypeParameter in $context'); |
| 695 } | 713 } |
| 696 } | 714 } |
| OLD | NEW |