3b67681bcc
Change-Id: Ife85aafa90b1b0347fabb6e95f3d6c00c5307cd2 Bug: https://github.com/dart-lang/sdk/issues/42063 Fixes: https://github.com/dart-lang/sdk/issues/42063 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/152440 Reviewed-by: Joshua Litt <joshualitt@google.com> Commit-Queue: Mayank Patke <fishythefish@google.com>
54 lines
1.3 KiB
Dart
54 lines
1.3 KiB
Dart
// Copyright (c) 2018, 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 = 2.7
|
|
|
|
/*spec.class: A1:checkedInstance,checks=[],instance*/
|
|
/*prod.class: A1:checks=[],instance*/
|
|
class A1 {}
|
|
|
|
// Constructor calls are always statically invoked, so there is no checks at the
|
|
// entry and the `Test1` constructor does not cause any checks.
|
|
/*spec.class: B1:checks=[$isA1],instance*/
|
|
/*prod.class: B1:checks=[],instance*/
|
|
class B1 implements A1 {}
|
|
|
|
/*class: Test1:checks=[],instance*/
|
|
class Test1 {
|
|
A1 x;
|
|
@pragma('dart2js:noInline')
|
|
Test1(this.x);
|
|
}
|
|
|
|
/*class: A2:checks=[],instance*/
|
|
class A2 {}
|
|
|
|
// Constructor bodies are always statically resolved, so there is no checks at
|
|
// the entry and the `Test2` constructor body does not cause any checks.
|
|
/*class: B2:checks=[],instance*/
|
|
class B2 implements A2 {}
|
|
|
|
/*class: Test2:checks=[],indirectInstance*/
|
|
abstract class Test2 {
|
|
@pragma('dart2js:noInline')
|
|
Test2(A2 x) {
|
|
print(x);
|
|
}
|
|
}
|
|
|
|
/*class: Use:checks=[],instance*/
|
|
class Use extends Test2 {
|
|
Use.A2() : super(new A2());
|
|
Use.B2() : super(new B2());
|
|
}
|
|
|
|
main() {
|
|
new Test1(new A1());
|
|
new Test1(new B1());
|
|
new Test1(null);
|
|
|
|
new Use.A2();
|
|
new Use.B2();
|
|
}
|