@@ -10,7 +10,8 @@ import 'dart:convert' show jsonDecode;
1010
1111import 'dart:io' show File, Platform;
1212
13- import 'package:kernel/ast.dart' show Library, Component;
13+ import 'package:kernel/ast.dart'
14+ show AwaitExpression, Component, Library, Node, Visitor;
1415
1516import 'package:kernel/class_hierarchy.dart' show ClassHierarchy;
1617
@@ -422,10 +423,37 @@ class Transform extends Step<Component, Component, FastaContext> {
422423 } finally {
423424 backendTarget.enabled = false ;
424425 }
426+ List <String > errors = VerifyTransformed .verify (component);
427+ if (errors.isNotEmpty) {
428+ return fail (component, errors.join ('\n ' ));
429+ }
425430 return pass (component);
426431 }
427432}
428433
434+ /// Visitor that checks that the component has been transformed properly.
435+ // TODO(johnniwinther): Add checks for all nodes that are unsupported after
436+ // transformation.
437+ class VerifyTransformed extends Visitor <void > {
438+ List <String > errors = [];
439+
440+ @override
441+ void defaultNode (Node node) {
442+ node.visitChildren (this );
443+ }
444+
445+ @override
446+ void visitAwaitExpression (AwaitExpression node) {
447+ errors.add ("ERROR: Untransformed await expression: $node " );
448+ }
449+
450+ static List <String > verify (Component component) {
451+ VerifyTransformed visitor = new VerifyTransformed ();
452+ component.accept (visitor);
453+ return visitor.errors;
454+ }
455+ }
456+
429457class TestVmTarget extends VmTarget {
430458 bool enabled = false ;
431459
0 commit comments