static void UI_ReportCaughtException(KonohaContext *kctx, kException *e, KonohaStack *bottomStack, KonohaStack *topStack) { const char *exceptionName; const char *optionalMessage; int fault; KonohaStack *sfp; KBuffer wb; DBG_ASSERT(IS_Exception(e)); exceptionName = KSymbol_text(e->symbol); optionalMessage = kString_text(e->Message); fault = e->fault; PLATAPI printf_i("%s", BeginTag(kctx, ErrTag)); if(optionalMessage != NULL && optionalMessage[0] != 0) { PLATAPI printf_i("%s: SoftwareFault %s", exceptionName, optionalMessage); } else { PLATAPI printf_i("%s:", exceptionName); if(KFlag_Is(int, fault, SoftwareFault)) { PLATAPI printf_i(" SoftwareFault"); } if(KFlag_Is(int, fault, UserFault)) { PLATAPI printf_i(" UserFault"); }
static void TEST_reportCaughtException(KonohaContext *kctx, kException *e, struct KonohaValueVar *bottomStack, struct KonohaValueVar *topStack) { int line = (topStack != NULL) ? (kuhalfword_t)topStack[K_RTNIDX].calledFileLine : 0; const char *exceptionName = KSymbol_text(e->symbol); PLATAPI printf_i("LINE%d: %s\n", line, exceptionName); fprintf(stdout, "LINE %d: %s %s\n", line, exceptionName, kString_text(e->Message)); }
static void kMethod_WriteToBuffer(KonohaContext *kctx, kMethod *mtd, KBuffer *wb) { kParam *pa = kMethod_GetParam(mtd); Method_WriteAttributeToBuffer(kctx, mtd, wb); KLIB KBuffer_printf(kctx, wb, "%s %s.%s%s", KType_text(pa->rtype), KType_text(mtd->typeId), KMethodName_Fmt2(mtd->mn)); { size_t i; KLIB KBuffer_Write(kctx, wb, "(", 1); for(i = 0; i < pa->psize; i++) { if(i > 0) { KLIB KBuffer_Write(kctx, wb, ", ", 2); } if(KTypeAttr_Is(ReadOnly, pa->paramtypeItems[i].attrTypeId)) { KLIB KBuffer_printf(kctx, wb, "@ReadOnly "); } if(KTypeAttr_Is(Coercion, pa->paramtypeItems[i].attrTypeId)) { KLIB KBuffer_printf(kctx, wb, "@Coercion "); } KLIB KBuffer_printf(kctx, wb, "%s %s", KType_text(pa->paramtypeItems[i].attrTypeId), KSymbol_text(pa->paramtypeItems[i].name)); } KLIB KBuffer_Write(kctx, wb, ")", 1); } }