@Override public Expression rewriteExpression(Expression node, Void context, ExpressionTreeRewriter<Void> treeRewriter) { return treeRewriter.defaultRewrite(node, context); }
@Override public Expression rewriteExpression(Expression node, Void context, ExpressionTreeRewriter<Void> treeRewriter) { if (expressionToSymbols.containsKey(node)) { return expressionToSymbols.get(node).toSymbolReference(); } Expression translated = expressionToExpressions.getOrDefault(node, node); return treeRewriter.defaultRewrite(translated, context); } }, mapped);
@Override public Expression rewriteLambdaExpression(LambdaExpression node, Context context, ExpressionTreeRewriter<Context> treeRewriter) { return treeRewriter.defaultRewrite(node, new Context(true)); } }, expression, new Context(false));
@Override public Expression rewriteLambdaExpression(LambdaExpression node, Context context, ExpressionTreeRewriter<Context> treeRewriter) { return treeRewriter.defaultRewrite(node, new Context(true)); } }, expression, new Context(false));
@Override public Expression rewriteExpression(Expression node, Void context, ExpressionTreeRewriter<Void> treeRewriter) { Expression rewrittenExpression = treeRewriter.defaultRewrite(node, context); return coerceIfNecessary(node, rewrittenExpression); }
@Override public Expression rewriteLambdaExpression(LambdaExpression node, Void context, ExpressionTreeRewriter<Void> treeRewriter) { for (LambdaArgumentDeclaration argument : node.getArguments()) { String argumentName = argument.getName().getValue(); // Symbol names are unique. As a result, a symbol should never be excluded multiple times. checkArgument(!excludedNames.contains(argumentName)); excludedNames.add(argumentName); } Expression result = treeRewriter.defaultRewrite(node, context); for (LambdaArgumentDeclaration argument : node.getArguments()) { excludedNames.remove(argument.getName().getValue()); } return result; } }
@Override public Expression rewriteExpression(Expression expression, Void context, ExpressionTreeRewriter<Void> treeRewriter) { Type target = coercions.get(NodeRef.of(expression)); Expression rewritten = treeRewriter.defaultRewrite(expression, null); if (target != null) { rewritten = new Cast( rewritten, target.getTypeSignature().toString(), false, typeOnlyCoercions.contains(NodeRef.of(expression))); } return rewritten; } }
@Override public Expression rewriteExpression(Expression node, Void context, ExpressionTreeRewriter<Void> treeRewriter) { Expression rewrittenExpression = treeRewriter.defaultRewrite(node, context); // cast expression if coercion is registered Type coercion = analysis.getCoercion(node); if (coercion != null) { rewrittenExpression = new Cast( rewrittenExpression, coercion.getTypeSignature().toString(), false, analysis.isTypeOnlyCoercion(node)); } return rewrittenExpression; }
@Override public Expression rewriteDereferenceExpression(DereferenceExpression node, Void context, ExpressionTreeRewriter<Void> treeRewriter) { if (analysis.isColumnReference(node)) { return rewriteExpression(node, context, treeRewriter); } Expression rewrittenExpression = treeRewriter.defaultRewrite(node, context); // cast expression if coercion is registered Type coercion = analysis.getCoercion(node); if (coercion != null) { rewrittenExpression = new Cast(rewrittenExpression, coercion.getTypeSignature().toString()); } return rewrittenExpression; } }, parsedExpression);
@Override public Expression rewriteExpression(Expression node, Void context, ExpressionTreeRewriter<Void> treeRewriter) { // convert expression to qualified name reference (containing a symbol) if rewrite registered Expression rewrittenExpression; Symbol symbol = expressionMappings.get(node); if (symbol != null) { rewrittenExpression = new QualifiedNameReference(symbol.toQualifiedName()); } else { rewrittenExpression = treeRewriter.defaultRewrite(node, context); } return rewrittenExpression; } }, mapped);
@Override public Expression rewriteExpression(Expression node, Void context, ExpressionTreeRewriter<Void> treeRewriter) { Expression rewrittenExpression = treeRewriter.defaultRewrite(node, context); // cast expression if coercion is registered Type coerceToType = coercions.get(node); if (coerceToType != null) { rewrittenExpression = new Cast(rewrittenExpression, coerceToType.getTypeSignature().toString()); } return rewrittenExpression; } }, expression);
@Override public Expression rewriteExpression(Expression node, Void context, ExpressionTreeRewriter<Void> treeRewriter) { Expression rewrittenExpression = treeRewriter.defaultRewrite(node, context); // cast expression if coercion is registered Type coercion = analysis.getCoercion(node); if (coercion != null) { Type type = analysis.getType(node); rewrittenExpression = new Cast( rewrittenExpression, coercion.getTypeSignature().toString(), false, isTypeOnlyCoercion(type.getTypeSignature(), coercion.getTypeSignature())); } return rewrittenExpression; }
@Override public Expression rewriteExpression(Expression node, Void context, ExpressionTreeRewriter<Void> treeRewriter) { Expression rewrittenExpression = treeRewriter.defaultRewrite(node, context); // cast expression if coercion is registered Type type = analysis.getType(node); Type coercion = analysis.getCoercion(node); if (coercion != null) { rewrittenExpression = new Cast( rewrittenExpression, coercion.getTypeSignature().toString(), false, isTypeOnlyCoercion(type.getTypeSignature(), coercion.getTypeSignature())); } return rewrittenExpression; }