diff --git a/pkg/saccharine/token/parse.go b/pkg/saccharine/token/parse.go index d0e3065..3848e5e 100644 --- a/pkg/saccharine/token/parse.go +++ b/pkg/saccharine/token/parse.go @@ -78,17 +78,15 @@ func getToken(i *iterator.Iterator[rune]) (*Token, error) { case letter == ';': return NewHardBreak(index), nil case letter == '#': - // Skip everything until the next newline or EOF - for { - if i.Done() { - break - } + // Skip everything until the next newline or EOF. + for i.Done() { r, err := i.Next() if err != nil { return nil, trace.Wrap(err, "error while parsing comment") } + if r == '\n' { - // Put the newline back so it can be processed as a soft break + // Put the newline back so it can be processed as a soft break. i.Back() break } diff --git a/tests/comments.test b/tests/comments.test index 11d25dd..c033ae0 100644 --- a/tests/comments.test +++ b/tests/comments.test @@ -3,7 +3,9 @@ identity := \x.x # This is an end-of-line comment # Define a simple function that applies a function twice -twice := \f.\x.(f (f x)) +twice := \f.\x.(f + # Comments can be anywhere! +(f x)) # Test that comments don't interfere with expressions result := (twice identity VALUE) # Should just return VALUE