f42a0ef25c
"x is Foo" will become getInterceptor(x).$isFoo Testing against a type with type arguments is still a giveup(). This test always works, but is not very fast. For instance, testing against an int should be "typeof x === 'number' && Math.floor(x) === x". Following an offline discussion with Karl, the plan is to rewrite 'is'-checks to more fine-grained tests in a CPS optimization pass, probably the type propagator. Concretely, we plan to introduce IR nodes like TypeOfTest, FloorTest, InstanceofTest, etc, which optimization phases can introduce under the right circumstances. That way, the code generation phase remains simple. BUG= R=karlklose@google.com Review URL: https://codereview.chromium.org//1144163004
Run Existing Tests ================== See the output of ../tools/test.py --help for how to run tests. See also https://code.google.com/p/dart/wiki/Building#Testing for detailed examples. Create New Tests ================ See comments above factory StandardTestSuite.forDirectory in ../tools/testing/dart/test_suite.dart for the default test directory layout. By default test-file names must end in "_test.dart", but some test suites, such as ./co19, subclass StandardTestSuite and override this default. See comments at the beginning of ../tools/testing/dart/multitest.dart for how to create tests that pass by failing with a known error. For example, ... int x = "not an int"; /// 01: static type warning ... as part of a test will only pass the "--compiler dartanalyzer" test if the assignment generates a static type warning.