OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 #include "vm/source_report.h" | 5 #include "vm/source_report.h" |
6 #include "vm/dart_api_impl.h" | 6 #include "vm/dart_api_impl.h" |
7 #include "vm/unit_test.h" | 7 #include "vm/unit_test.h" |
8 | 8 |
9 namespace dart { | 9 namespace dart { |
10 | 10 |
11 #ifndef PRODUCT | 11 #ifndef PRODUCT |
12 | 12 |
13 static RawObject* ExecuteScript(const char* script) { | 13 static RawObject* ExecuteScript(const char* script) { |
14 Dart_Handle h_lib = TestCase::LoadTestScript(script, NULL); | 14 Dart_Handle h_lib = TestCase::LoadTestScript(script, NULL); |
15 EXPECT_VALID(h_lib); | 15 EXPECT_VALID(h_lib); |
16 Library& lib = Library::Handle(); | 16 Library& lib = Library::Handle(); |
17 lib ^= Api::UnwrapHandle(h_lib); | 17 lib ^= Api::UnwrapHandle(h_lib); |
18 EXPECT(!lib.IsNull()); | 18 EXPECT(!lib.IsNull()); |
19 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL); | 19 Dart_Handle result = Dart_Invoke(h_lib, NewString("main"), 0, NULL); |
20 EXPECT_VALID(result); | 20 EXPECT_VALID(result); |
21 return Api::UnwrapHandle(h_lib); | 21 return Api::UnwrapHandle(h_lib); |
22 } | 22 } |
23 | 23 |
24 | |
25 TEST_CASE(SourceReport_Coverage_NoCalls) { | 24 TEST_CASE(SourceReport_Coverage_NoCalls) { |
26 char buffer[1024]; | 25 char buffer[1024]; |
27 const char* kScript = | 26 const char* kScript = |
28 "main() {\n" | 27 "main() {\n" |
29 "}"; | 28 "}"; |
30 | 29 |
31 Library& lib = Library::Handle(); | 30 Library& lib = Library::Handle(); |
32 lib ^= ExecuteScript(kScript); | 31 lib ^= ExecuteScript(kScript); |
33 ASSERT(!lib.IsNull()); | 32 ASSERT(!lib.IsNull()); |
34 const Script& script = | 33 const Script& script = |
35 Script::Handle(lib.LookupScript(String::Handle(String::New("test-lib")))); | 34 Script::Handle(lib.LookupScript(String::Handle(String::New("test-lib")))); |
36 | 35 |
37 SourceReport report(SourceReport::kCoverage); | 36 SourceReport report(SourceReport::kCoverage); |
38 JSONStream js; | 37 JSONStream js; |
39 report.PrintJSON(&js, script); | 38 report.PrintJSON(&js, script); |
40 ElideJSONSubstring("libraries", js.ToCString(), buffer); | 39 ElideJSONSubstring("libraries", js.ToCString(), buffer); |
41 EXPECT_STREQ( | 40 EXPECT_STREQ( |
42 "{\"type\":\"SourceReport\",\"ranges\":" | 41 "{\"type\":\"SourceReport\",\"ranges\":" |
43 | 42 |
44 // One compiled range, no hits or misses. | 43 // One compiled range, no hits or misses. |
45 "[{\"scriptIndex\":0,\"startPos\":0,\"endPos\":5,\"compiled\":true," | 44 "[{\"scriptIndex\":0,\"startPos\":0,\"endPos\":5,\"compiled\":true," |
46 "\"coverage\":{\"hits\":[],\"misses\":[]}}]," | 45 "\"coverage\":{\"hits\":[],\"misses\":[]}}]," |
47 | 46 |
48 // One script in the script table. | 47 // One script in the script table. |
49 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," | 48 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," |
50 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", | 49 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", |
51 buffer); | 50 buffer); |
52 } | 51 } |
53 | 52 |
54 | |
55 TEST_CASE(SourceReport_Coverage_SimpleCall) { | 53 TEST_CASE(SourceReport_Coverage_SimpleCall) { |
56 char buffer[1024]; | 54 char buffer[1024]; |
57 const char* kScript = | 55 const char* kScript = |
58 "helper0() {}\n" | 56 "helper0() {}\n" |
59 "helper1() {}\n" | 57 "helper1() {}\n" |
60 "main() {\n" | 58 "main() {\n" |
61 " if (true) {\n" | 59 " if (true) {\n" |
62 " helper0();\n" | 60 " helper0();\n" |
63 " } else {\n" | 61 " } else {\n" |
64 " helper1();\n" | 62 " helper1();\n" |
(...skipping 24 matching lines...) Expand all Loading... |
89 // One range with a hit and a miss (main). | 87 // One range with a hit and a miss (main). |
90 "{\"scriptIndex\":0,\"startPos\":12,\"endPos\":39,\"compiled\":true," | 88 "{\"scriptIndex\":0,\"startPos\":12,\"endPos\":39,\"compiled\":true," |
91 "\"coverage\":{\"hits\":[23],\"misses\":[32]}}]," | 89 "\"coverage\":{\"hits\":[23],\"misses\":[32]}}]," |
92 | 90 |
93 // Only one script in the script table. | 91 // Only one script in the script table. |
94 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," | 92 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," |
95 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", | 93 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", |
96 buffer); | 94 buffer); |
97 } | 95 } |
98 | 96 |
99 | |
100 TEST_CASE(SourceReport_Coverage_ForceCompile) { | 97 TEST_CASE(SourceReport_Coverage_ForceCompile) { |
101 char buffer[1024]; | 98 char buffer[1024]; |
102 const char* kScript = | 99 const char* kScript = |
103 "helper0() {}\n" | 100 "helper0() {}\n" |
104 "helper1() {}\n" | 101 "helper1() {}\n" |
105 "main() {\n" | 102 "main() {\n" |
106 " if (true) {\n" | 103 " if (true) {\n" |
107 " helper0();\n" | 104 " helper0();\n" |
108 " } else {\n" | 105 " } else {\n" |
109 " helper1();\n" | 106 " helper1();\n" |
(...skipping 25 matching lines...) Expand all Loading... |
135 // One range with a hit and a miss (main). | 132 // One range with a hit and a miss (main). |
136 "{\"scriptIndex\":0,\"startPos\":12,\"endPos\":39,\"compiled\":true," | 133 "{\"scriptIndex\":0,\"startPos\":12,\"endPos\":39,\"compiled\":true," |
137 "\"coverage\":{\"hits\":[23],\"misses\":[32]}}]," | 134 "\"coverage\":{\"hits\":[23],\"misses\":[32]}}]," |
138 | 135 |
139 // Only one script in the script table. | 136 // Only one script in the script table. |
140 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," | 137 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," |
141 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", | 138 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", |
142 buffer); | 139 buffer); |
143 } | 140 } |
144 | 141 |
145 | |
146 TEST_CASE(SourceReport_Coverage_UnusedClass_NoForceCompile) { | 142 TEST_CASE(SourceReport_Coverage_UnusedClass_NoForceCompile) { |
147 char buffer[1024]; | 143 char buffer[1024]; |
148 const char* kScript = | 144 const char* kScript = |
149 "helper0() {}\n" | 145 "helper0() {}\n" |
150 "class Unused {\n" | 146 "class Unused {\n" |
151 " helper1() { helper0(); }\n" | 147 " helper1() { helper0(); }\n" |
152 "}\n" | 148 "}\n" |
153 "main() {\n" | 149 "main() {\n" |
154 " helper0();\n" | 150 " helper0();\n" |
155 "}"; | 151 "}"; |
(...skipping 22 matching lines...) Expand all Loading... |
178 // One range with a hit (main). | 174 // One range with a hit (main). |
179 "{\"scriptIndex\":0,\"startPos\":22,\"endPos\":32,\"compiled\":true," | 175 "{\"scriptIndex\":0,\"startPos\":22,\"endPos\":32,\"compiled\":true," |
180 "\"coverage\":{\"hits\":[27],\"misses\":[]}}]," | 176 "\"coverage\":{\"hits\":[27],\"misses\":[]}}]," |
181 | 177 |
182 // Only one script in the script table. | 178 // Only one script in the script table. |
183 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," | 179 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," |
184 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", | 180 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", |
185 buffer); | 181 buffer); |
186 } | 182 } |
187 | 183 |
188 | |
189 TEST_CASE(SourceReport_Coverage_UnusedClass_ForceCompile) { | 184 TEST_CASE(SourceReport_Coverage_UnusedClass_ForceCompile) { |
190 char buffer[1024]; | 185 char buffer[1024]; |
191 const char* kScript = | 186 const char* kScript = |
192 "helper0() {}\n" | 187 "helper0() {}\n" |
193 "class Unused {\n" | 188 "class Unused {\n" |
194 " helper1() { helper0(); }\n" | 189 " helper1() { helper0(); }\n" |
195 "}\n" | 190 "}\n" |
196 "main() {\n" | 191 "main() {\n" |
197 " helper0();\n" | 192 " helper0();\n" |
198 "}"; | 193 "}"; |
(...skipping 23 matching lines...) Expand all Loading... |
222 // One range with a hit (main). | 217 // One range with a hit (main). |
223 "{\"scriptIndex\":0,\"startPos\":22,\"endPos\":32,\"compiled\":true," | 218 "{\"scriptIndex\":0,\"startPos\":22,\"endPos\":32,\"compiled\":true," |
224 "\"coverage\":{\"hits\":[27],\"misses\":[]}}]," | 219 "\"coverage\":{\"hits\":[27],\"misses\":[]}}]," |
225 | 220 |
226 // Only one script in the script table. | 221 // Only one script in the script table. |
227 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," | 222 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," |
228 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", | 223 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", |
229 buffer); | 224 buffer); |
230 } | 225 } |
231 | 226 |
232 | |
233 TEST_CASE(SourceReport_Coverage_UnusedClass_ForceCompileError) { | 227 TEST_CASE(SourceReport_Coverage_UnusedClass_ForceCompileError) { |
234 char buffer[1024]; | 228 char buffer[1024]; |
235 const char* kScript = | 229 const char* kScript = |
236 "helper0() {}\n" | 230 "helper0() {}\n" |
237 "class Unused {\n" | 231 "class Unused {\n" |
238 " helper1() { helper0()+ }\n" // syntax error | 232 " helper1() { helper0()+ }\n" // syntax error |
239 "}\n" | 233 "}\n" |
240 "main() {\n" | 234 "main() {\n" |
241 " helper0();\n" | 235 " helper0();\n" |
242 "}"; | 236 "}"; |
(...skipping 26 matching lines...) Expand all Loading... |
269 // One range with a hit (main). | 263 // One range with a hit (main). |
270 "{\"scriptIndex\":0,\"startPos\":22,\"endPos\":32,\"compiled\":true," | 264 "{\"scriptIndex\":0,\"startPos\":22,\"endPos\":32,\"compiled\":true," |
271 "\"coverage\":{\"hits\":[27],\"misses\":[]}}]," | 265 "\"coverage\":{\"hits\":[27],\"misses\":[]}}]," |
272 | 266 |
273 // Only one script in the script table. | 267 // Only one script in the script table. |
274 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," | 268 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," |
275 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", | 269 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", |
276 buffer); | 270 buffer); |
277 } | 271 } |
278 | 272 |
279 | |
280 TEST_CASE(SourceReport_Coverage_NestedFunctions) { | 273 TEST_CASE(SourceReport_Coverage_NestedFunctions) { |
281 char buffer[1024]; | 274 char buffer[1024]; |
282 const char* kScript = | 275 const char* kScript = |
283 "helper0() {\n" | 276 "helper0() {\n" |
284 " nestedHelper0() {}\n" | 277 " nestedHelper0() {}\n" |
285 " nestedHelper1() {}\n" | 278 " nestedHelper1() {}\n" |
286 " nestedHelper0();\n" | 279 " nestedHelper0();\n" |
287 "}\n" | 280 "}\n" |
288 "helper1() {}\n" | 281 "helper1() {}\n" |
289 "main() {\n" | 282 "main() {\n" |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
325 | 318 |
326 // Nested range not compiled (nestedHelper1). | 319 // Nested range not compiled (nestedHelper1). |
327 "{\"scriptIndex\":0,\"startPos\":11,\"endPos\":15,\"compiled\":false}]," | 320 "{\"scriptIndex\":0,\"startPos\":11,\"endPos\":15,\"compiled\":false}]," |
328 | 321 |
329 // Only one script in the script table. | 322 // Only one script in the script table. |
330 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," | 323 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," |
331 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", | 324 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", |
332 buffer); | 325 buffer); |
333 } | 326 } |
334 | 327 |
335 | |
336 TEST_CASE(SourceReport_Coverage_RestrictedRange) { | 328 TEST_CASE(SourceReport_Coverage_RestrictedRange) { |
337 char buffer[1024]; | 329 char buffer[1024]; |
338 const char* kScript = | 330 const char* kScript = |
339 "helper0() {\n" | 331 "helper0() {\n" |
340 " nestedHelper0() {}\n" | 332 " nestedHelper0() {}\n" |
341 " nestedHelper1() {}\n" | 333 " nestedHelper1() {}\n" |
342 " nestedHelper0();\n" | 334 " nestedHelper0();\n" |
343 "}\n" | 335 "}\n" |
344 "helper1() {}\n" | 336 "helper1() {}\n" |
345 "main() {\n" | 337 "main() {\n" |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
377 | 369 |
378 // Nested range not compiled (nestedHelper1). | 370 // Nested range not compiled (nestedHelper1). |
379 "{\"scriptIndex\":0,\"startPos\":11,\"endPos\":15,\"compiled\":false}]," | 371 "{\"scriptIndex\":0,\"startPos\":11,\"endPos\":15,\"compiled\":false}]," |
380 | 372 |
381 // Only one script in the script table. | 373 // Only one script in the script table. |
382 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," | 374 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," |
383 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", | 375 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", |
384 buffer); | 376 buffer); |
385 } | 377 } |
386 | 378 |
387 | |
388 TEST_CASE(SourceReport_Coverage_AllFunctions) { | 379 TEST_CASE(SourceReport_Coverage_AllFunctions) { |
389 const char* kScript = | 380 const char* kScript = |
390 "helper0() {}\n" | 381 "helper0() {}\n" |
391 "helper1() {}\n" | 382 "helper1() {}\n" |
392 "main() {\n" | 383 "main() {\n" |
393 " if (true) {\n" | 384 " if (true) {\n" |
394 " helper0();\n" | 385 " helper0();\n" |
395 " } else {\n" | 386 " } else {\n" |
396 " helper1();\n" | 387 " helper1();\n" |
397 " }\n" | 388 " }\n" |
(...skipping 19 matching lines...) Expand all Loading... |
417 "\"startPos\":12,\"endPos\":39,\"compiled\":true," | 408 "\"startPos\":12,\"endPos\":39,\"compiled\":true," |
418 "\"coverage\":{\"hits\":[23],\"misses\":[32]}", | 409 "\"coverage\":{\"hits\":[23],\"misses\":[32]}", |
419 result); | 410 result); |
420 | 411 |
421 // More than one script is referenced in the report. | 412 // More than one script is referenced in the report. |
422 EXPECT_SUBSTRING("\"scriptIndex\":0", result); | 413 EXPECT_SUBSTRING("\"scriptIndex\":0", result); |
423 EXPECT_SUBSTRING("\"scriptIndex\":1", result); | 414 EXPECT_SUBSTRING("\"scriptIndex\":1", result); |
424 EXPECT_SUBSTRING("\"scriptIndex\":2", result); | 415 EXPECT_SUBSTRING("\"scriptIndex\":2", result); |
425 } | 416 } |
426 | 417 |
427 | |
428 TEST_CASE(SourceReport_Coverage_AllFunctions_ForceCompile) { | 418 TEST_CASE(SourceReport_Coverage_AllFunctions_ForceCompile) { |
429 const char* kScript = | 419 const char* kScript = |
430 "helper0() {}\n" | 420 "helper0() {}\n" |
431 "helper1() {}\n" | 421 "helper1() {}\n" |
432 "main() {\n" | 422 "main() {\n" |
433 " if (true) {\n" | 423 " if (true) {\n" |
434 " helper0();\n" | 424 " helper0();\n" |
435 " } else {\n" | 425 " } else {\n" |
436 " helper1();\n" | 426 " helper1();\n" |
437 " }\n" | 427 " }\n" |
(...skipping 22 matching lines...) Expand all Loading... |
460 "\"startPos\":12,\"endPos\":39,\"compiled\":true," | 450 "\"startPos\":12,\"endPos\":39,\"compiled\":true," |
461 "\"coverage\":{\"hits\":[23],\"misses\":[32]}", | 451 "\"coverage\":{\"hits\":[23],\"misses\":[32]}", |
462 result); | 452 result); |
463 | 453 |
464 // More than one script is referenced in the report. | 454 // More than one script is referenced in the report. |
465 EXPECT_SUBSTRING("\"scriptIndex\":0", result); | 455 EXPECT_SUBSTRING("\"scriptIndex\":0", result); |
466 EXPECT_SUBSTRING("\"scriptIndex\":1", result); | 456 EXPECT_SUBSTRING("\"scriptIndex\":1", result); |
467 EXPECT_SUBSTRING("\"scriptIndex\":2", result); | 457 EXPECT_SUBSTRING("\"scriptIndex\":2", result); |
468 } | 458 } |
469 | 459 |
470 | |
471 TEST_CASE(SourceReport_CallSites_SimpleCall) { | 460 TEST_CASE(SourceReport_CallSites_SimpleCall) { |
472 char buffer[1024]; | 461 char buffer[1024]; |
473 const char* kScript = | 462 const char* kScript = |
474 "helper0() {}\n" | 463 "helper0() {}\n" |
475 "helper1() {}\n" | 464 "helper1() {}\n" |
476 "main() {\n" | 465 "main() {\n" |
477 " helper0();\n" | 466 " helper0();\n" |
478 "}"; | 467 "}"; |
479 | 468 |
480 Library& lib = Library::Handle(); | 469 Library& lib = Library::Handle(); |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
581 "\"_native\":false}," | 570 "\"_native\":false}," |
582 | 571 |
583 "\"count\":1}]}]}]," | 572 "\"count\":1}]}]}]," |
584 | 573 |
585 // One script in the script table. | 574 // One script in the script table. |
586 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," | 575 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," |
587 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", | 576 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", |
588 buffer); | 577 buffer); |
589 } | 578 } |
590 | 579 |
591 | |
592 TEST_CASE(SourceReport_MultipleReports) { | 580 TEST_CASE(SourceReport_MultipleReports) { |
593 char buffer[1024]; | 581 char buffer[1024]; |
594 const char* kScript = | 582 const char* kScript = |
595 "helper0() {}\n" | 583 "helper0() {}\n" |
596 "helper1() {}\n" | 584 "helper1() {}\n" |
597 "main() {\n" | 585 "main() {\n" |
598 " helper0();\n" | 586 " helper0();\n" |
599 "}"; | 587 "}"; |
600 | 588 |
601 Library& lib = Library::Handle(); | 589 Library& lib = Library::Handle(); |
(...skipping 28 matching lines...) Expand all Loading... |
630 "\"_kind\":\"RegularFunction\",\"static\":true,\"const\":false," | 618 "\"_kind\":\"RegularFunction\",\"static\":true,\"const\":false," |
631 "\"_intrinsic\":false,\"_native\":false},\"count\":1}]}]," | 619 "\"_intrinsic\":false,\"_native\":false},\"count\":1}]}]," |
632 "\"coverage\":{\"hits\":[17],\"misses\":[]}}]," | 620 "\"coverage\":{\"hits\":[17],\"misses\":[]}}]," |
633 | 621 |
634 // One script in the script table. | 622 // One script in the script table. |
635 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," | 623 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," |
636 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", | 624 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", |
637 buffer); | 625 buffer); |
638 } | 626 } |
639 | 627 |
640 | |
641 TEST_CASE(SourceReport_PossibleBreakpoints_Simple) { | 628 TEST_CASE(SourceReport_PossibleBreakpoints_Simple) { |
642 char buffer[1024]; | 629 char buffer[1024]; |
643 const char* kScript = | 630 const char* kScript = |
644 "helper0() {}\n" | 631 "helper0() {}\n" |
645 "helper1() {}\n" | 632 "helper1() {}\n" |
646 "main() {\n" | 633 "main() {\n" |
647 " if (true) {\n" | 634 " if (true) {\n" |
648 " helper0();\n" | 635 " helper0();\n" |
649 " } else {\n" | 636 " } else {\n" |
650 " helper1();\n" | 637 " helper1();\n" |
(...skipping 27 matching lines...) Expand all Loading... |
678 | 665 |
679 // Only one script in the script table. | 666 // Only one script in the script table. |
680 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," | 667 "\"scripts\":[{\"type\":\"@Script\",\"fixedId\":true,\"id\":\"\"," |
681 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", | 668 "\"uri\":\"test-lib\",\"_kind\":\"script\"}]}", |
682 buffer); | 669 buffer); |
683 } | 670 } |
684 | 671 |
685 #endif // !PRODUCT | 672 #endif // !PRODUCT |
686 | 673 |
687 } // namespace dart | 674 } // namespace dart |
OLD | NEW |