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

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

Issue 1245013002: some fixes for --strong warnings (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 5 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) 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 library dev_compiler.src.checker.rules; 5 library dev_compiler.src.checker.rules;
6 6
7 import 'package:analyzer/src/generated/ast.dart'; 7 import 'package:analyzer/src/generated/ast.dart';
8 import 'package:analyzer/src/generated/element.dart'; 8 import 'package:analyzer/src/generated/element.dart';
9 import 'package:analyzer/src/generated/resolver.dart'; 9 import 'package:analyzer/src/generated/resolver.dart';
10 10
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 return (e as dynamic).type; 463 return (e as dynamic).type;
464 } 464 }
465 465
466 /// Returns `true` if the target expression is dynamic. 466 /// Returns `true` if the target expression is dynamic.
467 // TODO(jmesserly): remove this in favor of utils? Or a static method here? 467 // TODO(jmesserly): remove this in favor of utils? Or a static method here?
468 bool isDynamicTarget(Expression target) => utils.isDynamicTarget(target); 468 bool isDynamicTarget(Expression target) => utils.isDynamicTarget(target);
469 469
470 /// Returns `true` if the expression is a dynamic function call or method 470 /// Returns `true` if the expression is a dynamic function call or method
471 /// invocation. 471 /// invocation.
472 bool isDynamicCall(Expression call) { 472 bool isDynamicCall(Expression call) {
473 var t = getTypeAsCaller(call); 473 var ft = getTypeAsCaller(call);
474 // TODO(leafp): This will currently return true if t is Function 474 // TODO(leafp): This will currently return true if t is Function
475 // This is probably the most correct thing to do for now, since 475 // This is probably the most correct thing to do for now, since
476 // this code is also used by the back end. Maybe revisit at some 476 // this code is also used by the back end. Maybe revisit at some
477 // point? 477 // point?
478 if (t == null) return true; 478 if (ft == null) return true;
479 // Dynamic as the parameter type is treated as bottom. A function with 479 // Dynamic as the parameter type is treated as bottom. A function with
480 // a dynamic parameter type requires a dynamic call in general. 480 // a dynamic parameter type requires a dynamic call in general.
481 // However, as an optimization, if we have an original definition, we know 481 // However, as an optimization, if we have an original definition, we know
482 // dynamic is reified as Object - in this case a regular call is fine. 482 // dynamic is reified as Object - in this case a regular call is fine.
483 if (call is SimpleIdentifier) { 483 if (call is SimpleIdentifier) {
484 var element = call.staticElement; 484 var element = call.staticElement;
485 if (element is FunctionElement || element is MethodElement) { 485 if (element is FunctionElement || element is MethodElement) {
486 // An original declaration. 486 // An original declaration.
487 return false; 487 return false;
488 } 488 }
489 } 489 }
490 490
491 var ft = t as FunctionType;
492 return _anyParameterType(ft, (pt) => pt.isDynamic); 491 return _anyParameterType(ft, (pt) => pt.isDynamic);
493 } 492 }
494 } 493 }
495 494
496 class DownwardsInference { 495 class DownwardsInference {
497 final TypeRules rules; 496 final TypeRules rules;
498 497
499 DownwardsInference(this.rules); 498 DownwardsInference(this.rules);
500 499
501 /// Called for each list literal which gets inferred 500 /// Called for each list literal which gets inferred
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
776 var entries = e.entries; 775 var entries = e.entries;
777 bool inferEntry(MapLiteralEntry entry) { 776 bool inferEntry(MapLiteralEntry entry) {
778 return _inferExpression(entry.key, kType, errors) && 777 return _inferExpression(entry.key, kType, errors) &&
779 _inferExpression(entry.value, vType, errors); 778 _inferExpression(entry.value, vType, errors);
780 } 779 }
781 var b = entries.every(inferEntry); 780 var b = entries.every(inferEntry);
782 if (b) annotateMapLiteral(e, targs); 781 if (b) annotateMapLiteral(e, targs);
783 return b; 782 return b;
784 } 783 }
785 } 784 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698