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);
}
}
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;
}
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;
}
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;
}
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;
}
Aggregations