Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(900)

Side by Side Diff: pkg/analyzer2dart/lib/src/modely.dart

Issue 641923003: Remove the need for functionSignature. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Updated cf. comments Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | sdk/lib/_internal/compiler/implementation/dart_backend/backend_ast_emitter.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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 }
OLDNEW
« no previous file with comments | « no previous file | sdk/lib/_internal/compiler/implementation/dart_backend/backend_ast_emitter.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698