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

Side by Side Diff: tests/dartino_compiler/incremental/feature_test.dart

Issue 1659163007: Rename fletch -> dartino (Closed) Base URL: https://github.com/dartino/sdk.git@master
Patch Set: address comments Created 4 years, 10 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 library fletchc.test.feature_test; 5 library dartino_compiler.test.feature_test;
6 6
7 import 'dart:io' hide 7 import 'dart:io' hide
8 exitCode, 8 exitCode,
9 stderr, 9 stderr,
10 stdin, 10 stdin,
11 stdout; 11 stdout;
12 12
13 import 'dart:io' as io; 13 import 'dart:io' as io;
14 14
15 import 'dart:async' show 15 import 'dart:async' show
16 Completer, 16 Completer,
17 Future, 17 Future,
18 Stream, 18 Stream,
19 StreamController, 19 StreamController,
20 StreamIterator; 20 StreamIterator;
21 21
22 import 'dart:convert' show 22 import 'dart:convert' show
23 LineSplitter, 23 LineSplitter,
24 UTF8, 24 UTF8,
25 Utf8Decoder; 25 Utf8Decoder;
26 26
27 import 'package:expect/expect.dart' show 27 import 'package:expect/expect.dart' show
28 Expect; 28 Expect;
29 29
30 import 'package:fletchc/incremental/scope_information_visitor.dart' show 30 import 'package:dartino_compiler/incremental/scope_information_visitor.dart' sho w
31 ScopeInformationVisitor; 31 ScopeInformationVisitor;
32 32
33 import 'compiler_test_case.dart' show 33 import 'compiler_test_case.dart' show
34 CompilerTestCase; 34 CompilerTestCase;
35 35
36 import 'package:compiler/src/elements/elements.dart' show 36 import 'package:compiler/src/elements/elements.dart' show
37 AbstractFieldElement, 37 AbstractFieldElement,
38 Element, 38 Element,
39 FieldElement, 39 FieldElement,
40 FunctionElement, 40 FunctionElement,
41 LibraryElement; 41 LibraryElement;
42 42
43 import 'package:compiler/src/compiler.dart' show 43 import 'package:compiler/src/compiler.dart' show
44 Compiler; 44 Compiler;
45 45
46 import 'package:compiler/src/source_file_provider.dart' show 46 import 'package:compiler/src/source_file_provider.dart' show
47 FormattingDiagnosticHandler, 47 FormattingDiagnosticHandler,
48 SourceFileProvider; 48 SourceFileProvider;
49 49
50 import 'package:compiler/src/io/source_file.dart' show 50 import 'package:compiler/src/io/source_file.dart' show
51 StringSourceFile; 51 StringSourceFile;
52 52
53 import 'package:fletchc/incremental/fletchc_incremental.dart' show 53 import 'package:dartino_compiler/incremental/dartino_compiler_incremental.dart' show
54 IncrementalCompilationFailed, 54 IncrementalCompilationFailed,
55 IncrementalCompiler, 55 IncrementalCompiler,
56 IncrementalMode; 56 IncrementalMode;
57 57
58 import 'package:fletchc/vm_commands.dart' show 58 import 'package:dartino_compiler/vm_commands.dart' show
59 VmCommand, 59 VmCommand,
60 CommitChanges, 60 CommitChanges,
61 CommitChangesResult, 61 CommitChangesResult,
62 HandShakeResult, 62 HandShakeResult,
63 MapId; 63 MapId;
64 64
65 import 'package:fletchc/fletch_compiler.dart' show 65 import 'package:dartino_compiler/dartino_compiler.dart' show
66 FletchCompiler; 66 DartinoCompiler;
67 67
68 import 'package:fletchc/src/fletch_compiler_implementation.dart' show 68 import 'package:dartino_compiler/src/dartino_compiler_implementation.dart' show
69 OutputProvider; 69 OutputProvider;
70 70
71 import 'package:fletchc/src/guess_configuration.dart' show 71 import 'package:dartino_compiler/src/guess_configuration.dart' show
72 fletchVersion, 72 dartinoVersion,
73 guessFletchVm; 73 guessDartinoVm;
74 74
75 import 'package:fletchc/fletch_system.dart'; 75 import 'package:dartino_compiler/dartino_system.dart';
76 76
77 import 'package:fletchc/vm_commands.dart' as commands_lib; 77 import 'package:dartino_compiler/vm_commands.dart' as commands_lib;
78 78
79 import 'package:fletchc/vm_session.dart' show 79 import 'package:dartino_compiler/vm_session.dart' show
80 Session; 80 Session;
81 81
82 import 'package:fletchc/src/fletch_backend.dart' show 82 import 'package:dartino_compiler/src/dartino_backend.dart' show
83 FletchBackend; 83 DartinoBackend;
84 84
85 import 'package:fletchc/fletch_vm.dart' show 85 import 'package:dartino_compiler/dartino_vm.dart' show
86 FletchVm; 86 DartinoVm;
87 87
88 import 'package:fletchc/debug_state.dart' as debug show 88 import 'package:dartino_compiler/debug_state.dart' as debug show
89 BackTraceFrame, 89 BackTraceFrame,
90 BackTrace; 90 BackTrace;
91 91
92 import 'program_result.dart'; 92 import 'program_result.dart';
93 93
94 import 'package:fletchc/src/hub/exit_codes.dart' show 94 import 'package:dartino_compiler/src/hub/exit_codes.dart' show
95 DART_VM_EXITCODE_COMPILE_TIME_ERROR; 95 DART_VM_EXITCODE_COMPILE_TIME_ERROR;
96 96
97 const String PACKAGE_SCHEME = 'org.dartlang.fletch.packages'; 97 const String PACKAGE_SCHEME = 'org.dartlang.dartino.packages';
98 98
99 const String CUSTOM_SCHEME = 'org.dartlang.fletch.test-case'; 99 const String CUSTOM_SCHEME = 'org.dartlang.dartino.test-case';
100 100
101 final Uri customUriBase = new Uri(scheme: CUSTOM_SCHEME, path: '/'); 101 final Uri customUriBase = new Uri(scheme: CUSTOM_SCHEME, path: '/');
102 102
103 typedef Future NoArgFuture(); 103 typedef Future NoArgFuture();
104 104
105 compileAndRun( 105 compileAndRun(
106 String testName, 106 String testName,
107 EncodedResult encodedResult, 107 EncodedResult encodedResult,
108 {IncrementalMode incrementalMode}) async { 108 {IncrementalMode incrementalMode}) async {
109 print("Test '$testName'"); 109 print("Test '$testName'");
(...skipping 14 matching lines...) Expand all
124 if (!program.compileUpdatesShouldThrow) { 124 if (!program.compileUpdatesShouldThrow) {
125 // We should only update the status of hasCompileTimeError when we run 125 // We should only update the status of hasCompileTimeError when we run
126 // something on the VM. 126 // something on the VM.
127 hasCompileTimeError = program.hasCompileTimeError; 127 hasCompileTimeError = program.hasCompileTimeError;
128 } 128 }
129 129
130 print("Program version $version #$testName:"); 130 print("Program version $version #$testName:");
131 print(numberedLines(program.code)); 131 print(numberedLines(program.code));
132 132
133 bool compileUpdatesThrew = true; 133 bool compileUpdatesThrew = true;
134 FletchDelta fletchDelta; 134 DartinoDelta dartinoDelta;
135 if (isFirstProgram) { 135 if (isFirstProgram) {
136 // The first program is compiled "fully". 136 // The first program is compiled "fully".
137 fletchDelta = await helper.fullCompile(program); 137 dartinoDelta = await helper.fullCompile(program);
138 compileUpdatesThrew = false; 138 compileUpdatesThrew = false;
139 } else { 139 } else {
140 // An update to the first program, all updates are compiled as 140 // An update to the first program, all updates are compiled as
141 // incremental updates to the first program. 141 // incremental updates to the first program.
142 try { 142 try {
143 fletchDelta = await helper.incrementalCompile(program, version); 143 dartinoDelta = await helper.incrementalCompile(program, version);
144 compileUpdatesThrew = false; 144 compileUpdatesThrew = false;
145 } on IncrementalCompilationFailed catch (error) { 145 } on IncrementalCompilationFailed catch (error) {
146 if (program.compileUpdatesShouldThrow) { 146 if (program.compileUpdatesShouldThrow) {
147 print("Expected error in compileUpdates: $error"); 147 print("Expected error in compileUpdates: $error");
148 } else { 148 } else {
149 print("Unexpected error in compileUpdates."); 149 print("Unexpected error in compileUpdates.");
150 rethrow; 150 rethrow;
151 } 151 }
152 } 152 }
153 } 153 }
154 154
155 FletchBackend backend = helper.compiler.compiler.context.backend; 155 DartinoBackend backend = helper.compiler.compiler.context.backend;
156 156
157 if (program.compileUpdatesShouldThrow) { 157 if (program.compileUpdatesShouldThrow) {
158 Expect.isFalse(isFirstProgram); 158 Expect.isFalse(isFirstProgram);
159 Expect.isTrue( 159 Expect.isTrue(
160 compileUpdatesThrew, 160 compileUpdatesThrew,
161 "Expected an exception in compileUpdates"); 161 "Expected an exception in compileUpdates");
162 Expect.isNull(fletchDelta, "Expected update == null"); 162 Expect.isNull(dartinoDelta, "Expected update == null");
163 break; 163 break;
164 } 164 }
165 165
166 if (!isFirstProgram || 166 if (!isFirstProgram ||
167 const bool.fromEnvironment("feature_test.print_initial_commands")) { 167 const bool.fromEnvironment("feature_test.print_initial_commands")) {
168 for (VmCommand command in fletchDelta.commands) { 168 for (VmCommand command in dartinoDelta.commands) {
169 print(command); 169 print(command);
170 } 170 }
171 } 171 }
172 172
173 if (isFirstProgram) { 173 if (isFirstProgram) {
174 // Perform handshake with VM. 174 // Perform handshake with VM.
175 HandShakeResult handShakeResult = 175 HandShakeResult handShakeResult =
176 await session.handShake(fletchVersion); 176 await session.handShake(dartinoVersion);
177 Expect.isTrue(handShakeResult.success, "Fletch VM version mismatch"); 177 Expect.isTrue(handShakeResult.success, "Dartino VM version mismatch");
178 } 178 }
179 179
180 CommitChangesResult result = await session.applyDelta(fletchDelta); 180 CommitChangesResult result = await session.applyDelta(dartinoDelta);
181 181
182 if (!result.successful) { 182 if (!result.successful) {
183 print("The CommitChanges() command was not successful: " 183 print("The CommitChanges() command was not successful: "
184 "${result.message}"); 184 "${result.message}");
185 } 185 }
186 186
187 Expect.equals(result.successful, !program.commitChangesShouldFail, 187 Expect.equals(result.successful, !program.commitChangesShouldFail,
188 result.message); 188 result.message);
189 189
190 if (isFirstProgram) { 190 if (isFirstProgram) {
(...skipping 26 matching lines...) Expand all
217 await session.restart(); 217 await session.restart();
218 } 218 }
219 if (session.running) { 219 if (session.running) {
220 // Step out of main to finish execution of main. 220 // Step out of main to finish execution of main.
221 await session.stepOut(); 221 await session.stepOut();
222 } 222 }
223 223
224 // Select the stack frame of callMain. 224 // Select the stack frame of callMain.
225 debug.BackTrace trace = await session.backTrace(); 225 debug.BackTrace trace = await session.backTrace();
226 FunctionElement callMainElement = 226 FunctionElement callMainElement =
227 backend.fletchSystemLibrary.findLocal("callMain"); 227 backend.dartinoSystemLibrary.findLocal("callMain");
228 FletchFunction callMain = 228 DartinoFunction callMain =
229 helper.system.lookupFunctionByElement(callMainElement); 229 helper.system.lookupFunctionByElement(callMainElement);
230 debug.BackTraceFrame mainFrame = 230 debug.BackTraceFrame mainFrame =
231 trace.frames.firstWhere( 231 trace.frames.firstWhere(
232 (debug.BackTraceFrame frame) => frame.function == callMain); 232 (debug.BackTraceFrame frame) => frame.function == callMain);
233 int frame = trace.frames.indexOf(mainFrame); 233 int frame = trace.frames.indexOf(mainFrame);
234 Expect.notEquals(1, frame); 234 Expect.notEquals(1, frame);
235 session.selectFrame(frame); 235 session.selectFrame(frame);
236 print(trace.format()); 236 print(trace.format());
237 237
238 List<String> actualMessages = session.stdoutSink.takeLines(); 238 List<String> actualMessages = session.stdoutSink.takeLines();
239 239
240 List<String> messages = new List<String>.from(program.messages); 240 List<String> messages = new List<String>.from(program.messages);
241 if (program.hasCompileTimeError) { 241 if (program.hasCompileTimeError) {
242 print("Compile-time error expected"); 242 print("Compile-time error expected");
243 // TODO(ahe): The compile-time error message shouldn't be printed by 243 // TODO(ahe): The compile-time error message shouldn't be printed by
244 // the Fletch VM. 244 // the Dartino VM.
245 245
246 // Find the compile-time error message in the actual output, and 246 // Find the compile-time error message in the actual output, and
247 // remove all lines after it. 247 // remove all lines after it.
248 int compileTimeErrorIndex = -1; 248 int compileTimeErrorIndex = -1;
249 for (int i = 0; i < actualMessages.length; i++) { 249 for (int i = 0; i < actualMessages.length; i++) {
250 if (actualMessages[i].startsWith("Compile error:")) { 250 if (actualMessages[i].startsWith("Compile error:")) {
251 compileTimeErrorIndex = i; 251 compileTimeErrorIndex = i;
252 break; 252 break;
253 } 253 }
254 } 254 }
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 // to propagate the exitCode back to test.dart, so we can have Fail/Crash 295 // to propagate the exitCode back to test.dart, so we can have Fail/Crash
296 // outcomes of these tests. 296 // outcomes of these tests.
297 await session.waitForCompletion(); 297 await session.waitForCompletion();
298 298
299 int actualExitCode = await session.exitCode; 299 int actualExitCode = await session.exitCode;
300 // TODO(ahe): We should expect exit code 0, and instead be able to detect 300 // TODO(ahe): We should expect exit code 0, and instead be able to detect
301 // compile-time errors directly via the session. 301 // compile-time errors directly via the session.
302 int expectedExitCode = hasCompileTimeError 302 int expectedExitCode = hasCompileTimeError
303 ? DART_VM_EXITCODE_COMPILE_TIME_ERROR : 0; 303 ? DART_VM_EXITCODE_COMPILE_TIME_ERROR : 0;
304 Expect.equals( 304 Expect.equals(
305 expectedExitCode, actualExitCode, "Unexpected exit code from fletch VM"); 305 expectedExitCode, actualExitCode, "Unexpected exit code from dartino VM");
306 } 306 }
307 307
308 class SerializeScopeTestCase extends CompilerTestCase { 308 class SerializeScopeTestCase extends CompilerTestCase {
309 final String source; 309 final String source;
310 310
311 final String scopeInfo; 311 final String scopeInfo;
312 312
313 final Compiler compiler = null; // TODO(ahe): Provide a compiler. 313 final Compiler compiler = null; // TODO(ahe): Provide a compiler.
314 314
315 SerializeScopeTestCase( 315 SerializeScopeTestCase(
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 this.futures, 411 this.futures,
412 this.exitCode) 412 this.exitCode)
413 : super(vmSocket, compiler, new BytesSink(), null); 413 : super(vmSocket, compiler, new BytesSink(), null);
414 414
415 // Refines type of [stdoutSink]. 415 // Refines type of [stdoutSink].
416 BytesSink get stdoutSink => super.stdoutSink; 416 BytesSink get stdoutSink => super.stdoutSink;
417 417
418 void writeStdout(String s) { 418 void writeStdout(String s) {
419 // Unfortunately, print will always add a newline, and the alternative is 419 // Unfortunately, print will always add a newline, and the alternative is
420 // to use stdout.write. However, to make it easier to debug problems in 420 // to use stdout.write. However, to make it easier to debug problems in
421 // this and other fletch_tests, everything that is printed to stdout ends 421 // this and other dartino_tests, everything that is printed to stdout ends
422 // up on the console of test.dart. This is good enough for testing, but DO 422 // up on the console of test.dart. This is good enough for testing, but DO
423 // NOT COPY TO PRODUCTION CODE. 423 // NOT COPY TO PRODUCTION CODE.
424 print(s); 424 print(s);
425 } 425 }
426 426
427 void writeStdoutLine(String s) { 427 void writeStdoutLine(String s) {
428 print(s); 428 print(s);
429 } 429 }
430 430
431 /// Add [future] to this session. All futures that can fail after calling 431 /// Add [future] to this session. All futures that can fail after calling
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 sb.writeln("Problem #${++problemCount}:"); 463 sb.writeln("Problem #${++problemCount}:");
464 sb.writeln(error); 464 sb.writeln(error);
465 sb.writeln(""); 465 sb.writeln("");
466 } 466 }
467 } 467 }
468 await stdoutFuture; 468 await stdoutFuture;
469 List<String> stdoutLines = stdoutSink.takeLines(); 469 List<String> stdoutLines = stdoutSink.takeLines();
470 List<String> stderrLines = await stderrFuture; 470 List<String> stderrLines = await stderrFuture;
471 if (stdoutLines.isNotEmpty) { 471 if (stdoutLines.isNotEmpty) {
472 sb.writeln("Problem #${++problemCount}:"); 472 sb.writeln("Problem #${++problemCount}:");
473 sb.writeln("Unexpected stdout from fletch-vm:"); 473 sb.writeln("Unexpected stdout from dartino-vm:");
474 for (String line in stdoutLines) { 474 for (String line in stdoutLines) {
475 sb.writeln(line); 475 sb.writeln(line);
476 } 476 }
477 sb.writeln(""); 477 sb.writeln("");
478 } 478 }
479 if (stderrLines.isNotEmpty) { 479 if (stderrLines.isNotEmpty) {
480 sb.writeln("Problem #${++problemCount}:"); 480 sb.writeln("Problem #${++problemCount}:");
481 sb.writeln("Unexpected stderr from fletch-vm:"); 481 sb.writeln("Unexpected stderr from dartino-vm:");
482 for (String line in stderrLines) { 482 for (String line in stderrLines) {
483 sb.writeln(line); 483 sb.writeln(line);
484 } 484 }
485 sb.writeln(""); 485 sb.writeln("");
486 } 486 }
487 if (problemCount > 0) { 487 if (problemCount > 0) {
488 throw new StateError('Test has $problemCount problem(s). Details:\n$sb'); 488 throw new StateError('Test has $problemCount problem(s). Details:\n$sb');
489 } 489 }
490 } 490 }
491 491
492 static Future<String> convertErrorToString(Future future) { 492 static Future<String> convertErrorToString(Future future) {
493 return future.then((_) => null).catchError((error, stackTrace) { 493 return future.then((_) => null).catchError((error, stackTrace) {
494 return "$error\n$stackTrace"; 494 return "$error\n$stackTrace";
495 }); 495 });
496 } 496 }
497 497
498 static Future<TestSession> spawnVm( 498 static Future<TestSession> spawnVm(
499 IncrementalCompiler compiler, 499 IncrementalCompiler compiler,
500 {String testName}) async { 500 {String testName}) async {
501 String vmPath = guessFletchVm(null).toFilePath(); 501 String vmPath = guessDartinoVm(null).toFilePath();
502 502
503 List<Future> futures = <Future>[]; 503 List<Future> futures = <Future>[];
504 void recordFuture(String name, Future future) { 504 void recordFuture(String name, Future future) {
505 if (future != null) { 505 if (future != null) {
506 futures.add(convertErrorToString(future)); 506 futures.add(convertErrorToString(future));
507 } 507 }
508 } 508 }
509 509
510 List<String> vmOptions = <String>[ 510 List<String> vmOptions = <String>[
511 '-Xvalidate-heaps', 511 '-Xvalidate-heaps',
512 ]; 512 ];
513 513
514 print("Running '$vmPath ${vmOptions.join(" ")}'"); 514 print("Running '$vmPath ${vmOptions.join(" ")}'");
515 var environment = getProcessEnvironment(testName); 515 var environment = getProcessEnvironment(testName);
516 FletchVm fletchVm = await FletchVm.start( 516 DartinoVm dartinoVm = await DartinoVm.start(
517 vmPath, arguments: vmOptions, environment: environment); 517 vmPath, arguments: vmOptions, environment: environment);
518 518
519 // Unlike [fletchvm.stdoutLines] and [fletchvm.stderrLines], their 519 // Unlike [dartinovm.stdoutLines] and [dartinovm.stderrLines], their
520 // corresponding controller cannot produce an error. 520 // corresponding controller cannot produce an error.
521 StreamController<String> stdoutController = new StreamController<String>(); 521 StreamController<String> stdoutController = new StreamController<String>();
522 StreamController<String> stderrController = new StreamController<String>(); 522 StreamController<String> stderrController = new StreamController<String>();
523 recordFuture("stdout", fletchVm.stdoutLines.listen((String line) { 523 recordFuture("stdout", dartinoVm.stdoutLines.listen((String line) {
524 print('fletch_vm_stdout: $line'); 524 print('dartino_vm_stdout: $line');
525 stdoutController.add(line); 525 stdoutController.add(line);
526 }).asFuture().whenComplete(stdoutController.close)); 526 }).asFuture().whenComplete(stdoutController.close));
527 recordFuture("stderr", fletchVm.stderrLines.listen((String line) { 527 recordFuture("stderr", dartinoVm.stderrLines.listen((String line) {
528 print('fletch_vm_stderr: $line'); 528 print('dartino_vm_stderr: $line');
529 stderrController.add(line); 529 stderrController.add(line);
530 }).asFuture().whenComplete(stderrController.close)); 530 }).asFuture().whenComplete(stderrController.close));
531 531
532 Completer<int> exitCodeCompleter = new Completer<int>(); 532 Completer<int> exitCodeCompleter = new Completer<int>();
533 533
534 // TODO(ahe): If the VM crashes on startup, this will never complete. This 534 // TODO(ahe): If the VM crashes on startup, this will never complete. This
535 // makes this program hang forever. But the exitCode completer might 535 // makes this program hang forever. But the exitCode completer might
536 // actually be ready to give us a crashed exit code. Exiting early with a 536 // actually be ready to give us a crashed exit code. Exiting early with a
537 // failure in case exitCode is ready before server.first or having a 537 // failure in case exitCode is ready before server.first or having a
538 // timeout on server.first would be possible solutions. 538 // timeout on server.first would be possible solutions.
539 var vmSocket = await fletchVm.connect(); 539 var vmSocket = await dartinoVm.connect();
540 recordFuture("vmSocket", vmSocket.done); 540 recordFuture("vmSocket", vmSocket.done);
541 541
542 TestSession session = new TestSession( 542 TestSession session = new TestSession(
543 vmSocket, compiler, fletchVm.process, 543 vmSocket, compiler, dartinoVm.process,
544 new StreamIterator(stdoutController.stream), 544 new StreamIterator(stdoutController.stream),
545 stderrController.stream, 545 stderrController.stream,
546 futures, exitCodeCompleter.future); 546 futures, exitCodeCompleter.future);
547 547
548 recordFuture("exitCode", fletchVm.exitCode.then((int exitCode) { 548 recordFuture("exitCode", dartinoVm.exitCode.then((int exitCode) {
549 print("VM exited with exit code: $exitCode."); 549 print("VM exited with exit code: $exitCode.");
550 exitCodeCompleter.complete(exitCode); 550 exitCodeCompleter.complete(exitCode);
551 })); 551 }));
552 552
553 return session; 553 return session;
554 } 554 }
555 555
556 static Map<String, String> getProcessEnvironment(String testName) { 556 static Map<String, String> getProcessEnvironment(String testName) {
557 if (testName == null) return null; 557 if (testName == null) return null;
558 558
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 } 595 }
596 } 596 }
597 597
598 class IncrementalTestHelper { 598 class IncrementalTestHelper {
599 final Uri packageConfig; 599 final Uri packageConfig;
600 600
601 final IoInputProvider inputProvider; 601 final IoInputProvider inputProvider;
602 602
603 final IncrementalCompiler compiler; 603 final IncrementalCompiler compiler;
604 604
605 FletchSystem system; 605 DartinoSystem system;
606 606
607 IncrementalTestHelper.internal( 607 IncrementalTestHelper.internal(
608 this.packageConfig, 608 this.packageConfig,
609 this.inputProvider, 609 this.inputProvider,
610 this.compiler); 610 this.compiler);
611 611
612 factory IncrementalTestHelper(IncrementalMode incrementalMode) { 612 factory IncrementalTestHelper(IncrementalMode incrementalMode) {
613 Uri packageConfig = Uri.base.resolve('.packages'); 613 Uri packageConfig = Uri.base.resolve('.packages');
614 IoInputProvider inputProvider = new IoInputProvider(packageConfig); 614 IoInputProvider inputProvider = new IoInputProvider(packageConfig);
615 FormattingDiagnosticHandler diagnosticHandler = 615 FormattingDiagnosticHandler diagnosticHandler =
616 new FormattingDiagnosticHandler(inputProvider); 616 new FormattingDiagnosticHandler(inputProvider);
617 IncrementalCompiler compiler = new IncrementalCompiler( 617 IncrementalCompiler compiler = new IncrementalCompiler(
618 packageConfig: packageConfig, 618 packageConfig: packageConfig,
619 inputProvider: inputProvider, 619 inputProvider: inputProvider,
620 diagnosticHandler: diagnosticHandler, 620 diagnosticHandler: diagnosticHandler,
621 outputProvider: new OutputProvider(), 621 outputProvider: new OutputProvider(),
622 support: incrementalMode, 622 support: incrementalMode,
623 platform: "fletch_mobile.platform"); 623 platform: "dartino_mobile.platform");
624 return new IncrementalTestHelper.internal( 624 return new IncrementalTestHelper.internal(
625 packageConfig, 625 packageConfig,
626 inputProvider, 626 inputProvider,
627 compiler); 627 compiler);
628 } 628 }
629 629
630 Future<FletchDelta> fullCompile(ProgramResult program) async { 630 Future<DartinoDelta> fullCompile(ProgramResult program) async {
631 Map<String, String> code = computeCode(program); 631 Map<String, String> code = computeCode(program);
632 inputProvider.sources.clear(); 632 inputProvider.sources.clear();
633 code.forEach((String name, String code) { 633 code.forEach((String name, String code) {
634 inputProvider.sources[customUriBase.resolve(name)] = code; 634 inputProvider.sources[customUriBase.resolve(name)] = code;
635 }); 635 });
636 636
637 await compiler.compile(customUriBase.resolve('main.dart'), customUriBase); 637 await compiler.compile(customUriBase.resolve('main.dart'), customUriBase);
638 FletchDelta delta = compiler.compiler.context.backend.computeDelta(); 638 DartinoDelta delta = compiler.compiler.context.backend.computeDelta();
639 system = delta.system; 639 system = delta.system;
640 return delta; 640 return delta;
641 } 641 }
642 642
643 Future<FletchDelta> incrementalCompile( 643 Future<DartinoDelta> incrementalCompile(
644 ProgramResult program, 644 ProgramResult program,
645 int version) async { 645 int version) async {
646 Map<String, String> code = computeCode(program); 646 Map<String, String> code = computeCode(program);
647 Map<Uri, Uri> uriMap = <Uri, Uri>{}; 647 Map<Uri, Uri> uriMap = <Uri, Uri>{};
648 for (String name in code.keys) { 648 for (String name in code.keys) {
649 Uri uri = customUriBase.resolve('$name?v$version'); 649 Uri uri = customUriBase.resolve('$name?v$version');
650 inputProvider.cachedSources[uri] = new Future.value(code[name]); 650 inputProvider.cachedSources[uri] = new Future.value(code[name]);
651 uriMap[customUriBase.resolve(name)] = uri; 651 uriMap[customUriBase.resolve(name)] = uri;
652 } 652 }
653 FletchDelta delta = await compiler.compileUpdates( 653 DartinoDelta delta = await compiler.compileUpdates(
654 system, uriMap, logVerbose: logger, logTime: logger); 654 system, uriMap, logVerbose: logger, logTime: logger);
655 system = delta.system; 655 system = delta.system;
656 return delta; 656 return delta;
657 } 657 }
658 658
659 Map<String, String> computeCode(ProgramResult program) { 659 Map<String, String> computeCode(ProgramResult program) {
660 return program.code is String 660 return program.code is String
661 ? <String,String>{ 'main.dart': program.code } 661 ? <String,String>{ 'main.dart': program.code }
662 : program.code; 662 : program.code;
663 } 663 }
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
704 704
705 Future<List<int>> readUtf8BytesFromUri(Uri uri) { 705 Future<List<int>> readUtf8BytesFromUri(Uri uri) {
706 throw "not supported"; 706 throw "not supported";
707 } 707 }
708 708
709 static String readCachedFile(Uri uri) { 709 static String readCachedFile(Uri uri) {
710 return cachedFiles.putIfAbsent( 710 return cachedFiles.putIfAbsent(
711 uri, () => new File.fromUri(uri).readAsStringSync()); 711 uri, () => new File.fromUri(uri).readAsStringSync());
712 } 712 }
713 } 713 }
OLDNEW
« no previous file with comments | « tests/dartino_compiler/incremental/experimental_mode.dart ('k') | tests/dartino_compiler/incremental/production_mode.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698