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

Side by Side Diff: lib/strong_mode.dart

Issue 1406983003: Remove the checker and corresponding dead code (Closed) Base URL: https://github.com/dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 2 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
« no previous file with comments | « lib/src/server/server.dart ('k') | test/all_tests.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
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.
4
5 /// Types needed to implement "strong" checking in the Dart analyzer. This is
6 /// intended to be used by `analyzer_cli` and `analysis_server` packages.
7 library dev_compiler.strong_mode;
8
9 import 'package:analyzer/src/generated/engine.dart'
10 show
11 AnalysisContext,
12 AnalysisContextImpl,
13 AnalysisEngine,
14 AnalysisErrorInfo,
15 AnalysisErrorInfoImpl;
16 import 'package:analyzer/src/generated/error.dart'
17 show
18 AnalysisError,
19 AnalysisErrorListener,
20 CompileTimeErrorCode,
21 ErrorCode,
22 ErrorSeverity,
23 HintCode,
24 StaticTypeWarningCode;
25 import 'package:analyzer/src/generated/source.dart' show Source;
26 import 'package:args/args.dart';
27
28 import 'src/analysis_context.dart' show enableDevCompilerInference;
29 import 'src/checker/checker.dart' show CodeChecker;
30 import 'src/checker/rules.dart' show TypeRules;
31
32 /// A type checker for Dart code that operates under stronger rules, and has
33 /// the ability to do local type inference in some situations.
34 // TODO(jmesserly): remove this class.
35 class StrongChecker {
36 final AnalysisContext _context;
37 final CodeChecker _checker;
38 final _ErrorCollector _reporter;
39
40 StrongChecker._(this._context, this._checker, this._reporter);
41
42 factory StrongChecker(AnalysisContext context, StrongModeOptions options) {
43 // TODO(vsm): Remove this once analyzer_cli is completely switched to the
44 // task model.
45 if (!AnalysisEngine.instance.useTaskModel) {
46 enableDevCompilerInference(context, options);
47 var rules = new TypeRules(context.typeProvider);
48 var reporter = new _ErrorCollector(options.hints);
49 var checker = new CodeChecker(rules, reporter);
50 return new StrongChecker._(context, checker, reporter);
51 }
52 return new StrongChecker._(context, null, null);
53 }
54
55 /// Computes and returns DDC errors for the [source].
56 AnalysisErrorInfo computeErrors(Source source) {
57 var errors = new List<AnalysisError>();
58 if (_checker != null) {
59 _reporter.errors = errors;
60
61 for (Source librarySource in _context.getLibrariesContaining(source)) {
62 var resolved = _context.resolveCompilationUnit2(source, librarySource);
63 _checker.visitCompilationUnit(resolved);
64 }
65 _reporter.errors = null;
66 }
67 return new AnalysisErrorInfoImpl(errors, _context.getLineInfo(source));
68 }
69 }
70
71 class _ErrorCollector implements AnalysisErrorListener {
72 List<AnalysisError> errors;
73 final bool hints;
74 _ErrorCollector(this.hints);
75
76 void onError(AnalysisError error) {
77 // Unless DDC hints are requested, filter them out.
78 var HINT = ErrorSeverity.INFO.ordinal;
79 if (hints || error.errorCode.errorSeverity.ordinal > HINT) {
80 errors.add(error);
81 }
82 }
83 }
84
85 // TODO(jmesserly): this type is dead now. It's preserved because analyzer_cli
86 // passes the `hints` option.
87 class StrongModeOptions {
88 /// Whether to include hints about dynamic invokes and runtime checks.
89 // TODO(jmesserly): this option is not used yet by DDC server mode or batch
90 // compile to JS.
91 final bool hints;
92
93 const StrongModeOptions({this.hints: false});
94
95 StrongModeOptions.fromArguments(ArgResults args, {String prefix: ''})
96 : hints = args[prefix + 'hints'];
97
98 static ArgParser addArguments(ArgParser parser,
99 {String prefix: '', bool hide: false}) {
100 return parser
101 ..addFlag(prefix + 'hints',
102 help: 'Display hints about dynamic casts and dispatch operations',
103 defaultsTo: false,
104 hide: hide);
105 }
106
107 bool operator ==(Object other) {
108 if (other is! StrongModeOptions) return false;
109 StrongModeOptions s = other;
110 return hints == s.hints;
111 }
112 }
OLDNEW
« no previous file with comments | « lib/src/server/server.dart ('k') | test/all_tests.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698