--- /dev/null
+package rank
+
+func _() {
+ type strList []string
+ wantsStrList := func(strList) {}
+
+ var (
+ convA string //@item(convertA, "convA", "string", "var")
+ convB []string //@item(convertB, "convB", "[]string", "var")
+ )
+ wantsStrList(strList(conv)) //@complete("))", convertB, convertA)
+}
+
+func _() {
+
+ type myInt int
+
+ const (
+ convC = "hi" //@item(convertC, "convC", "string", "const")
+ convD = 123 //@item(convertD, "convD", "int", "const")
+ convE int = 123 //@item(convertE, "convE", "int", "const")
+ convF string = "there" //@item(convertF, "convF", "string", "const")
+ convG myInt = 123 //@item(convertG, "convG", "myInt", "const")
+ )
+
+ var foo int
+ foo = conv //@rank(" //", convertE, convertD)
+
+ var mi myInt
+ mi = conv //@rank(" //", convertG, convertD, convertE)
+ mi + conv //@rank(" //", convertG, convertD, convertE)
+
+ 1 + conv //@rank(" //", convertD, convertC),rank(" //", convertE, convertC),rank(" //", convertG, convertC)
+
+ type myString string
+ var ms myString
+ ms = conv //@rank(" //", convertC, convertF)
+
+ type myUint uint32
+ var mu myUint
+ mu = conv //@rank(" //", convertD, convertE)
+
+ // don't downrank constants when assigning to interface{}
+ var _ interface{} = c //@rank(" //", convertD, complex)
+}