public static ExpressionSyntax VbCoerceToString(ExpressionSyntax csNode, TypeInfo typeInfo)
 {
     return(typeInfo.Type?.SpecialType switch
     {
         SpecialType.System_String => csNode,
         SpecialType.System_Char => SyntaxFactory.InvocationExpression(ValidSyntaxFactory.MemberAccess(csNode, nameof(ToString))),
         _ => NewStringFromArg(csNode)
     });
Пример #2
0
        private async Task <ExpressionSyntax> ConvertToLikeOperatorAsync(VBSyntax.BinaryExpressionSyntax node, KnownMethod member)
        {
            var(lhs, rhs) = await AcceptSidesAsync(node);

            var compareText = ValidSyntaxFactory.MemberAccess("CompareMethod", _visualBasicEqualityComparison.OptionCompareTextCaseInsensitive ? "Text" : "Binary");

            _visualBasicEqualityComparison.ExtraUsingDirectives.Add("Microsoft.VisualBasic");
            return(member.Invoke(_visualBasicEqualityComparison.ExtraUsingDirectives, lhs, rhs, compareText));
        }
    private ExpressionSyntax CreateCast(ExpressionSyntax csNode, ITypeSymbol vbConvertedType)
    {
        var typeName = GetTypeSyntax(vbConvertedType);

        if (csNode is CastExpressionSyntax cast && cast.Type.IsEquivalentTo(typeName))
        {
            return(csNode);
        }

        return(ValidSyntaxFactory.CastExpression(typeName, csNode));
    }
 public MethodDeclarationSyntax AsInstanceMethod(string functionName) => ValidSyntaxFactory.CreateParameterlessMethod(functionName, _returnType, _block);