public static void WriteResolveResult(ResolveResult rr, AbstractEmitterBlock block) { if (rr is ConversionResolveResult) { rr = ((ConversionResolveResult)rr).Input; } if (rr is TypeOfResolveResult) { block.Write(BridgeTypes.ToJsName(((TypeOfResolveResult)rr).ReferencedType, block.Emitter)); } else if (rr is ArrayCreateResolveResult) { TypeSystemAstBuilder typeBuilder = new TypeSystemAstBuilder(new CSharpResolver(block.Emitter.Resolver.Compilation)); var expression = typeBuilder.ConvertConstantValue(rr) as ArrayCreateExpression; new ArrayCreateBlock(block.Emitter, expression, (ArrayCreateResolveResult)rr).Emit(); } else if (rr is MemberResolveResult) { var mrr = (MemberResolveResult)rr; if (mrr.IsCompileTimeConstant && mrr.Member.DeclaringType.Kind == TypeKind.Enum) { var typeDef = mrr.Member.DeclaringType as DefaultResolvedTypeDefinition; if (typeDef != null) { var enumMode = Helpers.EnumEmitMode(typeDef); if ((block.Emitter.Validator.IsExternalType(typeDef) && enumMode == -1) || enumMode == 2) { block.WriteScript(mrr.ConstantValue); return; } if (enumMode >= 3 && enumMode < 7) { string enumStringName = mrr.Member.Name; var attr = Helpers.GetInheritedAttribute(mrr.Member, Translator.Bridge_ASSEMBLY + ".NameAttribute"); if (attr != null) { enumStringName = block.Emitter.GetEntityName(mrr.Member); } else { switch (enumMode) { case 3: enumStringName = Object.Net.Utilities.StringUtils.ToLowerCamelCase(mrr.Member.Name); break; case 4: break; case 5: enumStringName = enumStringName.ToLowerInvariant(); break; case 6: enumStringName = enumStringName.ToUpperInvariant(); break; } } block.WriteScript(enumStringName); } else { block.WriteScript(rr.ConstantValue); } } } else { block.WriteScript(rr.ConstantValue); } } else { block.WriteScript(rr.ConstantValue); } }