use of org.wso2.ballerinalang.compiler.tree.expressions.BLangFieldBasedAccess.BLangEnumeratorAccessExpr in project ballerina by ballerina-lang.
the class Desugar method visit.
@Override
public void visit(BLangFieldBasedAccess fieldAccessExpr) {
BLangVariableReference targetVarRef = fieldAccessExpr;
if (fieldAccessExpr.expr.type.tag == TypeTags.ENUM) {
targetVarRef = new BLangEnumeratorAccessExpr(fieldAccessExpr.pos, fieldAccessExpr.field, fieldAccessExpr.symbol);
} else {
fieldAccessExpr.expr = rewriteExpr(fieldAccessExpr.expr);
BType varRefType = fieldAccessExpr.expr.type;
if (varRefType.tag == TypeTags.STRUCT) {
targetVarRef = new BLangStructFieldAccessExpr(fieldAccessExpr.pos, fieldAccessExpr.expr, fieldAccessExpr.symbol);
} else if (varRefType.tag == TypeTags.MAP) {
BLangLiteral stringLit = createStringLiteral(fieldAccessExpr.pos, fieldAccessExpr.field.value);
targetVarRef = new BLangMapAccessExpr(fieldAccessExpr.pos, fieldAccessExpr.expr, stringLit);
} else if (varRefType.tag == TypeTags.JSON) {
BLangLiteral stringLit = createStringLiteral(fieldAccessExpr.pos, fieldAccessExpr.field.value);
targetVarRef = new BLangJSONAccessExpr(fieldAccessExpr.pos, fieldAccessExpr.expr, stringLit);
} else if (varRefType.tag == TypeTags.XML) {
BLangLiteral stringLit = createStringLiteral(fieldAccessExpr.pos, fieldAccessExpr.field.value);
targetVarRef = new BLangXMLAccessExpr(fieldAccessExpr.pos, fieldAccessExpr.expr, stringLit, fieldAccessExpr.fieldType);
}
}
targetVarRef.lhsVar = fieldAccessExpr.lhsVar;
targetVarRef.type = fieldAccessExpr.type;
result = targetVarRef;
}
use of org.wso2.ballerinalang.compiler.tree.expressions.BLangFieldBasedAccess.BLangEnumeratorAccessExpr in project ballerina by ballerina-lang.
the class CodeGenerator method visit.
@Override
public void visit(BLangEnumeratorAccessExpr enumeratorAccessExpr) {
Operand typeCPIndex = getTypeCPIndex(enumeratorAccessExpr.type);
Operand varIndex = enumeratorAccessExpr.symbol.varIndex;
emit(InstructionCodes.ENUMERATORLOAD, typeCPIndex, varIndex, calcAndGetExprRegIndex(enumeratorAccessExpr));
}
Aggregations