Chromium Code Reviews| 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 part of dart2js; | 5 part of dart2js; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * If true, print a warning for each method that was resolved, but not | 8 * If true, print a warning for each method that was resolved, but not |
| 9 * compiled. | 9 * compiled. |
| 10 */ | 10 */ |
| (...skipping 1010 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1021 } | 1021 } |
| 1022 } else { | 1022 } else { |
| 1023 if (!main.isFunction()) { | 1023 if (!main.isFunction()) { |
| 1024 reportFatalError( | 1024 reportFatalError( |
| 1025 main, | 1025 main, |
| 1026 MessageKind.GENERIC, | 1026 MessageKind.GENERIC, |
| 1027 {'text': "Error: '$MAIN' is not a function."}); | 1027 {'text': "Error: '$MAIN' is not a function."}); |
| 1028 } | 1028 } |
| 1029 FunctionElement mainMethod = main; | 1029 FunctionElement mainMethod = main; |
| 1030 FunctionSignature parameters = mainMethod.computeSignature(this); | 1030 FunctionSignature parameters = mainMethod.computeSignature(this); |
| 1031 parameters.forEachParameter((Element parameter) { | 1031 if (parameters.parameterCount > 2) { |
| 1032 reportError( | 1032 parameters.forEachParameter((Element parameter) { |
| 1033 parameter, | 1033 reportError( |
| 1034 MessageKind.GENERIC, | 1034 parameter, |
| 1035 {'text': | 1035 MessageKind.GENERIC, |
| 1036 "Error: '$MAIN' cannot have parameters."}); | 1036 {'text': |
| 1037 }); | 1037 "Error: '$MAIN' cannot have parameters."}); |
|
floitsch
2013/10/25 10:56:09
cannot have more than 2 parameters.
ngeoffray
2013/10/25 11:09:52
Done.
| |
| 1038 }); | |
| 1039 } | |
| 1038 } | 1040 } |
| 1039 | 1041 |
| 1040 mirrorUsageAnalyzerTask.analyzeUsage(mainApp); | 1042 mirrorUsageAnalyzerTask.analyzeUsage(mainApp); |
| 1041 | 1043 |
| 1042 // In order to see if a library is deferred, we must compute the | 1044 // In order to see if a library is deferred, we must compute the |
| 1043 // compile-time constants that are metadata. This means adding | 1045 // compile-time constants that are metadata. This means adding |
| 1044 // something to the resolution queue. So we cannot wait with | 1046 // something to the resolution queue. So we cannot wait with |
| 1045 // this until after the resolution queue is processed. | 1047 // this until after the resolution queue is processed. |
| 1046 // TODO(ahe): Clean this up, for example, by not enqueueing | 1048 // TODO(ahe): Clean this up, for example, by not enqueueing |
| 1047 // classes only used for metadata. | 1049 // classes only used for metadata. |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1134 for (MetadataAnnotation metadata in library.metadata) { | 1136 for (MetadataAnnotation metadata in library.metadata) { |
| 1135 metadata.ensureResolved(this); | 1137 metadata.ensureResolved(this); |
| 1136 } | 1138 } |
| 1137 } | 1139 } |
| 1138 } | 1140 } |
| 1139 } | 1141 } |
| 1140 | 1142 |
| 1141 void processQueue(Enqueuer world, Element main) { | 1143 void processQueue(Enqueuer world, Element main) { |
| 1142 world.nativeEnqueuer.processNativeClasses(libraries.values); | 1144 world.nativeEnqueuer.processNativeClasses(libraries.values); |
| 1143 if (main != null) { | 1145 if (main != null) { |
| 1146 if (main.computeSignature(this).parameterCount != 0) { | |
| 1147 // TODO(ngeoffray, floitsch): we should also ensure that the | |
| 1148 // class IsolateMessage is instantiated. Currently, just enabling | |
| 1149 // isolate support works. | |
| 1150 world.enableIsolateSupport(main.getLibrary()); | |
| 1151 world.registerInstantiatedClass(listClass, globalDependencies); | |
| 1152 world.registerInstantiatedClass(stringClass, globalDependencies); | |
| 1153 } | |
| 1144 world.addToWorkList(main); | 1154 world.addToWorkList(main); |
| 1145 } | 1155 } |
| 1146 progress.reset(); | 1156 progress.reset(); |
| 1147 world.forEach((WorkItem work) { | 1157 world.forEach((WorkItem work) { |
| 1148 withCurrentElement(work.element, () => work.run(this, world)); | 1158 withCurrentElement(work.element, () => work.run(this, world)); |
| 1149 }); | 1159 }); |
| 1150 world.queueIsClosed = true; | 1160 world.queueIsClosed = true; |
| 1151 world.forEachPostProcessTask((PostProcessTask work) { | 1161 world.forEachPostProcessTask((PostProcessTask work) { |
| 1152 withCurrentElement(work.element, () => work.action()); | 1162 withCurrentElement(work.element, () => work.action()); |
| 1153 }); | 1163 }); |
| (...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1613 | 1623 |
| 1614 void close() {} | 1624 void close() {} |
| 1615 | 1625 |
| 1616 toString() => name; | 1626 toString() => name; |
| 1617 | 1627 |
| 1618 /// Convenience method for getting an [api.CompilerOutputProvider]. | 1628 /// Convenience method for getting an [api.CompilerOutputProvider]. |
| 1619 static NullSink outputProvider(String name, String extension) { | 1629 static NullSink outputProvider(String name, String extension) { |
| 1620 return new NullSink('$name.$extension'); | 1630 return new NullSink('$name.$extension'); |
| 1621 } | 1631 } |
| 1622 } | 1632 } |
| OLD | NEW |