| This test checks basic behavior of the textDocument/foldingRange, when the |
| editor only supports line folding. |
| |
| -- capabilities.json -- |
| { |
| "textDocument": { |
| "foldingRange": { |
| "lineFoldingOnly": true |
| } |
| } |
| } |
| -- 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() string {<2 kind=""> |
| /* This is a single line comment */ |
| switch {<3 kind=""> |
| case true:<4 kind=""> |
| if true {<5 kind=""> |
| fmt.Println("true")</5> |
| } else {<6 kind=""> |
| fmt.Println("false")</6> |
| }</4> |
| case false:<7 kind=""> |
| fmt.Println("false")</7> |
| default:<8 kind=""> |
| fmt.Println("default")</3></8> |
| } |
| /* This is a multiline<9 kind="comment"> |
| block |
| comment */</9> |
| |
| /* This is a multiline<10 kind="comment"> |
| block |
| comment */ |
| // Followed by another comment.</10> |
| _ = []int{<11 kind=""> |
| 1, |
| 2, |
| 3</11>, |
| } |
| _ = [2]string{"d", |
| "e", |
| } |
| _ = map[string]int{<12 kind=""> |
| "a": 1, |
| "b": 2, |
| "c": 3</12>, |
| } |
| type T struct {<13 kind=""> |
| f string |
| g int |
| h string</13> |
| } |
| _ = T{<14 kind=""> |
| f: "j", |
| g: 4, |
| h: "i"</14>, |
| } |
| x, y := make(chan bool), make(chan bool) |
| select {<15 kind=""> |
| case val := <-x:<16 kind=""> |
| if val {<17 kind=""> |
| fmt.Println("true from x")</17> |
| } else {<18 kind=""> |
| fmt.Println("false from x")</18> |
| }</16> |
| case <-y:<19 kind=""> |
| fmt.Println("y")</19> |
| default:<20 kind=""> |
| fmt.Println("default")</15></20> |
| } |
| // This is a multiline comment<21 kind="comment"> |
| // that is not a doc comment.</21> |
| return <22 kind="">` |
| this string |
| is not indented`</2></22> |
| } |