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

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

Issue 11416004: Reject deprecated language features. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 1 month 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) 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 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 int nextFreeClassId = 0; 97 int nextFreeClassId = 0;
98 World world; 98 World world;
99 String assembledCode; 99 String assembledCode;
100 Types types; 100 Types types;
101 101
102 final bool enableMinification; 102 final bool enableMinification;
103 final bool enableTypeAssertions; 103 final bool enableTypeAssertions;
104 final bool enableUserAssertions; 104 final bool enableUserAssertions;
105 final bool enableConcreteTypeInference; 105 final bool enableConcreteTypeInference;
106 final bool analyzeAll; 106 final bool analyzeAll;
107 final bool rejectDeprecatedFeatures;
108 final bool omgThisIsALongOptionName;
107 109
108 bool disableInlining = false; 110 bool disableInlining = false;
109 111
110 final Tracer tracer; 112 final Tracer tracer;
111 113
112 CompilerTask measuredTask; 114 CompilerTask measuredTask;
113 Element _currentElement; 115 Element _currentElement;
114 LibraryElement coreLibrary; 116 LibraryElement coreLibrary;
115 LibraryElement isolateLibrary; 117 LibraryElement isolateLibrary;
116 LibraryElement jsHelperLibrary; 118 LibraryElement jsHelperLibrary;
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 210
209 Compiler({this.tracer: const Tracer(), 211 Compiler({this.tracer: const Tracer(),
210 this.enableTypeAssertions: false, 212 this.enableTypeAssertions: false,
211 this.enableUserAssertions: false, 213 this.enableUserAssertions: false,
212 this.enableConcreteTypeInference: false, 214 this.enableConcreteTypeInference: false,
213 this.enableMinification: false, 215 this.enableMinification: false,
214 bool emitJavaScript: true, 216 bool emitJavaScript: true,
215 bool generateSourceMap: true, 217 bool generateSourceMap: true,
216 bool disallowUnsafeEval: false, 218 bool disallowUnsafeEval: false,
217 this.analyzeAll: false, 219 this.analyzeAll: false,
220 this.rejectDeprecatedFeatures: false,
221 this.omgThisIsALongOptionName: false,
218 List<String> strips: const []}) 222 List<String> strips: const []})
219 : libraries = new Map<String, LibraryElement>(), 223 : libraries = new Map<String, LibraryElement>(),
220 progress = new Stopwatch() { 224 progress = new Stopwatch() {
221 progress.start(); 225 progress.start();
222 world = new World(this); 226 world = new World(this);
223 scanner = new ScannerTask(this); 227 scanner = new ScannerTask(this);
224 dietParser = new DietParserTask(this); 228 dietParser = new DietParserTask(this);
225 parser = new ParserTask(this); 229 parser = new ParserTask(this);
226 patchParser = new PatchParserTask(this); 230 patchParser = new PatchParserTask(this);
227 libraryLoader = new LibraryLoaderTask(this); 231 libraryLoader = new LibraryLoaderTask(this);
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 } 328 }
325 329
326 void log(message) { 330 void log(message) {
327 reportDiagnostic(null, message, api.Diagnostic.VERBOSE_INFO); 331 reportDiagnostic(null, message, api.Diagnostic.VERBOSE_INFO);
328 } 332 }
329 333
330 bool run(Uri uri) { 334 bool run(Uri uri) {
331 try { 335 try {
332 runCompiler(uri); 336 runCompiler(uri);
333 } on CompilerCancelledException catch (exception) { 337 } on CompilerCancelledException catch (exception) {
334 log(exception.toString()); 338 log('Error: $exception');
335 log('compilation failed');
336 return false; 339 return false;
337 } 340 }
338 tracer.close(); 341 tracer.close();
339 log('compilation succeeded');
340 return true; 342 return true;
341 } 343 }
342 344
343 void enableNoSuchMethod(Element element) { 345 void enableNoSuchMethod(Element element) {
344 // TODO(ahe): Move this method to Enqueuer. 346 // TODO(ahe): Move this method to Enqueuer.
345 if (enabledNoSuchMethod) return; 347 if (enabledNoSuchMethod) return;
346 if (identical(element.getEnclosingClass(), objectClass)) { 348 if (identical(element.getEnclosingClass(), objectClass)) {
347 enqueuer.resolution.registerDynamicInvocationOf(element); 349 enqueuer.resolution.registerDynamicInvocationOf(element);
348 return; 350 return;
349 } 351 }
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
750 reportDiagnostic(span, 'Error: $message', api.Diagnostic.ERROR); 752 reportDiagnostic(span, 'Error: $message', api.Diagnostic.ERROR);
751 throw new CompilerCancelledException(message.toString()); 753 throw new CompilerCancelledException(message.toString());
752 } 754 }
753 755
754 void reportMessage(SourceSpan span, Diagnostic message, api.Diagnostic kind) { 756 void reportMessage(SourceSpan span, Diagnostic message, api.Diagnostic kind) {
755 // TODO(ahe): The names Diagnostic and api.Diagnostic are in 757 // TODO(ahe): The names Diagnostic and api.Diagnostic are in
756 // conflict. Fix it. 758 // conflict. Fix it.
757 reportDiagnostic(span, "$message", kind); 759 reportDiagnostic(span, "$message", kind);
758 } 760 }
759 761
762 void onDeprecatedFeature(Spannable span, String feature) {
763 if (!omgThisIsALongOptionName &&
764 currentElement.getLibrary().isPlatformLibrary) {
765 return;
766 }
767 var kind = rejectDeprecatedFeatures
768 ? api.Diagnostic.ERROR : api.Diagnostic.WARNING;
769 var message = rejectDeprecatedFeatures
770 ? MessageKind.DEPRECATED_FEATURE_ERROR.error([feature])
771 : MessageKind.DEPRECATED_FEATURE_WARNING.error([feature]);
772 reportMessage(spanFromSpannable(span), message, kind);
773 }
774
760 void reportDiagnostic(SourceSpan span, String message, api.Diagnostic kind); 775 void reportDiagnostic(SourceSpan span, String message, api.Diagnostic kind);
761 776
762 SourceSpan spanFromTokens(Token begin, Token end, [Uri uri]) { 777 SourceSpan spanFromTokens(Token begin, Token end, [Uri uri]) {
763 if (begin == null || end == null) { 778 if (begin == null || end == null) {
764 // TODO(ahe): We can almost always do better. Often it is only 779 // TODO(ahe): We can almost always do better. Often it is only
765 // end that is null. Otherwise, we probably know the current 780 // end that is null. Otherwise, we probably know the current
766 // URI. 781 // URI.
767 throw 'Cannot find tokens to produce error message.'; 782 throw 'Cannot find tokens to produce error message.';
768 } 783 }
769 if (uri == null && currentElement != null) { 784 if (uri == null && currentElement != null) {
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
914 // TODO(johnniwinther): Use [spannable] and [message] to provide better 929 // TODO(johnniwinther): Use [spannable] and [message] to provide better
915 // information on assertion errors. 930 // information on assertion errors.
916 if (condition is Function){ 931 if (condition is Function){
917 condition = condition(); 932 condition = condition();
918 } 933 }
919 if (spannable == null || !condition) { 934 if (spannable == null || !condition) {
920 throw new SpannableAssertionFailure(spannable, message); 935 throw new SpannableAssertionFailure(spannable, message);
921 } 936 }
922 return true; 937 return true;
923 } 938 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698