| OLD | NEW | 
|    1 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file |    1 // Copyright (c) 2012, 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('frog_leg'); |    5 #library('frog_leg'); | 
|    6  |    6  | 
|    7 #import('../../lib/uri/uri.dart'); |    7 #import('../../uri/uri.dart'); | 
|    8 #import('source_file.dart'); |    8 #import('source_file.dart'); | 
|    9 #import('../lang.dart', prefix: 'frog'); |    9 #import('../../../frog/lang.dart', prefix: 'frog'); | 
|   10 #import('api.dart', prefix: 'api'); |   10 #import('../compiler.dart', prefix: 'compiler'); | 
|   11 #import('io/io.dart', prefix: 'io'); |   11 #import('io/io.dart', prefix: 'io'); | 
|   12  |   12  | 
|   13 String relativize(Uri base, Uri uri) { |   13 String relativize(Uri base, Uri uri) { | 
|   14   if (base.scheme == 'file' && |   14   if (base.scheme == 'file' && | 
|   15       base.scheme == uri.scheme && |   15       base.scheme == uri.scheme && | 
|   16       base.userInfo == uri.userInfo && |   16       base.userInfo == uri.userInfo && | 
|   17       base.domain == uri.domain && |   17       base.domain == uri.domain && | 
|   18       base.port == uri.port && |   18       base.port == uri.port && | 
|   19       uri.query == "" && uri.fragment == "") { |   19       uri.query == "" && uri.fragment == "") { | 
|   20     if (uri.path.startsWith(base.path)) { |   20     if (uri.path.startsWith(base.path)) { | 
| (...skipping 16 matching lines...) Expand all  Loading... | 
|   37     sb.add('${uriParts.last()}'); |   37     sb.add('${uriParts.last()}'); | 
|   38     return sb.toString(); |   38     return sb.toString(); | 
|   39   } |   39   } | 
|   40   return uri.toString(); |   40   return uri.toString(); | 
|   41 } |   41 } | 
|   42  |   42  | 
|   43 bool compile(frog.World world) { |   43 bool compile(frog.World world) { | 
|   44   final throwOnError = frog.options.throwOnErrors; |   44   final throwOnError = frog.options.throwOnErrors; | 
|   45   final showWarnings = frog.options.showWarnings; |   45   final showWarnings = frog.options.showWarnings; | 
|   46   final allowMockCompilation = frog.options.allowMockCompilation; |   46   final allowMockCompilation = frog.options.allowMockCompilation; | 
|   47   // final compiler = new WorldCompiler(world, throwOnError); |  | 
|   48   Uri cwd = new Uri(scheme: 'file', path: io.getCurrentDirectory()); |   47   Uri cwd = new Uri(scheme: 'file', path: io.getCurrentDirectory()); | 
|   49   Uri uri = cwd.resolve(frog.options.dartScript); |   48   Uri uri = cwd.resolve(frog.options.dartScript); | 
|   50   String frogLibDir = frog.options.libDir; |   49   String frogLibDir = frog.options.libDir; | 
|   51   if (!frogLibDir.endsWith("/")) frogLibDir = "$frogLibDir/"; |   50   if (!frogLibDir.endsWith("/")) frogLibDir = "$frogLibDir/"; | 
|   52   Uri frogLib = new Uri(scheme: 'file', path: frogLibDir); |   51   Uri frogLib = new Uri(scheme: 'file', path: frogLibDir); | 
|   53   Uri libraryRoot = frogLib.resolve('../leg/lib/'); |   52   Uri libraryRoot = frogLib.resolve('../../lib/compiler/implementation/lib/'); | 
|   54   Map<String, SourceFile> sourceFiles = <SourceFile>{}; |   53   Map<String, SourceFile> sourceFiles = <SourceFile>{}; | 
|   55  |   54  | 
|   56   Future<String> provider(Uri uri) { |   55   Future<String> provider(Uri uri) { | 
|   57     if (uri.scheme != 'file') { |   56     if (uri.scheme != 'file') { | 
|   58       throw new IllegalArgumentException(uri); |   57       throw new IllegalArgumentException(uri); | 
|   59     } |   58     } | 
|   60     String source = world.files.readAll(uri.path); |   59     String source = world.files.readAll(uri.path); | 
|   61     world.dartBytesRead += source.length; |   60     world.dartBytesRead += source.length; | 
|   62     sourceFiles[uri.toString()] = |   61     sourceFiles[uri.toString()] = | 
|   63       new SourceFile(relativize(cwd, uri), source); |   62       new SourceFile(relativize(cwd, uri), source); | 
| (...skipping 15 matching lines...) Expand all  Loading... | 
|   79       print(file.getLocationMessage(message, begin, end, true)); |   78       print(file.getLocationMessage(message, begin, end, true)); | 
|   80     } |   79     } | 
|   81     if (fatal && throwOnError) throw new AbortLeg(message); |   80     if (fatal && throwOnError) throw new AbortLeg(message); | 
|   82   } |   81   } | 
|   83  |   82  | 
|   84   List<String> options = new List<String>(); |   83   List<String> options = new List<String>(); | 
|   85   if (allowMockCompilation) options.add('--allow-mock-compilation'); |   84   if (allowMockCompilation) options.add('--allow-mock-compilation'); | 
|   86  |   85  | 
|   87   // TODO(ahe): We expect the future to be complete and call value |   86   // TODO(ahe): We expect the future to be complete and call value | 
|   88   // directly. In effect, we don't support truly asynchronous API. |   87   // directly. In effect, we don't support truly asynchronous API. | 
|   89   String code = api.compile(uri, libraryRoot, provider, handler, options).value; |   88   String code = | 
 |   89     compiler.compile(uri, libraryRoot, provider, handler, options).value; | 
|   90   if (code === null) return false; |   90   if (code === null) return false; | 
|   91   world.legCode = code; |   91   world.legCode = code; | 
|   92   world.jsBytesWritten = code.length; |   92   world.jsBytesWritten = code.length; | 
|   93   return true; |   93   return true; | 
|   94 } |   94 } | 
|   95  |   95  | 
|   96 class AbortLeg { |   96 class AbortLeg { | 
|   97   final message; |   97   final message; | 
|   98   AbortLeg(this.message); |   98   AbortLeg(this.message); | 
|   99   toString() => 'Aborted due to --throw-on-error: $message'; |   99   toString() => 'Aborted due to --throw-on-error: $message'; | 
|  100 } |  100 } | 
| OLD | NEW |