| This test checks basic behavior of textDocument/foldingRange. |
| |
| -- a.go -- |
| package folding //@foldingrange(raw) |
| |
| import ( |
| "fmt" |
| _ "log" |
| ) |
| |
| import _ "os" |
| |
| // bar is a function. |
| // With a multiline doc comment. |
| func bar() string { |
| /* This is a single line comment */ |
| switch { |
| case true: |
| if true { |
| fmt.Println("true") |
| } else { |
| fmt.Println("false") |
| } |
| case false: |
| fmt.Println("false") |
| default: |
| fmt.Println("default") |
| } |
| /* This is a multiline |
| block |
| comment */ |
| |
| /* This is a multiline |
| block |
| comment */ |
| // Followed by another comment. |
| _ = []int{ |
| 1, |
| 2, |
| 3, |
| } |
| _ = [2]string{"d", |
| "e", |
| } |
| _ = map[string]int{ |
| "a": 1, |
| "b": 2, |
| "c": 3, |
| } |
| type T struct { |
| f string |
| g int |
| h string |
| } |
| _ = T{ |
| f: "j", |
| g: 4, |
| h: "i", |
| } |
| x, y := make(chan bool), make(chan bool) |
| select { |
| case val := <-x: |
| if val { |
| fmt.Println("true from x") |
| } else { |
| fmt.Println("false from x") |
| } |
| case <-y: |
| fmt.Println("y") |
| default: |
| fmt.Println("default") |
| } |
| // This is a multiline comment |
| // that is not a doc comment. |
| return ` |
| this string |
| is not indented` |
| } |
| -- @raw -- |
| package folding //@foldingrange(raw) |
| |
| import (<0 kind="imports"> |
| "fmt" |
| _ "log" |
| </0>) |
| |
| import _ "os" |
| |
| // bar is a function.<1 kind="comment"> |
| // With a multiline doc comment.</1> |
| func bar(<2 kind=""></2>) string {<3 kind=""> |
| /* This is a single line comment */ |
| switch {<4 kind=""> |
| case true:<5 kind=""> |
| if true {<6 kind=""> |
| fmt.Println(<7 kind="">"true"</7>) |
| </6>} else {<8 kind=""> |
| fmt.Println(<9 kind="">"false"</9>) |
| </8>}</5> |
| case false:<10 kind=""> |
| fmt.Println(<11 kind="">"false"</11>)</10> |
| default:<12 kind=""> |
| fmt.Println(<13 kind="">"default"</13>)</12> |
| </4>} |
| /* This is a multiline<14 kind="comment"> |
| block |
| comment */</14> |
| |
| /* This is a multiline<15 kind="comment"> |
| block |
| comment */ |
| // Followed by another comment.</15> |
| _ = []int{<16 kind=""> |
| 1, |
| 2, |
| 3, |
| </16>} |
| _ = [2]string{<17 kind="">"d", |
| "e", |
| </17>} |
| _ = map[string]int{<18 kind=""> |
| "a": 1, |
| "b": 2, |
| "c": 3, |
| </18>} |
| type T struct {<19 kind=""> |
| f string |
| g int |
| h string |
| </19>} |
| _ = T{<20 kind=""> |
| f: "j", |
| g: 4, |
| h: "i", |
| </20>} |
| x, y := make(<21 kind="">chan bool</21>), make(<22 kind="">chan bool</22>) |
| select {<23 kind=""> |
| case val := <-x:<24 kind=""> |
| if val {<25 kind=""> |
| fmt.Println(<26 kind="">"true from x"</26>) |
| </25>} else {<27 kind=""> |
| fmt.Println(<28 kind="">"false from x"</28>) |
| </27>}</24> |
| case <-y:<29 kind=""> |
| fmt.Println(<30 kind="">"y"</30>)</29> |
| default:<31 kind=""> |
| fmt.Println(<32 kind="">"default"</32>)</31> |
| </23>} |
| // This is a multiline comment<33 kind="comment"> |
| // that is not a doc comment.</33> |
| return <34 kind="">` |
| this string |
| is not indented`</34> |
| </3>} |