aboutsummaryrefslogtreecommitdiff
path: root/cer.go
diff options
context:
space:
mode:
authorHimbeer <himbeer@disroot.org>2024-09-05 13:43:57 +0200
committerHimbeer <himbeer@disroot.org>2024-09-05 13:43:57 +0200
commitc9dc7f17a33c87cb671f5313931438643ae6e4e0 (patch)
tree8627a7cbfc2b0279765b4f55ec63d51fd1591449 /cer.go
parentee2e07ea567b6eb66399389c88d73e2e1926298f (diff)
Fix invalid top-level declaration errors causing a deadlock
Diffstat (limited to 'cer.go')
-rw-r--r--cer.go9
1 files changed, 6 insertions, 3 deletions
diff --git a/cer.go b/cer.go
index 2bc4d61..310f2d0 100644
--- a/cer.go
+++ b/cer.go
@@ -14,7 +14,7 @@ import (
)
func main() {
- errs := make(chan error, 1024)
+ errs := make(chan error, 1)
toks := make(chan token, 1024)
go lex(os.Stdin, toks, errs)
@@ -23,7 +23,7 @@ func main() {
// fmt.Println(token)
// }
- root := make(chan *rootExpr, 1)
+ root := make(chan *rootExpr)
go parse(&tokens{
src: toks,
toks: make([]token, 0, len(toks)),
@@ -31,7 +31,10 @@ func main() {
// fmt.Printf("%+v\n", <-expr)
- go generate(<-root, os.Stdout, errs)
+ ast, ok := <-root
+ if ok {
+ go generate(ast, os.Stdout, errs)
+ }
err := <-errs
if err != nil {