static BLangFunction createFunction(DiagnosticPos pos, String name) { final BLangFunction bLangFunction = (BLangFunction) TreeBuilder.createFunctionNode(); final IdentifierNode funcName = createIdentifier(pos, name); bLangFunction.setName(funcName); bLangFunction.flagSet = EnumSet.of(Flag.LAMBDA); bLangFunction.pos = pos; // Create body of the function bLangFunction.body = createBlockStmt(pos); return bLangFunction; }
void startLambdaFunctionDef(PackageID pkgID) { // Passing zero for annotation count as Lambdas can't have annotations. startFunctionDef(0); BLangFunction lambdaFunction = (BLangFunction) this.invokableNodeStack.peek(); lambdaFunction.setName(createIdentifier(anonymousModelHelper.getNextAnonymousFunctionKey(pkgID))); lambdaFunction.addFlag(Flag.LAMBDA); }
public static BLangFunction createInitFunction(DiagnosticPos pos, String name, Name sufix) { BLangFunction initFunction = (BLangFunction) TreeBuilder.createFunctionNode(); initFunction.setName(createIdentifier(name + sufix.getValue())); initFunction.flagSet = EnumSet.of(Flag.PUBLIC); initFunction.pos = pos; BLangValueType typeNode = (BLangValueType) TreeBuilder.createValueTypeNode(); typeNode.pos = pos; typeNode.typeKind = TypeKind.NIL; initFunction.returnTypeNode = typeNode; // Create body of the init function BLangBlockStmt body = (BLangBlockStmt) TreeBuilder.createBlockNode(); body.pos = pos; initFunction.setBody(body); return initFunction; }
private BLangFunction createFunction(DiagnosticPos pos, String name, BLangPackage packageNode) { final BLangFunction bLangFunction = (BLangFunction) TreeBuilder.createFunctionNode(); final IdentifierNode funcName = ASTBuilderUtil.createIdentifier(pos, name); bLangFunction.setName(funcName); bLangFunction.flagSet = EnumSet.of(Flag.PUBLIC); bLangFunction.pos = pos; bLangFunction.type = new BInvokableType(new ArrayList<>(), new BNilType(), null); bLangFunction.body = this.createBlockStmt(pos); BInvokableSymbol functionSymbol = Symbols.createFunctionSymbol(Flags.asMask(bLangFunction.flagSet), new Name(bLangFunction.name.value), packageNode.packageID, bLangFunction.type, packageNode.symbol, true); functionSymbol.scope = new Scope(functionSymbol); bLangFunction.symbol = functionSymbol; return bLangFunction; }
@Override public void visit(BLangArrowFunction bLangArrowFunction) { BLangFunction bLangFunction = (BLangFunction) TreeBuilder.createFunctionNode(); bLangFunction.setName(bLangArrowFunction.functionName);