private void WriteExternAndSpaceIfNecessary(MethodDefinition method) { bool isExtern = method.IsExtern(); if (isExtern) { if (KeyWordWriter.Extern != null) { WriteKeyword(KeyWordWriter.Extern); WriteSpace(); } } }
protected void WriteMethod(MethodDefinition method) { membersStack.Push(method); bool writedOpenBrecket = false; try { Statement statement = method.Body != null && (method.Body.Instructions.Count > 0 || method.IsJustDecompileGenerated) ? GetStatement(method) : null; WriteMethodDeclaration(method); if (method.Body == null) { WriteEmptyMethodEndOfStatement(method); membersStack.Pop(); return; } // Empty block if (method.Body.Instructions.Count == 0 && !method.IsJustDecompileGenerated) { WriteBeginBlock(); WriteLine(); WriteEndBlock(GetMethodName(method)); membersStack.Pop(); return; } if (MethodContext != null && MethodContext.Method.IsConstructor && MethodContext.CtorInvokeExpression != null) { WriteBaseConstructorInvokation(MethodContext.CtorInvokeExpression); } bool isExtern = method.IsExtern(); int startIndex = 0; if (!method.IsAbstract && !isExtern) { startIndex = this.formatter.CurrentPosition; this.formatter.WriteStartBlock(); writedOpenBrecket = true; } WriteLine(); Write(statement); if ((KeyWordWriter.Sub != null) && (KeyWordWriter.Function != null) && (KeyWordWriter.Operator != null)) { var methodKeyWord = GetMethodKeyWord(method); WriteSpecialEndBlock(methodKeyWord); } if (!method.IsAbstract && !isExtern) { this.currentWritingInfo.MemberDefinitionToFoldingPositionMap[method] = new OffsetSpan(startIndex, formatter.CurrentPosition - 1); this.formatter.WriteEndBlock(); } } catch (Exception) { if (writedOpenBrecket) { this.formatter.WriteEndBlock(); } membersStack.Pop(); throw; } membersStack.Pop(); }