dart-sdk/tests/language_strong/function_subtype_inline2_test.dart
Bob Nystrom 6c757957db Move the dev_compiler strong mode tests into sdk/tests/.
DDC's codegen test copies those files to a local "gen" directory so
that it can do stuff like splitting out the multitests before it
compiles them to JS.

I left all of that alone, so the rest of DDC's test infrastructure is
unchanged. The very first step that builds the "gen" directory just
copies from sdk/tests/..._strong/... instead and the rest is good to go.

I did not move not_yet_strong_tests.dart somewhere more accessible yet
because I'm not sure if kernel needs it or where it should go.

I did not create any status files because DDC doesn't need them and
there are no test suites for the new directories for the other
platforms.
2016-12-09 11:09:55 -08:00

46 lines
1.4 KiB
Dart

// Copyright (c) 2013, 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.
// Dart test program for constructors and initializers.
// Check function subtyping of inlined function typed parameters.
import 'checked_mode_helper.dart';
class C {
var field;
C.c1(int this.field());
C.c2({int this.field()});
C.c3({int field(): null});
C.c4({int this.field(): null});
C.c5([int this.field()]);
C.c6([int field() = null]);
C.c7([int this.field() = null]);
}
void test(var f, String constructorName) {
testDynamicTypeError(false, () => f(m1),
"'new C.$constructorName(m1)'");
testDynamicTypeError(true, () => f(m2),
"'new C.$constructorName(m2)'");
testDynamicTypeError(false, () => f(m3),
"'new C.$constructorName(m3)'");
testDynamicTypeError(true, () => f(m4),
"'new C.$constructorName(m4)'");
}
int m1() => null;
String m2() => null;
m3() => null;
m4(int i) => null;
main() {
test((m) => new C.c1(m), 'c1');
test((m) => new C.c2(field: m), 'c2');
test((m) => new C.c3(field: m), 'c3');
test((m) => new C.c4(field: m), 'c4');
test((m) => new C.c5(m), 'c5');
test((m) => new C.c6(m), 'c6');
test((m) => new C.c7(m), 'c7');
}