### :warning: This is not real-world code. It's technically a bug, but no real program will notice it. Feel free to close this issue! Consider this non-strict mode code: (GitHub's syntax highlighting is broken) ```js function fn() { yield / "/ //" /* } /*/ } module.exports.foo = 2; // */ ``` The tokens are: ``` [function] [Identifier: fn] [paren left] [paren left] [brace left] [Identifier: yield] [division] [String: "/ //"] [Comment: \n}\n/ ] [brace right] [Identifier: module] [dot] [Identifier: exports] [dot] [Identifier: foo] [equal] [Number: 2] [semicolon] ``` However, `cjs-module-lexer` returns `{ exports: [], reexports: [] }`.
Activity
guybedford commentedon Oct 28, 2020
Improving the lexing ambiguity cases is always a goal so thanks for posting, but yes there isn't a rush to fix this :)
I wasn't aware the this would be parsed as division in this expression position... what is it that makes
yieldact differently toreturnhere?guybedford commentedon Oct 28, 2020
I've posted a potential fix in #21, interestingly it's a negative diff and thankfully doesn't require any extra work :)
Would be grateful if you could review when you can.
[-]Export not detected (edge case)[/-][+]Export not detected[/+]