Add parameters needed by analyzer to Factory, part 1

Change-Id: Ide781bf108fdaf3d44453a2f3af1bed959010dcb
Reviewed-on: https://dart-review.googlesource.com/61084
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
diff --git a/pkg/front_end/lib/src/fasta/kernel/factory.dart b/pkg/front_end/lib/src/fasta/kernel/factory.dart
index 64bb7a1..56076d3 100644
--- a/pkg/front_end/lib/src/fasta/kernel/factory.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/factory.dart
@@ -20,22 +20,41 @@
       int fileOffset,
       Expression expression,
       Token asOperator,
-      Type type,
+      Type literalType,
       DartType inferredType);
 
-  Initializer assertInitializer(InitializerJudgment judgment, int fileOffset);
+  Initializer assertInitializer(
+      InitializerJudgment judgment,
+      int fileOffset,
+      Token assertKeyword,
+      Token leftParenthesis,
+      Expression condition,
+      Token comma,
+      Expression message,
+      Token rightParenthesis);
 
-  Statement assertStatement(StatementJudgment judgment, int fileOffset);
+  Statement assertStatement(
+      StatementJudgment judgment,
+      int fileOffset,
+      Token assertKeyword,
+      Token leftParenthesis,
+      Expression condition,
+      Token comma,
+      Expression message,
+      Token rightParenthesis,
+      Token semicolon);
 
-  Expression awaitExpression(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType);
+  Expression awaitExpression(ExpressionJudgment judgment, int fileOffset,
+      Token awaitKeyword, Expression expression, DartType inferredType);
 
-  Statement block(StatementJudgment judgment, int fileOffset);
+  Statement block(StatementJudgment judgment, int fileOffset, Token leftBracket,
+      List<Statement> statements, Token rightBracket);
 
-  Expression boolLiteral(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType);
+  Expression boolLiteral(ExpressionJudgment judgment, int fileOffset,
+      Token literal, DartType inferredType);
 
-  Statement breakStatement(StatementJudgment judgment, int fileOffset);
+  Statement breakStatement(StatementJudgment judgment, int fileOffset,
+      Token breakKeyword, Expression label, Token semicolon);
 
   Expression cascadeExpression(
       ExpressionJudgment judgment, int fileOffset, DartType inferredType);
@@ -50,7 +69,14 @@
       DartType stackTraceType);
 
   Expression conditionalExpression(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType);
+      ExpressionJudgment judgment,
+      int fileOffset,
+      Expression condition,
+      Token question,
+      Expression thenExpression,
+      Token colon,
+      Expression elseExpression,
+      DartType inferredType);
 
   Expression constructorInvocation(ExpressionJudgment judgment, int fileOffset,
       Node expressionTarget, DartType inferredType);
@@ -60,12 +86,22 @@
   Expression deferredCheck(
       ExpressionJudgment judgment, int fileOffset, DartType inferredType);
 
-  Statement doStatement(StatementJudgment judgment, int fileOffset);
+  Statement doStatement(
+      StatementJudgment judgment,
+      int fileOffset,
+      Token doKeyword,
+      Statement body,
+      Token whileKeyword,
+      Token leftParenthesis,
+      Expression condition,
+      Token rightParenthesis,
+      Token semicolon);
 
-  Expression doubleLiteral(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType);
+  Expression doubleLiteral(ExpressionJudgment judgment, int fileOffset,
+      Token literal, DartType inferredType);
 
-  Statement expressionStatement(StatementJudgment judgment, int fileOffset);
+  Statement expressionStatement(StatementJudgment judgment, int fileOffset,
+      Expression expression, Token semicolon);
 
   Initializer fieldInitializer(
       InitializerJudgment judgment, int fileOffset, Node initializerField);
@@ -91,21 +127,43 @@
   Expression ifNull(
       ExpressionJudgment judgment, int fileOffset, DartType inferredType);
 
-  Statement ifStatement(StatementJudgment judgment, int fileOffset);
+  Statement ifStatement(
+      StatementJudgment judgment,
+      int fileOffset,
+      Token ifKeyword,
+      Token leftParenthesis,
+      Expression condition,
+      Token rightParenthesis,
+      Statement thenStatement,
+      Token elseKeyword,
+      Statement elseStatement);
 
   Expression indexAssign(ExpressionJudgment judgment, int fileOffset,
       Node writeMember, Node combiner, DartType inferredType);
 
-  Expression intLiteral(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType);
+  Expression intLiteral(ExpressionJudgment judgment, int fileOffset,
+      Token literal, DartType inferredType);
 
   Initializer invalidInitializer(InitializerJudgment judgment, int fileOffset);
 
-  Expression isExpression(ExpressionJudgment judgment, int fileOffset,
-      DartType testedType, DartType inferredType);
+  Expression isExpression(
+      ExpressionJudgment judgment,
+      int fileOffset,
+      Expression expression,
+      Token isOperator,
+      Type literalType,
+      DartType testedType,
+      DartType inferredType);
 
-  Expression isNotExpression(ExpressionJudgment judgment, int fileOffset,
-      DartType type, DartType inferredType);
+  Expression isNotExpression(
+      ExpressionJudgment judgment,
+      int fileOffset,
+      Expression expression,
+      Token isOperator,
+      Token notOperator,
+      Type literalType,
+      DartType testedType,
+      DartType inferredType);
 
   Statement labeledStatement(StatementJudgment judgment, int fileOffset);
 
@@ -144,7 +202,7 @@
       ExpressionJudgment judgment, int fileOffset, DartType inferredType);
 
   Expression nullLiteral(ExpressionJudgment judgment, int fileOffset,
-      bool isSynthetic, DartType inferredType);
+      Token literal, bool isSynthetic, DartType inferredType);
 
   Expression propertyAssign(
       ExpressionJudgment judgment,
@@ -166,10 +224,11 @@
   Initializer redirectingInitializer(
       InitializerJudgment judgment, int fileOffset, Node initializerTarget);
 
-  Expression rethrow_(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType);
+  Expression rethrow_(ExpressionJudgment judgment, int fileOffset,
+      Token rethrowKeyword, DartType inferredType);
 
-  Statement returnStatement(StatementJudgment judgment, int fileOffset);
+  Statement returnStatement(StatementJudgment judgment, int fileOffset,
+      Token returnKeyword, Expression expression, Token semicolon);
 
   Expression staticAssign(
       ExpressionJudgment judgment,
@@ -204,11 +263,11 @@
   Expression symbolLiteral(
       ExpressionJudgment judgment, int fileOffset, DartType inferredType);
 
-  Expression thisExpression(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType);
+  Expression thisExpression(ExpressionJudgment judgment, int fileOffset,
+      Token thisKeyword, DartType inferredType);
 
-  Expression throw_(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType);
+  Expression throw_(ExpressionJudgment judgment, int fileOffset,
+      Token throwKeyword, Expression expression, DartType inferredType);
 
   Statement tryCatch(StatementJudgment judgment, int fileOffset);
 
@@ -238,9 +297,17 @@
   Expression variableSet(
       ExpressionJudgment judgment, int fileOffset, DartType inferredType);
 
-  Statement whileStatement(StatementJudgment judgment, int fileOffset);
+  Statement whileStatement(
+      StatementJudgment judgment,
+      int fileOffset,
+      Token whileKeyword,
+      Token leftParenthesis,
+      Expression condition,
+      Token rightParenthesis,
+      Statement body);
 
-  Statement yieldStatement(StatementJudgment judgment, int fileOffset);
+  Statement yieldStatement(StatementJudgment judgment, int fileOffset,
+      Token yieldKeyword, Token star, Expression expression, Token semicolon);
 
   /// TODO(paulberry): this isn't really shaped properly for a factory class.
   void storePrefixInfo(int fileOffset, int prefixImportIndex);
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_factory.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_factory.dart
index 786f3e5..66e026b 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_factory.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_factory.dart
@@ -24,47 +24,66 @@
 /// Implementation of [Factory] that builds source code into a kernel
 /// representation.
 class KernelFactory
-    implements Factory<Expression, Statement, Initializer, DartType> {
+    implements Factory<Expression, Statement, Initializer, void> {
   @override
   Expression asExpression(
       ExpressionJudgment judgment,
       int fileOffset,
       Expression expression,
       Token asOperator,
-      DartType type,
+      void literalType,
       DartType inferredType) {
     return judgment;
   }
 
   @override
-  Initializer assertInitializer(InitializerJudgment judgment, int fileOffset) {
+  Initializer assertInitializer(
+      InitializerJudgment judgment,
+      int fileOffset,
+      Token assertKeyword,
+      Token leftParenthesis,
+      Expression condition,
+      Token comma,
+      Expression message,
+      Token rightParenthesis) {
     return judgment;
   }
 
   @override
-  Statement assertStatement(StatementJudgment judgment, int fileOffset) {
+  Statement assertStatement(
+      StatementJudgment judgment,
+      int fileOffset,
+      Token assertKeyword,
+      Token leftParenthesis,
+      Expression condition,
+      Token comma,
+      Expression message,
+      Token rightParenthesis,
+      Token semicolon) {
     return judgment;
   }
 
   @override
-  Expression awaitExpression(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType) {
+  Expression awaitExpression(ExpressionJudgment judgment, int fileOffset,
+      Token awaitKeyword, Expression expression, DartType inferredType) {
     return judgment;
   }
 
   @override
-  Statement block(StatementJudgment judgment, int fileOffset) {
+  Statement block(StatementJudgment judgment, int fileOffset, Token leftBracket,
+      List<Statement> statements, Token rightBracket) {
     return judgment;
   }
 
   @override
-  Expression boolLiteral(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType) {
+  Expression boolLiteral(ExpressionJudgment judgment, int fileOffset,
+      Token literal, DartType inferredType) {
     return judgment;
   }
 
   @override
-  Statement breakStatement(StatementJudgment judgment, int fileOffset) {
+  Statement breakStatement(StatementJudgment judgment, int fileOffset,
+      Token breakKeyword, Expression label, Token semicolon) {
     return judgment;
   }
 
@@ -88,7 +107,14 @@
 
   @override
   Expression conditionalExpression(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType) {
+      ExpressionJudgment judgment,
+      int fileOffset,
+      Expression condition,
+      Token question,
+      Expression thenExpression,
+      Token colon,
+      Expression elseExpression,
+      DartType inferredType) {
     return judgment;
   }
 
@@ -111,18 +137,28 @@
   }
 
   @override
-  Statement doStatement(StatementJudgment judgment, int fileOffset) {
+  Statement doStatement(
+      StatementJudgment judgment,
+      int fileOffset,
+      Token doKeyword,
+      Statement body,
+      Token whileKeyword,
+      Token leftParenthesis,
+      Expression condition,
+      Token rightParenthesis,
+      Token semicolon) {
     return judgment;
   }
 
   @override
-  Expression doubleLiteral(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType) {
+  Expression doubleLiteral(ExpressionJudgment judgment, int fileOffset,
+      Token literal, DartType inferredType) {
     return judgment;
   }
 
   @override
-  Statement expressionStatement(StatementJudgment judgment, int fileOffset) {
+  Statement expressionStatement(StatementJudgment judgment, int fileOffset,
+      Expression expression, Token semicolon) {
     return judgment;
   }
 
@@ -169,7 +205,16 @@
   }
 
   @override
-  Statement ifStatement(StatementJudgment judgment, int fileOffset) {
+  Statement ifStatement(
+      StatementJudgment judgment,
+      int fileOffset,
+      Token ifKeyword,
+      Token leftParenthesis,
+      Expression condition,
+      Token rightParenthesis,
+      Statement thenStatement,
+      Token elseKeyword,
+      Statement elseStatement) {
     return judgment;
   }
 
@@ -180,8 +225,8 @@
   }
 
   @override
-  Expression intLiteral(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType) {
+  Expression intLiteral(ExpressionJudgment judgment, int fileOffset,
+      Token literal, DartType inferredType) {
     return judgment;
   }
 
@@ -191,14 +236,27 @@
   }
 
   @override
-  Expression isExpression(ExpressionJudgment judgment, int fileOffset,
-      DartType testedType, DartType inferredType) {
+  Expression isExpression(
+      ExpressionJudgment judgment,
+      int fileOffset,
+      Expression expression,
+      Token isOperator,
+      void literalType,
+      DartType testedType,
+      DartType inferredType) {
     return judgment;
   }
 
   @override
-  Expression isNotExpression(ExpressionJudgment judgment, int fileOffset,
-      DartType type, DartType inferredType) {
+  Expression isNotExpression(
+      ExpressionJudgment judgment,
+      int fileOffset,
+      Expression expression,
+      Token isOperator,
+      Token notOperator,
+      void literalType,
+      DartType testedType,
+      DartType inferredType) {
     return judgment;
   }
 
@@ -264,7 +322,7 @@
 
   @override
   Expression nullLiteral(ExpressionJudgment judgment, int fileOffset,
-      bool isSynthetic, DartType inferredType) {
+      Token literal, bool isSynthetic, DartType inferredType) {
     return judgment;
   }
 
@@ -304,13 +362,14 @@
   }
 
   @override
-  Expression rethrow_(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType) {
+  Expression rethrow_(ExpressionJudgment judgment, int fileOffset,
+      Token rethrowKeyword, DartType inferredType) {
     return judgment;
   }
 
   @override
-  Statement returnStatement(StatementJudgment judgment, int fileOffset) {
+  Statement returnStatement(StatementJudgment judgment, int fileOffset,
+      Token returnKeyword, Expression expression, Token semicolon) {
     return judgment;
   }
 
@@ -378,14 +437,14 @@
   }
 
   @override
-  Expression thisExpression(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType) {
+  Expression thisExpression(ExpressionJudgment judgment, int fileOffset,
+      Token thisKeyword, DartType inferredType) {
     return judgment;
   }
 
   @override
-  Expression throw_(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType) {
+  Expression throw_(ExpressionJudgment judgment, int fileOffset,
+      Token throwKeyword, Expression expression, DartType inferredType) {
     return judgment;
   }
 
@@ -439,12 +498,20 @@
   }
 
   @override
-  Statement whileStatement(StatementJudgment judgment, int fileOffset) {
+  Statement whileStatement(
+      StatementJudgment judgment,
+      int fileOffset,
+      Token whileKeyword,
+      Token leftParenthesis,
+      Expression condition,
+      Token rightParenthesis,
+      Statement body) {
     return judgment;
   }
 
   @override
-  Statement yieldStatement(StatementJudgment judgment, int fileOffset) {
+  Statement yieldStatement(StatementJudgment judgment, int fileOffset,
+      Token yieldKeyword, Token star, Expression expression, Token semicolon) {
     return judgment;
   }
 }
diff --git a/pkg/front_end/lib/src/fasta/kernel/toplevel_inference_factory.dart b/pkg/front_end/lib/src/fasta/kernel/toplevel_inference_factory.dart
index c154aec..52f4cd2 100644
--- a/pkg/front_end/lib/src/fasta/kernel/toplevel_inference_factory.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/toplevel_inference_factory.dart
@@ -20,28 +20,52 @@
   const ToplevelInferenceFactory();
 
   @override
-  void asExpression(ExpressionJudgment judgment, int fileOffset,
-      void expression, Token asOperator, void type, DartType inferredType) {}
+  void asExpression(
+      ExpressionJudgment judgment,
+      int fileOffset,
+      void expression,
+      Token asOperator,
+      void literalType,
+      DartType inferredType) {}
 
   @override
-  void assertInitializer(InitializerJudgment judgment, int fileOffset) {}
+  void assertInitializer(
+      InitializerJudgment judgment,
+      int fileOffset,
+      Token assertKeyword,
+      Token leftParenthesis,
+      void condition,
+      Token comma,
+      void message,
+      Token rightParenthesis) {}
 
   @override
-  void assertStatement(StatementJudgment judgment, int fileOffset) {}
+  void assertStatement(
+      StatementJudgment judgment,
+      int fileOffset,
+      Token assertKeyword,
+      Token leftParenthesis,
+      void condition,
+      Token comma,
+      void message,
+      Token rightParenthesis,
+      Token semicolon) {}
 
   @override
-  void awaitExpression(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType) {}
+  void awaitExpression(ExpressionJudgment judgment, int fileOffset,
+      Token awaitKeyword, void expression, DartType inferredType) {}
 
   @override
-  void block(StatementJudgment judgment, int fileOffset) {}
+  void block(StatementJudgment judgment, int fileOffset, Token leftBracket,
+      void statements, Token rightBracket) {}
 
   @override
-  void boolLiteral(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType) {}
+  void boolLiteral(ExpressionJudgment judgment, int fileOffset, Token literal,
+      DartType inferredType) {}
 
   @override
-  void breakStatement(StatementJudgment judgment, int fileOffset) {}
+  void breakStatement(StatementJudgment judgment, int fileOffset,
+      Token breakKeyword, void label, Token semicolon) {}
 
   @override
   void cascadeExpression(
@@ -61,7 +85,14 @@
 
   @override
   void conditionalExpression(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType) {}
+      ExpressionJudgment judgment,
+      int fileOffset,
+      void condition,
+      Token question,
+      void thenExpression,
+      Token colon,
+      void elseExpression,
+      DartType inferredType) {}
 
   @override
   void constructorInvocation(ExpressionJudgment judgment, int fileOffset,
@@ -75,14 +106,24 @@
       ExpressionJudgment judgment, int fileOffset, DartType inferredType) {}
 
   @override
-  void doStatement(StatementJudgment judgment, int fileOffset) {}
+  void doStatement(
+      StatementJudgment judgment,
+      int fileOffset,
+      Token doKeyword,
+      void body,
+      Token whileKeyword,
+      Token leftParenthesis,
+      void condition,
+      Token rightParenthesis,
+      Token semicolon) {}
 
   @override
-  void doubleLiteral(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType) {}
+  void doubleLiteral(ExpressionJudgment judgment, int fileOffset, Token literal,
+      DartType inferredType) {}
 
   @override
-  void expressionStatement(StatementJudgment judgment, int fileOffset) {}
+  void expressionStatement(StatementJudgment judgment, int fileOffset,
+      void expression, Token semicolon) {}
 
   @override
   void fieldInitializer(
@@ -115,26 +156,48 @@
       ExpressionJudgment judgment, int fileOffset, DartType inferredType) {}
 
   @override
-  void ifStatement(StatementJudgment judgment, int fileOffset) {}
+  void ifStatement(
+      StatementJudgment judgment,
+      int fileOffset,
+      Token ifKeyword,
+      Token leftParenthesis,
+      void condition,
+      Token rightParenthesis,
+      void thenStatement,
+      Token elseKeyword,
+      void elseStatement) {}
 
   @override
   void indexAssign(ExpressionJudgment judgment, int fileOffset,
       Node writeMember, Node combiner, DartType inferredType) {}
 
   @override
-  void intLiteral(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType) {}
+  void intLiteral(ExpressionJudgment judgment, int fileOffset, Token literal,
+      DartType inferredType) {}
 
   @override
   void invalidInitializer(InitializerJudgment judgment, int fileOffset) {}
 
   @override
-  void isExpression(ExpressionJudgment judgment, int fileOffset,
-      DartType testedType, DartType inferredType) {}
+  void isExpression(
+      ExpressionJudgment judgment,
+      int fileOffset,
+      void expression,
+      Token isOperator,
+      void literalType,
+      DartType testedType,
+      DartType inferredType) {}
 
   @override
-  void isNotExpression(ExpressionJudgment judgment, int fileOffset,
-      DartType type, DartType inferredType) {}
+  void isNotExpression(
+      ExpressionJudgment judgment,
+      int fileOffset,
+      void expression,
+      Token isOperator,
+      Token notOperator,
+      void literalType,
+      DartType testedType,
+      DartType inferredType) {}
 
   @override
   void labeledStatement(StatementJudgment judgment, int fileOffset) {}
@@ -181,7 +244,7 @@
       ExpressionJudgment judgment, int fileOffset, DartType inferredType) {}
 
   @override
-  void nullLiteral(ExpressionJudgment judgment, int fileOffset,
+  void nullLiteral(ExpressionJudgment judgment, int fileOffset, Token literal,
       bool isSynthetic, DartType inferredType) {}
 
   @override
@@ -210,11 +273,12 @@
       InitializerJudgment judgment, int fileOffset, Node initializerTarget) {}
 
   @override
-  void rethrow_(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType) {}
+  void rethrow_(ExpressionJudgment judgment, int fileOffset,
+      Token rethrowKeyword, DartType inferredType) {}
 
   @override
-  void returnStatement(StatementJudgment judgment, int fileOffset) {}
+  void returnStatement(StatementJudgment judgment, int fileOffset,
+      Token returnKeyword, void expression, Token semicolon) {}
 
   @override
   void staticAssign(
@@ -264,12 +328,12 @@
       ExpressionJudgment judgment, int fileOffset, DartType inferredType) {}
 
   @override
-  void thisExpression(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType) {}
+  void thisExpression(ExpressionJudgment judgment, int fileOffset,
+      Token thisKeyword, DartType inferredType) {}
 
   @override
-  void throw_(
-      ExpressionJudgment judgment, int fileOffset, DartType inferredType) {}
+  void throw_(ExpressionJudgment judgment, int fileOffset, Token throwKeyword,
+      void expression, DartType inferredType) {}
 
   @override
   void tryCatch(StatementJudgment judgment, int fileOffset) {}
@@ -307,10 +371,18 @@
       ExpressionJudgment judgment, int fileOffset, DartType inferredType) {}
 
   @override
-  void whileStatement(StatementJudgment judgment, int fileOffset) {}
+  void whileStatement(
+      StatementJudgment judgment,
+      int fileOffset,
+      Token whileKeyword,
+      Token leftParenthesis,
+      void condition,
+      Token rightParenthesis,
+      void body) {}
 
   @override
-  void yieldStatement(StatementJudgment judgment, int fileOffset) {}
+  void yieldStatement(StatementJudgment judgment, int fileOffset,
+      Token yieldKeyword, Token star, void expression, Token semicolon) {}
 }
 
 const toplevelInferenceFactory = const ToplevelInferenceFactory();