Search in sources :

Example 41 with BSymbol

use of org.wso2.ballerinalang.compiler.semantics.model.symbols.BSymbol in project ballerina by ballerina-lang.

the class AssignmentStmtContextSorter method getVariableType.

/**
 * Get the variable type.
 *
 * @param ctx Document Service context (Completion context)
 * @return {@link String} type of the variable
 */
@Override
String getVariableType(TextDocumentServiceContext ctx) {
    String variableName = ctx.get(DocumentServiceKeys.PARSER_RULE_CONTEXT_KEY).getStart().getText();
    List<SymbolInfo> visibleSymbols = ctx.get(CompletionKeys.VISIBLE_SYMBOLS_KEY);
    SymbolInfo filteredSymbol = visibleSymbols.stream().filter(symbolInfo -> {
        BSymbol bSymbol = symbolInfo.getScopeEntry().symbol;
        String symbolName = symbolInfo.getSymbolName();
        return bSymbol instanceof BVarSymbol && symbolName.equals(variableName);
    }).findFirst().orElse(null);
    if (filteredSymbol != null) {
        return filteredSymbol.getScopeEntry().symbol.type.toString();
    }
    return "";
}
Also used : BSymbol(org.wso2.ballerinalang.compiler.semantics.model.symbols.BSymbol) BVarSymbol(org.wso2.ballerinalang.compiler.semantics.model.symbols.BVarSymbol) SymbolInfo(org.ballerinalang.langserver.completions.SymbolInfo)

Example 42 with BSymbol

use of org.wso2.ballerinalang.compiler.semantics.model.symbols.BSymbol in project ballerina by ballerina-lang.

the class SymbolEnter method visit.

@Override
public void visit(BLangStruct structNode) {
    BSymbol structSymbol = Symbols.createStructSymbol(Flags.asMask(structNode.flagSet), names.fromIdNode(structNode.name), env.enclPkg.symbol.pkgID, null, env.scope.owner);
    structNode.symbol = structSymbol;
    // Create struct type
    structNode.symbol.type = new BStructType((BTypeSymbol) structNode.symbol);
    defineSymbol(structNode.pos, structSymbol);
}
Also used : BStructType(org.wso2.ballerinalang.compiler.semantics.model.types.BStructType) BSymbol(org.wso2.ballerinalang.compiler.semantics.model.symbols.BSymbol) BTypeSymbol(org.wso2.ballerinalang.compiler.semantics.model.symbols.BTypeSymbol)

Example 43 with BSymbol

use of org.wso2.ballerinalang.compiler.semantics.model.symbols.BSymbol in project ballerina by ballerina-lang.

the class SymbolEnter method visit.

public void visit(BLangAnnotation annotationNode) {
    BSymbol annotationSymbol = Symbols.createAnnotationSymbol(Flags.asMask(annotationNode.flagSet), names.fromIdNode(annotationNode.name), env.enclPkg.symbol.pkgID, null, env.scope.owner);
    annotationSymbol.type = new BAnnotationType((BAnnotationSymbol) annotationSymbol);
    annotationNode.attachmentPoints.forEach(point -> ((BAnnotationSymbol) annotationSymbol).attachmentPoints.add(point));
    annotationNode.symbol = annotationSymbol;
    defineSymbol(annotationNode.pos, annotationSymbol);
    SymbolEnv annotationEnv = SymbolEnv.createAnnotationEnv(annotationNode, annotationSymbol.scope, env);
    annotationNode.attributes.forEach(att -> this.defineNode(att, annotationEnv));
    if (annotationNode.typeNode != null) {
        BType structType = this.symResolver.resolveTypeNode(annotationNode.typeNode, annotationEnv);
        ((BAnnotationSymbol) annotationSymbol).attachedType = structType.tsymbol;
    }
}
Also used : BSymbol(org.wso2.ballerinalang.compiler.semantics.model.symbols.BSymbol) BAnnotationType(org.wso2.ballerinalang.compiler.semantics.model.types.BAnnotationType) BType(org.wso2.ballerinalang.compiler.semantics.model.types.BType) SymbolEnv(org.wso2.ballerinalang.compiler.semantics.model.SymbolEnv) BAnnotationSymbol(org.wso2.ballerinalang.compiler.semantics.model.symbols.BAnnotationSymbol)

Example 44 with BSymbol

use of org.wso2.ballerinalang.compiler.semantics.model.symbols.BSymbol in project ballerina by ballerina-lang.

the class SymbolEnter method visit.

@Override
public void visit(BLangObject objectNode) {
    BSymbol objectSymbol = Symbols.createObjectSymbol(Flags.asMask(objectNode.flagSet), names.fromIdNode(objectNode.name), env.enclPkg.symbol.pkgID, null, env.scope.owner);
    objectNode.symbol = objectSymbol;
    // Create struct type
    objectNode.symbol.type = new BStructType((BTypeSymbol) objectNode.symbol);
    defineSymbol(objectNode.pos, objectSymbol);
}
Also used : BStructType(org.wso2.ballerinalang.compiler.semantics.model.types.BStructType) BSymbol(org.wso2.ballerinalang.compiler.semantics.model.symbols.BSymbol) BTypeSymbol(org.wso2.ballerinalang.compiler.semantics.model.symbols.BTypeSymbol)

Example 45 with BSymbol

use of org.wso2.ballerinalang.compiler.semantics.model.symbols.BSymbol in project ballerina by ballerina-lang.

the class SymbolResolver method resolveObject.

public BSymbol resolveObject(DiagnosticPos pos, DiagnosticCode code, SymbolEnv env, Name pkgAlias, Name objectName) {
    BSymbol pkgSymbol = resolvePkgSymbol(pos, env, pkgAlias);
    if (pkgSymbol == symTable.notFoundSymbol) {
        return pkgSymbol;
    }
    BSymbol symbol = lookupMemberSymbol(pos, pkgSymbol.scope, env, objectName, SymTag.OBJECT);
    if (symbol == symTable.notFoundSymbol) {
        dlog.error(pos, code, objectName);
    }
    return symbol;
}
Also used : BSymbol(org.wso2.ballerinalang.compiler.semantics.model.symbols.BSymbol)

Aggregations

BSymbol (org.wso2.ballerinalang.compiler.semantics.model.symbols.BSymbol)78 SymbolEnv (org.wso2.ballerinalang.compiler.semantics.model.SymbolEnv)29 Name (org.wso2.ballerinalang.compiler.util.Name)23 BType (org.wso2.ballerinalang.compiler.semantics.model.types.BType)19 ArrayList (java.util.ArrayList)16 BLangSimpleVarRef (org.wso2.ballerinalang.compiler.tree.expressions.BLangSimpleVarRef)14 BLangVariable (org.wso2.ballerinalang.compiler.tree.BLangVariable)13 BLangBlockStmt (org.wso2.ballerinalang.compiler.tree.statements.BLangBlockStmt)13 BPackageSymbol (org.wso2.ballerinalang.compiler.semantics.model.symbols.BPackageSymbol)12 BLangEndpoint (org.wso2.ballerinalang.compiler.tree.BLangEndpoint)11 DiagnosticPos (org.wso2.ballerinalang.compiler.util.diagnotic.DiagnosticPos)11 List (java.util.List)10 BLangAnnotationAttachmentPoint (org.wso2.ballerinalang.compiler.tree.BLangAnnotationAttachmentPoint)10 BLangExpression (org.wso2.ballerinalang.compiler.tree.expressions.BLangExpression)10 BLangAssignment (org.wso2.ballerinalang.compiler.tree.statements.BLangAssignment)10 BLangExpressionStmt (org.wso2.ballerinalang.compiler.tree.statements.BLangExpressionStmt)10 BLangVariableDef (org.wso2.ballerinalang.compiler.tree.statements.BLangVariableDef)10 Collectors (java.util.stream.Collectors)9 Arrays (java.util.Arrays)8 Collections (java.util.Collections)7