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

Unified Diff: sdk/lib/_internal/compiler/implementation/ssa/types_propagation.dart

Issue 12385076: Infer types of catpured variables and use the types in the SSA builder. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: sdk/lib/_internal/compiler/implementation/ssa/types_propagation.dart
===================================================================
--- sdk/lib/_internal/compiler/implementation/ssa/types_propagation.dart (revision 19427)
+++ sdk/lib/_internal/compiler/implementation/ssa/types_propagation.dart (working copy)
@@ -135,9 +135,14 @@
HType type = HType.CONFLICTING;
DartType functionType = compiler.functionClass.computeType(compiler);
for (Element each in compiler.world.allFunctions.filter(refined)) {
- HType inferred = (refined.isGetter() && each.isFunction())
- ? new HType.nonNullExact(functionType, compiler)
- : new HType.inferredForElement(each, compiler);
+ HType inferred;
+ if (refined.isGetter() && each.isFunction()) {
+ inferred = new HType.nonNullExact(functionType, compiler);
+ } else if (refined.isGetter() && each.isField()) {
+ inferred = new HType.inferredTypeForElement(each, compiler);
+ } else {
+ inferred = new HType.inferredReturnTypeForElement(each, compiler);
+ }
type = type.union(inferred, compiler);
if (type.isUnknown()) break;
}

Powered by Google App Engine
This is Rietveld 408576698