Esempio n. 1
0
//## 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));
}
Esempio n. 2
0
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);
}