Search in sources :

Example 46 with Target

use of org.wso2.carbon.apimgt.common.analytics.publishers.dto.Target in project ballerina by ballerina-lang.

the class TypeChecker method checkNamedTransformerInvocation.

private List<BType> checkNamedTransformerInvocation(BLangTypeConversionExpr conversionExpr, BType sourceType, BType targetType) {
    List<BType> actualTypes = getListWithErrorTypes(expTypes.size());
    BLangInvocation transformerInvocation = conversionExpr.transformerInvocation;
    BSymbol transformerSymbol = symResolver.lookupSymbolInPackage(transformerInvocation.pos, env, names.fromIdNode(transformerInvocation.pkgAlias), names.fromIdNode(transformerInvocation.name), SymTag.TRANSFORMER);
    if (transformerSymbol == symTable.notFoundSymbol) {
        dlog.error(conversionExpr.pos, DiagnosticCode.UNDEFINED_TRANSFORMER, transformerInvocation.name);
    } else {
        conversionExpr.conversionSymbol = (BConversionOperatorSymbol) (transformerInvocation.symbol = transformerSymbol);
        // Check the transformer invocation. Expected type for the transformer is the target type
        // of the cast conversion operator, but not the lhs type.
        List<BType> prevExpType = expTypes;
        expTypes = Lists.of(targetType);
        checkInvocationParamAndReturnType(transformerInvocation);
        expTypes = prevExpType;
        if (transformerInvocation.type != symTable.errType) {
            BInvokableType transformerSymType = (BInvokableType) transformerSymbol.type;
            transformerInvocation.types = transformerSymType.retTypes;
            actualTypes = getActualTypesOfConversionExpr(conversionExpr, targetType, sourceType, conversionExpr.conversionSymbol);
        }
    }
    return actualTypes;
}
Also used : BSymbol(org.wso2.ballerinalang.compiler.semantics.model.symbols.BSymbol) BType(org.wso2.ballerinalang.compiler.semantics.model.types.BType) BInvokableType(org.wso2.ballerinalang.compiler.semantics.model.types.BInvokableType) BLangInvocation(org.wso2.ballerinalang.compiler.tree.expressions.BLangInvocation)

Example 47 with Target

use of org.wso2.carbon.apimgt.common.analytics.publishers.dto.Target in project ballerina by ballerina-lang.

the class Types method checkArrayEquality.

public boolean checkArrayEquality(BType source, BType target) {
    if (target.tag == TypeTags.ARRAY && source.tag == TypeTags.ARRAY) {
        // Both types are array types
        BArrayType lhrArrayType = (BArrayType) target;
        BArrayType rhsArrayType = (BArrayType) source;
        return checkArrayEquality(lhrArrayType.eType, rhsArrayType.eType);
    }
    // Now one or both types are not array types and they have to be equal
    return isSameType(source, target);
}
Also used : BArrayType(org.wso2.ballerinalang.compiler.semantics.model.types.BArrayType)

Example 48 with Target

use of org.wso2.carbon.apimgt.common.analytics.publishers.dto.Target in project ballerina by ballerina-lang.

the class Types method isArrayTypesAssignable.

public boolean isArrayTypesAssignable(BType source, BType target) {
    if (target.tag == TypeTags.ARRAY && source.tag == TypeTags.ARRAY) {
        // Both types are array types
        BArrayType lhsArrayType = (BArrayType) target;
        BArrayType rhsArrayType = (BArrayType) source;
        return isArrayTypesAssignable(rhsArrayType.eType, lhsArrayType.eType);
    } else if (source.tag == TypeTags.ARRAY) {
        // to JSON.
        if (target.tag == TypeTags.JSON) {
            return getElementType(source).tag == TypeTags.JSON;
        }
        // Then lhs type should 'any' type
        return target.tag == TypeTags.ANY;
    } else if (target.tag == TypeTags.ARRAY) {
        // Only the left-hand side is an array type
        return false;
    }
    // Now both types are not array types and they have to be equal
    if (target == source) {
        // TODO Figure out this.
        return true;
    }
    // In this case, lhs type should be of type 'any' and the rhs type cannot be a value type
    return target.tag == TypeTags.ANY && !isValueType(source);
}
Also used : BArrayType(org.wso2.ballerinalang.compiler.semantics.model.types.BArrayType)

Example 49 with Target

use of org.wso2.carbon.apimgt.common.analytics.publishers.dto.Target in project ballerina by ballerina-lang.

the class ASTBuilderUtil method createVariableDefStmt.

static BLangVariableDef createVariableDefStmt(DiagnosticPos pos, BLangBlockStmt target) {
    final BLangVariableDef variableDef = createVariableDef(pos);
    target.addStatement(variableDef);
    return variableDef;
}
Also used : BLangVariableDef(org.wso2.ballerinalang.compiler.tree.statements.BLangVariableDef)

Example 50 with Target

use of org.wso2.carbon.apimgt.common.analytics.publishers.dto.Target in project ballerina by ballerina-lang.

the class ASTBuilderUtil method createForeach.

static BLangForeach createForeach(DiagnosticPos pos, BLangBlockStmt target, BLangSimpleVarRef collectionVarRef, List<BLangSimpleVarRef> varRefs, List<BType> inputTypes) {
    final BLangForeach foreach = (BLangForeach) TreeBuilder.createForeachNode();
    foreach.pos = pos;
    target.addStatement(foreach);
    foreach.body = ASTBuilderUtil.createBlockStmt(pos);
    foreach.collection = collectionVarRef;
    foreach.varRefs.addAll(varRefs);
    foreach.varTypes = inputTypes;
    return foreach;
}
Also used : BLangForeach(org.wso2.ballerinalang.compiler.tree.statements.BLangForeach)

Aggregations

BLangAssignment (org.wso2.ballerinalang.compiler.tree.statements.BLangAssignment)11 DiagnosticPos (org.wso2.ballerinalang.compiler.util.diagnotic.DiagnosticPos)11 ArrayList (java.util.ArrayList)9 IOException (java.io.IOException)8 APIManagementException (org.wso2.carbon.apimgt.api.APIManagementException)8 File (java.io.File)7 Element (org.w3c.dom.Element)6 BLangBinaryExpr (org.wso2.ballerinalang.compiler.tree.expressions.BLangBinaryExpr)5 Target (org.wso2.carbon.apimgt.common.analytics.publishers.dto.Target)5 Gson (com.google.gson.Gson)4 List (java.util.List)4 Map (java.util.Map)4 OMElement (org.apache.axiom.om.OMElement)4 NodeList (org.w3c.dom.NodeList)4 BLangIndexBasedAccess (org.wso2.ballerinalang.compiler.tree.expressions.BLangIndexBasedAccess)4 JsonElement (com.google.gson.JsonElement)3 FileOutputStream (java.io.FileOutputStream)3 HashMap (java.util.HashMap)3 Iterator (java.util.Iterator)3 Set (java.util.Set)3