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

Side by Side Diff: sdk/lib/_internal/compiler/implementation/dart2js.dart

Issue 189563004: Use '--source-map' and '--out' options to support source maps from non-commandline. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 9 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 | Annotate | Revision Log
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 dart2js.cmdline; 5 library dart2js.cmdline;
6 6
7 import 'dart:async' 7 import 'dart:async'
8 show Future, EventSink; 8 show Future, EventSink;
9 import 'dart:io' 9 import 'dart:io'
10 show exit, File, FileMode, Platform, RandomAccessFile, FileSystemException; 10 show exit, File, FileMode, Platform, RandomAccessFile, FileSystemException;
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
314 if (arguments.length > 1) { 314 if (arguments.length > 1) {
315 var extra = arguments.sublist(1); 315 var extra = arguments.sublist(1);
316 helpAndFail('Error: Extra arguments: ${extra.join(" ")}'); 316 helpAndFail('Error: Extra arguments: ${extra.join(" ")}');
317 } 317 }
318 318
319 Uri uri = currentDirectory.resolve(arguments[0]); 319 Uri uri = currentDirectory.resolve(arguments[0]);
320 if (packageRoot == null) { 320 if (packageRoot == null) {
321 packageRoot = uri.resolve('./packages/'); 321 packageRoot = uri.resolve('./packages/');
322 } 322 }
323 323
324 diagnosticHandler.info('package root is $packageRoot'); 324 diagnosticHandler.info('Package root is $packageRoot');
325 325
326 int totalCharactersWritten = 0; 326 int totalCharactersWritten = 0;
327 327
328 options.add('--out=$out');
328 options.add('--source-map=$sourceMapOut'); 329 options.add('--source-map=$sourceMapOut');
329 330
330 List<String> allOutputFiles = new List<String>(); 331 List<String> allOutputFiles = new List<String>();
331 332
332 compilationDone(String code) { 333 compilationDone(String code) {
333 if (analyzeOnly) return; 334 if (analyzeOnly) return;
334 if (code == null) { 335 if (code == null) {
335 fail('Error: Compilation failed.'); 336 fail('Error: Compilation failed.');
336 } 337 }
337 writeString(Uri.parse('$out.deps'), 338 writeString(Uri.parse('$out.deps'),
338 getDepsOutput(inputProvider.sourceFiles)); 339 getDepsOutput(inputProvider.sourceFiles));
339 diagnosticHandler.info( 340 diagnosticHandler.info(
340 'compiled ${inputProvider.dartCharactersRead} characters Dart ' 341 'Compiled ${inputProvider.dartCharactersRead} characters Dart '
341 '-> $totalCharactersWritten characters $outputLanguage ' 342 '-> $totalCharactersWritten characters $outputLanguage '
342 'in ${relativize(currentDirectory, out, isWindows)}'); 343 'in ${relativize(currentDirectory, out, isWindows)}');
343 if (diagnosticHandler.verbose) { 344 if (diagnosticHandler.verbose) {
344 String input = uriPathToNative(arguments[0]); 345 String input = uriPathToNative(arguments[0]);
345 print('Dart file ($input) compiled to $outputLanguage.'); 346 print('Dart file ($input) compiled to $outputLanguage.');
346 print('Wrote the following files:'); 347 print('Wrote the following files:');
347 for (String filename in allOutputFiles) { 348 for (String filename in allOutputFiles) {
348 print(" $filename"); 349 print(" $filename");
349 } 350 }
350 } else if (!explicitOut) { 351 } else if (!explicitOut) {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 int offset = 0; 404 int offset = 0;
404 while (offset < data.length) { 405 while (offset < data.length) {
405 output.writeStringSync( 406 output.writeStringSync(
406 data.substring(offset, math.min(offset + chunkSize, data.length))); 407 data.substring(offset, math.min(offset + chunkSize, data.length)));
407 offset += chunkSize; 408 offset += chunkSize;
408 } 409 }
409 charactersWritten += data.length; 410 charactersWritten += data.length;
410 } 411 }
411 412
412 onDone() { 413 onDone() {
413 if (sourceMapFileName != null) {
414 // Using # is the new proposed standard. @ caused problems in Internet
415 // Explorer due to "Conditional Compilation Statements" in JScript,
416 // see:
417 // http://msdn.microsoft.com/en-us/library/7kx09ct1(v=vs.80).aspx
418 // About source maps, see:
419 // https://docs.google.com/a/google.com/document/d/1U1RGAehQwRypUTovF1KR lpiOFze0b-_2gc6fAH0KY0k/edit
420 // TODO(http://dartbug.com/11914): Remove @ line.
421 String sourceMapTag = '''
422
423 //# sourceMappingURL=$sourceMapFileName
424 //@ sourceMappingURL=$sourceMapFileName
425 ''';
426 writeStringSync(sourceMapTag);
427 }
428 output.closeSync(); 414 output.closeSync();
429 if (isPrimaryOutput) { 415 if (isPrimaryOutput) {
430 totalCharactersWritten += charactersWritten; 416 totalCharactersWritten += charactersWritten;
431 } 417 }
432 } 418 }
433 419
434 return new EventSinkWrapper(writeStringSync, onDone); 420 return new EventSinkWrapper(writeStringSync, onDone);
435 } 421 }
436 422
437 return compileFunc(uri, libraryRoot, packageRoot, 423 return compileFunc(uri, libraryRoot, packageRoot,
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 } 628 }
643 } 629 }
644 630
645 try { 631 try {
646 return compilerMain(arguments).catchError(onError); 632 return compilerMain(arguments).catchError(onError);
647 } catch (exception, trace) { 633 } catch (exception, trace) {
648 onError(exception, trace); 634 onError(exception, trace);
649 return new Future.value(); 635 return new Future.value();
650 } 636 }
651 } 637 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698