// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'package:test_reflective_loader/test_reflective_loader.dart'; import '../src/dart/resolution/context_collection_resolution.dart'; import '../src/dart/resolution/node_text_expectations.dart'; main() { defineReflectiveSuite(() { defineReflectiveTests(NonHintCodeTest); defineReflectiveTests(UpdateNodeTextExpectations); }); } @reflectiveTest class NonHintCodeTest extends PubPackageResolutionTest { test_issue20904BuggyTypePromotionAtIfJoin_1() async { // https://code.google.com/p/dart/issues/detail?id=20904 await resolveTestCodeWithDiagnostics(r''' f(message, dynamic_) { if (message is Function) { message = dynamic_; } int s = message; // ^ // [diag.unusedLocalVariable] The value of the local variable 's' isn't used. } '''); } test_issue20904BuggyTypePromotionAtIfJoin_3() async { // https://code.google.com/p/dart/issues/detail?id=20904 await resolveTestCodeWithDiagnostics(r''' f(message) { var dynamic_; if (message is Function) { message = dynamic_; } else { return; } int s = message; // ^ // [diag.unusedLocalVariable] The value of the local variable 's' isn't used. } '''); } test_issue20904BuggyTypePromotionAtIfJoin_4() async { // https://code.google.com/p/dart/issues/detail?id=20904 await resolveTestCodeWithDiagnostics(r''' f(message) { if (message is Function) { message = ''; } else { return; } String s = message; // ^ // [diag.unusedLocalVariable] The value of the local variable 's' isn't used. } '''); } test_propagatedFieldType() async { await resolveTestCodeWithDiagnostics(r''' class A { } class X { final x = []; } class Z { final X y = new X(); foo() { y.x.add(new A()); } } '''); } test_undefinedMethod_assignmentExpression_inSubtype() async { await resolveTestCodeWithDiagnostics(r''' class A {} class B extends A { operator +(B b) {return new B();} } f(a, a2) { a = new A(); a2 = new A(); a += a2; } '''); } test_undefinedMethod_dynamic() async { await resolveTestCodeWithDiagnostics(r''' class D { fieldAccess(T t) => t.abc; methodAccess(T t) => t.xyz(1, 2, 'three'); } '''); } test_undefinedMethod_unionType_all() async { await resolveTestCodeWithDiagnostics(r''' class A { int m(int x) => 0; } class B { String m() => '0'; } f(A a, B b) { var ab; if (0 < 1) { ab = a; } else { ab = b; } ab.m(); } '''); } test_undefinedMethod_unionType_some() async { await resolveTestCodeWithDiagnostics(r''' class A { int m(int x) => 0; } class B {} f(A a, B b) { var ab; if (0 < 1) { ab = a; } else { ab = b; } ab.m(0); } '''); } }