From 5e09ca8d97c2b433c8ae45fcdcdcd11bd58ef3e3 Mon Sep 17 00:00:00 2001 From: Vyacheslav Egorov Date: Thu, 9 Feb 2017 17:13:47 +0100 Subject: [PATCH] Fasta: Change BodyBuilder.buildCompileTimeError to throw an instance of _CompileTimeError. This is a VM specific class that is recognized by exception handling code in VM. Using this class instead of string guarantees that VM terminates with the correct exit code: kCompilationErrorExitCode (254) and not kErrorExitCode (255). BUG= R=ahe@google.com Review-Url: https://codereview.chromium.org/2689543002 . --- pkg/front_end/lib/src/fasta/kernel/body_builder.dart | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart index 3cbbfca3049..221e89fc700 100644 --- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart +++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart @@ -2186,7 +2186,13 @@ class BodyBuilder extends ScopeListener implements BuilderHelper { Expression buildCompileTimeError(error, [int charOffset = -1]) { String message = new InputError(uri, charOffset, error).format(); print(message); - return new Throw(new StringLiteral(message)); + // TODO(ahe): Use a method on TargetImplementation for looking up the + // constructor. + final Constructor constructor = coreTypes.getCoreClass( + "dart:core", "_CompileTimeError").constructors.first; + return new Throw(new ConstructorInvocation( + constructor, + new Arguments([new StringLiteral(message)]))); } Statement buildCompileTimeErrorStatement(error, [int charOffset = -1]) {