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 library kernel.analyzer.loader; | 4 library kernel.analyzer.loader; |
5 | 5 |
6 import 'dart:async'; | 6 import 'dart:async'; |
7 import 'dart:io' as io; | 7 import 'dart:io' as io; |
8 | 8 |
9 import 'package:analyzer/analyzer.dart'; | 9 import 'package:analyzer/analyzer.dart'; |
10 import 'package:analyzer/file_system/file_system.dart'; | 10 import 'package:analyzer/file_system/file_system.dart'; |
(...skipping 12 matching lines...) Expand all Loading... |
23 import '../repository.dart'; | 23 import '../repository.dart'; |
24 import '../target/targets.dart' show Target; | 24 import '../target/targets.dart' show Target; |
25 import '../type_algebra.dart'; | 25 import '../type_algebra.dart'; |
26 import 'analyzer.dart'; | 26 import 'analyzer.dart'; |
27 import 'ast_from_analyzer.dart'; | 27 import 'ast_from_analyzer.dart'; |
28 | 28 |
29 /// Options passed to the Dart frontend. | 29 /// Options passed to the Dart frontend. |
30 class DartOptions { | 30 class DartOptions { |
31 /// True if user code should be loaded in strong mode. | 31 /// True if user code should be loaded in strong mode. |
32 bool strongMode; | 32 bool strongMode; |
| 33 |
33 /// True if the Dart SDK should be loaded in strong mode. | 34 /// True if the Dart SDK should be loaded in strong mode. |
34 bool strongModeSdk; | 35 bool strongModeSdk; |
35 String sdk; | 36 String sdk; |
36 String packagePath; | 37 String packagePath; |
37 Map<Uri, Uri> customUriMappings; | 38 Map<Uri, Uri> customUriMappings; |
38 Map<String, String> declaredVariables; | 39 Map<String, String> declaredVariables; |
39 | 40 |
40 DartOptions( | 41 DartOptions( |
41 {bool strongMode: false, | 42 {bool strongMode: false, |
42 bool strongModeSdk, | 43 bool strongModeSdk, |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 assert(_libraryBeingLoaded == null); | 126 assert(_libraryBeingLoaded == null); |
126 _libraryBeingLoaded = element; | 127 _libraryBeingLoaded = element; |
127 var classes = <ast.Class>[]; | 128 var classes = <ast.Class>[]; |
128 var procedures = <ast.Procedure>[]; | 129 var procedures = <ast.Procedure>[]; |
129 var fields = <ast.Field>[]; | 130 var fields = <ast.Field>[]; |
130 void loadClass(ClassElement classElement) { | 131 void loadClass(ClassElement classElement) { |
131 var node = getClassReference(classElement); | 132 var node = getClassReference(classElement); |
132 promoteToBodyLevel(node); | 133 promoteToBodyLevel(node); |
133 classes.add(node); | 134 classes.add(node); |
134 } | 135 } |
| 136 |
135 void loadProcedure(Element memberElement) { | 137 void loadProcedure(Element memberElement) { |
136 var node = getMemberReference(memberElement); | 138 var node = getMemberReference(memberElement); |
137 _buildTopLevelMember(node, memberElement); | 139 _buildTopLevelMember(node, memberElement); |
138 procedures.add(node); | 140 procedures.add(node); |
139 } | 141 } |
| 142 |
140 void loadField(Element memberElement) { | 143 void loadField(Element memberElement) { |
141 var node = getMemberReference(memberElement); | 144 var node = getMemberReference(memberElement); |
142 _buildTopLevelMember(node, memberElement); | 145 _buildTopLevelMember(node, memberElement); |
143 fields.add(node); | 146 fields.add(node); |
144 } | 147 } |
| 148 |
145 for (var unit in element.units) { | 149 for (var unit in element.units) { |
146 unit.types.forEach(loadClass); | 150 unit.types.forEach(loadClass); |
147 unit.enums.forEach(loadClass); | 151 unit.enums.forEach(loadClass); |
148 for (var accessor in unit.accessors) { | 152 for (var accessor in unit.accessors) { |
149 if (!accessor.isSynthetic) { | 153 if (!accessor.isSynthetic) { |
150 loadProcedure(accessor); | 154 loadProcedure(accessor); |
151 } | 155 } |
152 } | 156 } |
153 for (var function in unit.functions) { | 157 for (var function in unit.functions) { |
154 loadProcedure(function); | 158 loadProcedure(function); |
(...skipping 568 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
723 } | 727 } |
724 if (discoveryPath != null) { | 728 if (discoveryPath != null) { |
725 return findPackagesFromFile(Uri.parse(discoveryPath)); | 729 return findPackagesFromFile(Uri.parse(discoveryPath)); |
726 } | 730 } |
727 return Packages.noPackages; | 731 return Packages.noPackages; |
728 } | 732 } |
729 | 733 |
730 AnalysisOptions createAnalysisOptions(bool strongMode) { | 734 AnalysisOptions createAnalysisOptions(bool strongMode) { |
731 return new AnalysisOptionsImpl() | 735 return new AnalysisOptionsImpl() |
732 ..strongMode = strongMode | 736 ..strongMode = strongMode |
733 ..enableGenericMethods = strongMode | |
734 ..generateImplicitErrors = false | 737 ..generateImplicitErrors = false |
735 ..generateSdkErrors = false | 738 ..generateSdkErrors = false |
736 ..preserveComments = false | 739 ..preserveComments = false |
737 ..hint = false | 740 ..hint = false |
738 ..enableSuperMixins = true; | 741 ..enableSuperMixins = true; |
739 } | 742 } |
740 | 743 |
741 DartSdk createDartSdk(String path, {bool strongMode}) { | 744 DartSdk createDartSdk(String path, {bool strongMode}) { |
742 var resources = PhysicalResourceProvider.INSTANCE; | 745 var resources = PhysicalResourceProvider.INSTANCE; |
743 return new FolderBasedDartSdk(resources, resources.getFolder(path)) | 746 return new FolderBasedDartSdk(resources, resources.getFolder(path)) |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
806 AnalysisContext context = AnalysisEngine.instance.createAnalysisContext() | 809 AnalysisContext context = AnalysisEngine.instance.createAnalysisContext() |
807 ..sourceFactory = new SourceFactory(resolvers) | 810 ..sourceFactory = new SourceFactory(resolvers) |
808 ..analysisOptions = createAnalysisOptions(options.strongMode); | 811 ..analysisOptions = createAnalysisOptions(options.strongMode); |
809 | 812 |
810 options.declaredVariables.forEach((String name, String value) { | 813 options.declaredVariables.forEach((String name, String value) { |
811 context.declaredVariables.define(name, value); | 814 context.declaredVariables.define(name, value); |
812 }); | 815 }); |
813 | 816 |
814 return context; | 817 return context; |
815 } | 818 } |
OLD | NEW |