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

Unified Diff: pkg/analyzer/test/src/task/strong/checker_test.dart

Issue 2976963002: Add --no-declaration-casts option to analyzer. (Closed)
Patch Set: Fix comment Created 3 years, 5 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
Index: pkg/analyzer/test/src/task/strong/checker_test.dart
diff --git a/pkg/analyzer/test/src/task/strong/checker_test.dart b/pkg/analyzer/test/src/task/strong/checker_test.dart
index 2819766276cd08b015b0f8dcb115ae12739202b8..396748cd99fa607e72801dc3f1e4a97874e8dada 100644
--- a/pkg/analyzer/test/src/task/strong/checker_test.dart
+++ b/pkg/analyzer/test/src/task/strong/checker_test.dart
@@ -2196,11 +2196,96 @@ main() {
''');
}
- test_implicitCasts() async {
- addFile('num n; int i = /*info:ASSIGNMENT_CAST*/n;');
+ test_implicitCasts_assignment() async {
+ addFile(
+ 'num n; int i; void main() { i = /*info:DOWN_CAST_IMPLICIT*/n;}//yy');
await check();
- addFile('num n; int i = /*error:INVALID_ASSIGNMENT*/n;');
- await check(implicitCasts: false);
+ addFile(
+ 'num n; int i; void main() { i = /*error:INVALID_ASSIGNMENT*/n;}//ny');
+ await check(implicitCasts: false, declarationCasts: true);
+ addFile(
+ 'num n; int i; void main() { i = /*info:DOWN_CAST_IMPLICIT*/n;}//yn');
+ await check(implicitCasts: true, declarationCasts: false);
+ addFile(
+ 'num n; int i; void main() { i = /*error:INVALID_ASSIGNMENT*/n;}//nn');
+ await check(implicitCasts: false, declarationCasts: false);
+ }
+
+ test_implicitCasts_compoundAssignment() async {
+ addFile('''f(num n, int i) {
+ /*info:DOWN_CAST_IMPLICIT_ASSIGN*/i += n;}//yy''');
+ await check();
+ addFile('''f(num n, int i) {
+ i += /*error:INVALID_ASSIGNMENT*/n;}//ny''');
+ await check(implicitCasts: false, declarationCasts: true);
+ addFile('''f(num n, int i) {
+ /*info:DOWN_CAST_IMPLICIT_ASSIGN*/i += n;}//yn''');
+ await check(implicitCasts: true, declarationCasts: false);
+ addFile('''f(num n, int i) {
+ i += /*error:INVALID_ASSIGNMENT*/n;}//nn''');
+ await check(implicitCasts: false, declarationCasts: false);
+ }
+
+ test_implicitCasts_constructorInitializer() async {
+ addFile(
+ 'class A { int i; A(num n) : i = /*info:DOWN_CAST_IMPLICIT*/n;}//yy');
+ await check();
+ addFile(
+ 'class A { int i; A(num n) : i = /*error:FIELD_INITIALIZER_NOT_ASSIGNABLE*/n;}//ny');
+ await check(implicitCasts: false, declarationCasts: true);
+ addFile(
+ 'class A { int i; A(num n) : i = /*info:DOWN_CAST_IMPLICIT*/n;}//yn');
+ await check(implicitCasts: true, declarationCasts: false);
+ addFile(
+ 'class A { int i; A(num n) : i = /*error:FIELD_INITIALIZER_NOT_ASSIGNABLE*/n;}//nn');
+ await check(implicitCasts: false, declarationCasts: false);
+ }
+
+ test_implicitCasts_defaultValue() async {
+ addFile('''const num n = 0;
+ f({int i = /*info:DOWN_CAST_IMPLICIT*/n}) => i;//yy''');
+ await check();
+ addFile('''const num n = 0;
+ f({int i = /*error:INVALID_ASSIGNMENT*/n}) => i;//ny''');
+ await check(implicitCasts: false, declarationCasts: true);
+ addFile('''const num n = 0;
+ f({int i = /*info:DOWN_CAST_IMPLICIT*/n}) => i;//yn''');
+ await check(implicitCasts: true, declarationCasts: false);
+ addFile('''const num n = 0;
+ f({int i = /*error:INVALID_ASSIGNMENT*/n}) => i;//nn''');
+ await check(implicitCasts: false, declarationCasts: false);
+ }
+
+ test_implicitCasts_fieldInitializer() async {
+ addFile('class A { static num n; int i = /*info:ASSIGNMENT_CAST*/n;}//yy');
+ await check();
+ addFile('class A { static num n; int i = /*info:ASSIGNMENT_CAST*/n;}//ny');
+ await check(implicitCasts: false, declarationCasts: true);
+ addFile(
+ 'class A { static num n; int i = /*error:INVALID_ASSIGNMENT*/n;}//yn');
+ await check(implicitCasts: true, declarationCasts: false);
+ addFile(
+ 'class A { static num n; int i = /*error:INVALID_ASSIGNMENT*/n;}//nn');
+ await check(implicitCasts: false, declarationCasts: false);
+ }
+
+ test_implicitCasts_functionCall() async {
+ addFile('''num n;
+ f(int i) => i;
+ var i = f(/*info:DOWN_CAST_IMPLICIT*/n);//yy''');
+ await check();
+ addFile('''num n;
+ f(int i) => i;
+ var i = f(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/n);//ny''');
+ await check(implicitCasts: false, declarationCasts: true);
+ addFile('''num n;
+ f(int i) => i;
+ var i = f(/*info:DOWN_CAST_IMPLICIT*/n);//yn''');
+ await check(implicitCasts: true, declarationCasts: false);
+ addFile('''num n;
+ f(int i) => i;
+ var i = f(/*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/n);//nn''');
+ await check(implicitCasts: false, declarationCasts: false);
}
test_implicitCasts_genericMethods() async {
@@ -2210,6 +2295,17 @@ var x = <String>[].map<String>((x) => "");
await check(implicitCasts: false);
}
+ test_implicitCasts_initializer() async {
+ addFile('num n; int i = /*info:ASSIGNMENT_CAST*/n;//yy');
+ await check();
+ addFile('num n; int i = /*info:ASSIGNMENT_CAST*/n;//ny');
+ await check(implicitCasts: false, declarationCasts: true);
+ addFile('num n; int i = /*error:INVALID_ASSIGNMENT*/n;//yn');
+ await check(implicitCasts: true, declarationCasts: false);
+ addFile('num n; int i = /*error:INVALID_ASSIGNMENT*/n;//nn');
+ await check(implicitCasts: false, declarationCasts: false);
+ }
+
test_implicitCasts_numericOps() async {
// Regression test for https://github.com/dart-lang/sdk/issues/26912
addFile(r'''
@@ -2222,7 +2318,37 @@ void f() {
await check(implicitCasts: false);
}
+ test_implicitCasts_operator() async {
+ addFile('''num n;
+ int i;
+ var r = i & /*info:DOWN_CAST_IMPLICIT*/n;//yy''');
+ await check();
+ addFile('''num n;
+ int i;
+ var r = i & /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/n;//ny''');
+ await check(implicitCasts: false, declarationCasts: true);
+ addFile('''num n;
+ int i;
+ var r = i & /*info:DOWN_CAST_IMPLICIT*/n;//yn''');
+ await check(implicitCasts: true, declarationCasts: false);
+ addFile('''num n;
+ int i;
+ var r = i & /*error:ARGUMENT_TYPE_NOT_ASSIGNABLE*/n;//nn''');
+ await check(implicitCasts: false, declarationCasts: false);
+ }
+
test_implicitCasts_return() async {
+ addFile('int f(num n) => /*info:DOWN_CAST_IMPLICIT*/n;//yy');
+ await check();
+ addFile('int f(num n) => /*error:RETURN_OF_INVALID_TYPE*/n;//ny');
+ await check(implicitCasts: false, declarationCasts: true);
+ addFile('int f(num n) => /*info:DOWN_CAST_IMPLICIT*/n;//yn');
+ await check(implicitCasts: true, declarationCasts: false);
+ addFile('int f(num n) => /*error:RETURN_OF_INVALID_TYPE*/n;//nn');
+ await check(implicitCasts: false, declarationCasts: false);
+ }
+
+ test_implicitCasts_return_async() async {
addFile(r'''
import 'dart:async';
« no previous file with comments | « pkg/analyzer/test/src/context/builder_test.dart ('k') | pkg/analyzer/test/src/task/strong/strong_test_helper.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698