blob: 5b71d26ea30fbebd6eb28a93998b526b0c60be99 [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Package base is a simple single-file test of vdl functionality.
package base
type (
NamedBool bool
NamedByte byte
NamedUint16 uint16
NamedUint32 uint32
NamedUint64 uint64
NamedInt16 int16
NamedInt32 int32
NamedInt64 int64
NamedFloat32 float32
NamedFloat64 float64
NamedComplex64 complex64
NamedComplex128 complex128
NamedString string
NamedEnum enum{A;B;C}
NamedArray [2]bool
NamedList []uint32
NamedSet set[string]
NamedMap map[string]float32
NamedStruct struct{A bool;B string;C int32}
NamedUnion union{A bool;B string;C int32}
)
type Scalars struct {
A0 bool
A1 byte
A2 uint16
A3 uint32
A4 uint64
A5 int16
A6 int32
A7 int64
A8 float32
A9 float64
A10 complex64
A11 complex128
A12 string
A13 error
A14 any
A15 typeobject
B0 NamedBool
B1 NamedByte
B2 NamedUint16
B3 NamedUint32
B4 NamedUint64
B5 NamedInt16
B6 NamedInt32
B7 NamedInt64
B8 NamedFloat32
B9 NamedFloat64
B10 NamedComplex64
B11 NamedComplex128
B12 NamedString
B13 NamedEnum
B14 NamedUnion
}
// These are all scalars that may be used as map or set keys.
type KeyScalars struct {
A0 bool
A1 byte
A2 uint16
A3 uint32
A4 uint64
A5 int16
A6 int32
A7 int64
A8 float32
A9 float64
A10 complex64
A11 complex128
A12 string
B0 NamedBool
B1 NamedByte
B2 NamedUint16
B3 NamedUint32
B4 NamedUint64
B5 NamedInt16
B6 NamedInt32
B7 NamedInt64
B8 NamedFloat32
B9 NamedFloat64
B10 NamedComplex64
B11 NamedComplex128
B12 NamedString
}
type ScalarsArray [2]Scalars
type Composites struct {
A0 Scalars
A1 ScalarsArray
A2 []Scalars
A3 set[KeyScalars]
A4 map[string]Scalars
A5 map[KeyScalars][]map[string]complex128
}
type CompositesArray [2]Composites
type CompComp struct {
A0 Composites
A1 CompositesArray
A2 []Composites
A3 map[string]Composites
A4 map[KeyScalars][]map[string]Composites
}
// NestedArgs is defined before Args; that's allowed in regular Go, and also
// allowed in our vdl files. The compiler will re-order dependent types to ease
// code generation in other languages.
type NestedArgs struct {
Args Args
}
// Args will be reordered to show up before NestedArgs in the generated output.
type Args struct {
A int32
B int32
}
const (
Cbool = true
Cbyte = byte(1)
Cint32 = int32(2)
Cint64 = int64(3)
Cuint32 = uint32(4)
Cuint64 = uint64(5)
Cfloat32 = float32(6)
Cfloat64 = float64(7)
CNamedBool = NamedBool(true)
CNamedStruct = NamedStruct{A:true, B: "test",}
Ccomplex64 = complex64(8+9i)
Ccomplex128 = complex128(10+11i)
Cstring = "foo"
Cenum = NamedEnum.A
Cunion = NamedUnion{A: true}
Carray = NamedArray{true, false}
Clist = []int32{1, 2, 3}
Cset = set[int32]{1, 2, 3}
cmap = map[int32]string{1: "A", 2: "B", 3: "C"}
Cargs = Args{1, 2}
CScalars = Scalars{
A0: true,
A1: 1,
A2: 2,
A3: 3,
A4: 4,
A5: 5,
A6: 6,
A7: 7,
A8: 8,
A9: 9,
A10: 10,
A11: 11,
A12: "abc",
A14: false,
A15: typeobject(bool),
B0: true,
B1: 1,
B2: 2,
B3: 3,
B4: 4,
B5: 5,
B6: 6,
B7: 7,
B8: 8,
B9: 9,
B10: 10,
B11: 11,
B12: "abc",
B13: NamedEnum.B,
B14: NamedUnion{C: 123},
}
True = true
Foo = "foo"
Five = int32(5)
SixSquared = Six*Six
FiveSquared = Five*Five
Six = uint64(6)
CTypeObject_bool = typeobject(bool)
CTypeObject_string = typeobject(string)
CTypeObject_bytes = typeobject([]byte)
CTypeObject_byte = typeobject(byte)
CTypeObject_uint16 = typeobject(uint16)
CTypeObject_int16 = typeobject(int16)
CTypeObject_float32 = typeobject(float32)
CTypeObject_complex64 = typeobject(complex64)
CTypeObject_enum = typeobject(NamedEnum)
CTypeObject_Array = typeobject(NamedArray)
CTypeObject_List = typeobject([]string)
CTypeObject_Set = typeobject(set[string])
CTypeObject_Map = typeobject(map[string]int64)
CTypeObject_Struct = typeobject(Scalars)
CTypeObject_Union = typeobject(NamedUnion)
CTypeObject_TypeObject = typeobject(typeobject)
CTypeObject_Any = typeobject(any)
)
type ServiceA interface {
MethodA1() error
MethodA2(a int32, b string) (s string | error)
MethodA3(a int32) stream<_, Scalars> (s string | error) {"tag", Six}
MethodA4(a int32) stream<int32, string> error
}
type ServiceB interface {
ServiceA
MethodB1(a Scalars, b Composites) (c CompComp | error)
}
// Error definitions, which allow stable error-checking across different address
// spaces.
error (
NoParams1() {"en":"en msg"}
NoParams2() {RetryRefetch, "en":"en msg", "fr":"fr msg"}
WithParams1(x string, y int32) {"en":"en x={x} y={y}"}
WithParams2(x string, y int32) {
RetryRefetch,
"en":"en x={x} y={y}",
"fr":"fr y={y} x={x}",
}
notExported(x string, y int32) {"en":"en x={x} y={y}"}
)