GoPLS Viewer

Home|gopls/go/analysis/passes/composite/testdata/src/a/a.go
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.
4
5// This file contains the test for untagged struct literals.
6
7package a
8
9import (
10    "flag"
11    "go/scanner"
12    "go/token"
13    "image"
14    "sync"
15    "unicode"
16)
17
18var Okay1 = []string{
19    "Name",
20    "Usage",
21    "DefValue",
22}
23
24var Okay2 = map[string]bool{
25    "Name":     true,
26    "Usage":    true,
27    "DefValue"true,
28}
29
30var Okay3 = struct {
31    X string
32    Y string
33    Z string
34}{
35    "Name",
36    "Usage",
37    "DefValue",
38}
39
40var Okay4 = []struct {
41    A int
42    B int
43}{
44    {12},
45    {34},
46}
47
48type MyStruct struct {
49    X string
50    Y string
51    Z string
52}
53
54var Okay5 = &MyStruct{
55    "Name",
56    "Usage",
57    "DefValue",
58}
59
60var Okay6 = []MyStruct{
61    {"foo""bar""baz"},
62    {"aa""bb""cc"},
63}
64
65var Okay7 = []*MyStruct{
66    {"foo""bar""baz"},
67    {"aa""bb""cc"},
68}
69
70// Testing is awkward because we need to reference things from a separate package
71// to trigger the warnings.
72
73var goodStructLiteral = flag.Flag{
74    Name:  "Name",
75    Usage"Usage",
76}
77var badStructLiteral = flag.Flag// want "unkeyed fields"
78    "Name",
79    "Usage",
80    nil// Value
81    "DefValue",
82}
83var tooManyFieldsStructLiteral = flag.Flag// want "unkeyed fields"
84    "Name",
85    "Usage",
86    nil// Value
87    "DefValue",
88    "Extra Field",
89}
90var tooFewFieldsStructLiteral = flag.Flag// want "unkeyed fields"
91    "Name",
92    "Usage",
93    nil// Value
94}
95
96var delta [3]rune
97
98// SpecialCase is a named slice of CaseRange to test issue 9171.
99var goodNamedSliceLiteral = unicode.SpecialCase{
100    {Lo1Hi2Deltadelta},
101    unicode.CaseRange{Lo1Hi2Deltadelta},
102}
103var badNamedSliceLiteral = unicode.SpecialCase{
104    {12delta},                  // want "unkeyed fields"
105    unicode.CaseRange{12delta}, // want "unkeyed fields"
106}
107
108// ErrorList is a named slice, so no warnings should be emitted.
109var goodScannerErrorList = scanner.ErrorList{
110    &scanner.Error{Msg"foobar"},
111}
112var badScannerErrorList = scanner.ErrorList{
113    &scanner.Error{token.Position{}, "foobar"}, // want "unkeyed fields"
114}
115
116// sync.Mutex has unexported fields. We expect a diagnostic but no
117// suggested fix.
118var mu = sync.Mutex{00// want "unkeyed fields"
119
120// Check whitelisted structs: if vet is run with --compositewhitelist=false,
121// this line triggers an error.
122var whitelistedPoint = image.Point{12}
123
124// Do not check type from unknown package.
125// See issue 15408.
126var unknownPkgVar = unicode.NoSuchType{"foo""bar"}
127
128// A named pointer slice of CaseRange to test issue 23539. In
129// particular, we're interested in how some slice elements omit their
130// type.
131var goodNamedPointerSliceLiteral = []*unicode.CaseRange{
132    {Lo1Hi2},
133    &unicode.CaseRange{Lo1Hi2},
134}
135var badNamedPointerSliceLiteral = []*unicode.CaseRange{
136    {12delta},                   // want "unkeyed fields"
137    &unicode.CaseRange{12delta}, // want "unkeyed fields"
138}
139
140// unicode.Range16 is whitelisted, so there'll be no vet error
141var range16 = unicode.Range16{0xfdd00xfdef1}
142
143// unicode.Range32 is whitelisted, so there'll be no vet error
144var range32 = unicode.Range32{0x1fffe0x1ffff1}
145
MembersX
scanner
sync
MyStruct.X
MyStruct.Z
flag
token
image
unicode
MyStruct
MyStruct.Y
delta
Members
X