OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 analyzer.src.dart.element.builder; | 5 library analyzer.src.dart.element.builder; |
6 | 6 |
7 import 'dart:collection'; | 7 import 'dart:collection'; |
8 | 8 |
9 import 'package:analyzer/dart/ast/ast.dart'; | 9 import 'package:analyzer/dart/ast/ast.dart'; |
10 import 'package:analyzer/dart/ast/token.dart'; | 10 import 'package:analyzer/dart/ast/token.dart'; |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
147 } | 147 } |
148 // | 148 // |
149 // Ensure "dart:core" import. | 149 // Ensure "dart:core" import. |
150 // | 150 // |
151 Source librarySource = libraryElement.source; | 151 Source librarySource = libraryElement.source; |
152 Source coreLibrarySource = context.sourceFactory.forUri(DartSdk.DART_CORE); | 152 Source coreLibrarySource = context.sourceFactory.forUri(DartSdk.DART_CORE); |
153 if (!explicitlyImportsCore && coreLibrarySource != librarySource) { | 153 if (!explicitlyImportsCore && coreLibrarySource != librarySource) { |
154 ImportElementImpl importElement = new ImportElementImpl(-1); | 154 ImportElementImpl importElement = new ImportElementImpl(-1); |
155 importElement.importedLibrary = importLibraryMap[coreLibrarySource]; | 155 importElement.importedLibrary = importLibraryMap[coreLibrarySource]; |
156 importElement.synthetic = true; | 156 importElement.synthetic = true; |
157 importElement.uriExists = true; | |
158 imports.add(importElement); | 157 imports.add(importElement); |
159 } | 158 } |
160 // | 159 // |
161 // Populate the library element. | 160 // Populate the library element. |
162 // | 161 // |
163 libraryElement.imports = imports; | 162 libraryElement.imports = imports; |
164 libraryElement.exports = exports; | 163 libraryElement.exports = exports; |
165 return null; | 164 return null; |
166 } | 165 } |
167 | 166 |
168 @override | 167 @override |
169 Object visitExportDirective(ExportDirective node) { | 168 Object visitExportDirective(ExportDirective node) { |
170 // Remove previous element. (It will remain null if the target is missing.) | 169 // Remove previous element. (It will remain null if the target is missing.) |
171 node.element = null; | 170 node.element = null; |
172 Source exportedSource = node.source; | 171 Source exportedSource = node.source; |
173 int exportedTime = sourceModificationTimeMap[exportedSource] ?? -1; | 172 int exportedTime = sourceModificationTimeMap[exportedSource] ?? -1; |
174 // The exported source will be null if the URI in the export | 173 // The exported source will be null if the URI in the export |
175 // directive was invalid. | 174 // directive was invalid. |
176 LibraryElement exportedLibrary = exportLibraryMap[exportedSource]; | 175 LibraryElement exportedLibrary = exportLibraryMap[exportedSource]; |
177 if (exportedLibrary != null) { | 176 if (exportedLibrary != null) { |
178 ExportElementImpl exportElement = new ExportElementImpl(node.offset); | 177 ExportElementImpl exportElement = new ExportElementImpl(node.offset); |
179 exportElement.metadata = _getElementAnnotations(node.metadata); | 178 exportElement.metadata = _getElementAnnotations(node.metadata); |
180 StringLiteral uriLiteral = node.uri; | 179 StringLiteral uriLiteral = node.uri; |
181 if (uriLiteral != null) { | 180 if (uriLiteral != null) { |
182 exportElement.uriOffset = uriLiteral.offset; | 181 exportElement.uriOffset = uriLiteral.offset; |
183 exportElement.uriEnd = uriLiteral.end; | 182 exportElement.uriEnd = uriLiteral.end; |
184 } | 183 } |
185 exportElement.uri = node.uriContent; | 184 exportElement.uri = node.uriContent; |
186 exportElement.uriExists = exportedTime >= 0; | |
187 exportElement.combinators = _buildCombinators(node); | 185 exportElement.combinators = _buildCombinators(node); |
188 exportElement.exportedLibrary = exportedLibrary; | 186 exportElement.exportedLibrary = exportedLibrary; |
189 setElementDocumentationComment(exportElement, node); | 187 setElementDocumentationComment(exportElement, node); |
190 node.element = exportElement; | 188 node.element = exportElement; |
191 exports.add(exportElement); | 189 exports.add(exportElement); |
192 if (exportedTime >= 0 && | 190 if (exportedTime >= 0 && |
193 exportSourceKindMap[exportedSource] != SourceKind.LIBRARY) { | 191 exportSourceKindMap[exportedSource] != SourceKind.LIBRARY) { |
194 int offset = node.offset; | 192 int offset = node.offset; |
195 int length = node.length; | 193 int length = node.length; |
196 if (uriLiteral != null) { | 194 if (uriLiteral != null) { |
(...skipping 25 matching lines...) Expand all Loading... |
222 explicitlyImportsCore = true; | 220 explicitlyImportsCore = true; |
223 } | 221 } |
224 ImportElementImpl importElement = new ImportElementImpl(node.offset); | 222 ImportElementImpl importElement = new ImportElementImpl(node.offset); |
225 importElement.metadata = _getElementAnnotations(node.metadata); | 223 importElement.metadata = _getElementAnnotations(node.metadata); |
226 StringLiteral uriLiteral = node.uri; | 224 StringLiteral uriLiteral = node.uri; |
227 if (uriLiteral != null) { | 225 if (uriLiteral != null) { |
228 importElement.uriOffset = uriLiteral.offset; | 226 importElement.uriOffset = uriLiteral.offset; |
229 importElement.uriEnd = uriLiteral.end; | 227 importElement.uriEnd = uriLiteral.end; |
230 } | 228 } |
231 importElement.uri = node.uriContent; | 229 importElement.uri = node.uriContent; |
232 importElement.uriExists = importedTime >= 0; | |
233 importElement.deferred = node.deferredKeyword != null; | 230 importElement.deferred = node.deferredKeyword != null; |
234 importElement.combinators = _buildCombinators(node); | 231 importElement.combinators = _buildCombinators(node); |
235 importElement.importedLibrary = importedLibrary; | 232 importElement.importedLibrary = importedLibrary; |
236 setElementDocumentationComment(importElement, node); | 233 setElementDocumentationComment(importElement, node); |
237 SimpleIdentifier prefixNode = node.prefix; | 234 SimpleIdentifier prefixNode = node.prefix; |
238 if (prefixNode != null) { | 235 if (prefixNode != null) { |
239 importElement.prefixOffset = prefixNode.offset; | 236 importElement.prefixOffset = prefixNode.offset; |
240 String prefixName = prefixNode.name; | 237 String prefixName = prefixNode.name; |
241 PrefixElementImpl prefix = nameToPrefixMap[prefixName]; | 238 PrefixElementImpl prefix = nameToPrefixMap[prefixName]; |
242 if (prefix == null) { | 239 if (prefix == null) { |
(...skipping 1215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1458 return null; | 1455 return null; |
1459 } | 1456 } |
1460 | 1457 |
1461 /** | 1458 /** |
1462 * Return the lexical identifiers associated with the given [identifiers]. | 1459 * Return the lexical identifiers associated with the given [identifiers]. |
1463 */ | 1460 */ |
1464 static List<String> _getIdentifiers(NodeList<SimpleIdentifier> identifiers) { | 1461 static List<String> _getIdentifiers(NodeList<SimpleIdentifier> identifiers) { |
1465 return identifiers.map((identifier) => identifier.name).toList(); | 1462 return identifiers.map((identifier) => identifier.name).toList(); |
1466 } | 1463 } |
1467 } | 1464 } |
OLD | NEW |