OLD | NEW |
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 library dart2js.kernel.env; | 5 library dart2js.kernel.env; |
6 | 6 |
7 import 'package:kernel/ast.dart' as ir; | 7 import 'package:kernel/ast.dart' as ir; |
8 import 'package:kernel/clone.dart'; | 8 import 'package:kernel/clone.dart'; |
9 import 'package:kernel/type_algebra.dart'; | 9 import 'package:kernel/type_algebra.dart'; |
10 | 10 |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 _setterMap[member.name.name] = member; | 117 _setterMap[member.name.name] = member; |
118 } else { | 118 } else { |
119 _memberMap[member.name.name] = member; | 119 _memberMap[member.name.name] = member; |
120 } | 120 } |
121 } else if (member is ir.Field) { | 121 } else if (member is ir.Field) { |
122 _memberMap[member.name.name] = member; | 122 _memberMap[member.name.name] = member; |
123 if (member.isMutable) { | 123 if (member.isMutable) { |
124 _setterMap[member.name.name] = member; | 124 _setterMap[member.name.name] = member; |
125 } | 125 } |
126 } else { | 126 } else { |
127 throw new SpannableAssertionFailure( | 127 failedAt( |
128 NO_LOCATION_SPANNABLE, "Unexpected library member node: $member"); | 128 NO_LOCATION_SPANNABLE, "Unexpected library member node: $member"); |
129 } | 129 } |
130 } | 130 } |
131 } | 131 } |
132 } | 132 } |
133 | 133 |
134 /// Return the [ir.Member] for the member [name] in [library]. | 134 /// Return the [ir.Member] for the member [name] in [library]. |
135 ir.Member lookupMember(String name, {bool setter: false}) { | 135 ir.Member lookupMember(String name, {bool setter: false}) { |
136 _ensureMemberMaps(); | 136 _ensureMemberMaps(); |
137 return setter ? _setterMap[name] : _memberMap[name]; | 137 return setter ? _setterMap[name] : _memberMap[name]; |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 _memberMap[member.name.name] = member; | 260 _memberMap[member.name.name] = member; |
261 } | 261 } |
262 } else if (member is ir.Field) { | 262 } else if (member is ir.Field) { |
263 if (!includeStatic && member.isStatic) continue; | 263 if (!includeStatic && member.isStatic) continue; |
264 _memberMap[member.name.name] = member; | 264 _memberMap[member.name.name] = member; |
265 if (member.isMutable) { | 265 if (member.isMutable) { |
266 _setterMap[member.name.name] = member; | 266 _setterMap[member.name.name] = member; |
267 } | 267 } |
268 _memberMap[member.name.name] = member; | 268 _memberMap[member.name.name] = member; |
269 } else { | 269 } else { |
270 throw new SpannableAssertionFailure( | 270 failedAt( |
271 NO_LOCATION_SPANNABLE, "Unexpected class member node: $member"); | 271 NO_LOCATION_SPANNABLE, "Unexpected class member node: $member"); |
272 } | 272 } |
273 } | 273 } |
274 } | 274 } |
275 | 275 |
276 if (cls.mixedInClass != null) { | 276 if (cls.mixedInClass != null) { |
277 addMembers(cls.mixedInClass, includeStatic: false); | 277 addMembers(cls.mixedInClass, includeStatic: false); |
278 } | 278 } |
279 addMembers(cls, includeStatic: true); | 279 addMembers(cls, includeStatic: true); |
280 | 280 |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
420 ConstructorData(ir.Member node, ir.FunctionNode functionNode) | 420 ConstructorData(ir.Member node, ir.FunctionNode functionNode) |
421 : super(node, functionNode); | 421 : super(node, functionNode); |
422 | 422 |
423 ConstantConstructor getConstructorConstant( | 423 ConstantConstructor getConstructorConstant( |
424 KernelToElementMapBase elementMap, ConstructorEntity constructor) { | 424 KernelToElementMapBase elementMap, ConstructorEntity constructor) { |
425 if (_constantConstructor == null) { | 425 if (_constantConstructor == null) { |
426 if (node is ir.Constructor && constructor.isConst) { | 426 if (node is ir.Constructor && constructor.isConst) { |
427 _constantConstructor = | 427 _constantConstructor = |
428 new Constantifier(elementMap).computeConstantConstructor(node); | 428 new Constantifier(elementMap).computeConstantConstructor(node); |
429 } else { | 429 } else { |
430 throw new SpannableAssertionFailure( | 430 failedAt( |
431 constructor, | 431 constructor, |
432 "Unexpected constructor $constructor in " | 432 "Unexpected constructor $constructor in " |
433 "KernelWorldBuilder._getConstructorConstant"); | 433 "KernelWorldBuilder._getConstructorConstant"); |
434 } | 434 } |
435 } | 435 } |
436 return _constantConstructor; | 436 return _constantConstructor; |
437 } | 437 } |
438 | 438 |
439 @override | 439 @override |
440 ConstructorData copy() { | 440 ConstructorData copy() { |
441 return new ConstructorData(node, functionNode); | 441 return new ConstructorData(node, functionNode); |
442 } | 442 } |
443 } | 443 } |
444 | 444 |
445 class FieldData extends MemberData { | 445 class FieldData extends MemberData { |
446 ConstantExpression _constant; | 446 ConstantExpression _constant; |
447 | 447 |
448 FieldData(ir.Field node) : super(node); | 448 FieldData(ir.Field node) : super(node); |
449 | 449 |
450 ir.Field get node => super.node; | 450 ir.Field get node => super.node; |
451 | 451 |
452 ConstantExpression getFieldConstant( | 452 ConstantExpression getFieldConstant( |
453 KernelToElementMapBase elementMap, FieldEntity field) { | 453 KernelToElementMapBase elementMap, FieldEntity field) { |
454 if (_constant == null) { | 454 if (_constant == null) { |
455 if (node.isConst) { | 455 if (node.isConst) { |
456 _constant = new Constantifier(elementMap).visit(node.initializer); | 456 _constant = new Constantifier(elementMap).visit(node.initializer); |
457 } else { | 457 } else { |
458 throw new SpannableAssertionFailure( | 458 failedAt( |
459 field, | 459 field, |
460 "Unexpected field $field in " | 460 "Unexpected field $field in " |
461 "KernelWorldBuilder._getConstructorConstant"); | 461 "KernelWorldBuilder._getConstructorConstant"); |
462 } | 462 } |
463 } | 463 } |
464 return _constant; | 464 return _constant; |
465 } | 465 } |
466 | 466 |
467 @override | 467 @override |
468 FieldData copy() { | 468 FieldData copy() { |
469 return new FieldData(node); | 469 return new FieldData(node); |
470 } | 470 } |
471 } | 471 } |
OLD | NEW |