/// <inheritdoc/> protected override bool HandleDynamic(CodeParameterDeclarationExpression obj, Context ctx) { if (obj.CustomAttributes.Count > 0) { GeneralUtils.HandleCollection(obj.CustomAttributes.Cast <CodeAttributeDeclaration>(), ctx.HandlerProvider.AttributeDeclarationHandler, ctx); ctx.Writer.Write(" "); } if (obj is CodeParameterDeclarationExpressionExt objExt && objExt.IsVarargs) { ctx.Writer.Write("params "); } if (obj.Direction != FieldDirection.In) { //TODO c# 7 allows "in" with a different meaning from parameters without modifier (readonly reference) ctx.Writer.Write($"{CSharpKeywordsUtils.DirectionKeyword(obj.Direction)} "); } ctx.HandlerProvider.TypeReferenceHandler.Handle(obj.Type, ctx); ctx.Writer.Write($" {obj.Name.AsCsId()}"); if (obj is CodeParameterDeclarationExpressionExt objExt2 && objExt2.DefaultValue != null) { ctx.Writer.Write(" = "); ctx.HandlerProvider.ExpressionHandler.Handle(objExt2.DefaultValue, ctx); } return(true); }
/// <inheritdoc/> protected override bool HandleDynamic(CodeBinaryOperatorExpressionMore obj, Context ctx) { WrapIfNecessaryAndHandle(obj.LeftExpression, ctx); ctx.Writer.Write($" {CSharpKeywordsUtils.OperatorSymbol(obj.OperatorType)} "); WrapIfNecessaryAndHandle(obj.RightExpression, ctx); return(true); }
/// <inheritdoc/> protected override bool HandleDynamic(CodeDirectionExpression obj, Context ctx) { if (obj.Direction != FieldDirection.In) { ctx.Writer.Write($"{CSharpKeywordsUtils.DirectionKeyword(obj.Direction)} "); } ctx.HandlerProvider.ExpressionHandler.Handle(obj.Expression, ctx); return(true); }
/// <inheritdoc/> protected override bool HandleDynamic(CodeUnaryOperatorExpression obj, Context ctx) { string operatorSymbol = CSharpKeywordsUtils.UnaryOperatorSymbol(obj.Operator, out var isOperatorAfterExpression); if (!isOperatorAfterExpression) { ctx.Writer.Write(operatorSymbol); } WrapIfNecessaryAndHandle(obj.Expression, ctx); if (isOperatorAfterExpression) { ctx.Writer.Write(operatorSymbol); } return(true); }
/// <inheritdoc/> protected override void HandleProperty(CodeMemberProperty obj, Context ctx, bool isExt, CodeMemberPropertyExt objExt, bool doDefaultImplementation) { if (obj.PrivateImplementationType == null) { ctx.HandlerProvider.MemberAttributesHandler.Handle(obj.Attributes, ctx); } ctx.HandlerProvider.TypeReferenceHandler.Handle(obj.Type, ctx); ctx.Writer.Write(" "); if (obj.PrivateImplementationType == null) { ctx.Writer.Write(obj.Name.AsCsId()); } else { HandlePrivateImplementationTypeMemberName(obj.Name, obj.PrivateImplementationType, ctx); } ctx.Writer.NewLine(); ctx.Writer.IndentAndWriteLine("{", ctx); ctx.Indent(); if (obj.HasGet) { ctx.Writer.Indent(ctx); if (isExt && objExt.GetAccessibilityLevel != obj.Attributes.GetAccessibilityLevel() && obj.PrivateImplementationType == null) { ctx.Writer.Write($"{CSharpKeywordsUtils.AccessibilityLevelKeyword(objExt.GetAccessibilityLevel)} "); } ctx.Writer.Write("get"); if (doDefaultImplementation) { ctx.Writer.WriteLine(";"); } else { CSharpUtils.HandleStatementCollection(obj.GetStatements, ctx); } } if (obj.HasSet) { ctx.Writer.Indent(ctx); if (isExt && objExt.SetAccessibilityLevel != obj.Attributes.GetAccessibilityLevel() && obj.PrivateImplementationType == null) { ctx.Writer.Write($"{CSharpKeywordsUtils.AccessibilityLevelKeyword(objExt.SetAccessibilityLevel)} "); } ctx.Writer.Write("set"); if (doDefaultImplementation) { ctx.Writer.WriteLine(";"); } else { CSharpUtils.HandleStatementCollection(obj.SetStatements, ctx); } } ctx.Unindent(); ctx.Writer.IndentAndWrite("}", ctx); if (isExt && objExt.PropertyInitializer != null) { ctx.Writer.Write(" = "); ctx.HandlerProvider.ExpressionHandler.Handle(objExt.PropertyInitializer, ctx); ctx.Writer.Write(";"); } ctx.Writer.NewLine(); }
/// <inheritdoc/> protected override string GetShorthandOperatorSymbol(CodeBinaryOperatorTypeMore op) { return(op.CanBeShorthandOperator() ? CSharpKeywordsUtils.OperatorSymbol(op) : null); }
/// <inheritdoc/> protected override string GetAccessibilityLevelKeyword(AccessibilityLevel accessibilityLevel, Context ctx) { return(CSharpKeywordsUtils.AccessibilityLevelKeyword(accessibilityLevel)); }
/// <inheritdoc/> protected override string GetTypeKeywordString(Type baseType) { return(CSharpKeywordsUtils.GetKeywordFromType(baseType)); }