// test case: expected syntax statement
info ()

-----
// test case: duplicate syntax statement
syntax = "v1"
syntax = "v1"

-----
// test case: duplicate info statement
syntax = "v1"
info()
info()

-----
// test case: duplicate type
syntax = "v1"
type Foo{}
type Foo{}

-----
// test case: duplicate type
syntax = "v1"
type Baz{}
type (
    Baz{}
)


-----
// test case: multiple service name
syntax = "v1"
service foo{
    @handler foo
    get /foo
}
service bar{
    @handler foo
    get /foo
}

-----
// test case: duplicate handler
syntax = "v1"
service foo{
    @handler foo
    get /foo
    @handler foo
    get /bar
}

-----
// test case: duplicate path
syntax = "v1"
service foo{
    @handler foo
    get /foo
    @handler bar
    get /foo
    @handler qux
    get /v1/baz
}

@server(
    prefix: /v1
)
service foo{
    @handler qux
    get /baz
    @handler quux
    get /baz
}

-----
// test case: type declare context
syntax = "v1"
type Foo {
    Bar Bar `json:"bar"`
}

-----
// test case:  map key expected literal type
syntax = "v1"
type Foo {
    Bar map[[]int]string  `json:"bar"`
}

-----
// test case:  map key expected literal type
syntax = "v1"
type Foo {
    Bar map[[]int]string  `json:"bar"`
}

-----
// test case:  map key expected literal type
syntax = "v1"
type Foo {
    Bar *map[[]int]string  `json:"bar"`
}

-----
// test case:  map valu expected literal type
syntax = "v1"
type Foo {
    Bar *map[string]{}  `json:"bar"`
}

-----
// test case:  invalid slice
syntax = "v1"
type Foo {
    Bar []map[[]int]string  `json:"bar"`
}

-----
// test case:  array
syntax = "v1"
type Foo {
    Bar [...]int  `json:"bar"`
}

-----
// test case:  any
syntax = "v1"
type Foo {
    Bar any  `json:"bar"`
}

-----
// test case:  unresolved type
syntax = "v1"
service example {
    @handler nestDemo
    post /example/nest (NestDemoReq) returns (NestDemoResp)
}