| 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 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 } | 56 } |
| 57 }); | 57 }); |
| 58 } | 58 } |
| 59 | 59 |
| 60 /// Compute a descriptive mapping of the [Id]s in [_member] as a | 60 /// Compute a descriptive mapping of the [Id]s in [_member] as a |
| 61 /// [MemberElement]. | 61 /// [MemberElement]. |
| 62 /// | 62 /// |
| 63 /// Fills [actualMap] with the data and [sourceSpanMap] with the source spans | 63 /// Fills [actualMap] with the data and [sourceSpanMap] with the source spans |
| 64 /// for the data origin. | 64 /// for the data origin. |
| 65 void computeAstMemberData(Compiler compiler, MemberEntity _member, | 65 void computeAstMemberData(Compiler compiler, MemberEntity _member, |
| 66 Map<Id, String> actualMap, Map<Id, SourceSpan> sourceSpanMap) { | 66 Map<Id, String> actualMap, Map<Id, SourceSpan> sourceSpanMap, |
| 67 {bool verbose: false}) { |
| 67 MemberElement member = _member; | 68 MemberElement member = _member; |
| 68 ResolvedAst resolvedAst = member.resolvedAst; | 69 ResolvedAst resolvedAst = member.resolvedAst; |
| 69 if (resolvedAst.kind != ResolvedAstKind.PARSED) return; | 70 if (resolvedAst.kind != ResolvedAstKind.PARSED) return; |
| 70 new ResolvedAstComputer( | 71 new ResolvedAstComputer( |
| 71 compiler.reporter, actualMap, sourceSpanMap, resolvedAst) | 72 compiler.reporter, actualMap, sourceSpanMap, resolvedAst) |
| 72 .run(); | 73 .run(); |
| 73 } | 74 } |
| 74 | 75 |
| 75 /// Mixin used for0computing a descriptive mapping of the [Id]s in a member. | 76 /// Mixin used for0computing a descriptive mapping of the [Id]s in a member. |
| 76 class ComputerMixin { | 77 class ComputerMixin { |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 return computeMemberName(element.enclosingClass?.name, element.name); | 141 return computeMemberName(element.enclosingClass?.name, element.name); |
| 141 } | 142 } |
| 142 } | 143 } |
| 143 | 144 |
| 144 /// Compute a descriptive mapping of the [Id]s in [member] as a kernel based | 145 /// Compute a descriptive mapping of the [Id]s in [member] as a kernel based |
| 145 /// member. | 146 /// member. |
| 146 /// | 147 /// |
| 147 /// Fills [actualMap] with the data and [sourceSpanMap] with the source spans | 148 /// Fills [actualMap] with the data and [sourceSpanMap] with the source spans |
| 148 /// for the data origin. | 149 /// for the data origin. |
| 149 void computeIrMemberData(Compiler compiler, MemberEntity member, | 150 void computeIrMemberData(Compiler compiler, MemberEntity member, |
| 150 Map<Id, String> actualMap, Map<Id, Spannable> spannableMap) { | 151 Map<Id, String> actualMap, Map<Id, Spannable> spannableMap, |
| 152 {bool verbose: false}) { |
| 151 KernelBackendStrategy backendStrategy = compiler.backendStrategy; | 153 KernelBackendStrategy backendStrategy = compiler.backendStrategy; |
| 152 KernelToElementMapForBuilding elementMap = backendStrategy.elementMap; | 154 KernelToElementMapForBuilding elementMap = backendStrategy.elementMap; |
| 153 MemberDefinition definition = elementMap.getMemberDefinition(member); | 155 MemberDefinition definition = elementMap.getMemberDefinition(member); |
| 154 assert(definition.kind == MemberKind.regular, | 156 assert(definition.kind == MemberKind.regular, |
| 155 failedAt(member, "Unexpected member definition $definition")); | 157 failedAt(member, "Unexpected member definition $definition")); |
| 156 new IrComputer(actualMap, spannableMap).run(definition.node); | 158 new IrComputer(actualMap, spannableMap).run(definition.node); |
| 157 } | 159 } |
| 158 | 160 |
| 159 /// IR visitor for computing a descriptive mapping of the [Id]s in a member. | 161 /// IR visitor for computing a descriptive mapping of the [Id]s in a member. |
| 160 class IrComputer extends AbstractIrComputer with ComputerMixin { | 162 class IrComputer extends AbstractIrComputer with ComputerMixin { |
| 161 IrComputer(Map<Id, String> actualMap, Map<Id, SourceSpan> spannableMap) | 163 IrComputer(Map<Id, String> actualMap, Map<Id, SourceSpan> spannableMap) |
| 162 : super(actualMap, spannableMap); | 164 : super(actualMap, spannableMap); |
| 163 | 165 |
| 164 @override | 166 @override |
| 165 String computeNodeValue(ir.TreeNode node) { | 167 String computeNodeValue(ir.TreeNode node) { |
| 166 if (node is ir.VariableDeclaration) { | 168 if (node is ir.VariableDeclaration) { |
| 167 return computeLocalName(node.name); | 169 return computeLocalName(node.name); |
| 168 } else if (node is ir.FunctionDeclaration) { | 170 } else if (node is ir.FunctionDeclaration) { |
| 169 return computeLocalName(node.variable.name); | 171 return computeLocalName(node.variable.name); |
| 172 } else if (node is ir.FunctionExpression) { |
| 173 return computeLocalName(''); |
| 170 } else if (node is ir.MethodInvocation) { | 174 } else if (node is ir.MethodInvocation) { |
| 171 return computeDynamicInvokeName(node.name.name); | 175 return computeDynamicInvokeName(node.name.name); |
| 172 } else if (node is ir.PropertyGet) { | 176 } else if (node is ir.PropertyGet) { |
| 173 return computeDynamicGetName(node.name.name); | 177 return computeDynamicGetName(node.name.name); |
| 174 } | 178 } |
| 175 return '<unknown:$node>'; | 179 return '<unknown:$node>'; |
| 176 } | 180 } |
| 177 | 181 |
| 178 @override | 182 @override |
| 179 String computeMemberValue(ir.Member member) { | 183 String computeMemberValue(ir.Member member) { |
| 180 return computeMemberName(member.enclosingClass?.name, member.name.name); | 184 return computeMemberName(member.enclosingClass?.name, member.name.name); |
| 181 } | 185 } |
| 182 } | 186 } |
| OLD | NEW |