| OLD | NEW | 
|    1 // Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file |    1 // Copyright (c) 2016, 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 // Tests that the closed world computed from [WorldImpact]s derived from kernel |    5 // Tests that the closed world computed from [WorldImpact]s derived from kernel | 
|    6 // is equivalent to the original computed from resolution. |    6 // is equivalent to the original computed from resolution. | 
|    7 library dart2js.kernel.closed_world_test; |    7 library dart2js.kernel.closed_world_test; | 
|    8  |    8  | 
|    9 import 'package:async_helper/async_helper.dart'; |    9 import 'package:async_helper/async_helper.dart'; | 
|   10 import 'package:compiler/src/commandline_options.dart'; |   10 import 'package:compiler/src/commandline_options.dart'; | 
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  106     enqueuer.applyImpact(backend.computeHelpersImpact()); |  106     enqueuer.applyImpact(backend.computeHelpersImpact()); | 
|  107     enqueuer.applyImpact(enqueuer.nativeEnqueuer |  107     enqueuer.applyImpact(enqueuer.nativeEnqueuer | 
|  108         .processNativeClasses(compiler.libraryLoader.libraries)); |  108         .processNativeClasses(compiler.libraryLoader.libraries)); | 
|  109     enqueuer.applyImpact( |  109     enqueuer.applyImpact( | 
|  110         backend.computeMainImpact(compiler.mainFunction, forResolution: true)); |  110         backend.computeMainImpact(compiler.mainFunction, forResolution: true)); | 
|  111     enqueuer.forEach((work) { |  111     enqueuer.forEach((work) { | 
|  112       AstElement element = work.element; |  112       AstElement element = work.element; | 
|  113       ResolutionImpact resolutionImpact = build(compiler, element.resolvedAst); |  113       ResolutionImpact resolutionImpact = build(compiler, element.resolvedAst); | 
|  114       WorldImpact worldImpact = compiler.backend.impactTransformer |  114       WorldImpact worldImpact = compiler.backend.impactTransformer | 
|  115           .transformResolutionImpact(enqueuer, resolutionImpact); |  115           .transformResolutionImpact(enqueuer, resolutionImpact); | 
|  116       enqueuer.registerProcessedElement(element); |  | 
|  117       enqueuer.applyImpact(worldImpact, impactSource: element); |  116       enqueuer.applyImpact(worldImpact, impactSource: element); | 
|  118     }); |  117     }); | 
|  119     ClosedWorld closedWorld = |  118     ClosedWorld closedWorld = | 
|  120         enqueuer.universe.openWorld.closeWorld(compiler.reporter); |  119         enqueuer.universe.openWorld.closeWorld(compiler.reporter); | 
|  121  |  120  | 
|  122     checkResolutionEnqueuers(compiler.enqueuer.resolution, enqueuer, |  121     checkResolutionEnqueuers(compiler.enqueuer.resolution, enqueuer, | 
|  123         typeEquivalence: (DartType a, DartType b) { |  122         typeEquivalence: (DartType a, DartType b) { | 
|  124       return areTypesEquivalent(unalias(a), unalias(b)); |  123       return areTypesEquivalent(unalias(a), unalias(b)); | 
|  125     }, elementFilter: (Element element) { |  124     }, elementFilter: (Element element) { | 
|  126       if (element is ConstructorElement && element.isRedirectingFactory) { |  125       if (element is ConstructorElement && element.isRedirectingFactory) { | 
|  127         // Redirecting factory constructors are skipped in kernel. |  126         // Redirecting factory constructors are skipped in kernel. | 
|  128         return false; |  127         return false; | 
|  129       } |  128       } | 
|  130       if (element is ClassElement) { |  129       if (element is ClassElement) { | 
|  131         for (ConstructorElement constructor in element.constructors) { |  130         for (ConstructorElement constructor in element.constructors) { | 
|  132           if (!constructor.isRedirectingFactory) { |  131           if (!constructor.isRedirectingFactory) { | 
|  133             return true; |  132             return true; | 
|  134           } |  133           } | 
|  135         } |  134         } | 
|  136         // The class cannot itself be instantiated. |  135         // The class cannot itself be instantiated. | 
|  137         return false; |  136         return false; | 
|  138       } |  137       } | 
|  139       return true; |  138       return true; | 
|  140     }, verbose: arguments.verbose); |  139     }, verbose: arguments.verbose); | 
|  141     checkClosedWorlds(compiler.closedWorld, closedWorld, |  140     checkClosedWorlds(compiler.closedWorld, closedWorld, | 
|  142         verbose: arguments.verbose); |  141         verbose: arguments.verbose); | 
|  143   }); |  142   }); | 
|  144 } |  143 } | 
| OLD | NEW |