Пример #1
0
        /// <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);
        }
Пример #2
0
 /// <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);
 }
Пример #3
0
 /// <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);
 }
Пример #4
0
        /// <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();
 }
Пример #6
0
 /// <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));
 }
Пример #8
0
 /// <inheritdoc/>
 protected override string GetTypeKeywordString(Type baseType)
 {
     return(CSharpKeywordsUtils.GetKeywordFromType(baseType));
 }