token = typedef_tokengen --;
else
token = typeref_tokengen --;
+ } else if (member is EnumBuilder) {
+ token = GetPseudoToken ((member as EnumBuilder).GetTypeBuilder(), create_open_instance);
+ dict[member] = token;
+ // n.b. don't register with the runtime, the TypeBuilder already did it.
+ return token;
} else if (member is ConstructorBuilder) {
if (member.Module == this && !(member as ConstructorBuilder).TypeBuilder.ContainsGenericParameters)
token = methoddef_tokengen --;
}
internal int GetToken (MemberInfo member, bool create_open_instance) {
- if (member is TypeBuilderInstantiation || member is FieldOnTypeBuilderInst || member is ConstructorOnTypeBuilderInst || member is MethodOnTypeBuilderInst || member is SymbolType || member is FieldBuilder || member is TypeBuilder || member is ConstructorBuilder || member is MethodBuilder || member is GenericTypeParameterBuilder)
+ if (member is TypeBuilderInstantiation || member is FieldOnTypeBuilderInst || member is ConstructorOnTypeBuilderInst || member is MethodOnTypeBuilderInst || member is SymbolType || member is FieldBuilder || member is TypeBuilder || member is ConstructorBuilder || member is MethodBuilder || member is GenericTypeParameterBuilder ||
+ member is EnumBuilder)
return GetPseudoToken (member, create_open_instance);
return getToken (this, member, create_open_instance);
}
finished = (member as FieldBuilder).RuntimeResolve ();
} else if (member is TypeBuilder) {
finished = (member as TypeBuilder).RuntimeResolve ();
+ } else if (member is EnumBuilder) {
+ finished = (member as EnumBuilder).RuntimeResolve ();
} else if (member is ConstructorBuilder) {
finished = (member as ConstructorBuilder).RuntimeResolve ();
} else if (member is MethodBuilder) {
MONO_REQ_GC_UNSAFE_MODE;
g_assert (!MONO_HANDLE_IS_NULL (obj));
+ g_assert (strcmp (mono_handle_class (obj)->name, "EnumBuilder"));
dynamic_image_lock (assembly);
MonoObject *prev = (MonoObject *)mono_g_hash_table_lookup (assembly->tokens, GUINT_TO_POINTER (token));
if (prev) {
MonoReflectionSigHelperHandle s = MONO_HANDLE_CAST (MonoReflectionSigHelper, obj);
token = MONO_TOKEN_SIGNATURE | mono_image_get_sighelper_token (assembly, s, error);
return_val_if_nok (error, 0);
- } else if (strcmp (klass->name, "EnumBuilder") == 0) {
- MonoType *type = mono_reflection_type_handle_mono_type (MONO_HANDLE_CAST (MonoReflectionType, obj), error);
- return_val_if_nok (error, 0);
- token = mono_metadata_token_from_dor (
- mono_image_typedef_or_ref (assembly, type));
} else {
g_error ("requested token for %s\n", klass->name);
}