// Copyright 2016 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.

// This file was auto-generated by v.io/v23/vdl/vdltest/internal/vdltestgen
// Run the following to re-generate:
//   $ jiri run go generate v.io/v23/vdl/vdltest

package vdltest

// Entries: 0
// ---------------
// |             |
// ---------------
// |total        | [!can=0]
// |isZero       | [!can=0]
// ---------------
// |any          |
// |optional     | [!can=0]
// |bool         | [!can=0]
// |byte         | [!can=0]
// |uint16       | [!can=0]
// |uint32       | [!can=0]
// |uint64       | [!can=0]
// |int8         | [!can=0]
// |int16        | [!can=0]
// |int32        | [!can=0]
// |int64        | [!can=0]
// |float32      | [!can=0]
// |float64      | [!can=0]
// |string       | [!can=0]
// |enum         | [!can=0]
// |typeobject   |
// |array        | [!can=0]
// |list         | [!can=0]
// |set          | [!can=0]
// |map          | [!can=0]
// |struct       | [!can=0]
// |union        | [!can=0]
// ---------------
// |IsNamed      | [!can=0]
// |IsUnnamed    | [!can=0]
// |IsBytes      | [!can=0]
// |IsPartOfCycle| [!can=0]
// ---------------
// 
// Each column has a pair of entry counts (canonical,non-canonical), computed
// from the Source value.  An entry is canonical if Target == Source.
// !can tracks the number of non-canonical entries for each unique target.
// 
// +{Max,Min}: Target set to positive max and min values.
// -{Max,Min}: Target set to negative max and min values.
// Full:       Target is entirely non-zero, except for cyclic types.
// NilAny:     Target is optional(nil), source is any(nil).
// Random:     Target is random value.
// Zero:       Target is zero value.

const vAllFail = []vdlEntry{
}
