static KMETHOD ExprTyCheck_Float(KonohaContext *kctx, KonohaStack *sfp) { VAR_ExprTyCheck(stmt, expr, gma, reqty); kToken *tk = expr->termToken; sfp[4].floatValue = strtod(S_text(tk->text), NULL); // just using tramsformation float RETURN_(SUGAR kExpr_setUnboxConstValue(kctx, expr, TY_Float, sfp[4].unboxValue)); }
static KMETHOD TypeCheck_Defined(KonohaContext *kctx, KonohaStack *sfp) { VAR_TypeCheck(stmt, expr, gma, reqty); size_t i; kbool_t isDefined = true; SugarContext *sugarContext = KonohaContext_getSugarContext(kctx); int popIsBlockingErrorMessage = sugarContext->isBlockedErrorMessage; sugarContext->isBlockedErrorMessage = true; for(i = 1; i < kArray_size(expr->cons); i++) { kExpr *typedExpr = SUGAR kStmt_tyCheckExprAt(kctx, stmt, expr, i, gma, TY_var, TPOL_ALLOWVOID); if(typedExpr == K_NULLEXPR) { isDefined = false; break; } } sugarContext->isBlockedErrorMessage = popIsBlockingErrorMessage; KReturn(SUGAR kExpr_setUnboxConstValue(kctx, expr, TY_boolean, isDefined)); }