1 // Copyright 2012 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
5 // This file contains the test for untagged struct literals.
23 var Okay2 = map[string]bool{
39 var Okay4 = []struct {
47 type MyStruct struct {
53 var Okay5 = &MyStruct{
59 var Okay6 = []MyStruct{
60 {"foo", "bar", "baz"},
64 var Okay7 = []*MyStruct{
65 {"foo", "bar", "baz"},
69 // Testing is awkward because we need to reference things from a separate package
70 // to trigger the warnings.
72 var goodStructLiteral = flag.Flag{
76 var badStructLiteral = flag.Flag{ // want "unkeyed fields"
85 // SpecialCase is a named slice of CaseRange to test issue 9171.
86 var goodNamedSliceLiteral = unicode.SpecialCase{
87 {Lo: 1, Hi: 2, Delta: delta},
88 unicode.CaseRange{Lo: 1, Hi: 2, Delta: delta},
90 var badNamedSliceLiteral = unicode.SpecialCase{
91 {1, 2, delta}, // want "unkeyed fields"
92 unicode.CaseRange{1, 2, delta}, // want "unkeyed fields"
95 // ErrorList is a named slice, so no warnings should be emitted.
96 var goodScannerErrorList = scanner.ErrorList{
97 &scanner.Error{Msg: "foobar"},
99 var badScannerErrorList = scanner.ErrorList{
100 &scanner.Error{token.Position{}, "foobar"}, // want "unkeyed fields"
103 // Check whitelisted structs: if vet is run with --compositewhitelist=false,
104 // this line triggers an error.
105 var whitelistedPoint = image.Point{1, 2}
107 // Do not check type from unknown package.
109 var unknownPkgVar = unicode.NoSuchType{"foo", "bar"}
111 // A named pointer slice of CaseRange to test issue 23539. In
112 // particular, we're interested in how some slice elements omit their
114 var goodNamedPointerSliceLiteral = []*unicode.CaseRange{
116 &unicode.CaseRange{Lo: 1, Hi: 2},
118 var badNamedPointerSliceLiteral = []*unicode.CaseRange{
119 {1, 2, delta}, // want "unkeyed fields"
120 &unicode.CaseRange{1, 2, delta}, // want "unkeyed fields"
123 // unicode.Range16 is whitelisted, so there'll be no vet error
124 var range16 = unicode.Range16{0xfdd0, 0xfdef, 1}
126 // unicode.Range32 is whitelisted, so there'll be no vet error
127 var range32 = unicode.Range32{0x1fffe, 0x1ffff, 1}