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

Side by Side Diff: pkg/analyzer/lib/src/generated/incremental_resolver.dart

Issue 1212683002: AST changes necessary for generic method support (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 6 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
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 library engine.incremental_resolver; 5 library engine.incremental_resolver;
6 6
7 import 'dart:collection'; 7 import 'dart:collection';
8 import 'dart:math' as math; 8 import 'dart:math' as math;
9 9
10 import 'package:analyzer/src/context/cache.dart' 10 import 'package:analyzer/src/context/cache.dart'
(...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after
513 return _assertEquals(elements.length, 0); 513 return _assertEquals(elements.length, 0);
514 } 514 }
515 List<FormalParameter> parameters = nodes.parameters; 515 List<FormalParameter> parameters = nodes.parameters;
516 int length = parameters.length; 516 int length = parameters.length;
517 _assertEquals(length, elements.length); 517 _assertEquals(length, elements.length);
518 for (int i = 0; i < length; i++) { 518 for (int i = 0; i < length; i++) {
519 _assertCompatibleParameter(parameters[i], elements[i]); 519 _assertCompatibleParameter(parameters[i], elements[i]);
520 } 520 }
521 } 521 }
522 522
523 /**
524 * Asserts that there is an import with the same prefix as the given
525 * [prefixNode], which exposes the given [element].
526 */
527 void _assertElementVisibleWithPrefix(
528 SimpleIdentifier prefixNode, Element element) {
529 if (prefixNode == null) {
530 return;
531 }
532 String prefixName = prefixNode.name;
533 for (ImportElement import in _enclosingLibrary.imports) {
534 if (import.prefix != null && import.prefix.name == prefixName) {
535 Namespace namespace =
536 new NamespaceBuilder().createImportNamespaceForDirective(import);
537 Iterable<Element> visibleElements = namespace.definedNames.values;
538 if (visibleElements.contains(element)) {
539 return;
540 }
541 }
542 }
543 _assertTrue(false);
544 }
545
523 void _assertEquals(Object a, Object b) { 546 void _assertEquals(Object a, Object b) {
524 if (a != b) { 547 if (a != b) {
525 throw new _DeclarationMismatchException(); 548 throw new _DeclarationMismatchException();
526 } 549 }
527 } 550 }
528 551
529 void _assertFalse(bool condition) { 552 void _assertFalse(bool condition) {
530 if (condition) { 553 if (condition) {
531 throw new _DeclarationMismatchException(); 554 throw new _DeclarationMismatchException();
532 } 555 }
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
612 _assertEquals(nodeName, 'void'); 635 _assertEquals(nodeName, 'void');
613 } else if (type.isDynamic) { 636 } else if (type.isDynamic) {
614 _assertEquals(nodeName, 'dynamic'); 637 _assertEquals(nodeName, 'dynamic');
615 } else { 638 } else {
616 // TODO(scheglov) support other types 639 // TODO(scheglov) support other types
617 logger.log('node: $node type: $type type.type: ${type.runtimeType}'); 640 logger.log('node: $node type: $type type.type: ${type.runtimeType}');
618 _assertTrue(false); 641 _assertTrue(false);
619 } 642 }
620 } 643 }
621 644
622 /**
623 * Asserts that there is an import with the same prefix as the given
624 * [prefixNode], which exposes the given [element].
625 */
626 void _assertElementVisibleWithPrefix(
627 SimpleIdentifier prefixNode, Element element) {
628 if (prefixNode == null) {
629 return;
630 }
631 String prefixName = prefixNode.name;
632 for (ImportElement import in _enclosingLibrary.imports) {
633 if (import.prefix != null && import.prefix.name == prefixName) {
634 Namespace namespace =
635 new NamespaceBuilder().createImportNamespaceForDirective(import);
636 Iterable<Element> visibleElements = namespace.definedNames.values;
637 if (visibleElements.contains(element)) {
638 return;
639 }
640 }
641 }
642 _assertTrue(false);
643 }
644
645 void _assertSameTypeParameter( 645 void _assertSameTypeParameter(
646 TypeParameter node, TypeParameterElement element) { 646 TypeParameter node, TypeParameterElement element) {
647 _assertSameType(node.bound, element.bound); 647 _assertSameType(node.bound, element.bound);
648 } 648 }
649 649
650 void _assertSameTypeParameters( 650 void _assertSameTypeParameters(
651 TypeParameterList nodesList, List<TypeParameterElement> elements) { 651 TypeParameterList nodesList, List<TypeParameterElement> elements) {
652 if (nodesList == null) { 652 if (nodesList == null) {
653 return _assertEquals(elements.length, 0); 653 return _assertEquals(elements.length, 0);
654 } 654 }
(...skipping 809 matching lines...) Expand 10 before | Expand all | Expand 10 after
1464 } 1464 }
1465 return false; 1465 return false;
1466 } 1466 }
1467 1467
1468 CompilationUnit _parseUnit(String code) { 1468 CompilationUnit _parseUnit(String code) {
1469 LoggingTimer timer = logger.startTimer(); 1469 LoggingTimer timer = logger.startTimer();
1470 try { 1470 try {
1471 Token token = _scan(code); 1471 Token token = _scan(code);
1472 RecordingErrorListener errorListener = new RecordingErrorListener(); 1472 RecordingErrorListener errorListener = new RecordingErrorListener();
1473 Parser parser = new Parser(_unitSource, errorListener); 1473 Parser parser = new Parser(_unitSource, errorListener);
1474 AnalysisOptions options = _unitElement.context.analysisOptions;
1475 parser.parseGenericMethods = options.enableGenericMethods;
1474 CompilationUnit unit = parser.parseCompilationUnit(token); 1476 CompilationUnit unit = parser.parseCompilationUnit(token);
1475 _newParseErrors = errorListener.errors; 1477 _newParseErrors = errorListener.errors;
1476 return unit; 1478 return unit;
1477 } finally { 1479 } finally {
1478 timer.stop('parse'); 1480 timer.stop('parse');
1479 } 1481 }
1480 } 1482 }
1481 1483
1482 /** 1484 /**
1483 * Attempts to resolve a documentation comment change. 1485 * Attempts to resolve a documentation comment change.
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after
1994 @override 1996 @override
1995 String toString() => name; 1997 String toString() => name;
1996 } 1998 }
1997 1999
1998 class _TokenPair { 2000 class _TokenPair {
1999 final _TokenDifferenceKind kind; 2001 final _TokenDifferenceKind kind;
2000 final Token oldToken; 2002 final Token oldToken;
2001 final Token newToken; 2003 final Token newToken;
2002 _TokenPair(this.kind, this.oldToken, this.newToken); 2004 _TokenPair(this.kind, this.oldToken, this.newToken);
2003 } 2005 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698