Fix "Nested comments won't compile" (#908)

pull/922/head
jiro4989 2019-07-02 08:49:15 +09:00 committed by Alexander Medvednikov
parent 1cd95091f2
commit 30633ff14f
2 changed files with 36 additions and 1 deletions

View File

@ -455,8 +455,9 @@ fn (s mut Scanner) scan() ScanRes {
// Multiline comments // Multiline comments
if nextc == `*` { if nextc == `*` {
start := s.pos start := s.pos
mut nest_count := 1
// Skip comment // Skip comment
for ! (s.text[s.pos] == `*` && s.text[s.pos + 1] == `/`) { for nest_count > 0 {
s.pos++ s.pos++
if s.pos >= s.text.len { if s.pos >= s.text.len {
s.line_nr-- s.line_nr--
@ -464,6 +465,14 @@ fn (s mut Scanner) scan() ScanRes {
} }
if s.text[s.pos] == `\n` { if s.text[s.pos] == `\n` {
s.line_nr++ s.line_nr++
continue
}
if s.text[s.pos] == `/` && s.text[s.pos + 1] == `*` {
nest_count++
continue
}
if s.text[s.pos] == `*` && s.text[s.pos + 1] == `/` {
nest_count--
} }
} }
s.pos++ s.pos++

View File

@ -1,3 +1,26 @@
// 1 line comment
/* 1 line comment */
/*
multi line comment (1)
multi line comment (2)
multi line comment (3)
*/
/*
multi line comment (1)
/*
nested comment
*/
/*nested comment*/
/*nested comment
*/
/* nested comment */
/* /* nested comment */ */
multi line comment (2)
*/
type myfn fn (int) string type myfn fn (int) string
type myfn2 fn (a int, b int) int type myfn2 fn (a int, b int) int
@ -35,6 +58,9 @@ type actionf_p2 fn (voidptr, voidptr)
fn myprint(s string, ..) { fn myprint(s string, ..) {
println('my print') println('my print')
println('// comment')
println('/* comment */')
println('/* /* comment */ */')
} }
fn test_fns() { fn test_fns() {