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

Side by Side Diff: sdk/lib/_internal/compiler/implementation/resolution/members.dart

Issue 11854009: Change spanFromNode to spanFromSpannable. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Rebased Created 7 years, 11 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 | « sdk/lib/_internal/compiler/implementation/mirrors/dart2js_mirror.dart ('k') | no next file » | 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 resolution; 5 part of resolution;
6 6
7 abstract class TreeElements { 7 abstract class TreeElements {
8 Element operator[](Node node); 8 Element operator[](Node node);
9 Selector getSelector(Send send); 9 Selector getSelector(Send send);
10 DartType getType(Node node); 10 DartType getType(Node node);
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 * Load and resolve the supertypes of [cls]. 384 * Load and resolve the supertypes of [cls].
385 * 385 *
386 * Warning: do not call this method directly. It should only be 386 * Warning: do not call this method directly. It should only be
387 * called by [resolveClass] and [ClassSupertypeResolver]. 387 * called by [resolveClass] and [ClassSupertypeResolver].
388 */ 388 */
389 void loadSupertypes(ClassElement cls, Node from) { 389 void loadSupertypes(ClassElement cls, Node from) {
390 compiler.withCurrentElement(cls, () => measure(() { 390 compiler.withCurrentElement(cls, () => measure(() {
391 if (cls.supertypeLoadState == STATE_DONE) return; 391 if (cls.supertypeLoadState == STATE_DONE) return;
392 if (cls.supertypeLoadState == STATE_STARTED) { 392 if (cls.supertypeLoadState == STATE_STARTED) {
393 compiler.reportMessage( 393 compiler.reportMessage(
394 compiler.spanFromNode(from), 394 compiler.spanFromSpannable(from),
395 MessageKind.CYCLIC_CLASS_HIERARCHY.error([cls.name]), 395 MessageKind.CYCLIC_CLASS_HIERARCHY.error([cls.name]),
396 Diagnostic.ERROR); 396 Diagnostic.ERROR);
397 cls.supertypeLoadState = STATE_DONE; 397 cls.supertypeLoadState = STATE_DONE;
398 cls.allSupertypes = const Link<DartType>().prepend( 398 cls.allSupertypes = const Link<DartType>().prepend(
399 compiler.objectClass.computeType(compiler)); 399 compiler.objectClass.computeType(compiler));
400 // TODO(ahe): We should also set cls.supertype here to avoid 400 // TODO(ahe): We should also set cls.supertype here to avoid
401 // creating a malformed class hierarchy. 401 // creating a malformed class hierarchy.
402 return; 402 return;
403 } 403 }
404 cls.supertypeLoadState = STATE_STARTED; 404 cls.supertypeLoadState = STATE_STARTED;
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
632 if (signature.requiredParameterCount != requiredParameterCount) { 632 if (signature.requiredParameterCount != requiredParameterCount) {
633 Node errorNode = node; 633 Node errorNode = node;
634 if (node.parameters != null) { 634 if (node.parameters != null) {
635 if (signature.requiredParameterCount < requiredParameterCount) { 635 if (signature.requiredParameterCount < requiredParameterCount) {
636 errorNode = node.parameters; 636 errorNode = node.parameters;
637 } else { 637 } else {
638 errorNode = node.parameters.nodes.skip(requiredParameterCount).head; 638 errorNode = node.parameters.nodes.skip(requiredParameterCount).head;
639 } 639 }
640 } 640 }
641 compiler.reportMessage( 641 compiler.reportMessage(
642 compiler.spanFromNode(errorNode), 642 compiler.spanFromSpannable(errorNode),
643 messageKind.error([function.name]), 643 messageKind.error([function.name]),
644 Diagnostic.ERROR); 644 Diagnostic.ERROR);
645 } 645 }
646 if (signature.optionalParameterCount != 0) { 646 if (signature.optionalParameterCount != 0) {
647 Node errorNode = 647 Node errorNode =
648 node.parameters.nodes.skip(signature.requiredParameterCount).head; 648 node.parameters.nodes.skip(signature.requiredParameterCount).head;
649 if (signature.optionalParametersAreNamed) { 649 if (signature.optionalParametersAreNamed) {
650 compiler.reportMessage( 650 compiler.reportMessage(
651 compiler.spanFromNode(errorNode), 651 compiler.spanFromSpannable(errorNode),
652 MessageKind.OPERATOR_NAMED_PARAMETERS.error([function.name]), 652 MessageKind.OPERATOR_NAMED_PARAMETERS.error([function.name]),
653 Diagnostic.ERROR); 653 Diagnostic.ERROR);
654 } else { 654 } else {
655 compiler.reportMessage( 655 compiler.reportMessage(
656 compiler.spanFromNode(errorNode), 656 compiler.spanFromSpannable(errorNode),
657 MessageKind.OPERATOR_OPTIONAL_PARAMETERS.error([function.name]), 657 MessageKind.OPERATOR_OPTIONAL_PARAMETERS.error([function.name]),
658 Diagnostic.ERROR); 658 Diagnostic.ERROR);
659 } 659 }
660 } 660 }
661 } 661 }
662 662
663 reportErrorWithContext(Element errorneousElement, 663 reportErrorWithContext(Element errorneousElement,
664 MessageKind errorMessage, 664 MessageKind errorMessage,
665 Element contextElement, 665 Element contextElement,
666 MessageKind contextMessage) { 666 MessageKind contextMessage) {
(...skipping 751 matching lines...) Expand 10 before | Expand all | Expand 10 after
1418 inCheckContext = compiler.enableTypeAssertions, 1418 inCheckContext = compiler.enableTypeAssertions,
1419 inCatchBlock = false, 1419 inCatchBlock = false,
1420 super(compiler); 1420 super(compiler);
1421 1421
1422 ResolutionEnqueuer get world => compiler.enqueuer.resolution; 1422 ResolutionEnqueuer get world => compiler.enqueuer.resolution;
1423 1423
1424 Element lookup(Node node, SourceString name) { 1424 Element lookup(Node node, SourceString name) {
1425 Element result = scope.lookup(name); 1425 Element result = scope.lookup(name);
1426 if (!Elements.isUnresolved(result)) { 1426 if (!Elements.isUnresolved(result)) {
1427 if (!inInstanceContext && result.isInstanceMember()) { 1427 if (!inInstanceContext && result.isInstanceMember()) {
1428 compiler.reportMessage(compiler.spanFromNode(node), 1428 compiler.reportMessage(compiler.spanFromSpannable(node),
1429 MessageKind.NO_INSTANCE_AVAILABLE.error([name]), 1429 MessageKind.NO_INSTANCE_AVAILABLE.error([name]),
1430 Diagnostic.ERROR); 1430 Diagnostic.ERROR);
1431 return new ErroneousElementX(MessageKind.NO_INSTANCE_AVAILABLE, 1431 return new ErroneousElementX(MessageKind.NO_INSTANCE_AVAILABLE,
1432 [name], 1432 [name],
1433 name, enclosingElement); 1433 name, enclosingElement);
1434 } else if (result.isAmbiguous()) { 1434 } else if (result.isAmbiguous()) {
1435 AmbiguousElement ambiguous = result; 1435 AmbiguousElement ambiguous = result;
1436 compiler.reportMessage(compiler.spanFromNode(node), 1436 compiler.reportMessage(compiler.spanFromSpannable(node),
1437 ambiguous.messageKind.error(ambiguous.messageArguments), 1437 ambiguous.messageKind.error(ambiguous.messageArguments),
1438 Diagnostic.ERROR); 1438 Diagnostic.ERROR);
1439 return new ErroneousElementX(ambiguous.messageKind, 1439 return new ErroneousElementX(ambiguous.messageKind,
1440 ambiguous.messageArguments, 1440 ambiguous.messageArguments,
1441 name, enclosingElement); 1441 name, enclosingElement);
1442 } 1442 }
1443 } 1443 }
1444 return result; 1444 return result;
1445 } 1445 }
1446 1446
(...skipping 693 matching lines...) Expand 10 before | Expand all | Expand 10 after
2140 if (node.isRedirectingFactoryBody) { 2140 if (node.isRedirectingFactoryBody) {
2141 handleRedirectingFactoryBody(node); 2141 handleRedirectingFactoryBody(node);
2142 } else { 2142 } else {
2143 visit(node.expression); 2143 visit(node.expression);
2144 } 2144 }
2145 } 2145 }
2146 2146
2147 void handleRedirectingFactoryBody(Return node) { 2147 void handleRedirectingFactoryBody(Return node) {
2148 if (!enclosingElement.isFactoryConstructor()) { 2148 if (!enclosingElement.isFactoryConstructor()) {
2149 compiler.reportMessage( 2149 compiler.reportMessage(
2150 compiler.spanFromNode(node), 2150 compiler.spanFromSpannable(node),
2151 MessageKind.FACTORY_REDIRECTION_IN_NON_FACTORY.error([]), 2151 MessageKind.FACTORY_REDIRECTION_IN_NON_FACTORY.error([]),
2152 Diagnostic.ERROR); 2152 Diagnostic.ERROR);
2153 compiler.reportMessage( 2153 compiler.reportMessage(
2154 compiler.spanFromElement(enclosingElement), 2154 compiler.spanFromSpannable(enclosingElement),
2155 MessageKind.MISSING_FACTORY_KEYWORD.error([]), 2155 MessageKind.MISSING_FACTORY_KEYWORD.error([]),
2156 Diagnostic.INFO); 2156 Diagnostic.INFO);
2157 } 2157 }
2158 Element redirectionTarget = resolveRedirectingFactory(node); 2158 Element redirectionTarget = resolveRedirectingFactory(node);
2159 var type = mapping.getType(node.expression); 2159 var type = mapping.getType(node.expression);
2160 if (type is InterfaceType && !type.isRaw) { 2160 if (type is InterfaceType && !type.isRaw) {
2161 unimplemented(node.expression, 'type arguments on redirecting factory'); 2161 unimplemented(node.expression, 'type arguments on redirecting factory');
2162 } 2162 }
2163 useElement(node.expression, redirectionTarget); 2163 useElement(node.expression, redirectionTarget);
2164 FunctionElement constructor = enclosingElement; 2164 FunctionElement constructor = enclosingElement;
(...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after
2775 if (interfaceType != null) { 2775 if (interfaceType != null) {
2776 if (identical(interfaceType.kind, TypeKind.MALFORMED_TYPE)) { 2776 if (identical(interfaceType.kind, TypeKind.MALFORMED_TYPE)) {
2777 // Error has already been reported. 2777 // Error has already been reported.
2778 } else if (!identical(interfaceType.kind, TypeKind.INTERFACE)) { 2778 } else if (!identical(interfaceType.kind, TypeKind.INTERFACE)) {
2779 // TODO(johnniwinther): Handle dynamic. 2779 // TODO(johnniwinther): Handle dynamic.
2780 TypeAnnotation typeAnnotation = link.head; 2780 TypeAnnotation typeAnnotation = link.head;
2781 error(typeAnnotation.typeName, MessageKind.CLASS_NAME_EXPECTED, []); 2781 error(typeAnnotation.typeName, MessageKind.CLASS_NAME_EXPECTED, []);
2782 } else { 2782 } else {
2783 if (interfaceType == element.supertype) { 2783 if (interfaceType == element.supertype) {
2784 compiler.reportMessage( 2784 compiler.reportMessage(
2785 compiler.spanFromNode(node.superclass), 2785 compiler.spanFromSpannable(node.superclass),
2786 MessageKind.DUPLICATE_EXTENDS_IMPLEMENTS.error([interfaceType]), 2786 MessageKind.DUPLICATE_EXTENDS_IMPLEMENTS.error([interfaceType]),
2787 Diagnostic.ERROR); 2787 Diagnostic.ERROR);
2788 compiler.reportMessage( 2788 compiler.reportMessage(
2789 compiler.spanFromNode(link.head), 2789 compiler.spanFromSpannable(link.head),
2790 MessageKind.DUPLICATE_EXTENDS_IMPLEMENTS.error([interfaceType]), 2790 MessageKind.DUPLICATE_EXTENDS_IMPLEMENTS.error([interfaceType]),
2791 Diagnostic.ERROR); 2791 Diagnostic.ERROR);
2792 } 2792 }
2793 if (interfaces.contains(interfaceType)) { 2793 if (interfaces.contains(interfaceType)) {
2794 compiler.reportMessage( 2794 compiler.reportMessage(
2795 compiler.spanFromNode(link.head), 2795 compiler.spanFromSpannable(link.head),
2796 MessageKind.DUPLICATE_IMPLEMENTS.error([interfaceType]), 2796 MessageKind.DUPLICATE_IMPLEMENTS.error([interfaceType]),
2797 Diagnostic.ERROR); 2797 Diagnostic.ERROR);
2798 } 2798 }
2799 interfaces = interfaces.prepend(interfaceType); 2799 interfaces = interfaces.prepend(interfaceType);
2800 if (isBlackListed(interfaceType)) { 2800 if (isBlackListed(interfaceType)) {
2801 error(link.head, MessageKind.CANNOT_IMPLEMENT, [interfaceType]); 2801 error(link.head, MessageKind.CANNOT_IMPLEMENT, [interfaceType]);
2802 } 2802 }
2803 } 2803 }
2804 } 2804 }
2805 } 2805 }
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
2968 Element element = context.lookup(node.source); 2968 Element element = context.lookup(node.source);
2969 if (element == null) { 2969 if (element == null) {
2970 error(node, MessageKind.CANNOT_RESOLVE_TYPE, [node]); 2970 error(node, MessageKind.CANNOT_RESOLVE_TYPE, [node]);
2971 } else if (!element.impliesType()) { 2971 } else if (!element.impliesType()) {
2972 error(node, MessageKind.NOT_A_TYPE, [node]); 2972 error(node, MessageKind.NOT_A_TYPE, [node]);
2973 } else { 2973 } else {
2974 if (element.isClass()) { 2974 if (element.isClass()) {
2975 loadSupertype(element, node); 2975 loadSupertype(element, node);
2976 } else { 2976 } else {
2977 compiler.reportMessage( 2977 compiler.reportMessage(
2978 compiler.spanFromNode(node), 2978 compiler.spanFromSpannable(node),
2979 MessageKind.CLASS_NAME_EXPECTED.error([]), 2979 MessageKind.CLASS_NAME_EXPECTED.error([]),
2980 Diagnostic.ERROR); 2980 Diagnostic.ERROR);
2981 } 2981 }
2982 } 2982 }
2983 } 2983 }
2984 2984
2985 void visitSend(Send node) { 2985 void visitSend(Send node) {
2986 Identifier prefix = node.receiver.asIdentifier(); 2986 Identifier prefix = node.receiver.asIdentifier();
2987 if (prefix == null) { 2987 if (prefix == null) {
2988 error(node.receiver, MessageKind.NOT_A_PREFIX, [node.receiver]); 2988 error(node.receiver, MessageKind.NOT_A_PREFIX, [node.receiver]);
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
3195 Diagnostic.ERROR); 3195 Diagnostic.ERROR);
3196 } 3196 }
3197 } else { 3197 } else {
3198 if (element.isGetter()) { 3198 if (element.isGetter()) {
3199 if (!identical(formalParameters.getEndToken().next.stringValue, 3199 if (!identical(formalParameters.getEndToken().next.stringValue,
3200 // TODO(ahe): Remove the check for native keyword. 3200 // TODO(ahe): Remove the check for native keyword.
3201 'native')) { 3201 'native')) {
3202 if (compiler.rejectDeprecatedFeatures && 3202 if (compiler.rejectDeprecatedFeatures &&
3203 // TODO(ahe): Remove isPlatformLibrary check. 3203 // TODO(ahe): Remove isPlatformLibrary check.
3204 !element.getLibrary().isPlatformLibrary) { 3204 !element.getLibrary().isPlatformLibrary) {
3205 compiler.reportMessage(compiler.spanFromNode(formalParameters), 3205 compiler.reportMessage(compiler.spanFromSpannable(formalParameters),
3206 MessageKind.EXTRA_FORMALS.error([]), 3206 MessageKind.EXTRA_FORMALS.error([]),
3207 Diagnostic.ERROR); 3207 Diagnostic.ERROR);
3208 } else { 3208 } else {
3209 compiler.onDeprecatedFeature(formalParameters, 'getter parameters'); 3209 compiler.onDeprecatedFeature(formalParameters, 'getter parameters');
3210 } 3210 }
3211 } 3211 }
3212 } 3212 }
3213 LinkBuilder<Element> parametersBuilder = 3213 LinkBuilder<Element> parametersBuilder =
3214 visitor.analyzeNodes(formalParameters.nodes); 3214 visitor.analyzeNodes(formalParameters.nodes);
3215 requiredParameterCount = parametersBuilder.length; 3215 requiredParameterCount = parametersBuilder.length;
3216 parameters = parametersBuilder.toLink(); 3216 parameters = parametersBuilder.toLink();
3217 } 3217 }
3218 DartType returnType = compiler.resolveReturnType(element, returnNode); 3218 DartType returnType = compiler.resolveReturnType(element, returnNode);
3219 if (element.isSetter() && (requiredParameterCount != 1 || 3219 if (element.isSetter() && (requiredParameterCount != 1 ||
3220 visitor.optionalParameterCount != 0)) { 3220 visitor.optionalParameterCount != 0)) {
3221 // If there are no formal parameters, we already reported an error above. 3221 // If there are no formal parameters, we already reported an error above.
3222 if (formalParameters != null) { 3222 if (formalParameters != null) {
3223 compiler.reportMessage(compiler.spanFromNode(formalParameters), 3223 compiler.reportMessage(compiler.spanFromSpannable(formalParameters),
3224 MessageKind.ILLEGAL_SETTER_FORMALS.error([]), 3224 MessageKind.ILLEGAL_SETTER_FORMALS.error([]),
3225 Diagnostic.ERROR); 3225 Diagnostic.ERROR);
3226 } 3226 }
3227 } 3227 }
3228 return new FunctionSignatureX(parameters, 3228 return new FunctionSignatureX(parameters,
3229 visitor.optionalParameters, 3229 visitor.optionalParameters,
3230 requiredParameterCount, 3230 requiredParameterCount,
3231 visitor.optionalParameterCount, 3231 visitor.optionalParameterCount,
3232 visitor.optionalParametersAreNamed, 3232 visitor.optionalParametersAreNamed,
3233 returnType); 3233 returnType);
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
3397 return e; 3397 return e;
3398 } 3398 }
3399 3399
3400 /// Assumed to be called by [resolveRedirectingFactory]. 3400 /// Assumed to be called by [resolveRedirectingFactory].
3401 Element visitReturn(Return node) { 3401 Element visitReturn(Return node) {
3402 Node expression = node.expression; 3402 Node expression = node.expression;
3403 return finishConstructorReference(visit(expression), 3403 return finishConstructorReference(visit(expression),
3404 expression, expression); 3404 expression, expression);
3405 } 3405 }
3406 } 3406 }
OLDNEW
« no previous file with comments | « sdk/lib/_internal/compiler/implementation/mirrors/dart2js_mirror.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698