Search in sources :

Example 36 with BLangSimpleVarRef

use of org.wso2.ballerinalang.compiler.tree.expressions.BLangSimpleVarRef in project ballerina by ballerina-lang.

the class Desugar method createInvocationFromTableExpr.

private BLangInvocation createInvocationFromTableExpr(BLangTableQueryExpression tableQueryExpression) {
    List<BLangExpression> args = new ArrayList<>();
    List<BType> retTypes = new ArrayList<>();
    String functionName = QUERY_TABLE_WITHOUT_JOIN_CLAUSE;
    // Order matters, because these are the args for a function invocation.
    args.add(getSQLPreparedStatement(tableQueryExpression));
    args.add(getFromTableVarRef(tableQueryExpression));
    // BLangTypeofExpr
    retTypes.add(tableQueryExpression.type);
    BLangSimpleVarRef joinTable = getJoinTableVarRef(tableQueryExpression);
    if (joinTable != null) {
        args.add(joinTable);
        functionName = QUERY_TABLE_WITH_JOIN_CLAUSE;
    }
    args.add(getSQLStatementParameters(tableQueryExpression));
    args.add(getReturnType(tableQueryExpression));
    return createInvocationNode(functionName, args, retTypes);
}
Also used : BLangSimpleVarRef(org.wso2.ballerinalang.compiler.tree.expressions.BLangSimpleVarRef) BType(org.wso2.ballerinalang.compiler.semantics.model.types.BType) ArrayList(java.util.ArrayList) BLangXMLQuotedString(org.wso2.ballerinalang.compiler.tree.expressions.BLangXMLQuotedString) BLangExpression(org.wso2.ballerinalang.compiler.tree.expressions.BLangExpression)

Example 37 with BLangSimpleVarRef

use of org.wso2.ballerinalang.compiler.tree.expressions.BLangSimpleVarRef in project ballerina by ballerina-lang.

the class Desugar method createAssignmentStmt.

// TODO: Same function is used in symbol enter. Refactor this to reuse the same function.
private StatementNode createAssignmentStmt(BLangVariable variable) {
    BLangSimpleVarRef varRef = (BLangSimpleVarRef) TreeBuilder.createSimpleVariableReferenceNode();
    varRef.pos = variable.pos;
    varRef.variableName = variable.name;
    varRef.symbol = variable.symbol;
    varRef.type = variable.type;
    varRef.pkgAlias = (BLangIdentifier) TreeBuilder.createIdentifierNode();
    BLangAssignment assignmentStmt = (BLangAssignment) TreeBuilder.createAssignmentNode();
    assignmentStmt.expr = variable.expr;
    assignmentStmt.pos = variable.pos;
    assignmentStmt.addVariable(varRef);
    return assignmentStmt;
}
Also used : BLangSimpleVarRef(org.wso2.ballerinalang.compiler.tree.expressions.BLangSimpleVarRef) BLangAssignment(org.wso2.ballerinalang.compiler.tree.statements.BLangAssignment)

Example 38 with BLangSimpleVarRef

use of org.wso2.ballerinalang.compiler.tree.expressions.BLangSimpleVarRef in project ballerina by ballerina-lang.

the class Desugar method addArgInitExpr.

private void addArgInitExpr(BLangTransformer transformerNode, BLangVariable var) {
    BLangSimpleVarRef varRef = new BLangLocalVarRef(var.symbol);
    varRef.lhsVar = true;
    varRef.pos = var.pos;
    varRef.type = var.type;
    BLangExpression initExpr = null;
    switch(var.type.tag) {
        case TypeTags.MAP:
            initExpr = new BLangMapLiteral(new ArrayList<>(), var.type);
            break;
        case TypeTags.JSON:
            initExpr = new BLangJSONLiteral(new ArrayList<>(), var.type);
            break;
        case TypeTags.STRUCT:
            initExpr = new BLangStructLiteral(new ArrayList<>(), var.type);
            break;
        case TypeTags.INT:
        case TypeTags.FLOAT:
        case TypeTags.STRING:
        case TypeTags.BOOLEAN:
        case TypeTags.BLOB:
        case TypeTags.XML:
            return;
        case TypeTags.TABLE:
        case TypeTags.STREAM:
            // TODO: add this once the able initializing is supported.
            return;
        default:
            return;
    }
    initExpr.pos = var.pos;
    BLangAssignment assignStmt = (BLangAssignment) TreeBuilder.createAssignmentNode();
    assignStmt.pos = var.pos;
    assignStmt.addVariable(varRef);
    assignStmt.expr = initExpr;
    transformerNode.body.stmts.add(0, assignStmt);
}
Also used : BLangSimpleVarRef(org.wso2.ballerinalang.compiler.tree.expressions.BLangSimpleVarRef) BLangLocalVarRef(org.wso2.ballerinalang.compiler.tree.expressions.BLangSimpleVarRef.BLangLocalVarRef) BLangStructLiteral(org.wso2.ballerinalang.compiler.tree.expressions.BLangRecordLiteral.BLangStructLiteral) ArrayList(java.util.ArrayList) BLangAssignment(org.wso2.ballerinalang.compiler.tree.statements.BLangAssignment) BLangMapLiteral(org.wso2.ballerinalang.compiler.tree.expressions.BLangRecordLiteral.BLangMapLiteral) BLangJSONLiteral(org.wso2.ballerinalang.compiler.tree.expressions.BLangRecordLiteral.BLangJSONLiteral) BLangExpression(org.wso2.ballerinalang.compiler.tree.expressions.BLangExpression)

Example 39 with BLangSimpleVarRef

use of org.wso2.ballerinalang.compiler.tree.expressions.BLangSimpleVarRef in project ballerina by ballerina-lang.

the class BLangPackageBuilder method addServiceEndpointAttachments.

public void addServiceEndpointAttachments(int size, Set<Whitespace> ws) {
    ServiceNode serviceNode = serviceNodeStack.peek();
    serviceNode.addWS(ws);
    for (int i = 0; i < size; i++) {
        BLangNameReference nameReference = nameReferenceStack.pop();
        BLangSimpleVarRef varRef = (BLangSimpleVarRef) TreeBuilder.createSimpleVariableReferenceNode();
        varRef.pos = nameReference.pos;
        varRef.addWS(nameReference.ws);
        varRef.pkgAlias = (BLangIdentifier) nameReference.pkgAlias;
        varRef.variableName = (BLangIdentifier) nameReference.name;
        serviceNode.bindToEndpoint(varRef);
    }
}
Also used : ServiceNode(org.ballerinalang.model.tree.ServiceNode) BLangSimpleVarRef(org.wso2.ballerinalang.compiler.tree.expressions.BLangSimpleVarRef) BLangNameReference(org.wso2.ballerinalang.compiler.tree.BLangNameReference) BLangAnnotationAttachmentPoint(org.wso2.ballerinalang.compiler.tree.BLangAnnotationAttachmentPoint) BLangEndpoint(org.wso2.ballerinalang.compiler.tree.BLangEndpoint)

Example 40 with BLangSimpleVarRef

use of org.wso2.ballerinalang.compiler.tree.expressions.BLangSimpleVarRef in project ballerina by ballerina-lang.

the class BLangPackageBuilder method createActionInvocationNode.

public void createActionInvocationNode(DiagnosticPos pos, Set<Whitespace> ws, boolean async) {
    BLangInvocation invocationExpr = (BLangInvocation) exprNodeStack.pop();
    invocationExpr.actionInvocation = true;
    invocationExpr.pos = pos;
    invocationExpr.addWS(ws);
    invocationExpr.async = async;
    BLangNameReference nameReference = nameReferenceStack.pop();
    BLangSimpleVarRef varRef = (BLangSimpleVarRef) TreeBuilder.createSimpleVariableReferenceNode();
    varRef.pos = nameReference.pos;
    varRef.addWS(nameReference.ws);
    varRef.pkgAlias = (BLangIdentifier) nameReference.pkgAlias;
    varRef.variableName = (BLangIdentifier) nameReference.name;
    invocationExpr.expr = varRef;
    exprNodeStack.push(invocationExpr);
}
Also used : BLangSimpleVarRef(org.wso2.ballerinalang.compiler.tree.expressions.BLangSimpleVarRef) BLangNameReference(org.wso2.ballerinalang.compiler.tree.BLangNameReference) BLangInvocation(org.wso2.ballerinalang.compiler.tree.expressions.BLangInvocation)

Aggregations

BLangSimpleVarRef (org.wso2.ballerinalang.compiler.tree.expressions.BLangSimpleVarRef)36 BLangExpression (org.wso2.ballerinalang.compiler.tree.expressions.BLangExpression)11 BSymbol (org.wso2.ballerinalang.compiler.semantics.model.symbols.BSymbol)9 BType (org.wso2.ballerinalang.compiler.semantics.model.types.BType)8 Name (org.wso2.ballerinalang.compiler.util.Name)8 ArrayList (java.util.ArrayList)7 BLangXMLQName (org.wso2.ballerinalang.compiler.tree.expressions.BLangXMLQName)6 BLangAssignment (org.wso2.ballerinalang.compiler.tree.statements.BLangAssignment)5 BLangAnnotationAttachmentPoint (org.wso2.ballerinalang.compiler.tree.BLangAnnotationAttachmentPoint)4 BLangEndpoint (org.wso2.ballerinalang.compiler.tree.BLangEndpoint)4 BVarSymbol (org.wso2.ballerinalang.compiler.semantics.model.symbols.BVarSymbol)3 BLangNameReference (org.wso2.ballerinalang.compiler.tree.BLangNameReference)3 BLangVariable (org.wso2.ballerinalang.compiler.tree.BLangVariable)3 BLangLiteral (org.wso2.ballerinalang.compiler.tree.expressions.BLangLiteral)3 BLangVariableDef (org.wso2.ballerinalang.compiler.tree.statements.BLangVariableDef)3 BStructSymbol (org.wso2.ballerinalang.compiler.semantics.model.symbols.BStructSymbol)2 BJSONType (org.wso2.ballerinalang.compiler.semantics.model.types.BJSONType)2 BLangFieldBasedAccess (org.wso2.ballerinalang.compiler.tree.expressions.BLangFieldBasedAccess)2 BLangJSONLiteral (org.wso2.ballerinalang.compiler.tree.expressions.BLangRecordLiteral.BLangJSONLiteral)2 BLangMapLiteral (org.wso2.ballerinalang.compiler.tree.expressions.BLangRecordLiteral.BLangMapLiteral)2