Index: lib/message_generator.dart |
diff --git a/lib/message_generator.dart b/lib/message_generator.dart |
index 40c60280e40684364bbf7f5dab5b6cad43ddb939..4299f11a935afb55296634466eee0218d4d41b4c 100644 |
--- a/lib/message_generator.dart |
+++ b/lib/message_generator.dart |
@@ -9,19 +9,19 @@ class MessageGenerator extends ProtobufContainer { |
/// |
/// First searches [declaredMixins], then internal mixins declared by |
/// [findMixin]. |
- static PbMixin _getMixin(DescriptorProto desc, |
+ static PbMixin _getMixin(DescriptorProto desc, FileDescriptorProto file, |
Map<String, PbMixin> declaredMixins, PbMixin defaultMixin) { |
- PbMixin getMixinByName(String name) { |
- if (name.isEmpty) return null; // don't use a mixin (override any default) |
- return declaredMixins[name] ?? findMixin(name); |
- } |
- |
if (!desc.hasOptions() || !desc.options.hasExtension(Dart_options.mixin)) { |
return defaultMixin; |
} |
String name = desc.options.getExtension(Dart_options.mixin); |
- return getMixinByName(name); |
+ if (name.isEmpty) return null; // don't use any mixins (override default) |
+ var mixin = declaredMixins[name] ?? findMixin(name); |
+ if (mixin == null) { |
+ throw throw '${desc.name} in ${file.name}: mixin "$name" not found'; |
frederikmutzel
2016/06/28 08:15:13
double throw
skybrian
2016/06/28 08:40:34
Fixed.
|
+ } |
+ return mixin; |
} |
final String classname; |
@@ -49,7 +49,8 @@ class MessageGenerator extends ProtobufContainer { |
: (parent.fqname == '.' |
? '.${descriptor.name}' |
: '${parent.fqname}.${descriptor.name}'), |
- mixin = _getMixin(descriptor, declaredMixins, defaultMixin) { |
+ mixin = _getMixin(descriptor, parent.fileGen.descriptor, declaredMixins, |
+ defaultMixin) { |
for (EnumDescriptorProto e in _descriptor.enumType) { |
_enumGenerators.add(new EnumGenerator(e, this)); |
} |