Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(129)

Side by Side Diff: pkg/front_end/lib/src/fasta/builder/ast_factory.dart

Issue 2849293002: Infer types of bool/null/string literals. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'package:front_end/src/fasta/scanner.dart' show Token; 5 import 'package:front_end/src/fasta/scanner.dart' show Token;
6 import 'package:front_end/src/fasta/type_inference/type_promotion.dart'; 6 import 'package:front_end/src/fasta/type_inference/type_promotion.dart';
7 import 'package:kernel/ast.dart'; 7 import 'package:kernel/ast.dart';
8 8
9 /// An abstract class containing factory methods that create AST objects. 9 /// An abstract class containing factory methods that create AST objects.
10 /// 10 ///
(...skipping 20 matching lines...) Expand all
31 /// having a `toLocation` method on AstFactory that changes tokens to an 31 /// having a `toLocation` method on AstFactory that changes tokens to an
32 /// abstract type (`int` for kernel, `Token` for analyzer). 32 /// abstract type (`int` for kernel, `Token` for analyzer).
33 /// 33 ///
34 /// TODO(paulberry): in order to interface with analyzer, we'll need to 34 /// TODO(paulberry): in order to interface with analyzer, we'll need to
35 /// shadow-ify [DartType], since analyzer ASTs need to be able to record the 35 /// shadow-ify [DartType], since analyzer ASTs need to be able to record the
36 /// exact tokens that were used to specify a type. 36 /// exact tokens that were used to specify a type.
37 abstract class AstFactory<V> { 37 abstract class AstFactory<V> {
38 /// Creates a statement block. 38 /// Creates a statement block.
39 Block block(List<Statement> statements, Token beginToken); 39 Block block(List<Statement> statements, Token beginToken);
40 40
41 /// Creates a boolean literal.
42 BoolLiteral boolLiteral(bool value, Token token);
43
41 /// Creates a double literal. 44 /// Creates a double literal.
42 DoubleLiteral doubleLiteral(double value, Token token); 45 DoubleLiteral doubleLiteral(double value, Token token);
43 46
44 /// Creates an expression statement. 47 /// Creates an expression statement.
45 ExpressionStatement expressionStatement(Expression expression); 48 ExpressionStatement expressionStatement(Expression expression);
46 49
47 /// Creates a function expression. 50 /// Creates a function expression.
48 FunctionExpression functionExpression(FunctionNode function, Token token); 51 FunctionExpression functionExpression(FunctionNode function, Token token);
49 52
50 /// Creates an `if` statement. 53 /// Creates an `if` statement.
(...skipping 16 matching lines...) Expand all
67 70
68 /// Creates a null literal expression. 71 /// Creates a null literal expression.
69 NullLiteral nullLiteral(Token token); 72 NullLiteral nullLiteral(Token token);
70 73
71 /// Creates a return statement. 74 /// Creates a return statement.
72 Statement returnStatement(Expression expression, Token token); 75 Statement returnStatement(Expression expression, Token token);
73 76
74 /// Creates a read of a static variable. 77 /// Creates a read of a static variable.
75 StaticGet staticGet(Member readTarget, Token token); 78 StaticGet staticGet(Member readTarget, Token token);
76 79
80 /// Creates a string concatenation.
81 StringConcatenation stringConcatenation(
82 List<Expression> expressions, Token token);
83
84 /// Creates a string literal.
85 StringLiteral stringLiteral(String value, Token token);
86
77 /// Creates a variable declaration statement declaring one variable. 87 /// Creates a variable declaration statement declaring one variable.
78 /// 88 ///
79 /// TODO(paulberry): analyzer makes a distinction between a single variable 89 /// TODO(paulberry): analyzer makes a distinction between a single variable
80 /// declaration and a variable declaration statement (which can contain 90 /// declaration and a variable declaration statement (which can contain
81 /// multiple variable declarations). Currently this API only makes sense for 91 /// multiple variable declarations). Currently this API only makes sense for
82 /// kernel, which desugars each variable declaration to its own statement. 92 /// kernel, which desugars each variable declaration to its own statement.
83 /// 93 ///
84 /// If the variable declaration did not have an explicitly declared type, 94 /// If the variable declaration did not have an explicitly declared type,
85 /// [type] should be `null`. 95 /// [type] should be `null`.
86 VariableDeclaration variableDeclaration( 96 VariableDeclaration variableDeclaration(
87 String name, Token token, int functionNestingLevel, 97 String name, Token token, int functionNestingLevel,
88 {DartType type, 98 {DartType type,
89 Expression initializer, 99 Expression initializer,
90 Token equalsToken, 100 Token equalsToken,
91 bool isFinal: false, 101 bool isFinal: false,
92 bool isConst: false}); 102 bool isConst: false});
93 103
94 /// Creates a read of a local variable. 104 /// Creates a read of a local variable.
95 variableGet(VariableDeclaration variable, TypePromotionFact<V> fact, 105 variableGet(VariableDeclaration variable, TypePromotionFact<V> fact,
96 TypePromotionScope scope, Token token); 106 TypePromotionScope scope, Token token);
97 } 107 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698