OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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(johnniwinther): Remove this library when all constant constructors are | 5 // TODO(johnniwinther): Remove this library when all constant constructors are |
6 // computed during resolution. | 6 // computed during resolution. |
7 library dart2js.constants.constant_constructors; | 7 library dart2js.constants.constant_constructors; |
8 | 8 |
9 import '../common.dart'; | 9 import '../common.dart'; |
10 import '../dart_types.dart'; | 10 import '../dart_types.dart'; |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 ConstantConstructor visitGenerativeConstructorDeclaration( | 80 ConstantConstructor visitGenerativeConstructorDeclaration( |
81 FunctionExpression node, | 81 FunctionExpression node, |
82 ConstructorElement constructor, | 82 ConstructorElement constructor, |
83 NodeList parameters, | 83 NodeList parameters, |
84 NodeList initializers, | 84 NodeList initializers, |
85 Node body, | 85 Node body, |
86 _) { | 86 _) { |
87 applyParameters(parameters, _); | 87 applyParameters(parameters, _); |
88 ConstructedConstantExpression constructorInvocation = | 88 ConstructedConstantExpression constructorInvocation = |
89 applyInitializers(node, _); | 89 applyInitializers(node, _); |
90 constructor.enclosingClass.forEachInstanceField((_, FieldElement field) { | |
91 if (!fieldMap.containsKey(field)) { | |
92 fieldMap[field] = field.constant; | |
93 } | |
94 }); | |
95 return new GenerativeConstantConstructor( | 90 return new GenerativeConstantConstructor( |
96 currentClass.thisType, defaultValues, fieldMap, constructorInvocation); | 91 currentClass.thisType, defaultValues, fieldMap, constructorInvocation); |
97 } | 92 } |
98 | 93 |
99 ConstantConstructor visitRedirectingGenerativeConstructorDeclaration( | 94 ConstantConstructor visitRedirectingGenerativeConstructorDeclaration( |
100 FunctionExpression node, | 95 FunctionExpression node, |
101 ConstructorElement constructor, | 96 ConstructorElement constructor, |
102 NodeList parameters, | 97 NodeList parameters, |
103 NodeList initializers, | 98 NodeList initializers, |
104 _) { | 99 _) { |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
339 ConstantExpression visitNamedArgument(NamedArgument node) { | 334 ConstantExpression visitNamedArgument(NamedArgument node) { |
340 return apply(node.expression); | 335 return apply(node.expression); |
341 } | 336 } |
342 | 337 |
343 @override | 338 @override |
344 ConstantExpression visitIfNull(Send node, Node left, Node right, _) { | 339 ConstantExpression visitIfNull(Send node, Node left, Node right, _) { |
345 return new BinaryConstantExpression( | 340 return new BinaryConstantExpression( |
346 apply(left), BinaryOperator.IF_NULL, apply(right)); | 341 apply(left), BinaryOperator.IF_NULL, apply(right)); |
347 } | 342 } |
348 } | 343 } |
OLD | NEW |