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

Unified Diff: pkg/analyzer/lib/src/task/strong/checker.dart

Issue 2054443002: Add analysis option that will be used to fix #26583 (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/analyzer/lib/src/task/dart.dart ('k') | pkg/analyzer/lib/src/task/strong/info.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/task/strong/checker.dart
diff --git a/pkg/analyzer/lib/src/task/strong/checker.dart b/pkg/analyzer/lib/src/task/strong/checker.dart
index 4566e6a81dae0acfd055087cf3ad3b9044852bea..01bea7f766a02154655cb08377b114bbc7a91753 100644
--- a/pkg/analyzer/lib/src/task/strong/checker.dart
+++ b/pkg/analyzer/lib/src/task/strong/checker.dart
@@ -13,6 +13,7 @@ import 'package:analyzer/dart/ast/visitor.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/dart/element/type.dart';
+import 'package:analyzer/src/generated/engine.dart' show AnalysisOptionsImpl;
import 'package:analyzer/src/generated/resolver.dart' show TypeProvider;
import 'package:analyzer/src/generated/type_system.dart';
@@ -101,16 +102,15 @@ class CodeChecker extends RecursiveAstVisitor {
final TypeProvider typeProvider;
final AnalysisErrorListener reporter;
final _OverrideChecker _overrideChecker;
- final bool _hints;
+ final AnalysisOptionsImpl _options;
bool _failure = false;
+
CodeChecker(TypeProvider typeProvider, StrongTypeSystemImpl rules,
- AnalysisErrorListener reporter,
- {bool hints: false})
+ AnalysisErrorListener reporter, this._options)
: typeProvider = typeProvider,
rules = rules,
reporter = reporter,
- _hints = hints,
_overrideChecker = new _OverrideChecker(typeProvider, rules, reporter);
bool get failure => _failure || _overrideChecker._failure;
@@ -346,7 +346,7 @@ class CodeChecker extends RecursiveAstVisitor {
if (rules.isSubtypeOf(sequenceType, iterableType)) {
_recordMessage(DownCast.create(
- rules, node.iterable, iterableType, sequenceType));
+ rules, node.iterable, iterableType, sequenceType, _options));
elementType = DynamicTypeImpl.instance;
}
}
@@ -632,11 +632,11 @@ class CodeChecker extends RecursiveAstVisitor {
rules.isSubtypeOf(lhsType, rhsType)) {
// This is also slightly different from spec, but allows us to keep
// compound operators in the int += num and num += dynamic cases.
- staticInfo =
- DownCast.create(rules, expr.rightHandSide, rhsType, lhsType);
+ staticInfo = DownCast.create(
+ rules, expr.rightHandSide, rhsType, lhsType, _options);
rhsType = lhsType;
} else {
- staticInfo = new StaticTypeError(rules, expr, lhsType);
+ staticInfo = new StaticTypeError(expr, lhsType);
}
_recordMessage(staticInfo);
}
@@ -679,7 +679,7 @@ class CodeChecker extends RecursiveAstVisitor {
// Downcast if toT <: fromT
if (rules.isSubtypeOf(to, from)) {
- _recordMessage(DownCast.create(rules, expr, from, to));
+ _recordMessage(DownCast.create(rules, expr, from, to, _options));
return;
}
@@ -694,7 +694,7 @@ class CodeChecker extends RecursiveAstVisitor {
// Iterable<T> for some concrete T (e.g. Object). These are unrelated
// in the restricted system, but List<dynamic> <: Iterable<T> in dart.
if (from.isAssignableTo(to)) {
- _recordMessage(DownCast.create(rules, expr, from, to));
+ _recordMessage(DownCast.create(rules, expr, from, to, _options));
}
}
@@ -894,8 +894,8 @@ class CodeChecker extends RecursiveAstVisitor {
}
void _recordDynamicInvoke(AstNode node, AstNode target) {
- if (_hints) {
- reporter.onError(new DynamicInvoke(rules, node).toAnalysisError());
+ if (_options.strongModeHints) {
+ reporter.onError(new DynamicInvoke(node).toAnalysisError());
}
// TODO(jmesserly): we may eventually want to record if the whole operation
// (node) was dynamic, rather than the target, but this is an easier fit
@@ -908,7 +908,7 @@ class CodeChecker extends RecursiveAstVisitor {
var error = info.toAnalysisError();
var severity = error.errorCode.errorSeverity;
if (severity == ErrorSeverity.ERROR) _failure = true;
- if (severity != ErrorSeverity.INFO || _hints) {
+ if (severity != ErrorSeverity.INFO || _options.strongModeHints) {
reporter.onError(error);
}
« no previous file with comments | « pkg/analyzer/lib/src/task/dart.dart ('k') | pkg/analyzer/lib/src/task/strong/info.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698