// Copyright (c) 2011, 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. // Test that instanceof works correctly with type variables. part of GenericInstanceofTest.dart; class Foo { Foo() {} bool isT(x) { // Untyped parameter to ensure that the static type // does not affect the result. return x is T; } bool isListT(x) { return x is List; } } class GenericInstanceof { static void testMain() { // Using Object instead of String to ensure that the static type // does not affect the result. Foo fooObject = new Foo(); Expect.equals(true, fooObject.isT("string")); Expect.equals(false, fooObject.isT(1)); Foo fooString = new Foo(); Expect.equals(true, fooString.isT("string")); Expect.equals(false, fooString.isT(1)); // Not providing a type argument to ensure that the static type // does not affect the result. { Foo foo = new Foo(); Expect.equals(true, foo.isT("string")); Expect.equals(false, foo.isT(1)); } { Foo foo = new Foo(); Expect.equals(true, foo.isT(new List.filled(5, null))); Expect.equals(true, foo.isT(new List.filled(5, "o"))); Expect.equals(true, foo.isT(new List.filled(5, 0))); Expect.equals(true, foo.isT(new List.filled(5, 0))); Expect.equals(true, foo.isT(new List.filled(5, "s"))); } { Foo foo = new Foo(); Expect.equals(true, foo.isT(new List.filled(5, null))); Expect.equals(true, foo.isT(new List.filled(5, "o"))); Expect.equals(true, foo.isT(new List.filled(5, 0))); Expect.equals(true, foo.isT(new List.filled(5, 0))); Expect.equals(true, foo.isT(new List.filled(5, "s"))); } { Foo foo = new Foo>(); Expect.equals(hasUnsoundNullSafety, foo.isT(new List.filled(5, null))); Expect.equals(true, foo.isT(new List.filled(5, "o"))); Expect.equals(true, foo.isT(new List.filled(5, 0))); Expect.equals(true, foo.isT(new List.filled(5, 0))); Expect.equals(true, foo.isT(new List.filled(5, "s"))); } { Foo foo = new Foo>(); Expect.equals(hasUnsoundNullSafety, foo.isT(new List.filled(5, null))); Expect.equals(false, foo.isT(new List.filled(5, "o"))); Expect.equals(true, foo.isT(new List.filled(5, 0))); Expect.equals(false, foo.isT(new List.filled(5, 0))); Expect.equals(false, foo.isT(new List.filled(5, "s"))); } { Foo foo = new Foo>(); Expect.equals(hasUnsoundNullSafety, foo.isT(new List.filled(5, null))); Expect.equals(false, foo.isT(new List.filled(5, "o"))); Expect.equals(true, foo.isT(new List.filled(5, 0))); Expect.equals(true, foo.isT(new List.filled(5, 0))); Expect.equals(false, foo.isT(new List.filled(5, "s"))); } { Foo foo = new Foo>(); Expect.equals(hasUnsoundNullSafety, foo.isT(new List.filled(5, null))); Expect.equals(false, foo.isT(new List.filled(5, "o"))); Expect.equals(false, foo.isT(new List.filled(5, 0))); Expect.equals(false, foo.isT(new List.filled(5, 0))); Expect.equals(true, foo.isT(new List.filled(5, "s"))); } { Foo foo = new Foo(); Expect.equals(true, foo.isListT(new List.filled(5, null))); Expect.equals(true, foo.isListT(new List.filled(5, "o"))); Expect.equals(true, foo.isListT(new List.filled(5, 0))); Expect.equals(true, foo.isListT(new List.filled(5, 0))); Expect.equals(true, foo.isListT(new List.filled(5, "s"))); } { Foo foo = new Foo(); Expect.equals( hasUnsoundNullSafety, foo.isListT(new List.filled(5, null)), ); Expect.equals(true, foo.isListT(new List.filled(5, "o"))); Expect.equals(true, foo.isListT(new List.filled(5, 0))); Expect.equals(true, foo.isListT(new List.filled(5, 0))); Expect.equals(true, foo.isListT(new List.filled(5, "s"))); } { Foo foo = new Foo(); Expect.equals( hasUnsoundNullSafety, foo.isListT(new List.filled(5, null)), ); Expect.equals(false, foo.isListT(new List.filled(5, "o"))); Expect.equals(true, foo.isListT(new List.filled(5, 0))); Expect.equals(false, foo.isListT(new List.filled(5, 0))); Expect.equals(false, foo.isListT(new List.filled(5, "s"))); } { Foo foo = new Foo(); Expect.equals( hasUnsoundNullSafety, foo.isListT(new List.filled(5, null)), ); Expect.equals(false, foo.isListT(new List.filled(5, "o"))); Expect.equals(true, foo.isListT(new List.filled(5, 0))); Expect.equals(true, foo.isListT(new List.filled(5, 0))); Expect.equals(false, foo.isListT(new List.filled(5, "s"))); } { Foo foo = new Foo(); Expect.equals( hasUnsoundNullSafety, foo.isListT(new List.filled(5, null)), ); Expect.equals(false, foo.isListT(new List.filled(5, "o"))); Expect.equals(false, foo.isListT(new List.filled(5, 0))); Expect.equals(false, foo.isListT(new List.filled(5, 0))); Expect.equals(true, foo.isListT(new List.filled(5, "s"))); } } }