outer_loop标记语句报错:Git推送流水线出现Unexpected labeled statement错误
修复"Unexpected labeled statement"错误方案
推送代码至Git时流水线报错:outer_loop标签处提示“Unexpected labeled statement”,问题代码如下:
outer_loop: while ((c = nextPixel()) != EOF) { fcode = (c << BITS) + ent; i = (c << hshift) ^ ent; if (htab[i] === fcode) { ent = codetab[i]; continue; } else if (htab[i] >= 0) { disp = hsize_reg - i; if (i === 0) disp = 1; do { if ((i -= disp) < 0) i += hsize_reg; if (htab[i] === fcode) { ent = codetab[i]; continue outer_loop; } } while (htab[i] >= 0); } output(ent, outs); ent = c; if (free_ent < 1 << BITS) { codetab[i] = free_ent++; htab[i] = fcode; } else { cl_block(outs); } }
错误原因
标签语句(如outer_loop)在当前代码环境中不被允许,可能是启用了严格模式、代码检查工具(如ESLint)禁用了标签,或是语法规范限制导致。
修正方法
推荐通过重构逻辑移除标签,用布尔标志替代跳转,既符合语法规范也提升代码可读性:
let continueOuter = false; while ((c = nextPixel()) != EOF) { // 检查是否需要跳转到外层循环开头 if (continueOuter) { continueOuter = false; continue; } fcode = (c << BITS) + ent; i = (c << hshift) ^ ent; if (htab[i] === fcode) { ent = codetab[i]; continue; } else if (htab[i] >= 0) { disp = hsize_reg - i; if (i === 0) disp = 1; do { if ((i -= disp) < 0) i += hsize_reg; if (htab[i] === fcode) { ent = codetab[i]; continueOuter = true; break; // 跳出内层循环 } } while (htab[i] >= 0); // 若标记为跳转外层,直接进入下一轮外层循环 if (continueOuter) continue; } output(ent, outs); ent = c; if (free_ent < 1 << BITS) { codetab[i] = free_ent++; htab[i] = fcode; } else { cl_block(outs); } }
也可以尝试关闭代码检查工具的标签禁用规则(如ESLint的no-labels)或关闭严格模式,但这种方式不推荐,会降低代码安全性和可读性。
内容的提问来源于stack exchange,提问作者Celal Poyraz
相关产品推荐
相关产品推荐

