42 lines
1.0 KiB
Plaintext
42 lines
1.0 KiB
Plaintext
package wcc;
|
|
|
|
import syntax;
|
|
|
|
export fn compilefile(file: *syntax.node, testmode: i32, testpackage: i32,
|
|
testmodule: 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.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;
|
|
};
|