Search in sources :

Example 51 with BType

use of org.wso2.ballerinalang.compiler.semantics.model.types.BType in project ballerina by ballerina-lang.

the class CodeGenerator method visit.

public void visit(BLangTypeConversionExpr convExpr) {
    int opcode = convExpr.conversionSymbol.opcode;
    // Figure out the reg index of the result value
    BType castExprType = convExpr.type;
    RegIndex convExprRegIndex = calcAndGetExprRegIndex(convExpr.regIndex, castExprType.tag);
    convExpr.regIndex = convExprRegIndex;
    if (opcode == InstructionCodes.NOP) {
        convExpr.expr.regIndex = createLHSRegIndex(convExprRegIndex);
        genNode(convExpr.expr, this.env);
        return;
    }
    genNode(convExpr.expr, this.env);
    if (opcode == InstructionCodes.MAP2T || opcode == InstructionCodes.JSON2T || opcode == InstructionCodes.ANY2T || opcode == InstructionCodes.ANY2C || opcode == InstructionCodes.ANY2E || opcode == InstructionCodes.ANY2M || opcode == InstructionCodes.CHECKCAST) {
        Operand typeCPIndex = getTypeCPIndex(convExpr.targetType);
        emit(opcode, convExpr.expr.regIndex, typeCPIndex, convExprRegIndex);
    } else {
        emit(opcode, convExpr.expr.regIndex, convExprRegIndex);
    }
}
Also used : BType(org.wso2.ballerinalang.compiler.semantics.model.types.BType) Operand(org.wso2.ballerinalang.programfile.Instruction.Operand) BLangEndpoint(org.wso2.ballerinalang.compiler.tree.BLangEndpoint) RegIndex(org.wso2.ballerinalang.programfile.Instruction.RegIndex)

Example 52 with BType

use of org.wso2.ballerinalang.compiler.semantics.model.types.BType in project ballerina by ballerina-lang.

the class ASTBuilderUtil method createTypeofExpr.

static BLangTypeofExpr createTypeofExpr(DiagnosticPos pos, BType type, BType resolvedType) {
    final BLangTypeofExpr typeofExpr = (BLangTypeofExpr) TreeBuilder.createTypeAccessNode();
    typeofExpr.pos = pos;
    typeofExpr.type = type;
    typeofExpr.resolvedType = resolvedType;
    return typeofExpr;
}
Also used : BLangTypeofExpr(org.wso2.ballerinalang.compiler.tree.expressions.BLangTypeofExpr)

Example 53 with BType

use of org.wso2.ballerinalang.compiler.semantics.model.types.BType in project ballerina by ballerina-lang.

the class ASTBuilderUtil method generateConversionExpr.

static BLangExpression generateConversionExpr(BLangExpression varRef, BType target, SymbolResolver symResolver) {
    if (varRef.type.tag == target.tag || varRef.type.tag > TypeTags.TYPEDESC) {
        return varRef;
    }
    // Box value using cast expression.
    final BLangTypeConversionExpr conversion = (BLangTypeConversionExpr) TreeBuilder.createTypeConversionNode();
    conversion.pos = varRef.pos;
    conversion.expr = varRef;
    conversion.type = target;
    conversion.targetType = target;
    conversion.conversionSymbol = (BConversionOperatorSymbol) symResolver.resolveConversionOperator(varRef.type, target);
    return conversion;
}
Also used : BLangTypeConversionExpr(org.wso2.ballerinalang.compiler.tree.expressions.BLangTypeConversionExpr)

Example 54 with BType

use of org.wso2.ballerinalang.compiler.semantics.model.types.BType in project ballerina by ballerina-lang.

the class ASTBuilderUtil method createVariable.

static BLangVariable createVariable(DiagnosticPos pos, String name, BType type, BLangExpression expr, BVarSymbol varSymbol) {
    final BLangVariable varNode = (BLangVariable) TreeBuilder.createVariableNode();
    varNode.pos = pos;
    varNode.name = createIdentifier(pos, name);
    varNode.type = type;
    varNode.expr = expr;
    varNode.symbol = varSymbol;
    return varNode;
}
Also used : BLangVariable(org.wso2.ballerinalang.compiler.tree.BLangVariable)

Example 55 with BType

use of org.wso2.ballerinalang.compiler.semantics.model.types.BType in project ballerina by ballerina-lang.

the class ASTBuilderUtil method createUnaryExpr.

static BLangUnaryExpr createUnaryExpr(DiagnosticPos pos, BLangExpression expr, BType type, OperatorKind kind, BOperatorSymbol symbol) {
    final BLangUnaryExpr unaryExpr = (BLangUnaryExpr) TreeBuilder.createUnaryExpressionNode();
    unaryExpr.pos = pos;
    unaryExpr.expr = expr;
    unaryExpr.type = type;
    unaryExpr.operator = kind;
    unaryExpr.opSymbol = symbol;
    return unaryExpr;
}
Also used : BLangUnaryExpr(org.wso2.ballerinalang.compiler.tree.expressions.BLangUnaryExpr)

Aggregations

BType (org.wso2.ballerinalang.compiler.semantics.model.types.BType)97 BSymbol (org.wso2.ballerinalang.compiler.semantics.model.symbols.BSymbol)34 ArrayList (java.util.ArrayList)30 BLangExpression (org.wso2.ballerinalang.compiler.tree.expressions.BLangExpression)30 BInvokableType (org.wso2.ballerinalang.compiler.semantics.model.types.BInvokableType)25 BLangEndpoint (org.wso2.ballerinalang.compiler.tree.BLangEndpoint)23 Name (org.wso2.ballerinalang.compiler.util.Name)20 BInvokableSymbol (org.wso2.ballerinalang.compiler.semantics.model.symbols.BInvokableSymbol)18 BStructSymbol (org.wso2.ballerinalang.compiler.semantics.model.symbols.BStructSymbol)17 BArrayType (org.wso2.ballerinalang.compiler.semantics.model.types.BArrayType)17 BUnionType (org.wso2.ballerinalang.compiler.semantics.model.types.BUnionType)17 List (java.util.List)16 SymbolEnv (org.wso2.ballerinalang.compiler.semantics.model.SymbolEnv)16 BLangXMLQName (org.wso2.ballerinalang.compiler.tree.expressions.BLangXMLQName)16 BLangSimpleVarRef (org.wso2.ballerinalang.compiler.tree.expressions.BLangSimpleVarRef)15 Collectors (java.util.stream.Collectors)14 BConversionOperatorSymbol (org.wso2.ballerinalang.compiler.semantics.model.symbols.BConversionOperatorSymbol)13 BStructType (org.wso2.ballerinalang.compiler.semantics.model.types.BStructType)13 Set (java.util.Set)12 BLangVariable (org.wso2.ballerinalang.compiler.tree.BLangVariable)12