| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 part of analyzer2dart.element_converter; | 5 part of analyzer2dart.element_converter; |
| 6 | 6 |
| 7 | 7 |
| 8 /// Base [dart2js.Element] implementation for converted analyzer elements. | 8 /// Base [dart2js.Element] implementation for converted analyzer elements. |
| 9 class ElementY extends dart2js.Element { | 9 class ElementY extends dart2js.Element { |
| 10 final ElementConverter converter; | 10 final ElementConverter converter; |
| (...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 // TODO(johnniwinther): Ensure the correct semantics of this. | 343 // TODO(johnniwinther): Ensure the correct semantics of this. |
| 344 @override | 344 @override |
| 345 bool get isAbstract => false; | 345 bool get isAbstract => false; |
| 346 } | 346 } |
| 347 | 347 |
| 348 class TopLevelFunctionElementY extends ElementY | 348 class TopLevelFunctionElementY extends ElementY |
| 349 with AnalyzableElementY, AstElementY, TopLevelElementMixin | 349 with AnalyzableElementY, AstElementY, TopLevelElementMixin |
| 350 implements dart2js.FunctionElement { | 350 implements dart2js.FunctionElement { |
| 351 analyzer.FunctionElement get element => super.element; | 351 analyzer.FunctionElement get element => super.element; |
| 352 | 352 |
| 353 dart2js.FunctionSignature _functionSignature; | |
| 354 | |
| 355 // TODO(johnniwinther): Avoid the need for these. | |
| 356 @override | |
| 357 dart2js.FunctionSignature get functionSignature { | |
| 358 if (_functionSignature == null) { | |
| 359 util.LinkBuilder<dart2js.Element> parameterBuilder = | |
| 360 new util.LinkBuilder<dart2js.Element>(); | |
| 361 List<dart2js.DartType> parameterTypes = <dart2js.DartType>[]; | |
| 362 element.parameters.forEach((analyzer.ParameterElement parameter) { | |
| 363 if (parameter.parameterKind.isOptional) { | |
| 364 unsupported('Optional parameter.'); | |
| 365 } else { | |
| 366 dart2js.ParameterElement convertedParameter = | |
| 367 converter.convertElement(parameter); | |
| 368 parameterBuilder.addLast(convertedParameter); | |
| 369 parameterTypes.add(convertedParameter.type); | |
| 370 } | |
| 371 }); | |
| 372 // TODO(johnniwinther): Convert parameter and return types. | |
| 373 util.Link<dart2js.Element> parameters = parameterBuilder.toLink(); | |
| 374 _functionSignature = new modelx.FunctionSignatureX( | |
| 375 parameters, | |
| 376 const util.Link<dart2js.Element>(), | |
| 377 parameterBuilder.length, 0, false, | |
| 378 parameters.toList(), | |
| 379 new dart2js.FunctionType.synthesized( | |
| 380 converter.convertType(element.returnType), | |
| 381 parameterTypes)); | |
| 382 } | |
| 383 return _functionSignature; | |
| 384 } | |
| 385 | |
| 386 @override | |
| 387 bool get hasFunctionSignature => true; | |
| 388 | |
| 389 @override | 353 @override |
| 390 dart2js.ElementKind get kind => dart2js.ElementKind.FUNCTION; | 354 dart2js.ElementKind get kind => dart2js.ElementKind.FUNCTION; |
| 391 | 355 |
| 356 @override |
| 357 dart2js.FunctionType get type => converter.convertType(element.type); |
| 358 |
| 392 TopLevelFunctionElementY(ElementConverter converter, | 359 TopLevelFunctionElementY(ElementConverter converter, |
| 393 analyzer.FunctionElement element) | 360 analyzer.FunctionElement element) |
| 394 : super(converter, element); | 361 : super(converter, element); |
| 395 | 362 |
| 396 @override | 363 @override |
| 397 get abstractField => unsupported('abstractField'); | 364 get abstractField => unsupported('abstractField'); |
| 398 | 365 |
| 399 @override | 366 @override |
| 400 computeSignature(_) => unsupported('computeSignature'); | 367 computeSignature(_) => unsupported('computeSignature'); |
| 401 | 368 |
| 402 @override | 369 @override |
| 403 get memberContext => unsupported('memberContext'); | 370 get memberContext => unsupported('memberContext'); |
| 404 | 371 |
| 405 @override | 372 @override |
| 406 dart2js.FunctionType get type => functionSignature.type; | 373 get functionSignature => unsupported('functionSignature'); |
| 374 |
| 375 @override |
| 376 bool get hasFunctionSignature => unsupported('hasFunctionSignature'); |
| 407 } | 377 } |
| 408 | 378 |
| 409 class ParameterElementY extends ElementY | 379 class ParameterElementY extends ElementY |
| 410 with AnalyzableElementY, AstElementY | 380 with AnalyzableElementY, AstElementY |
| 411 implements dart2js.ParameterElement { | 381 implements dart2js.ParameterElement { |
| 412 | 382 |
| 413 analyzer.ParameterElement get element => super.element; | 383 analyzer.ParameterElement get element => super.element; |
| 414 | 384 |
| 415 @override | 385 @override |
| 416 dart2js.ElementKind get kind => dart2js.ElementKind.PARAMETER; | 386 dart2js.ElementKind get kind => dart2js.ElementKind.PARAMETER; |
| 417 | 387 |
| 418 @override | 388 @override |
| 419 dart2js.DartType get type => converter.convertType(element.type); | 389 dart2js.DartType get type => converter.convertType(element.type); |
| 420 | 390 |
| 421 // TODO(johnniwinther): Avoid the need for this. | |
| 422 @override | |
| 423 dart2js.FunctionSignature get functionSignature => null; | |
| 424 | |
| 425 @override | 391 @override |
| 426 bool get isLocal => true; | 392 bool get isLocal => true; |
| 427 | 393 |
| 428 @override | 394 @override |
| 429 bool get isStatic => false; | 395 bool get isStatic => false; |
| 430 | 396 |
| 431 @override | 397 @override |
| 432 bool get isConst => false; | 398 bool get isConst => false; |
| 433 | 399 |
| 434 ParameterElementY(ElementConverter converter, | 400 ParameterElementY(ElementConverter converter, |
| 435 analyzer.ParameterElement element) | 401 analyzer.ParameterElement element) |
| 436 : super(converter, element) { | 402 : super(converter, element) { |
| 437 assert(!element.isInitializingFormal); | 403 assert(!element.isInitializingFormal); |
| 438 } | 404 } |
| 439 | 405 |
| 440 @override | 406 @override |
| 441 get executableContext => unsupported('executableContext'); | 407 get executableContext => unsupported('executableContext'); |
| 442 | 408 |
| 443 @override | 409 @override |
| 444 get functionDeclaration => unsupported('functionDeclaration'); | 410 get functionDeclaration => unsupported('functionDeclaration'); |
| 445 | 411 |
| 446 @override | 412 @override |
| 447 get initializer => unsupported('initializer'); | 413 get initializer => unsupported('initializer'); |
| 448 | 414 |
| 449 @override | 415 @override |
| 450 get memberContext => unsupported('memberContext'); | 416 get memberContext => unsupported('memberContext'); |
| 417 |
| 418 @override |
| 419 get functionSignature => unsupported('functionSignature'); |
| 451 } | 420 } |
| 452 | 421 |
| 453 class TypeDeclarationElementY extends ElementY | 422 class TypeDeclarationElementY extends ElementY |
| 454 with AnalyzableElementY, AstElementY | 423 with AnalyzableElementY, AstElementY |
| 455 implements dart2js.TypeDeclarationElement { | 424 implements dart2js.TypeDeclarationElement { |
| 456 | 425 |
| 457 TypeDeclarationElementY(ElementConverter converter, | 426 TypeDeclarationElementY(ElementConverter converter, |
| 458 analyzer.Element element) | 427 analyzer.Element element) |
| 459 : super(converter, element); | 428 : super(converter, element); |
| 460 | 429 |
| (...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 682 | 651 |
| 683 @override | 652 @override |
| 684 get initializer => unsupported('initializer'); | 653 get initializer => unsupported('initializer'); |
| 685 | 654 |
| 686 @override | 655 @override |
| 687 get memberContext => unsupported('memberContext'); | 656 get memberContext => unsupported('memberContext'); |
| 688 | 657 |
| 689 @override | 658 @override |
| 690 get nestedClosures => unsupported('nestedClosures'); | 659 get nestedClosures => unsupported('nestedClosures'); |
| 691 } | 660 } |
| OLD | NEW |