Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(568)

Side by Side Diff: pkg/compiler/lib/src/kernel/kernel_visitor.dart

Issue 2268893006: record originating elements for Kernel nodes (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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.md file. 3 // BSD-style license that can be found in the LICENSE.md file.
4 4
5 import 'package:kernel/ast.dart' as ir; 5 import 'package:kernel/ast.dart' as ir;
6 import 'package:kernel/frontend/accessors.dart' 6 import 'package:kernel/frontend/accessors.dart'
7 show 7 show
8 Accessor, 8 Accessor,
9 IndexAccessor, 9 IndexAccessor,
10 NullAwarePropertyAccessor, 10 NullAwarePropertyAccessor,
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 191
192 final Map<JumpTarget, ir.LabeledStatement> breakTargets = 192 final Map<JumpTarget, ir.LabeledStatement> breakTargets =
193 <JumpTarget, ir.LabeledStatement>{}; 193 <JumpTarget, ir.LabeledStatement>{};
194 194
195 final Map<LocalElement, ir.VariableDeclaration> locals = 195 final Map<LocalElement, ir.VariableDeclaration> locals =
196 <LocalElement, ir.VariableDeclaration>{}; 196 <LocalElement, ir.VariableDeclaration>{};
197 197
198 final Map<CascadeReceiver, ir.VariableGet> cascadeReceivers = 198 final Map<CascadeReceiver, ir.VariableGet> cascadeReceivers =
199 <CascadeReceiver, ir.VariableGet>{}; 199 <CascadeReceiver, ir.VariableGet>{};
200 200
201 final Map<ir.Node, Element> nodeToElement = <ir.Node, Element>{};
202
203 ir.Node associate(ir.Node node, Element element) {
204 nodeToElement[node] = element;
205 return node;
206 }
207
201 bool isVoidContext = false; 208 bool isVoidContext = false;
202 209
203 KernelVisitor(this.currentElement, this.elements, this.kernel); 210 KernelVisitor(this.currentElement, this.elements, this.kernel);
204 211
205 KernelVisitor get sendVisitor => this; 212 KernelVisitor get sendVisitor => this;
206 213
207 KernelVisitor get declVisitor => this; 214 KernelVisitor get declVisitor => this;
208 215
209 ir.TreeNode visitForValue(Expression node) { 216 ir.TreeNode visitForValue(Expression node) {
210 bool wasVoidContext = isVoidContext; 217 bool wasVoidContext = isVoidContext;
(...skipping 1693 matching lines...) Expand 10 before | Expand all | Expand 10 after
1904 if (setterKind == CompoundSetter.INVALID) { 1911 if (setterKind == CompoundSetter.INVALID) {
1905 setter = null; 1912 setter = null;
1906 } 1913 }
1907 return buildStaticAccessor(getter, setter).buildNullAwareAssignment( 1914 return buildStaticAccessor(getter, setter).buildNullAwareAssignment(
1908 visitForValue(rhs), 1915 visitForValue(rhs),
1909 voidContext: isVoidContext); 1916 voidContext: isVoidContext);
1910 } 1917 }
1911 1918
1912 ir.VariableDeclaration getLocal(LocalElement local) { 1919 ir.VariableDeclaration getLocal(LocalElement local) {
1913 return locals.putIfAbsent(local, () { 1920 return locals.putIfAbsent(local, () {
1914 return new ir.VariableDeclaration(local.name, 1921 return associate(
1915 initializer: null, 1922 new ir.VariableDeclaration(local.name,
1916 type: typeToIrHack(local.type), 1923 initializer: null,
1917 isFinal: local.isFinal, 1924 type: typeToIrHack(local.type),
1918 isConst: local.isConst); 1925 isFinal: local.isFinal,
1926 isConst: local.isConst),
1927 local);
1919 }); 1928 });
1920 } 1929 }
1921 1930
1922 ir.FunctionNode buildFunctionNode(FunctionElement function, Node bodyNode) { 1931 ir.FunctionNode buildFunctionNode(FunctionElement function, Node bodyNode) {
1923 List<ir.TypeParameter> typeParameters = 1932 List<ir.TypeParameter> typeParameters =
1924 kernel.typeParametersNotImplemented(); 1933 kernel.typeParametersNotImplemented();
1925 List<ir.VariableDeclaration> positionalParameters = 1934 List<ir.VariableDeclaration> positionalParameters =
1926 <ir.VariableDeclaration>[]; 1935 <ir.VariableDeclaration>[];
1927 List<ir.VariableDeclaration> namedParameters = <ir.VariableDeclaration>[]; 1936 List<ir.VariableDeclaration> namedParameters = <ir.VariableDeclaration>[];
1928 int requiredParameterCount = 0; 1937 int requiredParameterCount = 0;
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1978 break; 1987 break;
1979 1988
1980 default: 1989 default:
1981 internalError( 1990 internalError(
1982 function, "Unknown async maker: ${function.asyncMarker}"); 1991 function, "Unknown async maker: ${function.asyncMarker}");
1983 break; 1992 break;
1984 } 1993 }
1985 } 1994 }
1986 ir.Statement body = 1995 ir.Statement body =
1987 (bodyNode == null) ? null : buildStatementInBlock(bodyNode); 1996 (bodyNode == null) ? null : buildStatementInBlock(bodyNode);
1988 return new ir.FunctionNode(body, 1997 return associate(
1989 asyncMarker: asyncMarker, 1998 new ir.FunctionNode(body,
1990 returnType: returnType, 1999 asyncMarker: asyncMarker,
1991 typeParameters: typeParameters, 2000 returnType: returnType,
1992 positionalParameters: positionalParameters, 2001 typeParameters: typeParameters,
1993 namedParameters: namedParameters, 2002 positionalParameters: positionalParameters,
1994 requiredParameterCount: requiredParameterCount); 2003 namedParameters: namedParameters,
2004 requiredParameterCount: requiredParameterCount),
2005 function);
1995 } 2006 }
1996 2007
1997 @override 2008 @override
1998 IrFunction visitStaticFunctionDeclaration(FunctionExpression node, 2009 IrFunction visitStaticFunctionDeclaration(FunctionExpression node,
1999 MethodElement function, NodeList parameters, Node body, _) { 2010 MethodElement function, NodeList parameters, Node body, _) {
2000 return buildIrFunction(ir.ProcedureKind.Method, function, body); 2011 return buildIrFunction(ir.ProcedureKind.Method, function, body);
2001 } 2012 }
2002 2013
2003 ir.ProcedureKind computeInstanceMethodKind(MethodElement method) { 2014 ir.ProcedureKind computeInstanceMethodKind(MethodElement method) {
2004 assert(method.isFunction); 2015 assert(method.isFunction);
(...skipping 689 matching lines...) Expand 10 before | Expand all | Expand 10 after
2694 : this(null, true, node, initializers); 2705 : this(null, true, node, initializers);
2695 2706
2696 accept(ir.Visitor v) => throw "unsupported"; 2707 accept(ir.Visitor v) => throw "unsupported";
2697 2708
2698 visitChildren(ir.Visitor v) => throw "unsupported"; 2709 visitChildren(ir.Visitor v) => throw "unsupported";
2699 2710
2700 String toString() { 2711 String toString() {
2701 return "IrFunction($kind, $isConstructor, $node, $initializers)"; 2712 return "IrFunction($kind, $isConstructor, $node, $initializers)";
2702 } 2713 }
2703 } 2714 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698