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