diff --git a/pkg/nnbd_migration/lib/src/fix_builder.dart b/pkg/nnbd_migration/lib/src/fix_builder.dart index 47a139013e200..88332319bff89 100644 --- a/pkg/nnbd_migration/lib/src/fix_builder.dart +++ b/pkg/nnbd_migration/lib/src/fix_builder.dart @@ -150,7 +150,9 @@ class FixBuilder { element = element.declaration; if (element is ClassElement || element is TypeParameterElement) { return typeProvider.typeType; - } else if (element is PropertyAccessorElement && element.isSynthetic) { + } else if (element is PropertyAccessorElement && + element.isSynthetic && + !element.variable.isSynthetic) { var variableType = _variables .decoratedElementType(element.variable) .toFinalType(typeProvider); diff --git a/pkg/nnbd_migration/test/api_test.dart b/pkg/nnbd_migration/test/api_test.dart index 06321489c1a8d..7215aee4048c9 100644 --- a/pkg/nnbd_migration/test/api_test.dart +++ b/pkg/nnbd_migration/test/api_test.dart @@ -3903,10 +3903,6 @@ class _ProvisionalApiTestWithFixBuilder extends _ProvisionalApiTestBase @override bool get _usePermissiveMode => false; - @override - @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/38472') - Future test_enum() => super.test_enum(); - @override @FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/40023') Future test_extension_nullableOnType_viaImplicitInvocation() => diff --git a/pkg/nnbd_migration/test/fix_builder_test.dart b/pkg/nnbd_migration/test/fix_builder_test.dart index 9cd2f2bea85e4..0b64ace67742c 100644 --- a/pkg/nnbd_migration/test/fix_builder_test.dart +++ b/pkg/nnbd_migration/test/fix_builder_test.dart @@ -1040,6 +1040,30 @@ f() => 1.0; visitSubexpression(findNode.doubleLiteral('1.0'), 'double'); } + Future test_enum_ref_index() async { + await analyze(''' +enum E { V } +_f(E e) => e.index; +'''); + visitSubexpression(findNode.prefixed('e.index'), 'int'); + } + + Future test_enum_ref_value() async { + await analyze(''' +enum E { V } +_f() => E.V; +'''); + visitSubexpression(findNode.prefixed('E.V'), 'E'); + } + + Future test_enum_ref_values() async { + await analyze(''' +enum E { V } +_f() => E.values; +'''); + visitSubexpression(findNode.prefixed('E.values'), 'List'); + } + Future test_expressionStatement() async { await analyze(''' _f(int/*!*/ x, int/*?*/ y) {