JuliaSyntax.jl icon indicating copy to clipboard operation
JuliaSyntax.jl copied to clipboard

Failures found using fuzz testing

Open c42f opened this issue 8 months ago • 2 comments

Using the tools from #379 uncovers several bugs. For example

fuzz_test(try_parseall_failure, product_token_fuzz(cutdown_tokens, 2))
fuzz_test(try_hook_failure, product_token_fuzz(cutdown_tokens, 2))
fuzz_test(try_parseall_failure, random_token_fuzz(cutdown_tokens, 10, 10_000_000))

Some errors found with this:

Parser errors

  • [x] parseall(Expr, "@(") (#382)
  • [x] parseall(SyntaxNode, "function(where") (#388)
  • [x] parseall(SyntaxNode, "x{primitive\ntype"), parseall(SyntaxNode, "(primitive\ntype") (#386)
  • [x] parseall(SyntaxNode, "var\"\"``\$"), parseall(SyntaxNode, "+||where'``\$") (#394)

Tree building errors

  • [ ] parseall(SyntaxNode, "using . ...", ignore_errors=true)
  • [ ] parseall(Expr, "\x04'\0", ignore_errors=true)
  • [ ] parseall(Expr, "@(var\"", ignore_errors=true)
  • [x] parseall(Expr, "for\n\n<:", ignore_errors=true) (#393)
  • [ ] parseall(Expr, "x:y:<", ignore_errors=true)

Hook errors

  • [x] Meta_parseall("x.") (#385)

c42f avatar Nov 03 '23 20:11 c42f