package wcc; import syntax; export fn compilefile(file: *syntax.node, testmode: i32, testpackage: i32, testmodule: str, testtarget: str, sepmode: i32, wwiout: str, entrymode: i32) i32 = { let tc: syntax.tctx; syntax.typesinit(&tc); let ck: checker; checkinit(&ck, &tc); ck.istest = testmode; ck.istestpackage = testpackage; if (testmodule.len > 0) { ck.testmodule = testmodule; }; ck.testtarget = testtarget; ck.sepmode = sepmode; checkfile(&ck, file); if (ck.errs > 0) { return 1; }; if (wwiout.len > 0) { if (wwiemit(&ck, file, wwiout) != 0) { return 1; }; }; let cg: cgen; cgeninit(&cg); cg.sepmode = sepmode; if (wwiout.len > 0 && entrymode == 0) { cg.sepisdep = 1i32; }; cgfile(&cg, file); return 0; }; export fn resolvefile(file: *syntax.node, verbose: i32, nresolved: *i32, nunresolved: *i32) i32 = { let tc: syntax.tctx; syntax.typesinit(&tc); let ck: checker; checkinit(&ck, &tc); ck.verbose = verbose; checkfile(&ck, file); *nresolved = ck.nresolved; *nunresolved = ck.nunresolved; if (ck.errs > 0 || ck.nunresolved > 0) { return 1; }; return 0; };