Example usage for org.antlr.v4.runtime CommonToken getChannel

List of usage examples for org.antlr.v4.runtime CommonToken getChannel

Introduction

In this page you can find the example usage for org.antlr.v4.runtime CommonToken getChannel.

Prototype

@Override
    public int getChannel() 

Source Link

Usage

From source file:org.ballerinalang.langserver.completions.providers.contextproviders.ImportDeclarationContextProvider.java

License:Open Source License

@Override
public List<CompletionItem> getCompletions(LSContext ctx) {
    ArrayList<CompletionItem> completionItems = new ArrayList<>();
    List<BallerinaPackage> packagesList = new ArrayList<>();
    Stream.of(LSPackageLoader.getSdkPackages(), LSPackageLoader.getHomeRepoPackages())
            .forEach(packagesList::addAll);
    List<CommonToken> lhsTokens = ctx.get(CompletionKeys.LHS_TOKENS_KEY);
    List<CommonToken> lhsDefaultTokens = lhsTokens.stream()
            .filter(commonToken -> commonToken.getChannel() == Token.DEFAULT_CHANNEL)
            .collect(Collectors.toList());
    List<Integer> lhsDefaultTokenTypes = lhsDefaultTokens.stream().map(CommonToken::getType)
            .collect(Collectors.toList());
    int divIndex = lhsDefaultTokenTypes.indexOf(BallerinaParser.DIV);
    int importTokenIndex = lhsDefaultTokenTypes.indexOf(BallerinaParser.IMPORT);
    CommonToken lastToken = CommonUtil.getLastItem(lhsTokens);

    if (divIndex > -1
            && (divIndex == lhsDefaultTokenTypes.size() - 1 || divIndex == lhsDefaultTokenTypes.size() - 2)) {
        String orgName = lhsDefaultTokens.get(lhsDefaultTokenTypes.indexOf(BallerinaParser.DIV) - 1).getText();
        completionItems.addAll(this.getPackageNameCompletions(orgName, packagesList));
    } else if (importTokenIndex > -1 && (importTokenIndex == lhsDefaultTokenTypes.size() - 1
            || importTokenIndex == lhsDefaultTokenTypes.size() - 2)) {
        completionItems.addAll(this.getItemsIncludingOrgName(packagesList));
    } else if (importTokenIndex > -1 && lhsDefaultTokenTypes.size() >= 2
            && (lastToken.getChannel() == Token.HIDDEN_CHANNEL
                    || lhsTokens.get(lhsTokens.size() - 2).getChannel() == Token.HIDDEN_CHANNEL)) {
        completionItems.add(getAsKeyword());
    }/*from  w w  w .j  a  v  a 2 s.  c  o m*/

    return completionItems;
}