protected override void GenerateInner(CodeGenerator generator) { generator.OutputIdentifier(TokenType.Identifier, ArgumentName); generator.Write(TokenType.Punctuation, ':'); generator.Write(TokenType.Space, ' '); Value.Generate(generator); }
protected override void GenerateInner(CodeGenerator generator) { Modifiers.Generate(generator); generator.Write(TokenType.Keyword, "enum"); generator.Write(TokenType.Space, ' '); generator.OutputIdentifier(TokenType.TypeIdentifier, Name); if (UnderlyingType != null) { generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Punctuation, ':'); generator.Write(TokenType.Space, ' '); UnderlyingType.Generate(generator); } if (Members.Count > 0) { generator.WriteOpeningBrace(); generator.Indent++; foreach (var member in Members) { member.Generate(generator); } generator.Indent--; generator.WriteClosingBrace(); } else { generator.WriteEmptyBlock(); } }
protected override void GenerateInner(CodeGenerator generator, CodeStatementEmitOptions emitOptions) { generator.WriteBlankLineBeforeEnteringBlock(); generator.EnterLocalScope(); generator.Write(TokenType.Keyword, "foreach"); generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Punctuation, '('); Declaration.Type.Generate(generator); generator.Write(TokenType.Space, ' '); generator.OutputIdentifier(TokenType.Identifier, Declaration.Name); generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Keyword, "in"); generator.Write(TokenType.Space, ' '); Expression.Generate(generator); generator.Write(TokenType.Punctuation, ')'); if (Statements.Count > 0) { generator.WriteOpeningBrace(); generator.Indent++; generator.EnterLocalScope(); Statements.ReserveLocals(generator, default(CodeStatementEmitOptions)); Statements.Generate(generator, default(CodeStatementEmitOptions)); generator.ExitLocalScope(); generator.Indent--; generator.WriteClosingBrace(); } else { generator.WriteEmptyBlock(); } generator.ExitLocalScope(); }
protected override void GenerateInner(CodeGenerator generator, CodeCompositeTypeDeclaration enclosingType) { Modifiers.Generate(generator); generator.OutputIdentifier(TokenType.Identifier, enclosingType.Name); generator.Write(TokenType.Punctuation, '('); Parameters.GenerateCommaSeparated(generator); generator.Write(TokenType.Punctuation, ')'); if (Initializer != null) { Initializer.Generate(generator); } if (Statements.Count > 0) { generator.WriteOpeningBrace(); generator.Indent++; generator.EnterLocalScope(); foreach (var parameter in Parameters) { generator.ReserveLocal(parameter.Name); } Statements.Generate(generator, default(CodeStatementEmitOptions)); generator.ExitLocalScope(); generator.Indent--; generator.WriteClosingBrace(); } else { generator.WriteEmptyBlock(); } }
protected override void GenerateInner(CodeGenerator generator) { generator.Write(TokenType.Keyword, "new"); generator.Write(TokenType.Space, ' '); if (CreateType != null) { CreateType.Generate(generator); } generator.Write(TokenType.Space, ' '); generator.WriteLine(TokenType.Punctuation, '{'); generator.Indent++; for (int i = 0; i < Members.Count; i++) { var member = Members[i]; generator.OutputIdentifier(TokenType.Identifier, member.Key); generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Operator, '='); generator.Write(TokenType.Space, ' '); member.Value.Generate(generator); generator.WriteLine(TokenType.Punctuation, i < Members.Count - 1 ? "," : ""); } generator.Indent--; generator.Write(TokenType.Punctuation, '}'); }
protected override void GenerateInner(CodeGenerator generator, CodeCompositeTypeDeclaration enclosingType) { generator.GenerateAttributes(ReturnTypeCustomAttributes, "return"); if (ExplicitImplementationType == null) { Modifiers.Generate(generator); } ReturnType.Generate(generator); generator.Write(TokenType.Space, ' '); if (ExplicitImplementationType != null) { ExplicitImplementationType.Generate(generator); generator.Write(TokenType.Punctuation, '.'); } generator.OutputIdentifier(TokenType.Identifier, Name); generator.OutputTypeParameters(TypeParameters); generator.Write(TokenType.Punctuation, '('); Parameters.GenerateCommaSeparated(generator); generator.Write(TokenType.Punctuation, ')'); foreach (var typeParameter in TypeParameters) { typeParameter.GenerateConstraints(generator); } if (enclosingType.IsInterface || (Modifiers & CodeMemberModifiers.ScopeMask) == CodeMemberModifiers.Abstract) { generator.WriteLine(TokenType.Punctuation, ';'); } else { if (Statements.Count > 0) { generator.WriteOpeningBrace(); generator.Indent++; generator.EnterLocalScope(); foreach (var parameter in Parameters) { generator.ReserveLocal(parameter.Name); } Statements.Generate(generator, default(CodeStatementEmitOptions)); generator.ExitLocalScope(); generator.Indent--; generator.WriteClosingBrace(); } else { generator.WriteEmptyBlock(); } } }
public void Generate(CodeGenerator generator) { generator.EnterElement(this); Comments.Generate(generator); generator.Write(TokenType.Keyword, "namespace"); generator.Write(TokenType.Space, ' '); var names = Name.Split('.'); generator.OutputIdentifier(TokenType.Identifier, names[0]); for (int i = 1; i < names.Length; i++) { generator.Write(TokenType.Punctuation, '.'); generator.OutputIdentifier(TokenType.Identifier, names[i]); } generator.WriteOpeningBrace(); generator.Indent++; Usings.Generate(generator); Usings.Add(new CodeUsingImport(Name)); generator.PushUsingSet(Usings); bool needsBlankLine = false; foreach (var type in Types) { if (needsBlankLine) { generator.WriteLine(); } type.Generate(generator); needsBlankLine = true; } generator.PopUsingSet(); generator.Indent--; generator.WriteClosingBrace(); generator.ExitElement(); }
protected override void GenerateInner(CodeGenerator generator) { generator.Write(TokenType.Keyword, "delegate"); generator.Write(TokenType.Space, ' '); ReturnType.Generate(generator); generator.Write(TokenType.Space, ' '); generator.OutputIdentifier(TokenType.TypeIdentifier, Name); generator.Write(TokenType.Punctuation, '('); Parameters.GenerateCommaSeparated(generator); generator.WriteLine(TokenType.Punctuation, ");"); }
public void Generate(CodeGenerator generator) { generator.EnterElement(this); if (CustomAttributes.Count > 0) { generator.GenerateAttributes(CustomAttributes, null, true); } Direction.Generate(generator); Type.Generate(generator); generator.Write(TokenType.Space, ' '); generator.OutputIdentifier(TokenType.Identifier, Name); generator.ExitElement(); }
protected override void GenerateInner(CodeGenerator generator) { bool needsTarget = true; if (TargetObject is CodeThisReferenceExpression) { needsTarget = generator.ContainsLocalByName(MethodName); } if (needsTarget) { if (TargetObject.Precedence > PrecedenceGroup.Primary) { generator.Write(TokenType.Punctuation, '('); } TargetObject.Generate(generator); if (TargetObject.Precedence > PrecedenceGroup.Primary) { generator.Write(TokenType.Punctuation, ')'); } generator.Write(TokenType.Punctuation, '.'); } generator.OutputIdentifier(TokenType.Identifier, MethodName); if (TypeArguments.Count > 0) { generator.Write(TokenType.Punctuation, '<'); bool first = true; foreach (var typeArgument in TypeArguments) { if (first) { first = false; } else { generator.Write(TokenType.Punctuation, ','); generator.Write(TokenType.Space, ' '); } typeArgument.Generate(generator); } generator.Write(TokenType.Punctuation, '>'); } }
protected override void GenerateInner(CodeGenerator generator, CodeStatementEmitOptions emitOptions) { generator.WriteBlankLineBeforeEnteringBlock(); generator.Write(TokenType.Keyword, "try"); generator.WriteOpeningBrace(); generator.Indent++; generator.EnterLocalScope(); TryStatements.ReserveLocals(generator, default(CodeStatementEmitOptions)); TryStatements.Generate(generator, default(CodeStatementEmitOptions)); generator.ExitLocalScope(); generator.Indent--; foreach (var catchClause in CatchClauses) { generator.WriteMiddleClosingBrace(); generator.Write(TokenType.Keyword, "catch"); generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Punctuation, '('); catchClause.CatchExceptionType.Generate(generator); generator.Write(TokenType.Space, ' '); generator.OutputIdentifier(TokenType.Identifier, catchClause.LocalName); generator.Write(TokenType.Punctuation, ')'); generator.WriteOpeningBrace(); generator.Indent++; generator.EnterLocalScope(); generator.ReserveLocal(catchClause.LocalName); catchClause.Statements.ReserveLocals(generator, default(CodeStatementEmitOptions)); catchClause.Statements.Generate(generator, default(CodeStatementEmitOptions)); generator.ExitLocalScope(); generator.Indent--; } if (FinallyStatements.Count > 0) { generator.WriteMiddleClosingBrace(); generator.Write(TokenType.Keyword, "finally"); generator.WriteOpeningBrace(); generator.Indent++; generator.EnterLocalScope(); FinallyStatements.ReserveLocals(generator, default(CodeStatementEmitOptions)); FinallyStatements.Generate(generator, default(CodeStatementEmitOptions)); generator.ExitLocalScope(); generator.Indent--; } generator.WriteClosingBrace(); }
protected override void GenerateInner(CodeGenerator generator, CodeCompositeTypeDeclaration enclosingType) { Modifiers.Generate(generator); Type.Generate(generator); generator.Write(TokenType.Space, ' '); generator.OutputIdentifier(TokenType.Identifier, Name); if (Initializer != null) { generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Punctuation, '='); generator.Write(TokenType.Space, ' '); Initializer.Generate(generator); } generator.WriteLine(TokenType.Punctuation, ';'); }
protected override void GenerateInner(CodeGenerator generator, CodeCompositeTypeDeclaration enclosingType) { if (ExplicitImplementationType == null) { Modifiers.Generate(generator); } generator.Write(TokenType.Keyword, "event"); generator.Write(TokenType.Space, ' '); Type.Generate(generator); if (ExplicitImplementationType != null) { ExplicitImplementationType.Generate(generator); generator.Write(TokenType.Punctuation, '.'); } generator.OutputIdentifier(TokenType.Identifier, Name); generator.WriteLine(TokenType.Punctuation, ';'); }
protected override void GenerateInner(CodeGenerator generator, CodeStatementEmitOptions emitOptions) { if (!generator.JustWroteOpeningBrace && !generator.JustWroteVariableDeclaration && (emitOptions & CodeStatementEmitOptions.OmitSemiColon) == 0) { generator.WriteLine(); } generator.WriteBlankLineIfJustExitedBlock(); Type.Generate(generator); generator.Write(TokenType.Space, ' '); generator.OutputIdentifier(TokenType.Identifier, Name); if (InitExpression != null) { generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Punctuation, '='); generator.Write(TokenType.Space, ' '); InitExpression.Generate(generator); } generator.WriteStatementEnd(emitOptions); generator.JustWroteVariableDeclaration = true; }
public void Generate(CodeGenerator generator) { generator.EnterElement(this); StartDirectives.Generate(generator); Comments.Generate(generator); generator.GenerateAttributes(CustomAttributes); generator.OutputIdentifier(TokenType.Identifier, Name); if (Initializer != null) { generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Punctuation, '='); generator.Write(TokenType.Space, ' '); Initializer.Generate(generator); } generator.WriteLine(TokenType.Punctuation, ','); EndDirectives.Generate(generator); generator.ExitElement(); }
protected override void GenerateInner(CodeGenerator generator) { bool needsTarget = true; if (TargetObject is CodeThisReferenceExpression) { needsTarget = generator.ContainsLocalByName(FieldName); } if (needsTarget) { if (TargetObject.Precedence > PrecedenceGroup.Primary) { generator.Write(TokenType.Punctuation, '('); } TargetObject.Generate(generator); if (TargetObject.Precedence > PrecedenceGroup.Primary) { generator.Write(TokenType.Punctuation, ')'); } generator.Write(TokenType.Punctuation, '.'); } generator.OutputIdentifier(TokenType.Identifier, FieldName); }
protected override void GenerateInner(CodeGenerator generator) { bool implicitlyTyped = true; foreach (var parameter in Parameters) { if (parameter.Type.RawName != "var") { implicitlyTyped = false; } } generator.EnterLocalScope(); if (implicitlyTyped) { if (Parameters.Count == 1) { generator.OutputIdentifier(TokenType.Identifier, Parameters[0].Name); } else { generator.Write(TokenType.Punctuation, '('); bool first = true; foreach (var parameter in Parameters) { if (first) { first = false; } else { generator.Write(TokenType.Punctuation, ','); generator.Write(TokenType.Space, ' '); } generator.OutputIdentifier(TokenType.Identifier, parameter.Name); } generator.Write(TokenType.Punctuation, ')'); } } else { generator.Write(TokenType.Punctuation, '('); Parameters.GenerateCommaSeparated(generator); generator.Write(TokenType.Punctuation, ')'); } generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Operator, "=>"); generator.Write(TokenType.Space, ' '); if (ExpressionBody != null) { ExpressionBody.Generate(generator); } else { generator.WriteOpeningBrace(); generator.Indent++; Statements.Generate(generator, default(CodeStatementEmitOptions)); generator.Indent--; generator.WriteClosingBrace(true); } generator.ExitLocalScope(); }
protected override void GenerateInner(CodeGenerator generator) { Modifiers.Generate(generator); if (IsPartial) { generator.Write(TokenType.Keyword, "partial"); generator.Write(TokenType.Space, ' '); } generator.Write(TokenType.Keyword, Keyword); generator.Write(TokenType.Space, ' '); generator.OutputIdentifier(TokenType.TypeIdentifier, Name); generator.OutputTypeParameters(TypeParameters); var firstTypeRef = true; foreach (CodeTypeReference typeRef in BaseTypes) { if (firstTypeRef) { generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Punctuation, ':'); generator.Write(TokenType.Space, ' '); firstTypeRef = false; } else { generator.Write(TokenType.Punctuation, ','); generator.Write(TokenType.Space, ' '); } typeRef.Generate(generator); } foreach (var typeParameter in TypeParameters) { typeParameter.GenerateConstraints(generator); } if (Members.Count > 0) { generator.WriteOpeningBrace(); generator.Indent++; CodeCompositeTypeMember previousMember = null; var sortedMembers = GetMembersSortedByCategory(); foreach (var member in sortedMembers) { if (previousMember != null && (previousMember.Category != member.Category || ShouldLineSeparateIndividualMember(previousMember.Category))) { generator.WriteLine(); } member.Generate(generator, this); previousMember = member; } generator.Indent--; generator.WriteClosingBrace(); } else { generator.WriteEmptyBlock(); } }