6fa813d818
Before: Kernel static errors were represented by throwing a distinguished error or else by calling a distinguished library const constructor. Now: Kernel static errors are represented by InvalidExpression. To support error reporting, InvalidExpression has an optional message and a file offset. A back end can choose to signal these errors at any time; for example, when deserializing the binary, or when compiling the procedure containing the static error, or when the erroneous expression is evaluated at run time. InvalidStatement is removed because it can be encoded as ExpressionStatement of InvalidExpression. Future work: * supporting static errors where an expression cannot appear in the AST * allowing InvalidExpression to contain an Expression for error recovery * adding a top-level list of static errors and warnings to the binary Bug: https://github.com/dart-lang/sdk/issues/29840 Change-Id: Ifdfe9a76cee6cefed28061bf245be70531d2f413 Reviewed-on: https://dart-review.googlesource.com/31320 Commit-Queue: Kevin Millikin <kmillikin@google.com> Reviewed-by: Dan Rubel <danrubel@google.com> Reviewed-by: Konstantin Shcheglov <scheglov@google.com>