//## boolean Stmt.declType(Gamma gma, cid typeId, Expr declExpr); static KMETHOD Stmt_declType(KonohaContext *kctx, KonohaStack *sfp) { kStmt *stmt = sfp[0].asStmt; kGamma *gma = sfp[1].asGamma; ktype_t cid = (ktype_t)sfp[2].intValue; kExpr *declExpr = sfp[3].asExpr; KReturnUnboxValue(SUGAR kStmt_DeclType(kctx, stmt, gma, cid, declExpr, NULL, NULL, &stmt)); }
static KMETHOD Statement_GlobalTypeDecl(KonohaContext *kctx, KonohaStack *sfp) { VAR_Statement(stmt, gma); kbool_t result = false; kNameSpace *ns = Stmt_ns(stmt); KMakeTrace(trace, sfp); trace->pline = stmt->uline; if(kNameSpace_InitGlobalObject(kctx, ns, trace)) { kToken *tk = SUGAR kStmt_GetToken(kctx, stmt, KW_TypePattern, NULL); kExpr *expr = SUGAR kStmt_GetExpr(kctx, stmt, KW_ExprPattern, NULL); kStmt *lastStmt = stmt; result = SUGAR kStmt_DeclType(kctx, stmt, gma, tk->resolvedTypeId, expr, ns->globalObjectNULL_OnList, TypeDeclAndMakeSetter, &lastStmt); } kStmt_done(kctx, stmt); KReturnUnboxValue(result); }