Search in sources :

Example 86 with Source

use of org.wso2.siddhi.core.stream.input.source.Source 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 87 with Source

use of org.wso2.siddhi.core.stream.input.source.Source 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 88 with Source

use of org.wso2.siddhi.core.stream.input.source.Source in project ballerina by ballerina-lang.

the class BLangPackageBuilder method endTransformerDef.

public void endTransformerDef(DiagnosticPos pos, Set<Whitespace> ws, boolean publicFunc, String name, boolean paramsAvailable) {
    BLangTransformer transformer = (BLangTransformer) this.invokableNodeStack.pop();
    transformer.pos = pos;
    transformer.addWS(ws);
    transformer.setName(this.createIdentifier(name));
    if (paramsAvailable) {
        this.varListStack.pop().forEach(variableNode -> {
            ((BLangVariable) variableNode).docTag = DocTag.PARAM;
            transformer.addParameter(variableNode);
        });
    }
    // get the source and the target params
    List<VariableNode> mappingParams = this.varListStack.pop();
    // set the first mapping-param as the source for transformer
    VariableNode source = mappingParams.remove(0);
    ((BLangVariable) source).docTag = DocTag.RECEIVER;
    transformer.setSource(source);
    mappingParams.forEach(variableNode -> {
        ((BLangVariable) variableNode).docTag = DocTag.RECEIVER;
        transformer.addReturnParameter(variableNode);
    });
    if (publicFunc) {
        transformer.flagSet.add(Flag.PUBLIC);
    }
    this.compUnit.addTopLevelNode(transformer);
}
Also used : BLangTransformer(org.wso2.ballerinalang.compiler.tree.BLangTransformer) VariableNode(org.ballerinalang.model.tree.VariableNode)

Example 89 with Source

use of org.wso2.siddhi.core.stream.input.source.Source in project ballerina by ballerina-lang.

the class PackageLoader method updateVersionFromToml.

private void updateVersionFromToml(PackageID pkgId) {
    String orgName = pkgId.orgName.value;
    String pkgName = pkgId.name.value;
    String pkgAlias = orgName + "/" + pkgName;
    // TODO: make getDependencies return a map
    Optional<Dependency> dependency = manifest.getDependencies().stream().filter(d -> d.getPackageName().equals(pkgAlias)).findFirst();
    if (dependency.isPresent()) {
        if (pkgId.version.value.isEmpty()) {
            pkgId.version = new Name(dependency.get().getVersion());
        } else {
            throw new BLangCompilerException("dependency version in Ballerina.toml mismatches" + " with the version in the source for package " + pkgAlias);
        }
    }
}
Also used : SystemPackageRepositoryProvider(org.ballerinalang.spi.SystemPackageRepositoryProvider) Arrays(java.util.Arrays) PackageSource(org.ballerinalang.repository.PackageSource) BLangIdentifier(org.wso2.ballerinalang.compiler.tree.BLangIdentifier) PROJECT_DIR(org.ballerinalang.compiler.CompilerOptionName.PROJECT_DIR) BLangImportPackage(org.wso2.ballerinalang.compiler.tree.BLangImportPackage) IdentifierNode(org.ballerinalang.model.tree.IdentifierNode) Converter(org.wso2.ballerinalang.compiler.packaging.converters.Converter) Names(org.wso2.ballerinalang.compiler.util.Names) RepoHierarchy(org.wso2.ballerinalang.compiler.packaging.RepoHierarchy) URI(java.net.URI) Path(java.nio.file.Path) ProjectSourceRepo(org.wso2.ballerinalang.compiler.packaging.repo.ProjectSourceRepo) PackageID(org.ballerinalang.model.elements.PackageID) Set(java.util.Set) ServiceLoader(java.util.ServiceLoader) Collectors(java.util.stream.Collectors) Objects(java.util.Objects) List(java.util.List) Manifest(org.ballerinalang.toml.model.Manifest) OFFLINE(org.ballerinalang.compiler.CompilerOptionName.OFFLINE) Resolution(org.wso2.ballerinalang.compiler.packaging.Resolution) RepoHierarchyBuilder(org.wso2.ballerinalang.compiler.packaging.RepoHierarchyBuilder) Optional(java.util.Optional) SymbolEnter(org.wso2.ballerinalang.compiler.semantics.analyzer.SymbolEnter) CompilerOptions(org.wso2.ballerinalang.compiler.util.CompilerOptions) ManifestProcessor(org.ballerinalang.toml.parser.ManifestProcessor) RemoteRepo(org.wso2.ballerinalang.compiler.packaging.repo.RemoteRepo) ArrayList(java.util.ArrayList) Dependency(org.ballerinalang.toml.model.Dependency) RepoHierarchyBuilder.node(org.wso2.ballerinalang.compiler.packaging.RepoHierarchyBuilder.node) HomeRepoUtils(org.wso2.ballerinalang.util.HomeRepoUtils) PackageRepository(org.ballerinalang.repository.PackageRepository) Repo(org.wso2.ballerinalang.compiler.packaging.repo.Repo) TreeBuilder(org.ballerinalang.model.TreeBuilder) ProgramingSourceRepo(org.wso2.ballerinalang.compiler.packaging.repo.ProgramingSourceRepo) ProjectDirs(org.wso2.ballerinalang.compiler.util.ProjectDirs) StreamSupport(java.util.stream.StreamSupport) BLangPackage(org.wso2.ballerinalang.compiler.tree.BLangPackage) BLangCompilerException(org.ballerinalang.compiler.BLangCompilerException) Name(org.wso2.ballerinalang.compiler.util.Name) ZipRepo(org.wso2.ballerinalang.compiler.packaging.repo.ZipRepo) PackageEntity(org.ballerinalang.repository.PackageEntity) Parser(org.wso2.ballerinalang.compiler.parser.Parser) Paths(java.nio.file.Paths) GenericPackageSource(org.wso2.ballerinalang.compiler.packaging.GenericPackageSource) CacheRepo(org.wso2.ballerinalang.compiler.packaging.repo.CacheRepo) Collections(java.util.Collections) CompilerContext(org.wso2.ballerinalang.compiler.util.CompilerContext) BLangCompilerException(org.ballerinalang.compiler.BLangCompilerException) Dependency(org.ballerinalang.toml.model.Dependency) Name(org.wso2.ballerinalang.compiler.util.Name)

Example 90 with Source

use of org.wso2.siddhi.core.stream.input.source.Source in project ballerina by ballerina-lang.

the class LauncherUtils method compile.

/**
 * Compile and get the executable program file.
 *
 * @param sourceRootPath Path to the source root
 * @param sourcePath Path to the source from the source root
 * @param offline Should the build call remote repos
 * @return Executable program
 */
public static ProgramFile compile(Path sourceRootPath, Path sourcePath, boolean offline) {
    CompilerContext context = new CompilerContext();
    CompilerOptions options = CompilerOptions.getInstance(context);
    options.put(PROJECT_DIR, sourceRootPath.toString());
    options.put(COMPILER_PHASE, CompilerPhase.CODE_GEN.toString());
    options.put(PRESERVE_WHITESPACE, "false");
    options.put(OFFLINE, Boolean.toString(offline));
    // compile
    Compiler compiler = Compiler.getInstance(context);
    BLangPackage entryPkgNode = compiler.compile(sourcePath.toString());
    CompiledBinaryFile.ProgramFile programFile = compiler.getExecutableProgram(entryPkgNode);
    if (programFile == null) {
        throw createLauncherException("compilation contains errors");
    }
    ProgramFile progFile = getExecutableProgram(programFile);
    progFile.setProgramFilePath(sourcePath);
    return progFile;
}
Also used : Compiler(org.wso2.ballerinalang.compiler.Compiler) BLangPackage(org.wso2.ballerinalang.compiler.tree.BLangPackage) CompiledBinaryFile(org.wso2.ballerinalang.programfile.CompiledBinaryFile) CompilerContext(org.wso2.ballerinalang.compiler.util.CompilerContext) CompilerOptions(org.wso2.ballerinalang.compiler.util.CompilerOptions) ProgramFile(org.ballerinalang.util.codegen.ProgramFile)

Aggregations

Test (org.testng.annotations.Test)22 CompilerContext (org.wso2.ballerinalang.compiler.util.CompilerContext)15 ArrayList (java.util.ArrayList)11 CompilerOptions (org.wso2.ballerinalang.compiler.util.CompilerOptions)11 SiddhiAppRuntime (org.wso2.siddhi.core.SiddhiAppRuntime)11 SiddhiManager (org.wso2.siddhi.core.SiddhiManager)11 ANTLRInputStream (org.antlr.v4.runtime.ANTLRInputStream)8 CommonTokenStream (org.antlr.v4.runtime.CommonTokenStream)8 ParseTree (org.antlr.v4.runtime.tree.ParseTree)8 OMElement (org.apache.axiom.om.OMElement)8 TopLevelNode (org.ballerinalang.model.tree.TopLevelNode)8 BLangPackage (org.wso2.ballerinalang.compiler.tree.BLangPackage)8 DiagnosticPos (org.wso2.ballerinalang.compiler.util.diagnotic.DiagnosticPos)8 DocumentInfo (org.wso2.carbon.apimgt.core.models.DocumentInfo)8 Event (org.wso2.siddhi.core.event.Event)8 HashMap (java.util.HashMap)7 List (java.util.List)7 Compiler (org.wso2.ballerinalang.compiler.Compiler)7 APIManagementException (org.wso2.carbon.apimgt.core.exception.APIManagementException)6 SiddhiQLBaseVisitorImpl (org.wso2.siddhi.query.compiler.internal.SiddhiQLBaseVisitorImpl)6