Skip to content

Commit

Permalink
Migration: add FixBuilder support for enums
Browse files Browse the repository at this point in the history
Change-Id: I2ab1fa367d17f827cd229ebfa0f1e7a055134ed7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131944
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
  • Loading branch information
stereotype441 authored and commit-bot@chromium.org committed Jan 16, 2020
1 parent b0786ed commit f1df196
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 5 deletions.
4 changes: 3 additions & 1 deletion pkg/nnbd_migration/lib/src/fix_builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
4 changes: 0 additions & 4 deletions pkg/nnbd_migration/test/api_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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<void> test_enum() => super.test_enum();

@override
@FailingTest(issue: 'https://github.com/dart-lang/sdk/issues/40023')
Future<void> test_extension_nullableOnType_viaImplicitInvocation() =>
Expand Down
24 changes: 24 additions & 0 deletions pkg/nnbd_migration/test/fix_builder_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1040,6 +1040,30 @@ f() => 1.0;
visitSubexpression(findNode.doubleLiteral('1.0'), 'double');
}

Future<void> test_enum_ref_index() async {
await analyze('''
enum E { V }
_f(E e) => e.index;
''');
visitSubexpression(findNode.prefixed('e.index'), 'int');
}

Future<void> test_enum_ref_value() async {
await analyze('''
enum E { V }
_f() => E.V;
''');
visitSubexpression(findNode.prefixed('E.V'), 'E');
}

Future<void> test_enum_ref_values() async {
await analyze('''
enum E { V }
_f() => E.values;
''');
visitSubexpression(findNode.prefixed('E.values'), 'List<E>');
}

Future<void> test_expressionStatement() async {
await analyze('''
_f(int/*!*/ x, int/*?*/ y) {
Expand Down

0 comments on commit f1df196

Please sign in to comment.