in src/tokenizer.ts [43:77]
isRegexStart() {
const previous = this.values[this.values.length - 1];
let regex = (previous !== null);
switch (previous) {
case 'this':
case ']':
regex = false;
break;
case ')':
const keyword = this.values[this.paren - 1];
regex = (keyword === 'if' || keyword === 'while' || keyword === 'for' || keyword === 'with');
break;
case '}':
// Dividing a function by anything makes little sense,
// but we have to check for that.
regex = true;
if (this.values[this.curly - 3] === 'function') {
// Anonymous function, e.g. function(){} /42
const check = this.values[this.curly - 4];
regex = check ? !this.beforeFunctionExpression(check) : false;
} else if (this.values[this.curly - 4] === 'function') {
// Named function, e.g. function f(){} /42/
const check = this.values[this.curly - 5];
regex = check ? !this.beforeFunctionExpression(check) : true;
}
break;
default:
break;
}
return regex;
}