OLD | NEW |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 dart2js.compiler_base; | 5 library dart2js.compiler_base; |
6 | 6 |
7 import 'dart:async' show EventSink, Future; | 7 import 'dart:async' show EventSink, Future; |
8 | 8 |
9 import '../compiler_new.dart' as api; | 9 import '../compiler_new.dart' as api; |
10 import 'cache_strategy.dart' show CacheStrategy; | 10 import 'cache_strategy.dart' show CacheStrategy; |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 import 'options.dart' show CompilerOptions, DiagnosticOptions; | 58 import 'options.dart' show CompilerOptions, DiagnosticOptions; |
59 import 'parser/diet_parser_task.dart' show DietParserTask; | 59 import 'parser/diet_parser_task.dart' show DietParserTask; |
60 import 'parser/parser_task.dart' show ParserTask; | 60 import 'parser/parser_task.dart' show ParserTask; |
61 import 'patch_parser.dart' show PatchParserTask; | 61 import 'patch_parser.dart' show PatchParserTask; |
62 import 'resolution/resolution.dart' show ResolverTask; | 62 import 'resolution/resolution.dart' show ResolverTask; |
63 import 'resolved_uri_translator.dart'; | 63 import 'resolved_uri_translator.dart'; |
64 import 'scanner/scanner_task.dart' show ScannerTask; | 64 import 'scanner/scanner_task.dart' show ScannerTask; |
65 import 'script.dart' show Script; | 65 import 'script.dart' show Script; |
66 import 'serialization/task.dart' show SerializationTask; | 66 import 'serialization/task.dart' show SerializationTask; |
67 import 'ssa/nodes.dart' show HInstruction; | 67 import 'ssa/nodes.dart' show HInstruction; |
68 import 'tokens/token.dart' show StringToken, Token, TokenPair; | 68 import 'package:dart_scanner/dart_scanner.dart' show StringToken, Token; |
69 import 'tokens/token_map.dart' show TokenMap; | 69 import 'tokens/token_map.dart' show TokenMap; |
70 import 'tracer.dart' show Tracer; | 70 import 'tracer.dart' show Tracer; |
71 import 'tree/tree.dart' show Node, TypeAnnotation; | 71 import 'tree/tree.dart' show Node, TypeAnnotation; |
72 import 'typechecker.dart' show TypeCheckerTask; | 72 import 'typechecker.dart' show TypeCheckerTask; |
73 import 'types/types.dart' show GlobalTypeInferenceTask; | 73 import 'types/types.dart' show GlobalTypeInferenceTask; |
74 import 'universe/selector.dart' show Selector; | 74 import 'universe/selector.dart' show Selector; |
75 import 'universe/world_builder.dart' | 75 import 'universe/world_builder.dart' |
76 show ResolutionWorldBuilder, CodegenWorldBuilder; | 76 show ResolutionWorldBuilder, CodegenWorldBuilder; |
77 import 'universe/use.dart' show StaticUse, TypeUse; | 77 import 'universe/use.dart' show StaticUse, TypeUse; |
78 import 'universe/world_impact.dart' | 78 import 'universe/world_impact.dart' |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 // objects needed by other tasks. | 263 // objects needed by other tasks. |
264 enqueuer, | 264 enqueuer, |
265 dumpInfoTask = new DumpInfoTask(this), | 265 dumpInfoTask = new DumpInfoTask(this), |
266 selfTask = new GenericTask('self', measurer), | 266 selfTask = new GenericTask('self', measurer), |
267 ]; | 267 ]; |
268 if (options.resolveOnly) { | 268 if (options.resolveOnly) { |
269 serialization.supportSerialization = true; | 269 serialization.supportSerialization = true; |
270 } | 270 } |
271 | 271 |
272 _parsingContext = | 272 _parsingContext = |
273 new ParsingContext(reporter, parser, patchParser, backend); | 273 new ParsingContext(reporter, parser, scanner, patchParser, backend); |
274 | 274 |
275 tasks.addAll(backend.tasks); | 275 tasks.addAll(backend.tasks); |
276 } | 276 } |
277 | 277 |
278 /// Creates the backend. | 278 /// Creates the backend. |
279 /// | 279 /// |
280 /// Override this to mock the backend for testing. | 280 /// Override this to mock the backend for testing. |
281 Backend createBackend() { | 281 Backend createBackend() { |
282 return new js_backend.JavaScriptBackend(this, | 282 return new js_backend.JavaScriptBackend(this, |
283 generateSourceMap: options.generateSourceMap, | 283 generateSourceMap: options.generateSourceMap, |
(...skipping 1352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1636 | 1636 |
1637 void reportAssertionFailure(SpannableAssertionFailure ex) { | 1637 void reportAssertionFailure(SpannableAssertionFailure ex) { |
1638 String message = | 1638 String message = |
1639 (ex.message != null) ? tryToString(ex.message) : tryToString(ex); | 1639 (ex.message != null) ? tryToString(ex.message) : tryToString(ex); |
1640 reportDiagnosticInternal( | 1640 reportDiagnosticInternal( |
1641 createMessage(ex.node, MessageKind.GENERIC, {'text': message}), | 1641 createMessage(ex.node, MessageKind.GENERIC, {'text': message}), |
1642 const <DiagnosticMessage>[], | 1642 const <DiagnosticMessage>[], |
1643 api.Diagnostic.CRASH); | 1643 api.Diagnostic.CRASH); |
1644 } | 1644 } |
1645 | 1645 |
| 1646 @override |
| 1647 SourceSpan spanFromToken(Token token) => spanFromTokens(token, token); |
| 1648 |
1646 SourceSpan spanFromTokens(Token begin, Token end, [Uri uri]) { | 1649 SourceSpan spanFromTokens(Token begin, Token end, [Uri uri]) { |
1647 if (begin == null || end == null) { | 1650 if (begin == null || end == null) { |
1648 // TODO(ahe): We can almost always do better. Often it is only | 1651 // TODO(ahe): We can almost always do better. Often it is only |
1649 // end that is null. Otherwise, we probably know the current | 1652 // end that is null. Otherwise, we probably know the current |
1650 // URI. | 1653 // URI. |
1651 throw 'Cannot find tokens to produce error message.'; | 1654 throw 'Cannot find tokens to produce error message.'; |
1652 } | 1655 } |
1653 if (uri == null && currentElement != null) { | 1656 if (uri == null && currentElement != null) { |
1654 uri = currentElement.compilationUnit.script.resourceUri; | 1657 uri = currentElement.compilationUnit.script.resourceUri; |
1655 assert(invariant(currentElement, () { | 1658 assert(invariant(currentElement, () { |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1784 if (node == CURRENT_ELEMENT_SPANNABLE) { | 1787 if (node == CURRENT_ELEMENT_SPANNABLE) { |
1785 node = currentElement; | 1788 node = currentElement; |
1786 } else if (node == NO_LOCATION_SPANNABLE) { | 1789 } else if (node == NO_LOCATION_SPANNABLE) { |
1787 if (currentElement == null) return null; | 1790 if (currentElement == null) return null; |
1788 node = currentElement; | 1791 node = currentElement; |
1789 } | 1792 } |
1790 if (node is SourceSpan) { | 1793 if (node is SourceSpan) { |
1791 return node; | 1794 return node; |
1792 } else if (node is Node) { | 1795 } else if (node is Node) { |
1793 return spanFromNode(node); | 1796 return spanFromNode(node); |
1794 } else if (node is TokenPair) { | |
1795 return spanFromTokens(node.begin, node.end); | |
1796 } else if (node is Token) { | |
1797 return spanFromTokens(node, node); | |
1798 } else if (node is HInstruction) { | 1797 } else if (node is HInstruction) { |
1799 return spanFromHInstruction(node); | 1798 return spanFromHInstruction(node); |
1800 } else if (node is Element) { | 1799 } else if (node is Element) { |
1801 return spanFromElement(node); | 1800 return spanFromElement(node); |
1802 } else if (node is MetadataAnnotation) { | 1801 } else if (node is MetadataAnnotation) { |
1803 return node.sourcePosition; | 1802 return node.sourcePosition; |
1804 } else if (node is Local) { | 1803 } else if (node is Local) { |
1805 Local local = node; | 1804 Local local = node; |
1806 return spanFromElement(local.executableContext); | 1805 return spanFromElement(local.executableContext); |
1807 } else { | 1806 } else { |
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2232 _ElementScanner(this.scanner); | 2231 _ElementScanner(this.scanner); |
2233 void scanLibrary(LibraryElement library) => scanner.scanLibrary(library); | 2232 void scanLibrary(LibraryElement library) => scanner.scanLibrary(library); |
2234 void scanUnit(CompilationUnitElement unit) => scanner.scan(unit); | 2233 void scanUnit(CompilationUnitElement unit) => scanner.scan(unit); |
2235 } | 2234 } |
2236 | 2235 |
2237 class _EmptyEnvironment implements Environment { | 2236 class _EmptyEnvironment implements Environment { |
2238 const _EmptyEnvironment(); | 2237 const _EmptyEnvironment(); |
2239 | 2238 |
2240 String valueOf(String key) => null; | 2239 String valueOf(String key) => null; |
2241 } | 2240 } |
OLD | NEW |