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

Side by Side Diff: dart/sdk/lib/_internal/compiler/implementation/elements/modelx.dart

Issue 22300007: Compute the correct signature for default constructors. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 4 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
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 library elements.modelx; 5 library elements.modelx;
6 6
7 import 'dart:collection' show LinkedHashMap; 7 import 'dart:collection' show LinkedHashMap;
8 8
9 import 'elements.dart'; 9 import 'elements.dart';
10 import '../../compiler.dart' as api; 10 import '../../compiler.dart' as api;
(...skipping 1380 matching lines...) Expand 10 before | Expand all | Expand 10 after
1391 1391
1392 /** 1392 /**
1393 * A constructor that is not defined in the source code but rather implied by 1393 * A constructor that is not defined in the source code but rather implied by
1394 * the language semantics. 1394 * the language semantics.
1395 * 1395 *
1396 * This class is used to represent default constructors and forwarding 1396 * This class is used to represent default constructors and forwarding
1397 * constructors for mixin applications. 1397 * constructors for mixin applications.
1398 */ 1398 */
1399 class SynthesizedConstructorElementX extends FunctionElementX { 1399 class SynthesizedConstructorElementX extends FunctionElementX {
1400 final FunctionElement superMember; 1400 final FunctionElement superMember;
1401 final bool isDefaultConstructor;
1401 1402
1402 SynthesizedConstructorElementX(SourceString name, 1403 SynthesizedConstructorElementX(SourceString name,
1403 this.superMember, 1404 this.superMember,
1404 Element enclosing) 1405 Element enclosing,
1406 this.isDefaultConstructor)
ngeoffray 2013/08/08 21:55:24 Did you consider a named parameter?
1405 : super(name, 1407 : super(name,
1406 ElementKind.GENERATIVE_CONSTRUCTOR, 1408 ElementKind.GENERATIVE_CONSTRUCTOR,
1407 Modifiers.EMPTY, 1409 Modifiers.EMPTY,
1408 enclosing); 1410 enclosing);
1409 1411
1410 SynthesizedConstructorElementX.forDefault(superMember, Element enclosing) 1412 SynthesizedConstructorElementX.forDefault(superMember, Element enclosing)
1411 : this(const SourceString(''), superMember, enclosing); 1413 : this(const SourceString(''), superMember, enclosing, true);
1412 1414
1413 Token position() => enclosingElement.position(); 1415 Token position() => enclosingElement.position();
1414 1416
1415 bool get isSynthesized => true; 1417 bool get isSynthesized => true;
1416 1418
1417 FunctionElement get targetConstructor => superMember; 1419 FunctionElement get targetConstructor => superMember;
1418 1420
1419 FunctionSignature computeSignature(compiler) { 1421 FunctionSignature computeSignature(compiler) {
1422 if (isDefaultConstructor) {
1423 return new FunctionSignatureX(
1424 const Link<Element>(), const Link<Element>(), 0, 0, false,
1425 getEnclosingClass().thisType);
1426 }
1420 if (superMember.isErroneous()) { 1427 if (superMember.isErroneous()) {
1421 return compiler.objectClass.localLookup( 1428 return compiler.objectClass.localLookup(
1422 const SourceString('')).computeSignature(compiler); 1429 const SourceString('')).computeSignature(compiler);
1423 } 1430 }
1424 return superMember.computeSignature(compiler); 1431 return superMember.computeSignature(compiler);
1425 } 1432 }
1426 1433
1427 get declaration => this; 1434 get declaration => this;
1428 get implementation => this; 1435 get implementation => this;
1429 get defaultImplementation => this; 1436 get defaultImplementation => this;
(...skipping 749 matching lines...) Expand 10 before | Expand all | Expand 10 after
2179 2186
2180 MetadataAnnotation ensureResolved(Compiler compiler) { 2187 MetadataAnnotation ensureResolved(Compiler compiler) {
2181 if (resolutionState == STATE_NOT_STARTED) { 2188 if (resolutionState == STATE_NOT_STARTED) {
2182 compiler.resolver.resolveMetadataAnnotation(this); 2189 compiler.resolver.resolveMetadataAnnotation(this);
2183 } 2190 }
2184 return this; 2191 return this;
2185 } 2192 }
2186 2193
2187 String toString() => 'MetadataAnnotation($value, $resolutionState)'; 2194 String toString() => 'MetadataAnnotation($value, $resolutionState)';
2188 } 2195 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698