PatternAsserts.js (2360B)
1 // |reftest| skip 2 3 loadRelativeToScript('PatternBuilders.js'); 4 5 function localSrc(src) { 6 return "(function(){ " + src + " })"; 7 } 8 function localPatt(patt) { 9 return program([exprStmt(funExpr(null, [], blockStmt([patt])))]); 10 } 11 function blockSrc(src) { 12 return "(function(){ { " + src + " } })"; 13 } 14 function blockPatt(patt) { 15 return program([exprStmt(funExpr(null, [], blockStmt([blockStmt([patt])])))]); 16 } 17 18 function assertBlockStmt(src, patt) { 19 blockPatt(patt).assert(Reflect.parse(blockSrc(src))); 20 } 21 22 function assertBlockExpr(src, patt) { 23 assertBlockStmt(src, exprStmt(patt)); 24 } 25 26 function assertBlockDecl(src, patt, builder) { 27 blockPatt(patt).assert(Reflect.parse(blockSrc(src), {builder: builder})); 28 } 29 30 function assertLocalStmt(src, patt) { 31 localPatt(patt).assert(Reflect.parse(localSrc(src))); 32 } 33 34 function assertLocalExpr(src, patt) { 35 assertLocalStmt(src, exprStmt(patt)); 36 } 37 38 function assertLocalDecl(src, patt) { 39 localPatt(patt).assert(Reflect.parse(localSrc(src))); 40 } 41 42 function assertGlobalStmt(src, patt, builder) { 43 program([patt]).assert(Reflect.parse(src, {builder: builder})); 44 } 45 46 function assertStringExpr(src, patt) { 47 program([exprStmt(patt)]).assert(Reflect.parse(src)); 48 } 49 50 function assertGlobalExpr(src, patt, builder) { 51 program([exprStmt(patt)]).assert(Reflect.parse(src, {builder: builder})); 52 //assertStmt(src, exprStmt(patt)); 53 } 54 55 function assertGlobalDecl(src, patt) { 56 program([patt]).assert(Reflect.parse(src)); 57 } 58 59 function assertProg(src, patt) { 60 program(patt).assert(Reflect.parse(src)); 61 } 62 63 function assertStmt(src, patt) { 64 assertLocalStmt(src, patt); 65 assertGlobalStmt(src, patt); 66 assertBlockStmt(src, patt); 67 } 68 69 function assertInFunctionExpr(src, patt) { 70 assertLocalExpr(src, patt); 71 assertBlockExpr(src, patt); 72 } 73 74 function assertExpr(src, patt) { 75 assertLocalExpr(src, patt); 76 assertGlobalExpr(src, patt); 77 assertBlockExpr(src, patt); 78 } 79 80 function assertDecl(src, patt) { 81 assertLocalDecl(src, patt); 82 assertGlobalDecl(src, patt); 83 assertBlockDecl(src, patt); 84 } 85 86 function assertError(src, errorType) { 87 try { 88 Reflect.parse(src); 89 } catch (expected) { 90 if (!(expected instanceof errorType)) 91 throw expected; 92 return; 93 } 94 throw new Error("expected " + errorType.name + " for " + JSON.stringify(src)); 95 }