diff --git a/packages/pigeon/lib/objc_generator.dart b/packages/pigeon/lib/objc_generator.dart index f736c9fd53..1148ecc041 100644 --- a/packages/pigeon/lib/objc_generator.dart +++ b/packages/pigeon/lib/objc_generator.dart @@ -446,7 +446,7 @@ static NSDictionary* wrapResult(NSDictionary *result, FlutterErro for (final Field field in klass.fields) { if (enumNames.contains(field.dataType)) { indent.writeln( - '$resultName.${field.name} = (int)${_dictGetter(classNames, 'dict', field, options.prefix)};'); + '$resultName.${field.name} = [${_dictGetter(classNames, 'dict', field, options.prefix)} integerValue];'); } else { indent.writeln( '$resultName.${field.name} = ${_dictGetter(classNames, 'dict', field, options.prefix)};'); diff --git a/packages/pigeon/test/objc_generator_test.dart b/packages/pigeon/test/objc_generator_test.dart index 6c762f95ba..7008c2f79d 100644 --- a/packages/pigeon/test/objc_generator_test.dart +++ b/packages/pigeon/test/objc_generator_test.dart @@ -69,6 +69,36 @@ void main() { expect(code, contains(' PREFIXEnum1Two = 1,')); }); + test('gen one class source with enum', () { + final Root root = Root( + apis: [], + classes: [ + Class( + name: 'Foobar', + fields: [ + Field(name: 'field1', dataType: 'String'), + Field(name: 'enum1', dataType: 'Enum1'), + ], + ), + ], + enums: [ + Enum( + name: 'Enum1', + members: [ + 'one', + 'two', + ], + ) + ], + ); + final StringBuffer sink = StringBuffer(); + generateObjcSource(ObjcOptions(header: 'foo.h'), root, sink); + final String code = sink.toString(); + expect(code, contains('#import "foo.h"')); + expect(code, contains('@implementation Foobar')); + expect(code, contains('result.enum1 = [dict[@"enum1"] integerValue];')); + }); + test('gen one api header', () { final Root root = Root(apis: [ Api(name: 'Api', location: ApiLocation.host, methods: [