OLD | NEW |
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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.serialization.resolved_ast; | 5 library dart2js.serialization.resolved_ast; |
6 | 6 |
7 import 'package:front_end/src/fasta/parser.dart' show Parser, ParserError; | 7 import 'package:front_end/src/fasta/parser.dart' show Parser, ParserError; |
8 import 'package:front_end/src/fasta/scanner.dart'; | 8 import 'package:front_end/src/fasta/scanner.dart'; |
9 | 9 |
10 import '../common.dart'; | 10 import '../common.dart'; |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
171 serializeLabelDefinition(labelDefinition, list.createObject()); | 171 serializeLabelDefinition(labelDefinition, list.createObject()); |
172 } | 172 } |
173 } | 173 } |
174 | 174 |
175 if (element is FunctionElement) { | 175 if (element is FunctionElement) { |
176 serializeParameterNodes(element); | 176 serializeParameterNodes(element); |
177 } | 177 } |
178 } | 178 } |
179 | 179 |
180 void serializeParameterNodes(FunctionElement function) { | 180 void serializeParameterNodes(FunctionElement function) { |
181 function.functionSignature.forEachParameter((ParameterElement parameter) { | 181 function.functionSignature.forEachParameter((_parameter) { |
| 182 ParameterElement parameter = _parameter; |
182 ParameterElement parameterImpl = parameter.implementation; | 183 ParameterElement parameterImpl = parameter.implementation; |
183 // TODO(johnniwinther): Should we support element->node mapping as well? | 184 // TODO(johnniwinther): Should we support element->node mapping as well? |
184 getNodeDataEncoder(parameterImpl.node) | 185 getNodeDataEncoder(parameterImpl.node) |
185 .setElement(PARAMETER_NODE, parameter); | 186 .setElement(PARAMETER_NODE, parameter); |
186 if (parameter.initializer != null) { | 187 if (parameter.initializer != null) { |
187 getNodeDataEncoder(parameterImpl.initializer) | 188 getNodeDataEncoder(parameterImpl.initializer) |
188 .setElement(PARAMETER_INITIALIZER, parameter); | 189 .setElement(PARAMETER_INITIALIZER, parameter); |
189 } | 190 } |
190 }); | 191 }); |
191 } | 192 } |
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
598 String labelName = decoder.getString(Key.NAME); | 599 String labelName = decoder.getString(Key.NAME); |
599 JumpTarget target = jumpTargets[decoder.getInt(Key.JUMP_TARGET)]; | 600 JumpTarget target = jumpTargets[decoder.getInt(Key.JUMP_TARGET)]; |
600 LabelDefinitionX labelDefinition = | 601 LabelDefinitionX labelDefinition = |
601 new LabelDefinitionX(label, labelName, target); | 602 new LabelDefinitionX(label, labelName, target); |
602 labelDefinition.isBreakTarget = decoder.getBool(Key.IS_BREAK_TARGET); | 603 labelDefinition.isBreakTarget = decoder.getBool(Key.IS_BREAK_TARGET); |
603 labelDefinition.isContinueTarget = | 604 labelDefinition.isContinueTarget = |
604 decoder.getBool(Key.IS_CONTINUE_TARGET); | 605 decoder.getBool(Key.IS_CONTINUE_TARGET); |
605 labelDefinitions.add(labelDefinition); | 606 labelDefinitions.add(labelDefinition); |
606 } | 607 } |
607 } | 608 } |
608 jumpTargetLabels.forEach((JumpTargetX jumpTarget, List<int> labelIds) { | 609 jumpTargetLabels.forEach((JumpTarget jumpTarget, List<int> labelIds) { |
609 if (labelIds.isEmpty) return; | 610 if (labelIds.isEmpty) return; |
610 List<LabelDefinition> labels = <LabelDefinition>[]; | 611 List<LabelDefinition> labels = <LabelDefinition>[]; |
611 for (int labelId in labelIds) { | 612 for (int labelId in labelIds) { |
612 labels.add(labelDefinitions[labelId]); | 613 labels.add(labelDefinitions[labelId]); |
613 } | 614 } |
614 jumpTarget.labels = labels; | 615 JumpTargetX target = jumpTarget; |
| 616 target.labels = labels; |
615 }); | 617 }); |
616 | 618 |
617 ListDecoder dataDecoder = objectDecoder.getList(Key.DATA, isOptional: true); | 619 ListDecoder dataDecoder = objectDecoder.getList(Key.DATA, isOptional: true); |
618 if (dataDecoder != null) { | 620 if (dataDecoder != null) { |
619 for (int i = 0; i < dataDecoder.length; i++) { | 621 for (int i = 0; i < dataDecoder.length; i++) { |
620 ObjectDecoder objectDecoder = dataDecoder.getObject(i); | 622 ObjectDecoder objectDecoder = dataDecoder.getObject(i); |
621 int id = objectDecoder.getInt(Key.ID); | 623 int id = objectDecoder.getInt(Key.ID); |
622 Node node = nodeList[id]; | 624 Node node = nodeList[id]; |
623 Element nodeElement = deserializeElementReference( | 625 Element nodeElement = deserializeElementReference( |
624 element, Key.ELEMENT, Key.NAME, objectDecoder, | 626 element, Key.ELEMENT, Key.NAME, objectDecoder, |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
707 } | 709 } |
708 } | 710 } |
709 } | 711 } |
710 element.resolvedAst = | 712 element.resolvedAst = |
711 new ParsedResolvedAst(element, root, body, elements, uri); | 713 new ParsedResolvedAst(element, root, body, elements, uri); |
712 } | 714 } |
713 } | 715 } |
714 | 716 |
715 const Key PARAMETER_NODE = const Key('parameter.node'); | 717 const Key PARAMETER_NODE = const Key('parameter.node'); |
716 const Key PARAMETER_INITIALIZER = const Key('parameter.initializer'); | 718 const Key PARAMETER_INITIALIZER = const Key('parameter.initializer'); |
OLD | NEW |