Exemplo n.º 1
0
 public static void EmitYieldReturn(AbstractEmitterBlock block, IType returnType, MethodDeclaration methodDeclaration)
 {
     block.EndFunctionBlock();
     block.WriteComma();
     if (returnType.TypeArguments.Count > 0)
     {
         block.Write(BridgeTypes.ToJsName(returnType.TypeArguments[0], block.Emitter));
     }
     else
     {
         block.Write("System.Object");
     }
     if (methodDeclaration.Parameters.Count > 0)
     {
         block.WriteComma();
         AbstractMethodBlock.EmitMethodParameters(block, methodDeclaration.Parameters, methodDeclaration);
     }
     block.WriteCloseParentheses();
     block.WriteNewLine();
 }
Exemplo n.º 2
0
        public static void EmitMethodParameters(AbstractEmitterBlock block, IEnumerable <ParameterDeclaration> declarations, AstNode context)
        {
            bool needComma = false;

            EntityDeclaration entityDeclaration = context as EntityDeclaration;

            if (entityDeclaration != null)
            {
                if (!entityDeclaration.HasModifier(Modifiers.Static))
                {
                    block.WriteThis();
                    if (declarations.Any())
                    {
                        block.WriteComma();
                    }
                }
            }

            foreach (ParameterDeclaration p in declarations)
            {
                string name = p.Name;
                name = name.Replace(Bridge.Translator.Emitter.FIX_ARGUMENT_NAME, "");
                if (block.Emitter.LocalsNamesMap != null && block.Emitter.LocalsNamesMap.ContainsKey(name))
                {
                    name = block.Emitter.LocalsNamesMap[name];
                }

                if (needComma)
                {
                    block.WriteComma();
                }

                needComma = true;
                block.Write(name);
            }
        }