resolve method
void
resolve(
- GenerationContext ctx
Implementation
void resolve(GenerationContext ctx) {
if (_resolved) throw StateError('message already resolved');
_resolved = true;
final reserved = mixin?.findReservedNames() ?? const <String>[];
final members = messageMemberNames(
_descriptor,
classname,
_usedTopLevelNames,
reserved: reserved,
lowercaseGroupNames: false,
);
fieldList = <ProtobufField>[];
for (final names in members.fieldNames) {
final descriptor = names.descriptor;
ProtobufField field;
if (descriptor.hasOneofIndex() && !descriptor.proto3Optional) {
field = ProtobufField.message(
names,
this,
_oneofFeatures[descriptor.oneofIndex],
ctx,
);
_oneofFields[field.descriptor.oneofIndex].add(field);
} else {
field = ProtobufField.message(names, this, features, ctx);
}
fieldList.add(field);
}
_oneofNames = members.oneofNames;
for (final m in _messageGenerators) {
m.resolve(ctx);
}
for (final x in _extensionGenerators) {
x.resolve(ctx);
}
}