public IStmt Translate(InvocationExpressionSyntax expression, SemanticModel semanticModel, CSharpSyntaxVisitor <IStmt> visitor) { var symbol = semanticModel.GetSymbolInfo(expression).Symbol; if (symbol == null || !SymbolHelper.IsAssignableFrom(symbol, "Stack")) { return(null); } var arguments = expression.ArgumentList.Arguments; var exactSignatures = new Dictionary <string, string> { { "Push", "push" }, { "Pop", "pop" }, }; if (exactSignatures.ContainsKey(symbol.Name)) { var javaMethod = exactSignatures[symbol.Name]; return(new CallExpr { Expression = new MemberAccessExpr { ObjectExpr = visitor.Visit(ExtensionPointHelper.TryGetMemberOwner(expression.Expression)), MemberExpr = new IdentifierExpr { Identifier = javaMethod } }, Arguments = arguments.Select(visitor.Visit).ToArray() }); } return(null); }
public IStmt Translate(MemberAccessExpressionSyntax expression, SemanticModel semanticModel, CSharpSyntaxVisitor <IStmt> visitor) { var symbol = GetStringSymbol(semanticModel, expression); if (symbol == null) { return(null); } var memberToMethodMappings = new Dictionary <string, string> { { "Length", "length" } }; if (memberToMethodMappings.ContainsKey(symbol.Name)) { var targetMethod = memberToMethodMappings[symbol.Name]; return(new CallExpr { Expression = new MemberAccessExpr { ObjectExpr = visitor.Visit(ExtensionPointHelper.TryGetMemberOwner(expression)), MemberExpr = new IdentifierExpr { Identifier = targetMethod } }, Arguments = new IStmt[0] }); } return(null); }
public IStmt Translate(InvocationExpressionSyntax expression, SemanticModel semanticModel, CSharpSyntaxVisitor <IStmt> visitor) { var symbol = ModelExtensions.GetSymbolInfo(semanticModel, expression).Symbol; if (symbol == null) { return(null); } if (symbol.Name == "ToString") { return(new CallExpr { Expression = new MemberAccessExpr { ObjectExpr = new IdentifierExpr { Identifier = "String" }, MemberExpr = new IdentifierExpr { Identifier = "valueOf" } }, Arguments = new [] { visitor.Visit(ExtensionPointHelper.TryGetMemberOwner(expression.Expression)) } }); } return(null); }
public IStmt Translate(InvocationExpressionSyntax expression, SemanticModel semanticModel, CSharpSyntaxVisitor <IStmt> visitor) { var symbol = GetStringSymbol(semanticModel, expression); if (symbol == null) { return(null); } var arguments = expression.ArgumentList.Arguments; var exactSignatures = new Dictionary <string, string> { { "ToLower", "toLowerCase" }, { "ToUpper", "toUpperCase" }, { "EndsWith", "endsWith" }, { "StartsWith", "startsWith" }, { "IndexOf", "indexOf" }, { "Substring", "substring" }, { "Contains", "contains" } }; if (exactSignatures.ContainsKey(symbol.Name)) { var javaMethod = exactSignatures[symbol.Name]; return(new CallExpr { Expression = new MemberAccessExpr { ObjectExpr = visitor.Visit(ExtensionPointHelper.TryGetMemberOwner(expression.Expression)), MemberExpr = new IdentifierExpr { Identifier = javaMethod } }, Arguments = arguments.Select(visitor.Visit).ToArray() }); } if (symbol.Name == "IsNullOrEmpty") //string.IsNullOrEmpty(s) => s.isEmpty() { return(new CallExpr { Expression = new MemberAccessExpr { ObjectExpr = visitor.Visit(arguments.First()), MemberExpr = new IdentifierExpr { Identifier = "isEmpty" } }, Arguments = new IStmt[0] }); } return(null); }