@Override public String toString() { return this.getValue(); } }
private BLangInvocation createInvocationNode(String functionName, List<BLangExpression> args, BType retType) { BLangInvocation invocationNode = (BLangInvocation) TreeBuilder.createInvocationNode(); BLangIdentifier name = (BLangIdentifier) TreeBuilder.createIdentifierNode(); name.setLiteral(false); name.setValue(functionName); invocationNode.name = name; invocationNode.pkgAlias = (BLangIdentifier) TreeBuilder.createIdentifierNode(); // TODO: 2/28/18 need to find a good way to refer to symbols invocationNode.symbol = symTable.rootScope.lookup(new Name(functionName)).symbol; invocationNode.type = retType; invocationNode.requiredArgs = args; return invocationNode; }
public String getQualifiedPackageName() { String orgName = this.orgName.toString(); String pkgName = String.join(".", pkgNameComps.stream() .map(id -> id.value) .collect(Collectors.toList())); String versionStr = (this.version.value != null) ? this.version.value : ""; if (!versionStr.isEmpty()) { versionStr = " version " + versionStr; } String aliasStr = (this.version.value != null) ? this.version.value : ""; if (!aliasStr.isEmpty()) { aliasStr = " as " + aliasStr; } return (orgName.isEmpty() ? "" : orgName + '/') + pkgName + versionStr + aliasStr; } }
BLangLambdaFunction getScopesFunctionDef(DiagnosticPos pos, Set<Whitespace> ws, boolean bodyExists, String name) { BLangFunction function = (BLangFunction) this.invokableNodeStack.pop(); function.pos = pos; function.addWS(ws); //always a public function function.flagSet.add(Flag.PUBLIC); function.flagSet.add(Flag.LAMBDA); if (!bodyExists) { function.body = null; } BLangIdentifier nameId = new BLangIdentifier(); nameId.setValue(Names.GEN_VAR_PREFIX + name); function.name = nameId; BLangValueType typeNode = (BLangValueType) TreeBuilder.createValueTypeNode(); typeNode.pos = pos; typeNode.typeKind = TypeKind.NIL; function.returnTypeNode = typeNode; function.receiver = null; BLangLambdaFunction lambda = (BLangLambdaFunction) TreeBuilder.createLambdaFunctionNode(); lambda.function = function; return lambda; }
public static BLangIdentifier createIdentifier(DiagnosticPos pos, String value) { final BLangIdentifier node = (BLangIdentifier) TreeBuilder.createIdentifierNode(); node.pos = pos; if (value != null) { node.setValue(value); } return node; }
public BLangXMLQName(String localname, String prefix) { this.localname = new BLangIdentifier(); this.localname.value = localname; this.prefix = new BLangIdentifier(); this.prefix.value = prefix; }
private void visitBuiltinFunctions(BLangPackage pkgNode, BLangFunction function) { if (Symbols.isFlagOn(pkgNode.symbol.flags, Flags.TESTABLE)) { String funcName = function.getName().value; String builtinFuncName = funcName.substring(funcName.indexOf("<") + 1, funcName.indexOf(">")); String modifiedFuncName = funcName.replace(builtinFuncName, "test" + builtinFuncName); function.name.setValue(modifiedFuncName); function.originalFuncSymbol.name.value = modifiedFuncName; function.symbol.name.value = modifiedFuncName; } createFunctionInfoEntry(function); genNode(function, this.env); }
public BLangXMLQName(String localname) { this.localname = new BLangIdentifier(); this.prefix = new BLangIdentifier(); this.localname.value = localname; }
private boolean checkMatchingConfigKey(BLangRecordLiteral.BLangRecordKeyValue keyValue, String key) { return ((BLangSimpleVarRef) (keyValue.key).expr).variableName.getValue().equals(key); } }
static BLangTypeInit createEmptyTypeInit(DiagnosticPos pos, BType type) { BLangTypeInit objectInitNode = (BLangTypeInit) TreeBuilder.createInitNode(); objectInitNode.pos = pos; objectInitNode.type = type; BLangInvocation invocationNode = (BLangInvocation) TreeBuilder.createInvocationNode(); invocationNode.symbol = ((BObjectTypeSymbol) type.tsymbol).initializerFunc.symbol; invocationNode.type = type; BLangIdentifier pkgNameNode = (BLangIdentifier) TreeBuilder.createIdentifierNode(); BLangIdentifier nameNode = (BLangIdentifier) TreeBuilder.createIdentifierNode(); nameNode.setLiteral(false); nameNode.setValue(Names.OBJECT_INIT_SUFFIX.getValue()); invocationNode.name = nameNode; invocationNode.pkgAlias = pkgNameNode; objectInitNode.initInvocation = invocationNode; return objectInitNode; }
private void addImportPkg(BLangPackage bLangPackage, String orgName, String sourcePkgName, String version) { List<Name> nameComps = getPackageNameComps(sourcePkgName); List<BLangIdentifier> pkgNameComps = new ArrayList<>(); nameComps.forEach(comp -> { IdentifierNode node = TreeBuilder.createIdentifierNode(); node.setValue(comp.value); pkgNameComps.add((BLangIdentifier) node); }); BLangIdentifier orgNameNode = (BLangIdentifier) TreeBuilder.createIdentifierNode(); orgNameNode.setValue(orgName); BLangIdentifier versionNode = (BLangIdentifier) TreeBuilder.createIdentifierNode(); versionNode.setValue(version); BLangImportPackage importDcl = (BLangImportPackage) TreeBuilder.createImportPackageNode(); importDcl.pos = bLangPackage.pos; importDcl.pkgNameComps = pkgNameComps; importDcl.orgName = orgNameNode; importDcl.version = versionNode; BLangIdentifier alias = (BLangIdentifier) TreeBuilder.createIdentifierNode(); alias.setValue(names.merge(Names.ORG_NAME_SEPARATOR, nameComps.get(nameComps.size() - 1)).value); importDcl.alias = alias; bLangPackage.imports.add(importDcl); }
/** * This method will determine if the type guard of the preceding pattern will result in the current pattern * being unreachable. * * @param precedingGuard type guard of the preceding structured pattern * @param currentGuard type guard of the cuurent structured pattern * @return true if the current pattern is unreachable due to the type guard of the preceding pattern */ private boolean checkTypeGuardSimilarity(BLangExpression precedingGuard, BLangExpression currentGuard) { // check if type guard is a type test expr and compare the variable ref and type node if (precedingGuard != null && currentGuard != null) { if (precedingGuard.getKind() == NodeKind.TYPE_TEST_EXPR && currentGuard.getKind() == NodeKind.TYPE_TEST_EXPR && ((BLangTypeTestExpr) precedingGuard).expr.getKind() == NodeKind.SIMPLE_VARIABLE_REF && ((BLangTypeTestExpr) currentGuard).expr.getKind() == NodeKind.SIMPLE_VARIABLE_REF) { BLangTypeTestExpr precedingTypeTest = (BLangTypeTestExpr) precedingGuard; BLangTypeTestExpr currentTypeTest = (BLangTypeTestExpr) currentGuard; return ((BLangSimpleVarRef) precedingTypeTest.expr).variableName.toString().equals( ((BLangSimpleVarRef) currentTypeTest.expr).variableName.toString()) && precedingTypeTest.typeNode.type.tag == currentTypeTest.typeNode.type.tag; } return false; } return currentGuard != null || precedingGuard == null; }
public BLangXMLQName(BLangIdentifier localname) { this.localname = localname; this.prefix = new BLangIdentifier(); }
@Override public String toString() { StringBuilder br = new StringBuilder(); if (pkgAlias != null && !pkgAlias.getValue().isEmpty()) { br.append(String.valueOf(pkgAlias)).append(":"); } br.append(String.valueOf(variableName)); return br.toString(); }
private BLangInvocation createInvocationNode(BPackageSymbol pkgSymbol, String functionName, List<BLangExpression> args) { BLangInvocation invocationNode = (BLangInvocation) TreeBuilder.createInvocationNode(); BLangIdentifier name = (BLangIdentifier) TreeBuilder.createIdentifierNode(); name.setLiteral(false); name.setValue(functionName); invocationNode.name = name; invocationNode.pkgAlias = (BLangIdentifier) TreeBuilder.createIdentifierNode(); invocationNode.symbol = pkgSymbol.scope.lookup(new Name(functionName)).symbol; invocationNode.type = new BNilType(); invocationNode.requiredArgs = args; return invocationNode; }
annoAttachment.expr = literalNode; BLangIdentifier pkgAlias = (BLangIdentifier) TreeBuilder.createIdentifierNode(); pkgAlias.setValue(PROTOCOL_PACKAGE_GRPC); annoAttachment.pkgAlias = pkgAlias; annoAttachment.attachPoints.add(AttachPoint.SERVICE); functionRef.type = symTable.mapType; BLangIdentifier funcName = (BLangIdentifier) TreeBuilder.createIdentifierNode(); funcName.setValue(DESCRIPTOR_MAP); functionRef.name = funcName; BLangIdentifier funcPkgAlias = (BLangIdentifier) TreeBuilder.createIdentifierNode(); funcPkgAlias.setValue(""); functionRef.pkgAlias = funcPkgAlias; keyName.setValue(ANN_FIELD_DESC_MAP); mapKeyLiteral.variableName = keyName; mapKeyLiteral.type = symTable.mapType;
List<CompletionItem> completionItems = CommonUtil.getCurrentFileImports(srcOwnerPkg, ctx).stream() .map(bLangImportPackage -> { String orgName = bLangImportPackage.orgName.toString(); String pkgName = String.join(".", bLangImportPackage.pkgNameComps.stream() .map(id -> id.value)
public static IdentifierNode createIdentifierNode() { return new BLangIdentifier(); }
@Override public String toString() { StringBuilder br = new StringBuilder(); if (expr != null) { // Action invocation or lambda invocation. br.append(String.valueOf(expr)).append("."); } else if (pkgAlias != null && !pkgAlias.getValue().isEmpty()) { br.append(String.valueOf(pkgAlias)).append(":"); } br.append(String.valueOf(name)); br.append("("); if (argExprs.size() > 0) { String s = Arrays.toString(argExprs.toArray()); br.append(s.substring(1, s.length() - 1)); } br.append(")"); return br.toString(); }
void addKeyValueToWaitForAll(DiagnosticPos pos, Set<Whitespace> ws, String identifier, boolean containsExpr) { BLangWaitForAllExpr.BLangWaitKeyValue keyValue = TreeBuilder.createWaitKeyValueNode(); keyValue.addWS(ws); keyValue.pos = pos; // Add the key as an identifier BLangIdentifier key = (BLangIdentifier) TreeBuilder.createIdentifierNode(); key.setLiteral(false); key.setValue(identifier); keyValue.key = key; // Add the value. If it is a Identifier:expr pair then add the value by popping the expr from the expression // stack else the value is not assigned. if (containsExpr) { keyValue.valueExpr = (BLangExpression) exprNodeStack.pop(); } else { BLangSimpleVarRef varRef = (BLangSimpleVarRef) TreeBuilder.createSimpleVariableReferenceNode(); varRef.pos = pos; varRef.variableName = key; varRef.addWS(ws); varRef.pkgAlias = (BLangIdentifier) TreeBuilder.createIdentifierNode(); keyValue.keyExpr = varRef; } waitCollectionStack.peek().keyValuePairs.add(keyValue); } }