Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

parser.ParseFile hangs when parsing "`" #351

Closed
mrduncan opened this issue Dec 10, 2021 · 0 comments
Closed

parser.ParseFile hangs when parsing "`" #351

mrduncan opened this issue Dec 10, 2021 · 0 comments
Labels

Comments

@mrduncan
Copy link

mrduncan commented Dec 10, 2021

I'm not entirely sure what's happening but calls to parser.ParseFile with a source of "`" seem to hang instead of returning an error.

A few cases I've tried:

"`"  // hangs
" `" // hangs
"` " // returns error
package main

import "github.com/dop251/goja/parser"

func main() {
	parser.ParseFile(nil, "", "`", 0)
}
goroutine 1 [runnable]:
github.com/dop251/goja/parser.(*_parser).parseTemplateLiteral(0xc00013a000, 0x1)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/expression.go:469 +0x45
github.com/dop251/goja/parser.(*_parser).parseTaggedTemplateLiteral(0xc00013a000, {0x112b2a8, 0xc07d475180})
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/expression.go:503 +0x2d
github.com/dop251/goja/parser.(*_parser).parseLeftHandSideExpressionAllowCall(0xc00013a000)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/expression.go:665 +0xf4
github.com/dop251/goja/parser.(*_parser).parsePostfixExpression(0xc00013a000)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/expression.go:675 +0x25
github.com/dop251/goja/parser.(*_parser).parseUnaryExpression(0xc00013a000)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/expression.go:737 +0x2fe
github.com/dop251/goja/parser.(*_parser).parseMultiplicativeExpression(0xc00013a000)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/expression.go:742 +0x42
github.com/dop251/goja/parser.(*_parser).parseAdditiveExpression(0xc00013a000)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/expression.go:760 +0x42
github.com/dop251/goja/parser.(*_parser).parseShiftExpression(0xc00013a000)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/expression.go:777 +0x42
github.com/dop251/goja/parser.(*_parser).parseRelationalExpression(0xc00013a000)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/expression.go:795 +0x68
github.com/dop251/goja/parser.(*_parser).parseEqualityExpression(0xc00013a000)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/expression.go:839 +0x42
github.com/dop251/goja/parser.(*_parser).parseBitwiseAndExpression(0xc00013a000)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/expression.go:858 +0x42
github.com/dop251/goja/parser.(*_parser).parseBitwiseExclusiveOrExpression(0xc00013a000)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/expression.go:875 +0x42
github.com/dop251/goja/parser.(*_parser).parseBitwiseOrExpression(0xc00013a000)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/expression.go:892 +0x42
github.com/dop251/goja/parser.(*_parser).parseLogicalAndExpression(0xc00013a000)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/expression.go:909 +0x42
github.com/dop251/goja/parser.(*_parser).parseLogicalOrExpression(0xc00013a000)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/expression.go:926 +0x42
github.com/dop251/goja/parser.(*_parser).parseConditionalExpression(0xc00013a000)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/expression.go:942 +0x25
github.com/dop251/goja/parser.(*_parser).parseAssignmentExpression(0xc00013a000)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/expression.go:968 +0x12b
github.com/dop251/goja/parser.(*_parser).parseExpression(0xc00013a000)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/expression.go:1064 +0x62
github.com/dop251/goja/parser.(*_parser).parseStatement(0xc00013a000)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/statement.go:90 +0x2e9
github.com/dop251/goja/parser.(*_parser).parseSourceElements(...)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/statement.go:644
github.com/dop251/goja/parser.(*_parser).parseProgram(0xc00013a000)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/statement.go:654 +0x10e
github.com/dop251/goja/parser.(*_parser).parse(0xc00013a000)
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/parser.go:216 +0x85
github.com/dop251/goja/parser.ParseFile(0x0, {0x0, 0x1005359}, {0x10e5820, 0x11285d0}, 0x0, {0x0, 0x0, 0x0})
	/Users/matt/go/pkg/mod/github.com/dop251/goja@v0.0.0-20211207134806-acd374ca9c94/parser/parser.go:182 +0x252
main.main()
	/Users/matt/code/scratch/main.go:6 +0x39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants