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

Side by Side Diff: pkg/analyzer/lib/src/generated/ast.dart

Issue 1212683002: AST changes necessary for generic method support (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 5 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
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/generated/engine.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 // This code was auto-generated, is not intended to be edited, and is subject to 5 // This code was auto-generated, is not intended to be edited, and is subject to
6 // significant change. Please see the README file for more information. 6 // significant change. Please see the README file for more information.
7 7
8 library engine.ast; 8 library engine.ast;
9 9
10 import 'dart:collection'; 10 import 'dart:collection';
(...skipping 1227 matching lines...) Expand 10 before | Expand all | Expand 10 after
1238 new FieldDeclaration(cloneNode(node.documentationComment), 1238 new FieldDeclaration(cloneNode(node.documentationComment),
1239 cloneNodeList(node.metadata), cloneToken(node.staticKeyword), 1239 cloneNodeList(node.metadata), cloneToken(node.staticKeyword),
1240 cloneNode(node.fields), cloneToken(node.semicolon)); 1240 cloneNode(node.fields), cloneToken(node.semicolon));
1241 1241
1242 @override 1242 @override
1243 FieldFormalParameter visitFieldFormalParameter(FieldFormalParameter node) => 1243 FieldFormalParameter visitFieldFormalParameter(FieldFormalParameter node) =>
1244 new FieldFormalParameter(cloneNode(node.documentationComment), 1244 new FieldFormalParameter(cloneNode(node.documentationComment),
1245 cloneNodeList(node.metadata), cloneToken(node.keyword), 1245 cloneNodeList(node.metadata), cloneToken(node.keyword),
1246 cloneNode(node.type), cloneToken(node.thisKeyword), 1246 cloneNode(node.type), cloneToken(node.thisKeyword),
1247 cloneToken(node.period), cloneNode(node.identifier), 1247 cloneToken(node.period), cloneNode(node.identifier),
1248 cloneNode(node.parameters)); 1248 cloneNode(node.typeParameters), cloneNode(node.parameters));
1249 1249
1250 @override 1250 @override
1251 ForEachStatement visitForEachStatement(ForEachStatement node) { 1251 ForEachStatement visitForEachStatement(ForEachStatement node) {
1252 DeclaredIdentifier loopVariable = node.loopVariable; 1252 DeclaredIdentifier loopVariable = node.loopVariable;
1253 if (loopVariable == null) { 1253 if (loopVariable == null) {
1254 return new ForEachStatement.withReference(cloneToken(node.awaitKeyword), 1254 return new ForEachStatement.withReference(cloneToken(node.awaitKeyword),
1255 cloneToken(node.forKeyword), cloneToken(node.leftParenthesis), 1255 cloneToken(node.forKeyword), cloneToken(node.leftParenthesis),
1256 cloneNode(node.identifier), cloneToken(node.inKeyword), 1256 cloneNode(node.identifier), cloneToken(node.inKeyword),
1257 cloneNode(node.iterable), cloneToken(node.rightParenthesis), 1257 cloneNode(node.iterable), cloneToken(node.rightParenthesis),
1258 cloneNode(node.body)); 1258 cloneNode(node.body));
(...skipping 26 matching lines...) Expand all
1285 cloneNode(node.returnType), cloneToken(node.propertyKeyword), 1285 cloneNode(node.returnType), cloneToken(node.propertyKeyword),
1286 cloneNode(node.name), cloneNode(node.functionExpression)); 1286 cloneNode(node.name), cloneNode(node.functionExpression));
1287 1287
1288 @override 1288 @override
1289 FunctionDeclarationStatement visitFunctionDeclarationStatement( 1289 FunctionDeclarationStatement visitFunctionDeclarationStatement(
1290 FunctionDeclarationStatement node) => 1290 FunctionDeclarationStatement node) =>
1291 new FunctionDeclarationStatement(cloneNode(node.functionDeclaration)); 1291 new FunctionDeclarationStatement(cloneNode(node.functionDeclaration));
1292 1292
1293 @override 1293 @override
1294 FunctionExpression visitFunctionExpression(FunctionExpression node) => 1294 FunctionExpression visitFunctionExpression(FunctionExpression node) =>
1295 new FunctionExpression(cloneNode(node.parameters), cloneNode(node.body)); 1295 new FunctionExpression(cloneNode(node.typeParameters),
1296 cloneNode(node.parameters), cloneNode(node.body));
1296 1297
1297 @override 1298 @override
1298 FunctionExpressionInvocation visitFunctionExpressionInvocation( 1299 FunctionExpressionInvocation visitFunctionExpressionInvocation(
1299 FunctionExpressionInvocation node) => new FunctionExpressionInvocation( 1300 FunctionExpressionInvocation node) => new FunctionExpressionInvocation(
1300 cloneNode(node.function), cloneNode(node.argumentList)); 1301 cloneNode(node.function), cloneNode(node.typeArguments),
1302 cloneNode(node.argumentList));
1301 1303
1302 @override 1304 @override
1303 FunctionTypeAlias visitFunctionTypeAlias(FunctionTypeAlias node) => 1305 FunctionTypeAlias visitFunctionTypeAlias(FunctionTypeAlias node) =>
1304 new FunctionTypeAlias(cloneNode(node.documentationComment), 1306 new FunctionTypeAlias(cloneNode(node.documentationComment),
1305 cloneNodeList(node.metadata), cloneToken(node.typedefKeyword), 1307 cloneNodeList(node.metadata), cloneToken(node.typedefKeyword),
1306 cloneNode(node.returnType), cloneNode(node.name), 1308 cloneNode(node.returnType), cloneNode(node.name),
1307 cloneNode(node.typeParameters), cloneNode(node.parameters), 1309 cloneNode(node.typeParameters), cloneNode(node.parameters),
1308 cloneToken(node.semicolon)); 1310 cloneToken(node.semicolon));
1309 1311
1310 @override 1312 @override
1311 FunctionTypedFormalParameter visitFunctionTypedFormalParameter( 1313 FunctionTypedFormalParameter visitFunctionTypedFormalParameter(
1312 FunctionTypedFormalParameter node) => new FunctionTypedFormalParameter( 1314 FunctionTypedFormalParameter node) => new FunctionTypedFormalParameter(
1313 cloneNode(node.documentationComment), cloneNodeList(node.metadata), 1315 cloneNode(node.documentationComment), cloneNodeList(node.metadata),
1314 cloneNode(node.returnType), cloneNode(node.identifier), 1316 cloneNode(node.returnType), cloneNode(node.identifier),
1315 cloneNode(node.parameters)); 1317 cloneNode(node.typeParameters), cloneNode(node.parameters));
1316 1318
1317 @override 1319 @override
1318 HideCombinator visitHideCombinator(HideCombinator node) => new HideCombinator( 1320 HideCombinator visitHideCombinator(HideCombinator node) => new HideCombinator(
1319 cloneToken(node.keyword), cloneNodeList(node.hiddenNames)); 1321 cloneToken(node.keyword), cloneNodeList(node.hiddenNames));
1320 1322
1321 @override 1323 @override
1322 IfStatement visitIfStatement(IfStatement node) => new IfStatement( 1324 IfStatement visitIfStatement(IfStatement node) => new IfStatement(
1323 cloneToken(node.ifKeyword), cloneToken(node.leftParenthesis), 1325 cloneToken(node.ifKeyword), cloneToken(node.leftParenthesis),
1324 cloneNode(node.condition), cloneToken(node.rightParenthesis), 1326 cloneNode(node.condition), cloneToken(node.rightParenthesis),
1325 cloneNode(node.thenStatement), cloneToken(node.elseKeyword), 1327 cloneNode(node.thenStatement), cloneToken(node.elseKeyword),
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
1417 MapLiteralEntry visitMapLiteralEntry( 1419 MapLiteralEntry visitMapLiteralEntry(
1418 MapLiteralEntry node) => new MapLiteralEntry( 1420 MapLiteralEntry node) => new MapLiteralEntry(
1419 cloneNode(node.key), cloneToken(node.separator), cloneNode(node.value)); 1421 cloneNode(node.key), cloneToken(node.separator), cloneNode(node.value));
1420 1422
1421 @override 1423 @override
1422 MethodDeclaration visitMethodDeclaration(MethodDeclaration node) => 1424 MethodDeclaration visitMethodDeclaration(MethodDeclaration node) =>
1423 new MethodDeclaration(cloneNode(node.documentationComment), 1425 new MethodDeclaration(cloneNode(node.documentationComment),
1424 cloneNodeList(node.metadata), cloneToken(node.externalKeyword), 1426 cloneNodeList(node.metadata), cloneToken(node.externalKeyword),
1425 cloneToken(node.modifierKeyword), cloneNode(node.returnType), 1427 cloneToken(node.modifierKeyword), cloneNode(node.returnType),
1426 cloneToken(node.propertyKeyword), cloneToken(node.operatorKeyword), 1428 cloneToken(node.propertyKeyword), cloneToken(node.operatorKeyword),
1427 cloneNode(node.name), cloneNode(node.parameters), 1429 cloneNode(node.name), cloneNode(node.typeParameters),
1428 cloneNode(node.body)); 1430 cloneNode(node.parameters), cloneNode(node.body));
1429 1431
1430 @override 1432 @override
1431 MethodInvocation visitMethodInvocation(MethodInvocation node) => 1433 MethodInvocation visitMethodInvocation(MethodInvocation node) =>
1432 new MethodInvocation(cloneNode(node.target), cloneToken(node.operator), 1434 new MethodInvocation(cloneNode(node.target), cloneToken(node.operator),
1433 cloneNode(node.methodName), cloneNode(node.argumentList)); 1435 cloneNode(node.methodName), cloneNode(node.typeArguments),
1436 cloneNode(node.argumentList));
1434 1437
1435 @override 1438 @override
1436 NamedExpression visitNamedExpression(NamedExpression node) => 1439 NamedExpression visitNamedExpression(NamedExpression node) =>
1437 new NamedExpression(cloneNode(node.name), cloneNode(node.expression)); 1440 new NamedExpression(cloneNode(node.name), cloneNode(node.expression));
1438 1441
1439 @override 1442 @override
1440 AstNode visitNativeClause(NativeClause node) => 1443 AstNode visitNativeClause(NativeClause node) =>
1441 new NativeClause(cloneToken(node.nativeKeyword), cloneNode(node.name)); 1444 new NativeClause(cloneToken(node.nativeKeyword), cloneNode(node.name));
1442 1445
1443 @override 1446 @override
(...skipping 5678 matching lines...) Expand 10 before | Expand all | Expand 10 after
7122 super.visitChildren(visitor); 7125 super.visitChildren(visitor);
7123 _safelyVisitChild(_fieldList, visitor); 7126 _safelyVisitChild(_fieldList, visitor);
7124 } 7127 }
7125 } 7128 }
7126 7129
7127 /** 7130 /**
7128 * A field formal parameter. 7131 * A field formal parameter.
7129 * 7132 *
7130 * > fieldFormalParameter ::= 7133 * > fieldFormalParameter ::=
7131 * > ('final' [TypeName] | 'const' [TypeName] | 'var' | [TypeName])? 7134 * > ('final' [TypeName] | 'const' [TypeName] | 'var' | [TypeName])?
7132 * > 'this' '.' [SimpleIdentifier] [FormalParameterList]? 7135 * > 'this' '.' [SimpleIdentifier] ([TypeParameterList]? [FormalParameterLis t])?
7133 */ 7136 */
7134 class FieldFormalParameter extends NormalFormalParameter { 7137 class FieldFormalParameter extends NormalFormalParameter {
7135 /** 7138 /**
7136 * The token representing either the 'final', 'const' or 'var' keyword, or 7139 * The token representing either the 'final', 'const' or 'var' keyword, or
7137 * `null` if no keyword was used. 7140 * `null` if no keyword was used.
7138 */ 7141 */
7139 Token keyword; 7142 Token keyword;
7140 7143
7141 /** 7144 /**
7142 * The name of the declared type of the parameter, or `null` if the parameter 7145 * The name of the declared type of the parameter, or `null` if the parameter
7143 * does not have a declared type. 7146 * does not have a declared type.
7144 */ 7147 */
7145 TypeName _type; 7148 TypeName _type;
7146 7149
7147 /** 7150 /**
7148 * The token representing the 'this' keyword. 7151 * The token representing the 'this' keyword.
7149 */ 7152 */
7150 Token thisKeyword; 7153 Token thisKeyword;
7151 7154
7152 /** 7155 /**
7153 * The token representing the period. 7156 * The token representing the period.
7154 */ 7157 */
7155 Token period; 7158 Token period;
7156 7159
7157 /** 7160 /**
7161 * The type parameters associated with the method, or `null` if the method is
7162 * not a generic method.
7163 */
7164 TypeParameterList _typeParameters;
7165
7166 /**
7158 * The parameters of the function-typed parameter, or `null` if this is not a 7167 * The parameters of the function-typed parameter, or `null` if this is not a
7159 * function-typed field formal parameter. 7168 * function-typed field formal parameter.
7160 */ 7169 */
7161 FormalParameterList _parameters; 7170 FormalParameterList _parameters;
7162 7171
7163 /** 7172 /**
7164 * Initialize a newly created formal parameter. Either or both of the 7173 * Initialize a newly created formal parameter. Either or both of the
7165 * [comment] and [metadata] can be `null` if the parameter does not have the 7174 * [comment] and [metadata] can be `null` if the parameter does not have the
7166 * corresponding attribute. The [keyword] can be `null` if there is a type. 7175 * corresponding attribute. The [keyword] can be `null` if there is a type.
7167 * The [type] must be `null` if the keyword is 'var'. The [thisKeyword] and 7176 * The [type] must be `null` if the keyword is 'var'. The [thisKeyword] and
7168 * [period] can be `null` if the keyword 'this' was not provided. The 7177 * [period] can be `null` if the keyword 'this' was not provided. The
7169 * [parameters] can be `null` if this is not a function-typed field formal 7178 * [parameters] can be `null` if this is not a function-typed field formal
7170 * parameter. 7179 * parameter.
7171 */ 7180 */
7172 FieldFormalParameter(Comment comment, List<Annotation> metadata, this.keyword, 7181 FieldFormalParameter(Comment comment, List<Annotation> metadata, this.keyword,
7173 TypeName type, this.thisKeyword, this.period, SimpleIdentifier identifier, 7182 TypeName type, this.thisKeyword, this.period, SimpleIdentifier identifier,
7174 FormalParameterList parameters) 7183 TypeParameterList typeParameters, FormalParameterList parameters)
7175 : super(comment, metadata, identifier) { 7184 : super(comment, metadata, identifier) {
7176 _type = _becomeParentOf(type); 7185 _type = _becomeParentOf(type);
7186 _typeParameters = _becomeParentOf(typeParameters);
7177 _parameters = _becomeParentOf(parameters); 7187 _parameters = _becomeParentOf(parameters);
7178 } 7188 }
7179 7189
7180 @override 7190 @override
7181 Token get beginToken { 7191 Token get beginToken {
7182 if (keyword != null) { 7192 if (keyword != null) {
7183 return keyword; 7193 return keyword;
7184 } else if (_type != null) { 7194 } else if (_type != null) {
7185 return _type.beginToken; 7195 return _type.beginToken;
7186 } 7196 }
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
7248 */ 7258 */
7249 TypeName get type => _type; 7259 TypeName get type => _type;
7250 7260
7251 /** 7261 /**
7252 * Set the name of the declared type of the parameter to the given [typeName]. 7262 * Set the name of the declared type of the parameter to the given [typeName].
7253 */ 7263 */
7254 void set type(TypeName typeName) { 7264 void set type(TypeName typeName) {
7255 _type = _becomeParentOf(typeName); 7265 _type = _becomeParentOf(typeName);
7256 } 7266 }
7257 7267
7268 /**
7269 * Return the type parameters associated with this method, or `null` if this
7270 * method is not a generic method.
7271 */
7272 TypeParameterList get typeParameters => _typeParameters;
7273
7274 /**
7275 * Set the type parameters associated with this method to the given
7276 * [typeParameters].
7277 */
7278 void set typeParameters(TypeParameterList typeParameters) {
7279 _typeParameters = _becomeParentOf(typeParameters);
7280 }
7281
7258 @override 7282 @override
7259 accept(AstVisitor visitor) => visitor.visitFieldFormalParameter(this); 7283 accept(AstVisitor visitor) => visitor.visitFieldFormalParameter(this);
7260 7284
7261 @override 7285 @override
7262 void visitChildren(AstVisitor visitor) { 7286 void visitChildren(AstVisitor visitor) {
7263 super.visitChildren(visitor); 7287 super.visitChildren(visitor);
7264 _safelyVisitChild(_type, visitor); 7288 _safelyVisitChild(_type, visitor);
7265 _safelyVisitChild(identifier, visitor); 7289 _safelyVisitChild(identifier, visitor);
7290 _safelyVisitChild(_typeParameters, visitor);
7266 _safelyVisitChild(_parameters, visitor); 7291 _safelyVisitChild(_parameters, visitor);
7267 } 7292 }
7268 } 7293 }
7269 7294
7270 /** 7295 /**
7271 * A for-each statement. 7296 * A for-each statement.
7272 * 7297 *
7273 * > forEachStatement ::= 7298 * > forEachStatement ::=
7274 * > 'await'? 'for' '(' [DeclaredIdentifier] 'in' [Expression] ')' [Block] 7299 * > 'await'? 'for' '(' [DeclaredIdentifier] 'in' [Expression] ')' [Block]
7275 * > | 'await'? 'for' '(' [SimpleIdentifier] 'in' [Expression] ')' [Block] 7300 * > | 'await'? 'for' '(' [SimpleIdentifier] 'in' [Expression] ')' [Block]
(...skipping 727 matching lines...) Expand 10 before | Expand all | Expand 10 after
8003 @override 8028 @override
8004 void visitChildren(AstVisitor visitor) { 8029 void visitChildren(AstVisitor visitor) {
8005 _safelyVisitChild(_functionDeclaration, visitor); 8030 _safelyVisitChild(_functionDeclaration, visitor);
8006 } 8031 }
8007 } 8032 }
8008 8033
8009 /** 8034 /**
8010 * A function expression. 8035 * A function expression.
8011 * 8036 *
8012 * > functionExpression ::= 8037 * > functionExpression ::=
8013 * > [FormalParameterList] [FunctionBody] 8038 * > [TypeParameterList]? [FormalParameterList] [FunctionBody]
8014 */ 8039 */
8015 class FunctionExpression extends Expression { 8040 class FunctionExpression extends Expression {
8016 /** 8041 /**
8042 * The type parameters associated with the method, or `null` if the method is
8043 * not a generic method.
8044 */
8045 TypeParameterList _typeParameters;
8046
8047 /**
8017 * The parameters associated with the function. 8048 * The parameters associated with the function.
8018 */ 8049 */
8019 FormalParameterList _parameters; 8050 FormalParameterList _parameters;
8020 8051
8021 /** 8052 /**
8022 * The body of the function, or `null` if this is an external function. 8053 * The body of the function, or `null` if this is an external function.
8023 */ 8054 */
8024 FunctionBody _body; 8055 FunctionBody _body;
8025 8056
8026 /** 8057 /**
8027 * The element associated with the function, or `null` if the AST structure 8058 * The element associated with the function, or `null` if the AST structure
8028 * has not been resolved. 8059 * has not been resolved.
8029 */ 8060 */
8030 ExecutableElement element; 8061 ExecutableElement element;
8031 8062
8032 /** 8063 /**
8033 * Initialize a newly created function declaration. 8064 * Initialize a newly created function declaration.
8034 */ 8065 */
8035 FunctionExpression(FormalParameterList parameters, FunctionBody body) { 8066 FunctionExpression(TypeParameterList typeParameters,
8067 FormalParameterList parameters, FunctionBody body) {
8068 _typeParameters = _becomeParentOf(typeParameters);
8036 _parameters = _becomeParentOf(parameters); 8069 _parameters = _becomeParentOf(parameters);
8037 _body = _becomeParentOf(body); 8070 _body = _becomeParentOf(body);
8038 } 8071 }
8039 8072
8040 @override 8073 @override
8041 Token get beginToken { 8074 Token get beginToken {
8042 if (_parameters != null) { 8075 if (_typeParameters != null) {
8076 return _typeParameters.beginToken;
8077 } else if (_parameters != null) {
8043 return _parameters.beginToken; 8078 return _parameters.beginToken;
8044 } else if (_body != null) { 8079 } else if (_body != null) {
8045 return _body.beginToken; 8080 return _body.beginToken;
8046 } 8081 }
8047 // This should never be reached because external functions must be named, 8082 // This should never be reached because external functions must be named,
8048 // hence either the body or the name should be non-null. 8083 // hence either the body or the name should be non-null.
8049 throw new IllegalStateException("Non-external functions must have a body"); 8084 throw new IllegalStateException("Non-external functions must have a body");
8050 } 8085 }
8051 8086
8052 /** 8087 /**
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
8086 * Set the parameters associated with the function to the given list of 8121 * Set the parameters associated with the function to the given list of
8087 * [parameters]. 8122 * [parameters].
8088 */ 8123 */
8089 void set parameters(FormalParameterList parameters) { 8124 void set parameters(FormalParameterList parameters) {
8090 _parameters = _becomeParentOf(parameters); 8125 _parameters = _becomeParentOf(parameters);
8091 } 8126 }
8092 8127
8093 @override 8128 @override
8094 int get precedence => 16; 8129 int get precedence => 16;
8095 8130
8131 /**
8132 * Return the type parameters associated with this method, or `null` if this
8133 * method is not a generic method.
8134 */
8135 TypeParameterList get typeParameters => _typeParameters;
8136
8137 /**
8138 * Set the type parameters associated with this method to the given
8139 * [typeParameters].
8140 */
8141 void set typeParameters(TypeParameterList typeParameters) {
8142 _typeParameters = _becomeParentOf(typeParameters);
8143 }
8144
8096 @override 8145 @override
8097 accept(AstVisitor visitor) => visitor.visitFunctionExpression(this); 8146 accept(AstVisitor visitor) => visitor.visitFunctionExpression(this);
8098 8147
8099 @override 8148 @override
8100 void visitChildren(AstVisitor visitor) { 8149 void visitChildren(AstVisitor visitor) {
8150 _safelyVisitChild(_typeParameters, visitor);
8101 _safelyVisitChild(_parameters, visitor); 8151 _safelyVisitChild(_parameters, visitor);
8102 _safelyVisitChild(_body, visitor); 8152 _safelyVisitChild(_body, visitor);
8103 } 8153 }
8104 } 8154 }
8105 8155
8106 /** 8156 /**
8107 * The invocation of a function resulting from evaluating an expression. 8157 * The invocation of a function resulting from evaluating an expression.
8108 * Invocations of methods and other forms of functions are represented by 8158 * Invocations of methods and other forms of functions are represented by
8109 * [MethodInvocation] nodes. Invocations of getters and setters are represented 8159 * [MethodInvocation] nodes. Invocations of getters and setters are represented
8110 * by either [PrefixedIdentifier] or [PropertyAccess] nodes. 8160 * by either [PrefixedIdentifier] or [PropertyAccess] nodes.
8111 * 8161 *
8112 * > functionExpressionInvoction ::= 8162 * > functionExpressionInvoction ::=
8113 * > [Expression] [ArgumentList] 8163 * > [Expression] [TypeArgumentList]? [ArgumentList]
8114 */ 8164 */
8115 class FunctionExpressionInvocation extends Expression { 8165 class FunctionExpressionInvocation extends Expression {
8116 /** 8166 /**
8117 * The expression producing the function being invoked. 8167 * The expression producing the function being invoked.
8118 */ 8168 */
8119 Expression _function; 8169 Expression _function;
8120 8170
8121 /** 8171 /**
8172 * The type arguments to be applied to the method being invoked, or `null` if
8173 * no type arguments were provided.
8174 */
8175 TypeArgumentList _typeArguments;
8176
8177 /**
8122 * The list of arguments to the function. 8178 * The list of arguments to the function.
8123 */ 8179 */
8124 ArgumentList _argumentList; 8180 ArgumentList _argumentList;
8125 8181
8126 /** 8182 /**
8127 * The element associated with the function being invoked based on static type 8183 * The element associated with the function being invoked based on static type
8128 * information, or `null` if the AST structure has not been resolved or the 8184 * information, or `null` if the AST structure has not been resolved or the
8129 * function could not be resolved. 8185 * function could not be resolved.
8130 */ 8186 */
8131 ExecutableElement staticElement; 8187 ExecutableElement staticElement;
8132 8188
8133 /** 8189 /**
8134 * The element associated with the function being invoked based on propagated 8190 * The element associated with the function being invoked based on propagated
8135 * type information, or `null` if the AST structure has not been resolved or 8191 * type information, or `null` if the AST structure has not been resolved or
8136 * the function could not be resolved. 8192 * the function could not be resolved.
8137 */ 8193 */
8138 ExecutableElement propagatedElement; 8194 ExecutableElement propagatedElement;
8139 8195
8140 /** 8196 /**
8141 * Initialize a newly created function expression invocation. 8197 * Initialize a newly created function expression invocation.
8142 */ 8198 */
8143 FunctionExpressionInvocation(Expression function, ArgumentList argumentList) { 8199 FunctionExpressionInvocation(Expression function,
8200 TypeArgumentList typeArguments, ArgumentList argumentList) {
8144 _function = _becomeParentOf(function); 8201 _function = _becomeParentOf(function);
8202 _typeArguments = _becomeParentOf(typeArguments);
8145 _argumentList = _becomeParentOf(argumentList); 8203 _argumentList = _becomeParentOf(argumentList);
8146 } 8204 }
8147 8205
8148 /** 8206 /**
8149 * Return the list of arguments to the method. 8207 * Return the list of arguments to the method.
8150 */ 8208 */
8151 ArgumentList get argumentList => _argumentList; 8209 ArgumentList get argumentList => _argumentList;
8152 8210
8153 /** 8211 /**
8154 * Set the list of arguments to the method to the given [argumentList]. 8212 * Set the list of arguments to the method to the given [argumentList].
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
8191 * Set the expression producing the function being invoked to the given 8249 * Set the expression producing the function being invoked to the given
8192 * [expression]. 8250 * [expression].
8193 */ 8251 */
8194 void set function(Expression expression) { 8252 void set function(Expression expression) {
8195 _function = _becomeParentOf(expression); 8253 _function = _becomeParentOf(expression);
8196 } 8254 }
8197 8255
8198 @override 8256 @override
8199 int get precedence => 15; 8257 int get precedence => 15;
8200 8258
8259 /**
8260 * Return the type arguments to be applied to the method being invoked, or
8261 * `null` if no type arguments were provided.
8262 */
8263 TypeArgumentList get typeArguments => _typeArguments;
8264
8265 /**
8266 * Set the type arguments to be applied to the method being invoked to the
8267 * given [typeArguments].
8268 */
8269 void set typeArguments(TypeArgumentList typeArguments) {
8270 _typeArguments = _becomeParentOf(typeArguments);
8271 }
8272
8201 @override 8273 @override
8202 accept(AstVisitor visitor) => visitor.visitFunctionExpressionInvocation(this); 8274 accept(AstVisitor visitor) => visitor.visitFunctionExpressionInvocation(this);
8203 8275
8204 @override 8276 @override
8205 void visitChildren(AstVisitor visitor) { 8277 void visitChildren(AstVisitor visitor) {
8206 _safelyVisitChild(_function, visitor); 8278 _safelyVisitChild(_function, visitor);
8279 _safelyVisitChild(_typeArguments, visitor);
8207 _safelyVisitChild(_argumentList, visitor); 8280 _safelyVisitChild(_argumentList, visitor);
8208 } 8281 }
8209 } 8282 }
8210 8283
8211 /** 8284 /**
8212 * A function type alias. 8285 * A function type alias.
8213 * 8286 *
8214 * > functionTypeAlias ::= 8287 * > functionTypeAlias ::=
8215 * > functionPrefix [TypeParameterList]? [FormalParameterList] ';' 8288 * > functionPrefix [TypeParameterList]? [FormalParameterList] ';'
8216 * > 8289 * >
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
8316 _safelyVisitChild(_name, visitor); 8389 _safelyVisitChild(_name, visitor);
8317 _safelyVisitChild(_typeParameters, visitor); 8390 _safelyVisitChild(_typeParameters, visitor);
8318 _safelyVisitChild(_parameters, visitor); 8391 _safelyVisitChild(_parameters, visitor);
8319 } 8392 }
8320 } 8393 }
8321 8394
8322 /** 8395 /**
8323 * A function-typed formal parameter. 8396 * A function-typed formal parameter.
8324 * 8397 *
8325 * > functionSignature ::= 8398 * > functionSignature ::=
8326 * > [TypeName]? [SimpleIdentifier] [FormalParameterList] 8399 * > [TypeName]? [SimpleIdentifier] [TypeParameterList]? [FormalParameterLis t]
8327 */ 8400 */
8328 class FunctionTypedFormalParameter extends NormalFormalParameter { 8401 class FunctionTypedFormalParameter extends NormalFormalParameter {
8329 /** 8402 /**
8330 * The return type of the function, or `null` if the function does not have a 8403 * The return type of the function, or `null` if the function does not have a
8331 * return type. 8404 * return type.
8332 */ 8405 */
8333 TypeName _returnType; 8406 TypeName _returnType;
8334 8407
8335 /** 8408 /**
8409 * The type parameters associated with the method, or `null` if the method is
scheglov 2015/06/26 01:33:50 method -> function
Brian Wilkerson 2015/06/26 19:07:34 Done
8410 * not a generic method.
8411 */
8412 TypeParameterList _typeParameters;
8413
8414 /**
8336 * The parameters of the function-typed parameter. 8415 * The parameters of the function-typed parameter.
8337 */ 8416 */
8338 FormalParameterList _parameters; 8417 FormalParameterList _parameters;
8339 8418
8340 /** 8419 /**
8341 * Initialize a newly created formal parameter. Either or both of the 8420 * Initialize a newly created formal parameter. Either or both of the
8342 * [comment] and [metadata] can be `null` if the parameter does not have the 8421 * [comment] and [metadata] can be `null` if the parameter does not have the
8343 * corresponding attribute. The [returnType] can be `null` if no return type 8422 * corresponding attribute. The [returnType] can be `null` if no return type
8344 * was specified. 8423 * was specified.
8345 */ 8424 */
8346 FunctionTypedFormalParameter(Comment comment, List<Annotation> metadata, 8425 FunctionTypedFormalParameter(Comment comment, List<Annotation> metadata,
8347 TypeName returnType, SimpleIdentifier identifier, 8426 TypeName returnType, SimpleIdentifier identifier,
8348 FormalParameterList parameters) 8427 TypeParameterList typeParameters, FormalParameterList parameters)
8349 : super(comment, metadata, identifier) { 8428 : super(comment, metadata, identifier) {
8350 _returnType = _becomeParentOf(returnType); 8429 _returnType = _becomeParentOf(returnType);
8430 _typeParameters = _becomeParentOf(typeParameters);
8351 _parameters = _becomeParentOf(parameters); 8431 _parameters = _becomeParentOf(parameters);
8352 } 8432 }
8353 8433
8354 @override 8434 @override
8355 Token get beginToken { 8435 Token get beginToken {
8356 if (_returnType != null) { 8436 if (_returnType != null) {
8357 return _returnType.beginToken; 8437 return _returnType.beginToken;
8358 } 8438 }
8359 return identifier.beginToken; 8439 return identifier.beginToken;
8360 } 8440 }
(...skipping 30 matching lines...) Expand all
8391 */ 8471 */
8392 TypeName get returnType => _returnType; 8472 TypeName get returnType => _returnType;
8393 8473
8394 /** 8474 /**
8395 * Set the return type of the function to the given [type]. 8475 * Set the return type of the function to the given [type].
8396 */ 8476 */
8397 void set returnType(TypeName type) { 8477 void set returnType(TypeName type) {
8398 _returnType = _becomeParentOf(type); 8478 _returnType = _becomeParentOf(type);
8399 } 8479 }
8400 8480
8481 /**
8482 * Return the type parameters associated with this method, or `null` if this
8483 * method is not a generic method.
8484 */
8485 TypeParameterList get typeParameters => _typeParameters;
scheglov 2015/06/26 01:33:49 method -> function
Brian Wilkerson 2015/06/26 19:07:34 Done
8486
8487 /**
8488 * Set the type parameters associated with this method to the given
8489 * [typeParameters].
8490 */
8491 void set typeParameters(TypeParameterList typeParameters) {
8492 _typeParameters = _becomeParentOf(typeParameters);
8493 }
8494
8401 @override 8495 @override
8402 accept(AstVisitor visitor) => visitor.visitFunctionTypedFormalParameter(this); 8496 accept(AstVisitor visitor) => visitor.visitFunctionTypedFormalParameter(this);
8403 8497
8404 @override 8498 @override
8405 void visitChildren(AstVisitor visitor) { 8499 void visitChildren(AstVisitor visitor) {
8406 super.visitChildren(visitor); 8500 super.visitChildren(visitor);
8407 _safelyVisitChild(_returnType, visitor); 8501 _safelyVisitChild(_returnType, visitor);
8408 _safelyVisitChild(identifier, visitor); 8502 _safelyVisitChild(identifier, visitor);
8503 _safelyVisitChild(_typeParameters, visitor);
8409 _safelyVisitChild(_parameters, visitor); 8504 _safelyVisitChild(_parameters, visitor);
8410 } 8505 }
8411 } 8506 }
8412 8507
8413 /** 8508 /**
8414 * An AST visitor that will recursively visit all of the nodes in an AST 8509 * An AST visitor that will recursively visit all of the nodes in an AST
8415 * structure (like instances of the class [RecursiveAstVisitor]). In addition, 8510 * structure (like instances of the class [RecursiveAstVisitor]). In addition,
8416 * when a node of a specific type is visited not only will the visit method for 8511 * when a node of a specific type is visited not only will the visit method for
8417 * that specific type of node be invoked, but additional methods for the 8512 * that specific type of node be invoked, but additional methods for the
8418 * superclasses of that node will also be invoked. For example, using an 8513 * superclasses of that node will also be invoked. For example, using an
(...skipping 1225 matching lines...) Expand 10 before | Expand all | Expand 10 after
9644 new FieldDeclaration(_cloneNode(node.documentationComment), 9739 new FieldDeclaration(_cloneNode(node.documentationComment),
9645 _cloneNodeList(node.metadata), _mapToken(node.staticKeyword), 9740 _cloneNodeList(node.metadata), _mapToken(node.staticKeyword),
9646 _cloneNode(node.fields), _mapToken(node.semicolon)); 9741 _cloneNode(node.fields), _mapToken(node.semicolon));
9647 9742
9648 @override 9743 @override
9649 FieldFormalParameter visitFieldFormalParameter(FieldFormalParameter node) => 9744 FieldFormalParameter visitFieldFormalParameter(FieldFormalParameter node) =>
9650 new FieldFormalParameter(_cloneNode(node.documentationComment), 9745 new FieldFormalParameter(_cloneNode(node.documentationComment),
9651 _cloneNodeList(node.metadata), _mapToken(node.keyword), 9746 _cloneNodeList(node.metadata), _mapToken(node.keyword),
9652 _cloneNode(node.type), _mapToken(node.thisKeyword), 9747 _cloneNode(node.type), _mapToken(node.thisKeyword),
9653 _mapToken(node.period), _cloneNode(node.identifier), 9748 _mapToken(node.period), _cloneNode(node.identifier),
9654 _cloneNode(node.parameters)); 9749 _cloneNode(node.typeParameters), _cloneNode(node.parameters));
9655 9750
9656 @override 9751 @override
9657 ForEachStatement visitForEachStatement(ForEachStatement node) { 9752 ForEachStatement visitForEachStatement(ForEachStatement node) {
9658 DeclaredIdentifier loopVariable = node.loopVariable; 9753 DeclaredIdentifier loopVariable = node.loopVariable;
9659 if (loopVariable == null) { 9754 if (loopVariable == null) {
9660 return new ForEachStatement.withReference(_mapToken(node.awaitKeyword), 9755 return new ForEachStatement.withReference(_mapToken(node.awaitKeyword),
9661 _mapToken(node.forKeyword), _mapToken(node.leftParenthesis), 9756 _mapToken(node.forKeyword), _mapToken(node.leftParenthesis),
9662 _cloneNode(node.identifier), _mapToken(node.inKeyword), 9757 _cloneNode(node.identifier), _mapToken(node.inKeyword),
9663 _cloneNode(node.iterable), _mapToken(node.rightParenthesis), 9758 _cloneNode(node.iterable), _mapToken(node.rightParenthesis),
9664 _cloneNode(node.body)); 9759 _cloneNode(node.body));
(...skipping 27 matching lines...) Expand all
9692 _cloneNode(node.name), _cloneNode(node.functionExpression)); 9787 _cloneNode(node.name), _cloneNode(node.functionExpression));
9693 9788
9694 @override 9789 @override
9695 FunctionDeclarationStatement visitFunctionDeclarationStatement( 9790 FunctionDeclarationStatement visitFunctionDeclarationStatement(
9696 FunctionDeclarationStatement node) => 9791 FunctionDeclarationStatement node) =>
9697 new FunctionDeclarationStatement(_cloneNode(node.functionDeclaration)); 9792 new FunctionDeclarationStatement(_cloneNode(node.functionDeclaration));
9698 9793
9699 @override 9794 @override
9700 FunctionExpression visitFunctionExpression(FunctionExpression node) { 9795 FunctionExpression visitFunctionExpression(FunctionExpression node) {
9701 FunctionExpression copy = new FunctionExpression( 9796 FunctionExpression copy = new FunctionExpression(
9702 _cloneNode(node.parameters), _cloneNode(node.body)); 9797 _cloneNode(node.typeParameters), _cloneNode(node.parameters),
9798 _cloneNode(node.body));
9703 copy.element = node.element; 9799 copy.element = node.element;
9704 copy.propagatedType = node.propagatedType; 9800 copy.propagatedType = node.propagatedType;
9705 copy.staticType = node.staticType; 9801 copy.staticType = node.staticType;
9706 return copy; 9802 return copy;
9707 } 9803 }
9708 9804
9709 @override 9805 @override
9710 FunctionExpressionInvocation visitFunctionExpressionInvocation( 9806 FunctionExpressionInvocation visitFunctionExpressionInvocation(
9711 FunctionExpressionInvocation node) { 9807 FunctionExpressionInvocation node) {
9712 FunctionExpressionInvocation copy = new FunctionExpressionInvocation( 9808 FunctionExpressionInvocation copy = new FunctionExpressionInvocation(
9713 _cloneNode(node.function), _cloneNode(node.argumentList)); 9809 _cloneNode(node.function), _cloneNode(node.typeArguments),
9810 _cloneNode(node.argumentList));
9714 copy.propagatedElement = node.propagatedElement; 9811 copy.propagatedElement = node.propagatedElement;
9715 copy.propagatedType = node.propagatedType; 9812 copy.propagatedType = node.propagatedType;
9716 copy.staticElement = node.staticElement; 9813 copy.staticElement = node.staticElement;
9717 copy.staticType = node.staticType; 9814 copy.staticType = node.staticType;
9718 return copy; 9815 return copy;
9719 } 9816 }
9720 9817
9721 @override 9818 @override
9722 FunctionTypeAlias visitFunctionTypeAlias(FunctionTypeAlias node) => 9819 FunctionTypeAlias visitFunctionTypeAlias(FunctionTypeAlias node) =>
9723 new FunctionTypeAlias(_cloneNode(node.documentationComment), 9820 new FunctionTypeAlias(_cloneNode(node.documentationComment),
9724 _cloneNodeList(node.metadata), _mapToken(node.typedefKeyword), 9821 _cloneNodeList(node.metadata), _mapToken(node.typedefKeyword),
9725 _cloneNode(node.returnType), _cloneNode(node.name), 9822 _cloneNode(node.returnType), _cloneNode(node.name),
9726 _cloneNode(node.typeParameters), _cloneNode(node.parameters), 9823 _cloneNode(node.typeParameters), _cloneNode(node.parameters),
9727 _mapToken(node.semicolon)); 9824 _mapToken(node.semicolon));
9728 9825
9729 @override 9826 @override
9730 FunctionTypedFormalParameter visitFunctionTypedFormalParameter( 9827 FunctionTypedFormalParameter visitFunctionTypedFormalParameter(
9731 FunctionTypedFormalParameter node) => new FunctionTypedFormalParameter( 9828 FunctionTypedFormalParameter node) => new FunctionTypedFormalParameter(
9732 _cloneNode(node.documentationComment), _cloneNodeList(node.metadata), 9829 _cloneNode(node.documentationComment), _cloneNodeList(node.metadata),
9733 _cloneNode(node.returnType), _cloneNode(node.identifier), 9830 _cloneNode(node.returnType), _cloneNode(node.identifier),
9734 _cloneNode(node.parameters)); 9831 _cloneNode(node.typeParameters), _cloneNode(node.parameters));
9735 9832
9736 @override 9833 @override
9737 HideCombinator visitHideCombinator(HideCombinator node) => new HideCombinator( 9834 HideCombinator visitHideCombinator(HideCombinator node) => new HideCombinator(
9738 _mapToken(node.keyword), _cloneNodeList(node.hiddenNames)); 9835 _mapToken(node.keyword), _cloneNodeList(node.hiddenNames));
9739 9836
9740 @override 9837 @override
9741 IfStatement visitIfStatement(IfStatement node) => new IfStatement( 9838 IfStatement visitIfStatement(IfStatement node) => new IfStatement(
9742 _mapToken(node.ifKeyword), _mapToken(node.leftParenthesis), 9839 _mapToken(node.ifKeyword), _mapToken(node.leftParenthesis),
9743 _cloneNode(node.condition), _mapToken(node.rightParenthesis), 9840 _cloneNode(node.condition), _mapToken(node.rightParenthesis),
9744 _cloneNode(node.thenStatement), _mapToken(node.elseKeyword), 9841 _cloneNode(node.thenStatement), _mapToken(node.elseKeyword),
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
9866 MapLiteralEntry visitMapLiteralEntry( 9963 MapLiteralEntry visitMapLiteralEntry(
9867 MapLiteralEntry node) => new MapLiteralEntry( 9964 MapLiteralEntry node) => new MapLiteralEntry(
9868 _cloneNode(node.key), _mapToken(node.separator), _cloneNode(node.value)); 9965 _cloneNode(node.key), _mapToken(node.separator), _cloneNode(node.value));
9869 9966
9870 @override 9967 @override
9871 MethodDeclaration visitMethodDeclaration(MethodDeclaration node) => 9968 MethodDeclaration visitMethodDeclaration(MethodDeclaration node) =>
9872 new MethodDeclaration(_cloneNode(node.documentationComment), 9969 new MethodDeclaration(_cloneNode(node.documentationComment),
9873 _cloneNodeList(node.metadata), _mapToken(node.externalKeyword), 9970 _cloneNodeList(node.metadata), _mapToken(node.externalKeyword),
9874 _mapToken(node.modifierKeyword), _cloneNode(node.returnType), 9971 _mapToken(node.modifierKeyword), _cloneNode(node.returnType),
9875 _mapToken(node.propertyKeyword), _mapToken(node.operatorKeyword), 9972 _mapToken(node.propertyKeyword), _mapToken(node.operatorKeyword),
9876 _cloneNode(node.name), _cloneNode(node.parameters), 9973 _cloneNode(node.name), _cloneNode(node._typeParameters),
9877 _cloneNode(node.body)); 9974 _cloneNode(node.parameters), _cloneNode(node.body));
9878 9975
9879 @override 9976 @override
9880 MethodInvocation visitMethodInvocation(MethodInvocation node) { 9977 MethodInvocation visitMethodInvocation(MethodInvocation node) {
9881 MethodInvocation copy = new MethodInvocation(_cloneNode(node.target), 9978 MethodInvocation copy = new MethodInvocation(_cloneNode(node.target),
9882 _mapToken(node.operator), _cloneNode(node.methodName), 9979 _mapToken(node.operator), _cloneNode(node.methodName),
9883 _cloneNode(node.argumentList)); 9980 _cloneNode(node.typeArguments), _cloneNode(node.argumentList));
9884 copy.propagatedType = node.propagatedType; 9981 copy.propagatedType = node.propagatedType;
9885 copy.staticType = node.staticType; 9982 copy.staticType = node.staticType;
9886 return copy; 9983 return copy;
9887 } 9984 }
9888 9985
9889 @override 9986 @override
9890 NamedExpression visitNamedExpression(NamedExpression node) { 9987 NamedExpression visitNamedExpression(NamedExpression node) {
9891 NamedExpression copy = 9988 NamedExpression copy =
9892 new NamedExpression(_cloneNode(node.name), _cloneNode(node.expression)); 9989 new NamedExpression(_cloneNode(node.name), _cloneNode(node.expression));
9893 copy.propagatedType = node.propagatedType; 9990 copy.propagatedType = node.propagatedType;
(...skipping 1515 matching lines...) Expand 10 before | Expand all | Expand 10 after
11409 } 11506 }
11410 11507
11411 /** 11508 /**
11412 * A method declaration. 11509 * A method declaration.
11413 * 11510 *
11414 * > methodDeclaration ::= 11511 * > methodDeclaration ::=
11415 * > methodSignature [FunctionBody] 11512 * > methodSignature [FunctionBody]
11416 * > 11513 * >
11417 * > methodSignature ::= 11514 * > methodSignature ::=
11418 * > 'external'? ('abstract' | 'static')? [Type]? ('get' | 'set')? 11515 * > 'external'? ('abstract' | 'static')? [Type]? ('get' | 'set')?
11419 * > methodName [FormalParameterList] 11516 * > methodName [TypeParameterList] [FormalParameterList]
11420 * > 11517 * >
11421 * > methodName ::= 11518 * > methodName ::=
11422 * > [SimpleIdentifier] 11519 * > [SimpleIdentifier]
11423 * > | 'operator' [SimpleIdentifier] 11520 * > | 'operator' [SimpleIdentifier]
11424 */ 11521 */
11425 class MethodDeclaration extends ClassMember { 11522 class MethodDeclaration extends ClassMember {
11426 /** 11523 /**
11427 * The token for the 'external' keyword, or `null` if the constructor is not 11524 * The token for the 'external' keyword, or `null` if the constructor is not
11428 * external. 11525 * external.
11429 */ 11526 */
(...skipping 21 matching lines...) Expand all
11451 * does not declare an operator. 11548 * does not declare an operator.
11452 */ 11549 */
11453 Token operatorKeyword; 11550 Token operatorKeyword;
11454 11551
11455 /** 11552 /**
11456 * The name of the method. 11553 * The name of the method.
11457 */ 11554 */
11458 SimpleIdentifier _name; 11555 SimpleIdentifier _name;
11459 11556
11460 /** 11557 /**
11558 * The type parameters associated with the method, or `null` if the method is
11559 * not a generic method.
11560 */
11561 TypeParameterList _typeParameters;
11562
11563 /**
11461 * The parameters associated with the method, or `null` if this method 11564 * The parameters associated with the method, or `null` if this method
11462 * declares a getter. 11565 * declares a getter.
11463 */ 11566 */
11464 FormalParameterList _parameters; 11567 FormalParameterList _parameters;
11465 11568
11466 /** 11569 /**
11467 * The body of the method. 11570 * The body of the method.
11468 */ 11571 */
11469 FunctionBody _body; 11572 FunctionBody _body;
11470 11573
11471 /** 11574 /**
11472 * Initialize a newly created method declaration. Either or both of the 11575 * Initialize a newly created method declaration. Either or both of the
11473 * [comment] and [metadata] can be `null` if the declaration does not have the 11576 * [comment] and [metadata] can be `null` if the declaration does not have the
11474 * corresponding attribute. The [externalKeyword] can be `null` if the method 11577 * corresponding attribute. The [externalKeyword] can be `null` if the method
11475 * is not external. The [modifierKeyword] can be `null` if the method is 11578 * is not external. The [modifierKeyword] can be `null` if the method is
11476 * neither abstract nor static. The [returnType] can be `null` if no return 11579 * neither abstract nor static. The [returnType] can be `null` if no return
11477 * type was specified. The [propertyKeyword] can be `null` if the method is 11580 * type was specified. The [propertyKeyword] can be `null` if the method is
11478 * neither a getter or a setter. The [operatorKeyword] can be `null` if the 11581 * neither a getter or a setter. The [operatorKeyword] can be `null` if the
11479 * method does not implement an operator. The [parameters] must be `null` if 11582 * method does not implement an operator. The [parameters] must be `null` if
11480 * this method declares a getter. 11583 * this method declares a getter.
11481 */ 11584 */
11482 MethodDeclaration(Comment comment, List<Annotation> metadata, 11585 MethodDeclaration(Comment comment, List<Annotation> metadata,
11483 this.externalKeyword, this.modifierKeyword, TypeName returnType, 11586 this.externalKeyword, this.modifierKeyword, TypeName returnType,
11484 this.propertyKeyword, this.operatorKeyword, SimpleIdentifier name, 11587 this.propertyKeyword, this.operatorKeyword, SimpleIdentifier name,
11485 FormalParameterList parameters, FunctionBody body) 11588 TypeParameterList typeParameters, FormalParameterList parameters,
11589 FunctionBody body)
11486 : super(comment, metadata) { 11590 : super(comment, metadata) {
11487 _returnType = _becomeParentOf(returnType); 11591 _returnType = _becomeParentOf(returnType);
11488 _name = _becomeParentOf(name); 11592 _name = _becomeParentOf(name);
11593 _typeParameters = _becomeParentOf(typeParameters);
11489 _parameters = _becomeParentOf(parameters); 11594 _parameters = _becomeParentOf(parameters);
11490 _body = _becomeParentOf(body); 11595 _body = _becomeParentOf(body);
11491 } 11596 }
11492 11597
11493 /** 11598 /**
11494 * Return the body of the method. 11599 * Return the body of the method.
11495 */ 11600 */
11496 FunctionBody get body => _body; 11601 FunctionBody get body => _body;
11497 11602
11498 /** 11603 /**
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
11605 */ 11710 */
11606 TypeName get returnType => _returnType; 11711 TypeName get returnType => _returnType;
11607 11712
11608 /** 11713 /**
11609 * Set the return type of the method to the given [typeName]. 11714 * Set the return type of the method to the given [typeName].
11610 */ 11715 */
11611 void set returnType(TypeName typeName) { 11716 void set returnType(TypeName typeName) {
11612 _returnType = _becomeParentOf(typeName); 11717 _returnType = _becomeParentOf(typeName);
11613 } 11718 }
11614 11719
11720 /**
11721 * Return the type parameters associated with this method, or `null` if this
11722 * method is not a generic method.
11723 */
11724 TypeParameterList get typeParameters => _typeParameters;
11725
11726 /**
11727 * Set the type parameters associated with this method to the given
11728 * [typeParameters].
11729 */
11730 void set typeParameters(TypeParameterList typeParameters) {
11731 _typeParameters = _becomeParentOf(typeParameters);
11732 }
11733
11615 @override 11734 @override
11616 accept(AstVisitor visitor) => visitor.visitMethodDeclaration(this); 11735 accept(AstVisitor visitor) => visitor.visitMethodDeclaration(this);
11617 11736
11618 @override 11737 @override
11619 void visitChildren(AstVisitor visitor) { 11738 void visitChildren(AstVisitor visitor) {
11620 super.visitChildren(visitor); 11739 super.visitChildren(visitor);
11621 _safelyVisitChild(_returnType, visitor); 11740 _safelyVisitChild(_returnType, visitor);
11622 _safelyVisitChild(_name, visitor); 11741 _safelyVisitChild(_name, visitor);
11742 _safelyVisitChild(_typeParameters, visitor);
11623 _safelyVisitChild(_parameters, visitor); 11743 _safelyVisitChild(_parameters, visitor);
11624 _safelyVisitChild(_body, visitor); 11744 _safelyVisitChild(_body, visitor);
11625 } 11745 }
11626 } 11746 }
11627 11747
11628 /** 11748 /**
11629 * The invocation of either a function or a method. Invocations of functions 11749 * The invocation of either a function or a method. Invocations of functions
11630 * resulting from evaluating an expression are represented by 11750 * resulting from evaluating an expression are represented by
11631 * [FunctionExpressionInvocation] nodes. Invocations of getters and setters are 11751 * [FunctionExpressionInvocation] nodes. Invocations of getters and setters are
11632 * represented by either [PrefixedIdentifier] or [PropertyAccess] nodes. 11752 * represented by either [PrefixedIdentifier] or [PropertyAccess] nodes.
11633 * 11753 *
11634 * > methodInvoction ::= 11754 * > methodInvoction ::=
11635 * > ([Expression] '.')? [SimpleIdentifier] [ArgumentList] 11755 * > ([Expression] '.')? [SimpleIdentifier] [TypeArgumentList]? [ArgumentLis t]
11636 */ 11756 */
11637 class MethodInvocation extends Expression { 11757 class MethodInvocation extends Expression {
11638 /** 11758 /**
11639 * The expression producing the object on which the method is defined, or 11759 * The expression producing the object on which the method is defined, or
11640 * `null` if there is no target (that is, the target is implicitly `this`). 11760 * `null` if there is no target (that is, the target is implicitly `this`).
11641 */ 11761 */
11642 Expression _target; 11762 Expression _target;
11643 11763
11644 /** 11764 /**
11645 * The operator that separates the target from the method name, or `null` 11765 * The operator that separates the target from the method name, or `null`
11646 * if there is no target. In an ordinary method invocation this will be a 11766 * if there is no target. In an ordinary method invocation this will be a
11647 * period ('.'). In a cascade section this will be the cascade operator 11767 * period ('.'). In a cascade section this will be the cascade operator
11648 * ('..'). 11768 * ('..').
11649 */ 11769 */
11650 Token operator; 11770 Token operator;
11651 11771
11652 /** 11772 /**
11653 * The name of the method being invoked. 11773 * The name of the method being invoked.
11654 */ 11774 */
11655 SimpleIdentifier _methodName; 11775 SimpleIdentifier _methodName;
11656 11776
11657 /** 11777 /**
11778 * The type arguments to be applied to the method being invoked, or `null` if
11779 * no type arguments were provided.
11780 */
11781 TypeArgumentList _typeArguments;
11782
11783 /**
11658 * The list of arguments to the method. 11784 * The list of arguments to the method.
11659 */ 11785 */
11660 ArgumentList _argumentList; 11786 ArgumentList _argumentList;
11661 11787
11662 /** 11788 /**
11663 * Initialize a newly created method invocation. The [target] and [operator] 11789 * Initialize a newly created method invocation. The [target] and [operator]
11664 * can be `null` if there is no target. 11790 * can be `null` if there is no target.
11665 */ 11791 */
11666 MethodInvocation(Expression target, this.operator, 11792 MethodInvocation(Expression target, this.operator,
11667 SimpleIdentifier methodName, ArgumentList argumentList) { 11793 SimpleIdentifier methodName, TypeArgumentList typeArguments,
11794 ArgumentList argumentList) {
11668 _target = _becomeParentOf(target); 11795 _target = _becomeParentOf(target);
11669 _methodName = _becomeParentOf(methodName); 11796 _methodName = _becomeParentOf(methodName);
11797 _typeArguments = _becomeParentOf(typeArguments);
11670 _argumentList = _becomeParentOf(argumentList); 11798 _argumentList = _becomeParentOf(argumentList);
11671 } 11799 }
11672 11800
11673 /** 11801 /**
11674 * Return the list of arguments to the method. 11802 * Return the list of arguments to the method.
11675 */ 11803 */
11676 ArgumentList get argumentList => _argumentList; 11804 ArgumentList get argumentList => _argumentList;
11677 11805
11678 /** 11806 /**
11679 * Set the list of arguments to the method to the given [argumentList]. 11807 * Set the list of arguments to the method to the given [argumentList].
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
11776 Expression get target => _target; 11904 Expression get target => _target;
11777 11905
11778 /** 11906 /**
11779 * Set the expression producing the object on which the method is defined to 11907 * Set the expression producing the object on which the method is defined to
11780 * the given [expression]. 11908 * the given [expression].
11781 */ 11909 */
11782 void set target(Expression expression) { 11910 void set target(Expression expression) {
11783 _target = _becomeParentOf(expression); 11911 _target = _becomeParentOf(expression);
11784 } 11912 }
11785 11913
11914 /**
11915 * Return the type arguments to be applied to the method being invoked, or
11916 * `null` if no type arguments were provided.
11917 */
11918 TypeArgumentList get typeArguments => _typeArguments;
11919
11920 /**
11921 * Set the type arguments to be applied to the method being invoked to the
11922 * given [typeArguments].
11923 */
11924 void set typeArguments(TypeArgumentList typeArguments) {
11925 _typeArguments = _becomeParentOf(typeArguments);
11926 }
11927
11786 @override 11928 @override
11787 accept(AstVisitor visitor) => visitor.visitMethodInvocation(this); 11929 accept(AstVisitor visitor) => visitor.visitMethodInvocation(this);
11788 11930
11789 @override 11931 @override
11790 void visitChildren(AstVisitor visitor) { 11932 void visitChildren(AstVisitor visitor) {
11791 _safelyVisitChild(_target, visitor); 11933 _safelyVisitChild(_target, visitor);
11792 _safelyVisitChild(_methodName, visitor); 11934 _safelyVisitChild(_methodName, visitor);
11935 _safelyVisitChild(_typeArguments, visitor);
11793 _safelyVisitChild(_argumentList, visitor); 11936 _safelyVisitChild(_argumentList, visitor);
11794 } 11937 }
11795 } 11938 }
11796 11939
11797 /** 11940 /**
11798 * A node that declares a single name within the scope of a compilation unit. 11941 * A node that declares a single name within the scope of a compilation unit.
11799 */ 11942 */
11800 abstract class NamedCompilationUnitMember extends CompilationUnitMember { 11943 abstract class NamedCompilationUnitMember extends CompilationUnitMember {
11801 /** 11944 /**
11802 * The name of the member being declared. 11945 * The name of the member being declared.
(...skipping 5956 matching lines...) Expand 10 before | Expand all | Expand 10 after
17759 _writer.print(";"); 17902 _writer.print(";");
17760 return null; 17903 return null;
17761 } 17904 }
17762 17905
17763 @override 17906 @override
17764 Object visitFieldFormalParameter(FieldFormalParameter node) { 17907 Object visitFieldFormalParameter(FieldFormalParameter node) {
17765 _visitTokenWithSuffix(node.keyword, " "); 17908 _visitTokenWithSuffix(node.keyword, " ");
17766 _visitNodeWithSuffix(node.type, " "); 17909 _visitNodeWithSuffix(node.type, " ");
17767 _writer.print("this."); 17910 _writer.print("this.");
17768 _visitNode(node.identifier); 17911 _visitNode(node.identifier);
17912 _visitNode(node.typeParameters);
17769 _visitNode(node.parameters); 17913 _visitNode(node.parameters);
17770 return null; 17914 return null;
17771 } 17915 }
17772 17916
17773 @override 17917 @override
17774 Object visitForEachStatement(ForEachStatement node) { 17918 Object visitForEachStatement(ForEachStatement node) {
17775 DeclaredIdentifier loopVariable = node.loopVariable; 17919 DeclaredIdentifier loopVariable = node.loopVariable;
17776 if (node.awaitKeyword != null) { 17920 if (node.awaitKeyword != null) {
17777 _writer.print("await "); 17921 _writer.print("await ");
17778 } 17922 }
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
17847 } 17991 }
17848 17992
17849 @override 17993 @override
17850 Object visitFunctionDeclarationStatement(FunctionDeclarationStatement node) { 17994 Object visitFunctionDeclarationStatement(FunctionDeclarationStatement node) {
17851 _visitNode(node.functionDeclaration); 17995 _visitNode(node.functionDeclaration);
17852 return null; 17996 return null;
17853 } 17997 }
17854 17998
17855 @override 17999 @override
17856 Object visitFunctionExpression(FunctionExpression node) { 18000 Object visitFunctionExpression(FunctionExpression node) {
18001 _visitNode(node.typeParameters);
17857 _visitNode(node.parameters); 18002 _visitNode(node.parameters);
17858 _writer.print(' '); 18003 _writer.print(' ');
17859 _visitNode(node.body); 18004 _visitNode(node.body);
17860 return null; 18005 return null;
17861 } 18006 }
17862 18007
17863 @override 18008 @override
17864 Object visitFunctionExpressionInvocation(FunctionExpressionInvocation node) { 18009 Object visitFunctionExpressionInvocation(FunctionExpressionInvocation node) {
17865 _visitNode(node.function); 18010 _visitNode(node.function);
18011 _visitNode(node.typeArguments);
17866 _visitNode(node.argumentList); 18012 _visitNode(node.argumentList);
17867 return null; 18013 return null;
17868 } 18014 }
17869 18015
17870 @override 18016 @override
17871 Object visitFunctionTypeAlias(FunctionTypeAlias node) { 18017 Object visitFunctionTypeAlias(FunctionTypeAlias node) {
17872 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " "); 18018 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
17873 _writer.print("typedef "); 18019 _writer.print("typedef ");
17874 _visitNodeWithSuffix(node.returnType, " "); 18020 _visitNodeWithSuffix(node.returnType, " ");
17875 _visitNode(node.name); 18021 _visitNode(node.name);
17876 _visitNode(node.typeParameters); 18022 _visitNode(node.typeParameters);
17877 _visitNode(node.parameters); 18023 _visitNode(node.parameters);
17878 _writer.print(";"); 18024 _writer.print(";");
17879 return null; 18025 return null;
17880 } 18026 }
17881 18027
17882 @override 18028 @override
17883 Object visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) { 18029 Object visitFunctionTypedFormalParameter(FunctionTypedFormalParameter node) {
17884 _visitNodeWithSuffix(node.returnType, " "); 18030 _visitNodeWithSuffix(node.returnType, " ");
17885 _visitNode(node.identifier); 18031 _visitNode(node.identifier);
18032 _visitNode(node.typeParameters);
17886 _visitNode(node.parameters); 18033 _visitNode(node.parameters);
17887 return null; 18034 return null;
17888 } 18035 }
17889 18036
17890 @override 18037 @override
17891 Object visitHideCombinator(HideCombinator node) { 18038 Object visitHideCombinator(HideCombinator node) {
17892 _writer.print("hide "); 18039 _writer.print("hide ");
17893 _visitNodeListWithSeparator(node.hiddenNames, ", "); 18040 _visitNodeListWithSeparator(node.hiddenNames, ", ");
17894 return null; 18041 return null;
17895 } 18042 }
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
18049 @override 18196 @override
18050 Object visitMethodDeclaration(MethodDeclaration node) { 18197 Object visitMethodDeclaration(MethodDeclaration node) {
18051 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " "); 18198 _visitNodeListWithSeparatorAndSuffix(node.metadata, " ", " ");
18052 _visitTokenWithSuffix(node.externalKeyword, " "); 18199 _visitTokenWithSuffix(node.externalKeyword, " ");
18053 _visitTokenWithSuffix(node.modifierKeyword, " "); 18200 _visitTokenWithSuffix(node.modifierKeyword, " ");
18054 _visitNodeWithSuffix(node.returnType, " "); 18201 _visitNodeWithSuffix(node.returnType, " ");
18055 _visitTokenWithSuffix(node.propertyKeyword, " "); 18202 _visitTokenWithSuffix(node.propertyKeyword, " ");
18056 _visitTokenWithSuffix(node.operatorKeyword, " "); 18203 _visitTokenWithSuffix(node.operatorKeyword, " ");
18057 _visitNode(node.name); 18204 _visitNode(node.name);
18058 if (!node.isGetter) { 18205 if (!node.isGetter) {
18206 _visitNode(node.typeParameters);
18059 _visitNode(node.parameters); 18207 _visitNode(node.parameters);
18060 } 18208 }
18061 _visitFunctionWithPrefix(" ", node.body); 18209 _visitFunctionWithPrefix(" ", node.body);
18062 return null; 18210 return null;
18063 } 18211 }
18064 18212
18065 @override 18213 @override
18066 Object visitMethodInvocation(MethodInvocation node) { 18214 Object visitMethodInvocation(MethodInvocation node) {
18067 if (node.isCascaded) { 18215 if (node.isCascaded) {
18068 _writer.print(".."); 18216 _writer.print("..");
18069 } else { 18217 } else {
18070 if (node.target != null) { 18218 if (node.target != null) {
18071 node.target.accept(this); 18219 node.target.accept(this);
18072 _writer.print(node.operator.lexeme); 18220 _writer.print(node.operator.lexeme);
18073 } 18221 }
18074 } 18222 }
18075 _visitNode(node.methodName); 18223 _visitNode(node.methodName);
18224 _visitNode(node.typeArguments);
18076 _visitNode(node.argumentList); 18225 _visitNode(node.argumentList);
18077 return null; 18226 return null;
18078 } 18227 }
18079 18228
18080 @override 18229 @override
18081 Object visitNamedExpression(NamedExpression node) { 18230 Object visitNamedExpression(NamedExpression node) {
18082 _visitNode(node.name); 18231 _visitNode(node.name);
18083 _visitNodeWithPrefix(" ", node.expression); 18232 _visitNodeWithPrefix(" ", node.expression);
18084 return null; 18233 return null;
18085 } 18234 }
(...skipping 1971 matching lines...) Expand 10 before | Expand all | Expand 10 after
20057 } 20206 }
20058 20207
20059 @override 20208 @override
20060 accept(AstVisitor visitor) => visitor.visitYieldStatement(this); 20209 accept(AstVisitor visitor) => visitor.visitYieldStatement(this);
20061 20210
20062 @override 20211 @override
20063 void visitChildren(AstVisitor visitor) { 20212 void visitChildren(AstVisitor visitor) {
20064 _safelyVisitChild(_expression, visitor); 20213 _safelyVisitChild(_expression, visitor);
20065 } 20214 }
20066 } 20215 }
OLDNEW
« no previous file with comments | « no previous file | pkg/analyzer/lib/src/generated/engine.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698