tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 }