// |reftest| skip
loadRelativeToScript('PatternBuilders.js' );
function localSrc(src) {
return "(function(){ " + src + " })" ;
}
function localPatt(patt) {
return program([exprStmt(funExpr(null , [], blockStmt([patt])))]);
}
function blockSrc(src) {
return "(function(){ { " + src + " } })" ;
}
function blockPatt(patt) {
return program([exprStmt(funExpr(null , [], blockStmt([blockStmt([patt])])))]);
}
function assertBlockStmt(src, patt) {
blockPatt(patt).assert (Reflect.parse(blockSrc(src)));
}
function assertBlockExpr(src, patt) {
assertBlockStmt(src, exprStmt(patt));
}
function assertBlockDecl(src, patt, builder) {
blockPatt(patt).assert (Reflect.parse(blockSrc(src), {builder: builder}));
}
function assertLocalStmt(src, patt) {
localPatt(patt).assert (Reflect.parse(localSrc(src)));
}
function assertLocalExpr(src, patt) {
assertLocalStmt(src, exprStmt(patt));
}
function assertLocalDecl(src, patt) {
localPatt(patt).assert (Reflect.parse(localSrc(src)));
}
function assertGlobalStmt(src, patt, builder) {
program([patt]).assert (Reflect.parse(src, {builder: builder}));
}
function assertStringExpr(src, patt) {
program([exprStmt(patt)]).assert (Reflect.parse(src));
}
function assertGlobalExpr(src, patt, builder) {
program([exprStmt(patt)]).assert (Reflect.parse(src, {builder: builder}));
//assertStmt(src, exprStmt(patt));
}
function assertGlobalDecl(src, patt) {
program([patt]).assert (Reflect.parse(src));
}
function assertProg(src, patt) {
program(patt).assert (Reflect.parse(src));
}
function assertStmt(src, patt) {
assertLocalStmt(src, patt);
assertGlobalStmt(src, patt);
assertBlockStmt(src, patt);
}
function assertInFunctionExpr(src, patt) {
assertLocalExpr(src, patt);
assertBlockExpr(src, patt);
}
function assertExpr(src, patt) {
assertLocalExpr(src, patt);
assertGlobalExpr(src, patt);
assertBlockExpr(src, patt);
}
function assertDecl(src, patt) {
assertLocalDecl(src, patt);
assertGlobalDecl(src, patt);
assertBlockDecl(src, patt);
}
function assertError(src, errorType) {
try {
Reflect.parse(src);
} catch (expected) {
if (!(expected instanceof errorType))
throw expected;
return ;
}
throw new Error("expected " + errorType.name + " for " + JSON.stringify(src));
}
Messung V0.5 C=98 H=100 G=98
¤ Dauer der Verarbeitung: 0.0 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland