| Index: tests/compiler/dart2js/kernel/impact_test.dart
|
| diff --git a/tests/compiler/dart2js/kernel/impact_test.dart b/tests/compiler/dart2js/kernel/impact_test.dart
|
| index c0f0658e869074c60fbf15c937142d2b3aaf5287..3bf1017b98bb929c4dcdb0e8a528cc309fbf9108 100644
|
| --- a/tests/compiler/dart2js/kernel/impact_test.dart
|
| +++ b/tests/compiler/dart2js/kernel/impact_test.dart
|
| @@ -73,6 +73,8 @@ main() {
|
| testAsGenericRaw(null);
|
| testAsGenericDynamic(null);
|
| testThrow();
|
| + testIfNull(null);
|
| + testSetIfNull(null);
|
| testSyncStar();
|
| testAsync();
|
| testAsyncStar();
|
| @@ -137,6 +139,10 @@ main() {
|
| testConstRedirectingFactoryInvokeGeneric();
|
| testConstRedirectingFactoryInvokeGenericRaw();
|
| testConstRedirectingFactoryInvokeGenericDynamic();
|
| + testImplicitConstructor();
|
| + testFactoryConstructor();
|
| + testDefaultValuesPositional();
|
| + testDefaultValuesNamed();
|
| }
|
|
|
| testEmpty() {}
|
| @@ -187,6 +193,8 @@ testAsGeneric(o) => o as GenericClass<int, String>;
|
| testAsGenericRaw(o) => o as GenericClass;
|
| testAsGenericDynamic(o) => o as GenericClass<dynamic, dynamic>;
|
| testThrow() => throw '';
|
| +testIfNull(o) => o ?? 42;
|
| +testSetIfNull(o) => o ??= 42;
|
|
|
| testSyncStar() sync* {}
|
| testAsync() async {}
|
| @@ -417,6 +425,14 @@ testConstRedirectingFactoryInvokeGenericRaw() {
|
| testConstRedirectingFactoryInvokeGenericDynamic() {
|
| const GenericClass<dynamic, dynamic>.redirect();
|
| }
|
| +class ClassImplicitConstructor {}
|
| +testImplicitConstructor() => new ClassImplicitConstructor();
|
| +class ClassFactoryConstructor {
|
| + factory ClassFactoryConstructor() => null;
|
| +}
|
| +testFactoryConstructor() => new ClassFactoryConstructor();
|
| +testDefaultValuesPositional([bool value = false]) {}
|
| +testDefaultValuesNamed({bool value: false}) {}
|
| ''',
|
| 'helper.dart': '''
|
| class Class {
|
| @@ -455,7 +471,10 @@ main(List<String> args) {
|
| void checkLibrary(Compiler compiler, LibraryElement library) {
|
| library.forEachLocalMember((AstElement element) {
|
| if (element.isClass) {
|
| - // TODO(johnniwinther): Handle class members.
|
| + ClassElement cls = element;
|
| + cls.forEachLocalMember((AstElement member) {
|
| + checkElement(compiler, member);
|
| + });
|
| } else if (element.isTypedef) {
|
| // Skip typedefs.
|
| } else {
|
| @@ -486,8 +505,8 @@ ResolutionImpact laxImpact(
|
| ConstructorElement effectiveTarget = constructor.effectiveTarget;
|
| DartType effectiveTargetType =
|
| constructor.computeEffectiveTargetType(staticUse.type);
|
| - builder.registerStaticUse(
|
| - new StaticUse.typedConstructorInvoke(effectiveTarget, null, effectiveTargetType));
|
| + builder.registerStaticUse(new StaticUse.typedConstructorInvoke(
|
| + effectiveTarget, null, effectiveTargetType));
|
| break;
|
| default:
|
| builder.registerStaticUse(staticUse);
|
|
|