[Pigeon] Fix Obj-C generation cast bug (#375)

This commit is contained in:
Gary Qian
2021-06-08 09:17:21 -07:00
committed by GitHub
parent 9fadcec5de
commit 1f021ea652
2 changed files with 31 additions and 1 deletions

View File

@ -446,7 +446,7 @@ static NSDictionary<NSString*, id>* 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)};');

View File

@ -69,6 +69,36 @@ void main() {
expect(code, contains(' PREFIXEnum1Two = 1,'));
});
test('gen one class source with enum', () {
final Root root = Root(
apis: <Api>[],
classes: <Class>[
Class(
name: 'Foobar',
fields: <Field>[
Field(name: 'field1', dataType: 'String'),
Field(name: 'enum1', dataType: 'Enum1'),
],
),
],
enums: <Enum>[
Enum(
name: 'Enum1',
members: <String>[
'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>[
Api(name: 'Api', location: ApiLocation.host, methods: <Method>[