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

Side by Side Diff: tests/compiler/dart2js/source_map_validator_helper.dart

Issue 2942763002: Late night strong mode cleaning. (Closed)
Patch Set: Created 3 years, 6 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
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 'dart:convert'; 6 import 'dart:convert';
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:path/path.dart' as path; 9 import 'package:path/path.dart' as path;
10 import 'package:expect/expect.dart'; 10 import 'package:expect/expect.dart';
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 checkNames( 103 checkNames(
104 Uri targetUri, Uri mapUri, SingleMapping sourceMap, CompilerImpl compiler) { 104 Uri targetUri, Uri mapUri, SingleMapping sourceMap, CompilerImpl compiler) {
105 Map<Uri, CompilationUnitElement> compilationUnitMap = {}; 105 Map<Uri, CompilationUnitElement> compilationUnitMap = {};
106 106
107 void mapCompilationUnits(LibraryElement library) { 107 void mapCompilationUnits(LibraryElement library) {
108 library.compilationUnits.forEach((CompilationUnitElement compilationUnit) { 108 library.compilationUnits.forEach((CompilationUnitElement compilationUnit) {
109 compilationUnitMap[compilationUnit.script.readableUri] = compilationUnit; 109 compilationUnitMap[compilationUnit.script.readableUri] = compilationUnit;
110 }); 110 });
111 } 111 }
112 112
113 compiler.libraryLoader.libraries.forEach((LibraryElement library) { 113 compiler.libraryLoader.libraries.forEach((_library) {
114 LibraryElement library = _library;
114 mapCompilationUnits(library); 115 mapCompilationUnits(library);
115 if (library.patch != null) { 116 if (library.patch != null) {
116 mapCompilationUnits(library.patch); 117 mapCompilationUnits(library.patch);
117 } 118 }
118 }); 119 });
119 120
120 sourceMap.lines.forEach((TargetLineEntry line) { 121 sourceMap.lines.forEach((TargetLineEntry line) {
121 for (TargetEntry entry in line.entries) { 122 for (TargetEntry entry in line.entries) {
122 if (entry.sourceNameId != null) { 123 if (entry.sourceNameId != null) {
123 Uri uri = mapUri.resolve(sourceMap.urls[entry.sourceUrlId]); 124 Uri uri = mapUri.resolve(sourceMap.urls[entry.sourceUrlId]);
124 Position targetPosition = new Position(line.line, entry.column);
125 Position sourcePosition = 125 Position sourcePosition =
126 new Position(entry.sourceLine, entry.sourceColumn); 126 new Position(entry.sourceLine, entry.sourceColumn);
127 String name = sourceMap.names[entry.sourceNameId]; 127 String name = sourceMap.names[entry.sourceNameId];
128 128
129 CompilationUnitElement compilationUnit = compilationUnitMap[uri]; 129 CompilationUnitElement compilationUnit = compilationUnitMap[uri];
130 Expect.isNotNull( 130 Expect.isNotNull(
131 compilationUnit, "No compilation unit found for $uri."); 131 compilationUnit, "No compilation unit found for $uri.");
132 132
133 SourceFile sourceFile = compilationUnit.script.file; 133 SourceFile sourceFile = compilationUnit.script.file;
134 134
135 Position positionFromOffset(int offset) { 135 Position positionFromOffset(int offset) {
136 Location location = sourceFile.getLocation(offset); 136 Location location = sourceFile.getLocation(offset);
137 int line = location.line - 1; 137 int line = location.line - 1;
138 int column = location.column - 1; 138 int column = location.column - 1;
139 return new Position(line, column); 139 return new Position(line, column);
140 } 140 }
141 141
142 Interval intervalFromElement(AstElement element) { 142 Interval intervalFromElement(AstElement element) {
143 if (!element.hasNode) return null; 143 if (!element.hasNode) return null;
144 144
145 var begin = element.node.getBeginToken().charOffset; 145 var begin = element.node.getBeginToken().charOffset;
146 var end = element.node.getEndToken(); 146 var endToken = element.node.getEndToken();
147 end = end.charOffset + end.charCount; 147 int end = endToken.charOffset + endToken.charCount;
148 return new Interval( 148 return new Interval(
149 positionFromOffset(begin), positionFromOffset(end)); 149 positionFromOffset(begin), positionFromOffset(end));
150 } 150 }
151 151
152 AstElement findInnermost(AstElement element) { 152 AstElement findInnermost(AstElement element) {
153 bool isInsideElement(FunctionElement closure) { 153 bool isInsideElement(FunctionElement closure) {
154 Element enclosing = closure; 154 Element enclosing = closure;
155 while (enclosing != null) { 155 while (enclosing != null) {
156 if (enclosing == element) return true; 156 if (enclosing == element) return true;
157 enclosing = enclosing.enclosingElement; 157 enclosing = enclosing.enclosingElement;
158 } 158 }
159 return false; 159 return false;
160 } 160 }
161 161
162 if (element is MemberElement) { 162 if (element is MemberElement) {
163 MemberElement member = element; 163 MemberElement member = element;
164 member.nestedClosures.forEach((closure) { 164 member.nestedClosures.forEach((dynamic closure) {
165 var localFunction = closure.expression; 165 var localFunction = closure.expression;
166 Interval interval = intervalFromElement(localFunction); 166 Interval interval = intervalFromElement(localFunction);
167 if (interval != null && 167 if (interval != null &&
168 interval.contains(sourcePosition) && 168 interval.contains(sourcePosition) &&
169 isInsideElement(localFunction)) { 169 isInsideElement(localFunction)) {
170 element = localFunction; 170 element = localFunction;
171 } 171 }
172 }); 172 });
173 } 173 }
174 return element; 174 return element;
(...skipping 25 matching lines...) Expand all
200 Expect.equals( 200 Expect.equals(
201 expectedName, 201 expectedName,
202 name, 202 name,
203 "Unexpected name '${name}', " 203 "Unexpected name '${name}', "
204 "expected '${expectedName}' or for $innerElement."); 204 "expected '${expectedName}' or for $innerElement.");
205 } 205 }
206 } 206 }
207 } 207 }
208 } 208 }
209 209
210 compilationUnit.forEachLocalMember((AstElement element) { 210 compilationUnit.forEachLocalMember((Element element) {
211 if (element.isClass) { 211 if (element.isClass) {
212 ClassElement classElement = element; 212 ClassElement classElement = element;
213 classElement.forEachLocalMember(match); 213 classElement.forEachLocalMember(match);
214 } else { 214 } else {
215 match(element); 215 match(element);
216 } 216 }
217 }); 217 });
218 } 218 }
219 } 219 }
220 }); 220 });
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 final Position end; 317 final Position end;
318 318
319 Interval(this.begin, this.end); 319 Interval(this.begin, this.end);
320 320
321 bool contains(Position other) { 321 bool contains(Position other) {
322 return begin <= other && other <= end; 322 return begin <= other && other <= end;
323 } 323 }
324 324
325 String toString() => '$begin-$end'; 325 String toString() => '$begin-$end';
326 } 326 }
OLDNEW
« no previous file with comments | « tests/compiler/dart2js/location_collector_test.dart ('k') | tests/compiler/dart2js/sourcemaps/sourcemap_helper.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698