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

Side by Side Diff: dart/pkg/compiler/lib/src/compiler.dart

Issue 854633004: Add option --generate-code-with-compile-time-errors. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Merged with r42915. Created 5 years, 11 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
« no previous file with comments | « dart/pkg/compiler/lib/src/apiimpl.dart ('k') | dart/pkg/compiler/lib/src/dart2js.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) 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 part of dart2js; 5 part of dart2js;
6 6
7 /** 7 /**
8 * If true, print a warning for each method that was resolved, but not 8 * If true, print a warning for each method that was resolved, but not
9 * compiled. 9 * compiled.
10 */ 10 */
(...skipping 726 matching lines...) Expand 10 before | Expand all | Expand 10 after
737 /// `true` if enum declarations are supported. 737 /// `true` if enum declarations are supported.
738 final bool enableEnums; 738 final bool enableEnums;
739 739
740 /// If `true`, some values are cached for reuse in incremental compilation. 740 /// If `true`, some values are cached for reuse in incremental compilation.
741 /// Incremental compilation is basically calling [run] more than once. 741 /// Incremental compilation is basically calling [run] more than once.
742 final bool hasIncrementalSupport; 742 final bool hasIncrementalSupport;
743 743
744 /// If `true` native extension syntax is supported by the frontend. 744 /// If `true` native extension syntax is supported by the frontend.
745 final bool allowNativeExtensions; 745 final bool allowNativeExtensions;
746 746
747 api.CompilerOutputProvider outputProvider; 747 /// Output provider from user of Compiler API.
748 api.CompilerOutputProvider userOutputProvider;
749
750 /// Generate output even when there are compile-time errors.
751 final bool generateCodeWithCompileTimeErrors;
748 752
749 bool disableInlining = false; 753 bool disableInlining = false;
750 754
751 List<Uri> librariesToAnalyzeWhenRun; 755 List<Uri> librariesToAnalyzeWhenRun;
752 756
753 Tracer tracer; 757 Tracer tracer;
754 758
755 CompilerTask measuredTask; 759 CompilerTask measuredTask;
756 Element _currentElement; 760 Element _currentElement;
757 LibraryElement coreLibrary; 761 LibraryElement coreLibrary;
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
991 this.deferredMapUri: null, 995 this.deferredMapUri: null,
992 this.dumpInfo: false, 996 this.dumpInfo: false,
993 this.showPackageWarnings: false, 997 this.showPackageWarnings: false,
994 this.useContentSecurityPolicy: false, 998 this.useContentSecurityPolicy: false,
995 this.suppressWarnings: false, 999 this.suppressWarnings: false,
996 bool hasIncrementalSupport: false, 1000 bool hasIncrementalSupport: false,
997 this.enableExperimentalMirrors: false, 1001 this.enableExperimentalMirrors: false,
998 this.enableAsyncAwait: false, 1002 this.enableAsyncAwait: false,
999 this.enableEnums: false, 1003 this.enableEnums: false,
1000 this.allowNativeExtensions: false, 1004 this.allowNativeExtensions: false,
1005 this.generateCodeWithCompileTimeErrors: false,
1001 api.CompilerOutputProvider outputProvider, 1006 api.CompilerOutputProvider outputProvider,
1002 List<String> strips: const []}) 1007 List<String> strips: const []})
1003 : this.disableTypeInferenceFlag = 1008 : this.disableTypeInferenceFlag =
1004 disableTypeInferenceFlag || !emitJavaScript, 1009 disableTypeInferenceFlag || !emitJavaScript,
1005 this.analyzeOnly = 1010 this.analyzeOnly =
1006 analyzeOnly || analyzeSignaturesOnly || analyzeAllFlag, 1011 analyzeOnly || analyzeSignaturesOnly || analyzeAllFlag,
1007 this.analyzeSignaturesOnly = analyzeSignaturesOnly, 1012 this.analyzeSignaturesOnly = analyzeSignaturesOnly,
1008 this.analyzeAllFlag = analyzeAllFlag, 1013 this.analyzeAllFlag = analyzeAllFlag,
1009 this.hasIncrementalSupport = hasIncrementalSupport, 1014 this.hasIncrementalSupport = hasIncrementalSupport,
1010 cacheStrategy = new CacheStrategy(hasIncrementalSupport), 1015 cacheStrategy = new CacheStrategy(hasIncrementalSupport),
1011 this.outputProvider = (outputProvider == null) 1016 this.userOutputProvider = (outputProvider == null)
1012 ? NullSink.outputProvider 1017 ? NullSink.outputProvider
1013 : outputProvider { 1018 : outputProvider {
1014 if (hasIncrementalSupport) { 1019 if (hasIncrementalSupport) {
1015 // TODO(ahe): This is too much. Any method from platform and package 1020 // TODO(ahe): This is too much. Any method from platform and package
1016 // libraries can be inlined. 1021 // libraries can be inlined.
1017 disableInlining = true; 1022 disableInlining = true;
1018 } 1023 }
1019 world = new World(this); 1024 world = new World(this);
1020 // TODO(johnniwinther): Initialize core types in [initializeCoreClasses] and 1025 // TODO(johnniwinther): Initialize core types in [initializeCoreClasses] and
1021 // make its field final. 1026 // make its field final.
(...skipping 1061 matching lines...) Expand 10 before | Expand all | Expand 10 after
2083 // TODO(ahe): It would be nice to reuse names of nested closures. 2088 // TODO(ahe): It would be nice to reuse names of nested closures.
2084 closureToClassMapper.forgetElement(closure); 2089 closureToClassMapper.forgetElement(closure);
2085 } 2090 }
2086 } 2091 }
2087 backend.forgetElement(element); 2092 backend.forgetElement(element);
2088 } 2093 }
2089 2094
2090 bool elementHasCompileTimeError(Element element) { 2095 bool elementHasCompileTimeError(Element element) {
2091 return elementsWithCompileTimeErrors.contains(element); 2096 return elementsWithCompileTimeErrors.contains(element);
2092 } 2097 }
2098
2099 EventSink<String> outputProvider(String name, String extension) {
2100 if (compilationFailed) return new NullSink('$name.$extension');
2101 return userOutputProvider(name, extension);
2102 }
2093 } 2103 }
2094 2104
2095 class CompilerTask { 2105 class CompilerTask {
2096 final Compiler compiler; 2106 final Compiler compiler;
2097 final Stopwatch watch; 2107 final Stopwatch watch;
2098 UserTag profilerTag; 2108 UserTag profilerTag;
2099 2109
2100 CompilerTask(Compiler compiler) 2110 CompilerTask(Compiler compiler)
2101 : this.compiler = compiler, 2111 : this.compiler = compiler,
2102 watch = (compiler.verbose) ? new Stopwatch() : null; 2112 watch = (compiler.verbose) ? new Stopwatch() : null;
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
2374 InterfaceType get nullType => nullClass.computeType(compiler); 2384 InterfaceType get nullType => nullClass.computeType(compiler);
2375 2385
2376 @override 2386 @override
2377 InterfaceType get numType => numClass.computeType(compiler); 2387 InterfaceType get numType => numClass.computeType(compiler);
2378 2388
2379 @override 2389 @override
2380 InterfaceType get stringType => stringClass.computeType(compiler); 2390 InterfaceType get stringType => stringClass.computeType(compiler);
2381 } 2391 }
2382 2392
2383 typedef void InternalErrorFunction(Spannable location, String message); 2393 typedef void InternalErrorFunction(Spannable location, String message);
OLDNEW
« no previous file with comments | « dart/pkg/compiler/lib/src/apiimpl.dart ('k') | dart/pkg/compiler/lib/src/dart2js.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698