| // 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 compile |
| |
| import ( |
| "v.io/v23/vdl" |
| "v.io/v23/vdlroot/vdltool" |
| ) |
| |
| var ( |
| // The BuiltInPackage and BuiltInFile are used to hold the built-ins. |
| BuiltInPackage = newPackage("", "_builtin", "_builtin", vdltool.Config{}) |
| BuiltInFile = &File{BaseName: "_builtin.vdl"} |
| ) |
| |
| func init() { |
| // Link the BuiltIn{Package,File} to each other before defining built-ins. |
| BuiltInPackage.Files = []*File{BuiltInFile} |
| BuiltInFile.Package = BuiltInPackage |
| // Built-in types |
| builtInType("any", vdl.AnyType) |
| builtInType("bool", vdl.BoolType) |
| builtInType("byte", vdl.ByteType) |
| builtInType("uint16", vdl.Uint16Type) |
| builtInType("uint32", vdl.Uint32Type) |
| builtInType("uint64", vdl.Uint64Type) |
| builtInType("int8", vdl.Int8Type) |
| builtInType("int16", vdl.Int16Type) |
| builtInType("int32", vdl.Int32Type) |
| builtInType("int64", vdl.Int64Type) |
| builtInType("float32", vdl.Float32Type) |
| builtInType("float64", vdl.Float64Type) |
| builtInType("string", vdl.StringType) |
| builtInType("typeobject", vdl.TypeObjectType) |
| builtInType("error", vdl.ErrorType) |
| // Built-in consts |
| builtInConst("nil", NilConst) |
| builtInConst("true", TrueConst) |
| builtInConst("false", FalseConst) |
| } |
| |
| func builtInType(name string, t *vdl.Type) { |
| def := &TypeDef{ |
| NamePos: NamePos{Name: name}, |
| Exported: true, |
| Type: t, |
| File: BuiltInFile, |
| } |
| addTypeDef(def, nil) |
| } |
| |
| func builtInConst(name string, v *vdl.Value) { |
| def := &ConstDef{ |
| NamePos: NamePos{Name: name}, |
| Exported: true, |
| Value: v, |
| File: BuiltInFile, |
| } |
| addConstDef(def, nil) |
| } |