OLD | NEW |
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 // TODO(asgerf): Include metadata. | 5 // TODO(asgerf): Include metadata. |
6 // TODO(asgerf): Include cascade operator. | 6 // TODO(asgerf): Include cascade operator. |
7 library dart_printer; | 7 library dart_printer; |
8 | 8 |
9 import '../dart2jslib.dart' as dart2js; | 9 import '../dart2jslib.dart' as dart2js; |
10 import '../tree/tree.dart' as tree; | 10 import '../tree/tree.dart' as tree; |
(...skipping 222 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 final String name; | 233 final String name; |
234 final Expression initializer; | 234 final Expression initializer; |
235 | 235 |
236 elements.Element element; | 236 elements.Element element; |
237 | 237 |
238 VariableDeclaration(this.name, [this.initializer]); | 238 VariableDeclaration(this.name, [this.initializer]); |
239 } | 239 } |
240 | 240 |
241 | 241 |
242 class FunctionDeclaration extends Statement { | 242 class FunctionDeclaration extends Statement { |
243 final TypeAnnotation returnType; | 243 final FunctionExpression function; |
244 final Parameters parameters; | |
245 final String name; | |
246 final Statement body; | |
247 | 244 |
248 FunctionDeclaration(this.name, | 245 TypeAnnotation get returnType => function.returnType; |
249 this.parameters, | 246 Parameters get parameters => function.parameters; |
250 this.body, | 247 String get name => function.name; |
251 [ this.returnType ]); | 248 Statement get body => function.body; |
| 249 |
| 250 FunctionDeclaration(this.function); |
252 } | 251 } |
253 | 252 |
254 class Parameters extends Node { | 253 class Parameters extends Node { |
255 final List<Parameter> requiredParameters; | 254 final List<Parameter> requiredParameters; |
256 final List<Parameter> optionalParameters; | 255 final List<Parameter> optionalParameters; |
257 final bool hasNamedParameters; | 256 final bool hasNamedParameters; |
258 | 257 |
259 Parameters(this.requiredParameters, | 258 Parameters(this.requiredParameters, |
260 [ this.optionalParameters, | 259 [ this.optionalParameters, |
261 this.hasNamedParameters = false ]); | 260 this.hasNamedParameters = false ]); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
296 /// True if this is a function parameter. | 295 /// True if this is a function parameter. |
297 bool get isFunction => parameters != null; | 296 bool get isFunction => parameters != null; |
298 | 297 |
299 // TODO(asgerf): Support modifiers on parameters (final, ...). | 298 // TODO(asgerf): Support modifiers on parameters (final, ...). |
300 } | 299 } |
301 | 300 |
302 // EXPRESSIONS | 301 // EXPRESSIONS |
303 | 302 |
304 class FunctionExpression extends Expression { | 303 class FunctionExpression extends Expression { |
305 final TypeAnnotation returnType; | 304 final TypeAnnotation returnType; |
306 final String name; | 305 String name; |
307 final Parameters parameters; | 306 final Parameters parameters; |
308 final Statement body; | 307 final Statement body; |
309 | 308 |
310 elements.FunctionElement element; | 309 elements.FunctionElement element; |
311 | 310 |
312 FunctionExpression(this.parameters, | 311 FunctionExpression(this.parameters, |
313 this.body, | 312 this.body, |
314 { this.name, | 313 { this.name, |
315 this.returnType }) { | 314 this.returnType }) { |
316 // Function must have a name if it has a return type | 315 // Function must have a name if it has a return type |
(...skipping 1216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1533 final StringChunk previous; | 1532 final StringChunk previous; |
1534 final tree.StringQuoting quoting; | 1533 final tree.StringQuoting quoting; |
1535 num cost; | 1534 num cost; |
1536 | 1535 |
1537 OpenStringChunk(this.previous, this.quoting, this.cost); | 1536 OpenStringChunk(this.previous, this.quoting, this.cost); |
1538 | 1537 |
1539 StringChunk end(int endIndex) { | 1538 StringChunk end(int endIndex) { |
1540 return new StringChunk(previous, quoting, endIndex); | 1539 return new StringChunk(previous, quoting, endIndex); |
1541 } | 1540 } |
1542 } | 1541 } |
OLD | NEW |