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

Side by Side Diff: tests/standalone/debugger/debug_lib.dart

Issue 102453002: VM debugger: fix closures in mixed-in functions (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years 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 | Annotate | Revision Log
« no previous file with comments | « runtime/vm/object.cc ('k') | tests/standalone/debugger/mixin_closure_debugger_test.dart » ('j') | 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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 used by debugger wire protocol tests (standalone VM debugging). 5 // Library used by debugger wire protocol tests (standalone VM debugging).
6 6
7 library DartDebugger; 7 library DartDebugger;
8 8
9 import "dart:async"; 9 import "dart:async";
10 import "dart:convert"; 10 import "dart:convert";
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 if (response["id"] != id) { 177 if (response["id"] != id) {
178 debugger.error("Error: expected messaged id $id but got ${response["id"]}. "); 178 debugger.error("Error: expected messaged id $id but got ${response["id"]}. ");
179 } 179 }
180 } 180 }
181 } 181 }
182 182
183 183
184 class FrameMatcher extends Command { 184 class FrameMatcher extends Command {
185 int frameIndex; 185 int frameIndex;
186 List<String> functionNames; 186 List<String> functionNames;
187 bool exactMatch;
187 188
188 FrameMatcher(this.frameIndex, this.functionNames) { 189 FrameMatcher(this.frameIndex, this.functionNames, this.exactMatch) {
189 template = {"id": 0, "command": "getStackTrace", "params": {"isolateId": 0}} ; 190 template = {"id": 0, "command": "getStackTrace", "params": {"isolateId": 0}} ;
190 } 191 }
191 192
192 void matchResponse(Debugger debugger) { 193 void matchResponse(Debugger debugger) {
193 super.matchResponse(debugger); 194 super.matchResponse(debugger);
194 var msg = debugger.currentMessage; 195 var msg = debugger.currentMessage;
195 List frames = getJsonValue(msg, "result:callFrames"); 196 List frames = getJsonValue(msg, "result:callFrames");
196 assert(frames != null); 197 assert(frames != null);
197 if (debugger.scriptUrl == null) { 198 if (debugger.scriptUrl == null) {
198 var name = frames[0]["functionName"]; 199 var name = frames[0]["functionName"];
199 if (name == "main") { 200 if (name == "main") {
200 // Extract script url of debugged script. 201 // Extract script url of debugged script.
201 debugger.scriptUrl = frames[0]["location"]["url"]; 202 debugger.scriptUrl = frames[0]["location"]["url"];
202 assert(debugger.scriptUrl != null); 203 assert(debugger.scriptUrl != null);
203 } 204 }
204 } 205 }
205 if (frames.length < functionNames.length) { 206 if (frames.length < functionNames.length) {
206 debugger.error("Error: stack trace not long enough " 207 debugger.error("Error: stack trace not long enough "
207 "to match ${functionNames.length} frames"); 208 "to match ${functionNames.length} frames");
208 return; 209 return;
209 } 210 }
210 for (int i = 0; i < functionNames.length; i++) { 211 for (int i = 0; i < functionNames.length; i++) {
211 var idx = i + frameIndex; 212 var idx = i + frameIndex;
212 var name = frames[idx]["functionName"]; 213 var name = frames[idx]["functionName"];
213 assert(name != null); 214 assert(name != null);
214 if (name != functionNames[i]) { 215 bool isMatch = exactMatch ? name == functionNames[i]
216 : name.contains(functionNames[i]);
217 if (!isMatch) {
215 debugger.error("Error: call frame $idx: " 218 debugger.error("Error: call frame $idx: "
216 "expected function name '${functionNames[i]}' but found '$name'"); 219 "expected function name '${functionNames[i]}' but found '$name'");
217 return; 220 return;
218 } 221 }
219 } 222 }
220 } 223 }
221 } 224 }
222 225
223 226
224 MatchFrame(int frameIndex, String functionName) { 227 MatchFrame(int frameIndex, String functionName, {exactMatch: false}) {
225 return new FrameMatcher(frameIndex, [ functionName ]); 228 return new FrameMatcher(frameIndex, [functionName], exactMatch);
226 } 229 }
227 230
228 MatchFrames(List<String> functionNames) { 231 MatchFrames(List<String> functionNames, {exactMatch: false}) {
229 return new FrameMatcher(0, functionNames); 232 return new FrameMatcher(0, functionNames, exactMatch);
230 } 233 }
231 234
232 235
233 class LocalsMatcher extends Command { 236 class LocalsMatcher extends Command {
234 Map locals = {}; 237 Map locals = {};
235 238
236 LocalsMatcher(this.locals) { 239 LocalsMatcher(this.locals) {
237 template = {"id": 0, "command": "getStackTrace", "params": {"isolateId": 0}} ; 240 template = {"id": 0, "command": "getStackTrace", "params": {"isolateId": 0}} ;
238 } 241 }
239 242
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 targetOpts.add("--debuggee"); 614 targetOpts.add("--debuggee");
612 print('args: ${targetOpts.join(" ")}'); 615 print('args: ${targetOpts.join(" ")}');
613 616
614 Process.start(Platform.executable, targetOpts).then((Process process) { 617 Process.start(Platform.executable, targetOpts).then((Process process) {
615 print("Debug target process started, pid ${process.pid}."); 618 print("Debug target process started, pid ${process.pid}.");
616 process.stdin.close(); 619 process.stdin.close();
617 var debugger = new Debugger(process, new DebugScript(script)); 620 var debugger = new Debugger(process, new DebugScript(script));
618 }); 621 });
619 return true; 622 return true;
620 } 623 }
OLDNEW
« no previous file with comments | « runtime/vm/object.cc ('k') | tests/standalone/debugger/mixin_closure_debugger_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698