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

Side by Side Diff: lib/src/checker/resolver.dart

Issue 1161613005: Use analyzer's sealed type list (Closed) Base URL: https://github.com/dart-lang/dev_compiler.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
« no previous file with comments | « no previous file | 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) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 /// Encapsulates how to invoke the analyzer resolver and overrides how it 5 /// Encapsulates how to invoke the analyzer resolver and overrides how it
6 /// computes types on expressions to use our restricted set of types. 6 /// computes types on expressions to use our restricted set of types.
7 library dev_compiler.src.checker.resolver; 7 library dev_compiler.src.checker.resolver;
8 8
9 import 'package:analyzer/analyzer.dart'; 9 import 'package:analyzer/analyzer.dart';
10 import 'package:analyzer/src/generated/ast.dart'; 10 import 'package:analyzer/src/generated/ast.dart';
(...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after
553 var element = node.element as LocalVariableElementImpl; 553 var element = node.element as LocalVariableElementImpl;
554 var exprType = expr.staticType; 554 var exprType = expr.staticType;
555 if (exprType is InterfaceType) { 555 if (exprType is InterfaceType) {
556 var iteratedType = _findIteratedType(exprType); 556 var iteratedType = _findIteratedType(exprType);
557 if (iteratedType != null) { 557 if (iteratedType != null) {
558 element.type = iteratedType; 558 element.type = iteratedType;
559 } 559 }
560 } 560 }
561 } 561 }
562 562
563 List<DartType> _sealedTypes = null;
564
565 bool _isSealed(DartType t) { 563 bool _isSealed(DartType t) {
566 if (_sealedTypes == null) { 564 return _typeProvider.nonSubtypableTypes.contains(t);
567 // TODO(vsm): Use the analyzer's list - see dartbug.com/23125.
568 _sealedTypes = <DartType>[
569 _typeProvider.nullType,
570 _typeProvider.numType,
571 _typeProvider.intType,
572 _typeProvider.doubleType,
573 _typeProvider.boolType,
574 _typeProvider.stringType
575 ];
576 }
577 return _sealedTypes.contains(t);
578 } 565 }
579 566
580 @override // to propagate types to identifiers 567 @override // to propagate types to identifiers
581 visitMethodInvocation(MethodInvocation node) { 568 visitMethodInvocation(MethodInvocation node) {
582 // TODO(jmesserly): we rely on having a staticType propagated to the 569 // TODO(jmesserly): we rely on having a staticType propagated to the
583 // methodName identifier. This shouldn't be necessary for method calls, so 570 // methodName identifier. This shouldn't be necessary for method calls, so
584 // analyzer doesn't do it by default. Conceptually what we're doing here 571 // analyzer doesn't do it by default. Conceptually what we're doing here
585 // is asking for a tear off. We need this until we can fix #132, and rely 572 // is asking for a tear off. We need this until we can fix #132, and rely
586 // on `node.staticElement == null` instead of `rules.isDynamicCall(node)`. 573 // on `node.staticElement == null` instead of `rules.isDynamicCall(node)`.
587 visitSimpleIdentifier(node.methodName); 574 visitSimpleIdentifier(node.methodName);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 } 665 }
679 } 666 }
680 667
681 // Review note: no longer need to override visitFunctionExpression, this is 668 // Review note: no longer need to override visitFunctionExpression, this is
682 // handled by the analyzer internally. 669 // handled by the analyzer internally.
683 // TODO(vsm): in visitbinaryExpression: check computeStaticReturnType result? 670 // TODO(vsm): in visitbinaryExpression: check computeStaticReturnType result?
684 // TODO(vsm): in visitFunctionDeclaration: Should we ever use the expression 671 // TODO(vsm): in visitFunctionDeclaration: Should we ever use the expression
685 // type in a (...) => expr or just the written type? 672 // type in a (...) => expr or just the written type?
686 673
687 } 674 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698