--- /dev/null
+// Test of field usage detection
+
+package pkg
+
+type t1 struct{ f11, f12 int }
+type t2 struct{ f21, f22 int }
+type t3 struct{ f31 t4 }
+type t4 struct{ f41 int }
+type t5 struct{ f51 int }
+type t6 struct{ f61 int }
+type t7 struct{ f71 int }
+type m1 map[string]t7
+type t8 struct{ f81 int }
+type t9 struct{ f91 int }
+type t10 struct{ f101 int }
+type t11 struct{ f111 int }
+type s1 []t11
+type t12 struct{ f121 int }
+type s2 []t12
+type t13 struct{ f131 int }
+type t14 struct{ f141 int }
+type a1 [1]t14
+type t15 struct{ f151 int }
+type a2 [1]t15
+type t16 struct{ f161 int }
+type t17 struct{ f171, f172 int } // want `t17`
+type t18 struct{ f181, f182, f183 int } // want `f182` `f183`
+
+type t19 struct{ f191 int }
+type m2 map[string]t19
+
+type t20 struct{ f201 int }
+type m3 map[string]t20
+
+type t21 struct{ f211, f212 int } // want `f211`
+
+func foo() {
+ _ = t10{1}
+ _ = t21{f212: 1}
+ _ = []t1{{1, 2}}
+ _ = t2{1, 2}
+ _ = []struct{ a int }{{1}}
+
+ // XXX
+ // _ = []struct{ foo struct{ bar int } }{{struct{ bar int }{1}}}
+
+ _ = []t1{t1{1, 2}}
+ _ = []t3{{t4{1}}}
+ _ = map[string]t5{"a": {1}}
+ _ = map[t6]string{{1}: "a"}
+ _ = m1{"a": {1}}
+ _ = map[t8]t8{{}: {1}}
+ _ = map[t9]t9{{1}: {}}
+ _ = s1{{1}}
+ _ = s2{2: {1}}
+ _ = [...]t13{{1}}
+ _ = a1{{1}}
+ _ = a2{0: {1}}
+ _ = map[[1]t16]int{{{1}}: 1}
+ y := struct{ x int }{}
+ _ = y
+ _ = t18{f181: 1}
+ _ = []m2{{"a": {1}}}
+ _ = [][]m3{{{"a": {1}}}}
+}
+
+func init() { foo() }