| Index: pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
|
| diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
|
| index bd93c117b14273682a1d0cde3828a868deda3517..e7b595bf9956c5efab702738d0c928727690ff75 100644
|
| --- a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
|
| +++ b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
|
| @@ -207,7 +207,7 @@ class KernelSourceTarget extends TargetImplementation {
|
| print(message);
|
| errors.add(message);
|
| }
|
| - program = erroneousProgram();
|
| + program = erroneousProgram(isFullProgram);
|
| return uri == null
|
| ? new Future<Program>.value(program)
|
| : writeLinkedProgram(uri, program, isFullProgram: isFullProgram);
|
| @@ -265,15 +265,21 @@ class KernelSourceTarget extends TargetImplementation {
|
| }
|
| }
|
|
|
| - Program erroneousProgram() {
|
| + Program erroneousProgram(bool isFullProgram) {
|
| Uri uri = loader.first?.uri ?? Uri.parse("error:error");
|
| KernelLibraryBuilder library = new KernelLibraryBuilder(uri, loader);
|
| - KernelProcedureBuilder mainBuilder = new KernelProcedureBuilder(null, 0,
|
| - null, "main", null, null, AsyncMarker.Sync, ProcedureKind.Method);
|
| - library.addBuilder(mainBuilder.name, mainBuilder);
|
| loader.first = library;
|
| - mainBuilder.body = new ExpressionStatement(
|
| - new Throw(new StringLiteral("${errors.join('\n')}")));
|
| + if (isFullProgram) {
|
| + // If this is an outline, we shouldn't add an executable main
|
| + // method. Similarly considerations apply to separate compilation. It
|
| + // could also make sense to add a way to mark .dill files as having
|
| + // compile-time errors.
|
| + KernelProcedureBuilder mainBuilder = new KernelProcedureBuilder(null, 0,
|
| + null, "main", null, null, AsyncMarker.Sync, ProcedureKind.Method);
|
| + library.addBuilder(mainBuilder.name, mainBuilder);
|
| + mainBuilder.body = new ExpressionStatement(
|
| + new Throw(new StringLiteral("${errors.join('\n')}")));
|
| + }
|
| library.build();
|
| return link(<Library>[library.library]);
|
| }
|
|
|