| 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 library fasta.source_loader; | 5 library fasta.source_loader; |
| 6 | 6 |
| 7 import 'dart:async' show Future; | 7 import 'dart:async' show Future; |
| 8 | 8 |
| 9 import 'dart:typed_data' show Uint8List; | 9 import 'dart:typed_data' show Uint8List; |
| 10 | 10 |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 210 exporters.add(exporter.exporter); | 210 exporters.add(exporter.exporter); |
| 211 } | 211 } |
| 212 } | 212 } |
| 213 }); | 213 }); |
| 214 Set<SourceLibraryBuilder> both = new Set<SourceLibraryBuilder>(); | 214 Set<SourceLibraryBuilder> both = new Set<SourceLibraryBuilder>(); |
| 215 for (LibraryBuilder exported in exportees) { | 215 for (LibraryBuilder exported in exportees) { |
| 216 if (exporters.contains(exported)) { | 216 if (exporters.contains(exported)) { |
| 217 both.add(exported); | 217 both.add(exported); |
| 218 } | 218 } |
| 219 for (Export export in exported.exporters) { | 219 for (Export export in exported.exporters) { |
| 220 exported.exports.forEach(export.addToExportScope); | 220 exported.exportScope.forEach(export.addToExportScope); |
| 221 } | 221 } |
| 222 } | 222 } |
| 223 bool wasChanged = false; | 223 bool wasChanged = false; |
| 224 do { | 224 do { |
| 225 wasChanged = false; | 225 wasChanged = false; |
| 226 for (SourceLibraryBuilder exported in both) { | 226 for (SourceLibraryBuilder exported in both) { |
| 227 for (Export export in exported.exporters) { | 227 for (Export export in exported.exporters) { |
| 228 SourceLibraryBuilder exporter = export.exporter; | 228 SourceLibraryBuilder exporter = export.exporter; |
| 229 exported.exports.forEach((String name, Builder member) { | 229 exported.exportScope.forEach((String name, Builder member) { |
| 230 if (exporter.addToExportScope(name, member)) { | 230 if (exporter.addToExportScope(name, member)) { |
| 231 wasChanged = true; | 231 wasChanged = true; |
| 232 } | 232 } |
| 233 }); | 233 }); |
| 234 } | 234 } |
| 235 } | 235 } |
| 236 } while (wasChanged); | 236 } while (wasChanged); |
| 237 builders.forEach((Uri uri, LibraryBuilder library) { | 237 builders.forEach((Uri uri, LibraryBuilder library) { |
| 238 if (library is SourceLibraryBuilder) { | 238 if (library is SourceLibraryBuilder) { |
| 239 library.addImportsToScope(); | 239 library.addImportsToScope(); |
| 240 } | 240 } |
| 241 }); | 241 }); |
| 242 ticker.logMs("Computed library scopes"); | 242 ticker.logMs("Computed library scopes"); |
| 243 // debugPrintExports(); | 243 // debugPrintExports(); |
| 244 } | 244 } |
| 245 | 245 |
| 246 void debugPrintExports() { | 246 void debugPrintExports() { |
| 247 // TODO(sigmund): should be `covarint SourceLibraryBuilder`. | 247 // TODO(sigmund): should be `covarint SourceLibraryBuilder`. |
| 248 builders.forEach((Uri uri, dynamic l) { | 248 builders.forEach((Uri uri, dynamic l) { |
| 249 SourceLibraryBuilder library = l; | 249 SourceLibraryBuilder library = l; |
| 250 Set<Builder> members = new Set<Builder>(); | 250 Set<Builder> members = new Set<Builder>(); |
| 251 library.forEach((String name, Builder member) { | 251 library.forEach((String name, Builder member) { |
| 252 while (member != null) { | 252 while (member != null) { |
| 253 members.add(member); | 253 members.add(member); |
| 254 member = member.next; | 254 member = member.next; |
| 255 } | 255 } |
| 256 }); | 256 }); |
| 257 List<String> exports = <String>[]; | 257 List<String> exports = <String>[]; |
| 258 library.exports.forEach((String name, Builder member) { | 258 library.exportScope.forEach((String name, Builder member) { |
| 259 while (member != null) { | 259 while (member != null) { |
| 260 if (!members.contains(member)) { | 260 if (!members.contains(member)) { |
| 261 exports.add(name); | 261 exports.add(name); |
| 262 } | 262 } |
| 263 member = member.next; | 263 member = member.next; |
| 264 } | 264 } |
| 265 }); | 265 }); |
| 266 if (exports.isNotEmpty) { | 266 if (exports.isNotEmpty) { |
| 267 print("$uri exports $exports"); | 267 print("$uri exports $exports"); |
| 268 } | 268 } |
| (...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 533 Expression throwCompileConstantError(Expression error) { | 533 Expression throwCompileConstantError(Expression error) { |
| 534 return target.backendTarget.throwCompileConstantError(coreTypes, error); | 534 return target.backendTarget.throwCompileConstantError(coreTypes, error); |
| 535 } | 535 } |
| 536 | 536 |
| 537 Expression buildCompileTimeError(Message message, int offset, Uri uri) { | 537 Expression buildCompileTimeError(Message message, int offset, Uri uri) { |
| 538 String text = target.context | 538 String text = target.context |
| 539 .format(message.withLocation(uri, offset), Severity.error); | 539 .format(message.withLocation(uri, offset), Severity.error); |
| 540 return target.backendTarget.buildCompileTimeError(coreTypes, text, offset); | 540 return target.backendTarget.buildCompileTimeError(coreTypes, text, offset); |
| 541 } | 541 } |
| 542 } | 542 } |
| OLD | NEW |