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 import 'dart:io'; | 5 import 'dart:io'; |
6 import 'package:async_helper/async_helper.dart'; | 6 import 'package:async_helper/async_helper.dart'; |
7 import 'package:compiler/src/common.dart'; | 7 import 'package:compiler/src/common.dart'; |
8 import 'package:compiler/src/compiler.dart'; | 8 import 'package:compiler/src/compiler.dart'; |
9 import 'package:compiler/src/diagnostics/diagnostic_listener.dart'; | 9 import 'package:compiler/src/diagnostics/diagnostic_listener.dart'; |
10 import 'package:compiler/src/elements/elements.dart'; | 10 import 'package:compiler/src/elements/elements.dart'; |
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 | 143 |
144 /// Compute a descriptive mapping of the [Id]s in [member] as a kernel based | 144 /// Compute a descriptive mapping of the [Id]s in [member] as a kernel based |
145 /// member. | 145 /// member. |
146 /// | 146 /// |
147 /// Fills [actualMap] with the data and [sourceSpanMap] with the source spans | 147 /// Fills [actualMap] with the data and [sourceSpanMap] with the source spans |
148 /// for the data origin. | 148 /// for the data origin. |
149 void computeIrMemberData(Compiler compiler, MemberEntity member, | 149 void computeIrMemberData(Compiler compiler, MemberEntity member, |
150 Map<Id, String> actualMap, Map<Id, Spannable> spannableMap) { | 150 Map<Id, String> actualMap, Map<Id, Spannable> spannableMap) { |
151 KernelBackendStrategy backendStrategy = compiler.backendStrategy; | 151 KernelBackendStrategy backendStrategy = compiler.backendStrategy; |
152 KernelToElementMapForBuilding elementMap = backendStrategy.elementMap; | 152 KernelToElementMapForBuilding elementMap = backendStrategy.elementMap; |
153 new IrComputer(actualMap, spannableMap).run(elementMap.getMemberNode(member)); | 153 MemberDefinition definition = elementMap.getMemberDefinition(member); |
| 154 assert(definition.kind == MemberKind.regular, |
| 155 failedAt(member, "Unexpected member definition $definition")); |
| 156 new IrComputer(actualMap, spannableMap).run(definition.node); |
154 } | 157 } |
155 | 158 |
156 /// IR visitor for computing a descriptive mapping of the [Id]s in a member. | 159 /// IR visitor for computing a descriptive mapping of the [Id]s in a member. |
157 class IrComputer extends AbstractIrComputer with ComputerMixin { | 160 class IrComputer extends AbstractIrComputer with ComputerMixin { |
158 IrComputer(Map<Id, String> actualMap, Map<Id, SourceSpan> spannableMap) | 161 IrComputer(Map<Id, String> actualMap, Map<Id, SourceSpan> spannableMap) |
159 : super(actualMap, spannableMap); | 162 : super(actualMap, spannableMap); |
160 | 163 |
161 @override | 164 @override |
162 String computeNodeValue(ir.TreeNode node) { | 165 String computeNodeValue(ir.TreeNode node) { |
163 if (node is ir.VariableDeclaration) { | 166 if (node is ir.VariableDeclaration) { |
164 return computeLocalName(node.name); | 167 return computeLocalName(node.name); |
165 } else if (node is ir.FunctionDeclaration) { | 168 } else if (node is ir.FunctionDeclaration) { |
166 return computeLocalName(node.variable.name); | 169 return computeLocalName(node.variable.name); |
167 } else if (node is ir.MethodInvocation) { | 170 } else if (node is ir.MethodInvocation) { |
168 return computeDynamicInvokeName(node.name.name); | 171 return computeDynamicInvokeName(node.name.name); |
169 } else if (node is ir.PropertyGet) { | 172 } else if (node is ir.PropertyGet) { |
170 return computeDynamicGetName(node.name.name); | 173 return computeDynamicGetName(node.name.name); |
171 } | 174 } |
172 return '<unknown:$node>'; | 175 return '<unknown:$node>'; |
173 } | 176 } |
174 | 177 |
175 @override | 178 @override |
176 String computeMemberValue(ir.Member member) { | 179 String computeMemberValue(ir.Member member) { |
177 return computeMemberName(member.enclosingClass?.name, member.name.name); | 180 return computeMemberName(member.enclosingClass?.name, member.name.name); |
178 } | 181 } |
179 } | 182 } |
OLD | NEW |