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