| // This program used to cause the builder to emit Next instructions |
| // with types based on the (k, v) variables and not the iterated map |
| // (cases 1 and 2 of issue 78110) due to the implicit interface |
| // conversion in the assignment from iterator value to variable. |
| // The sanity pass now checks that their types are identical. |
| |
| package issue78110 |
| |
| func rangeConcreteMap() { |
| var v any |
| for _, v = range map[int]int{} { |
| _ = v |
| } |
| } |
| |
| func rangeInterfaceMap() { |
| var v any |
| for _, v = range map[int]interface{ M() }{} { |
| _ = v |
| } |
| } |
| |
| type I interface{ M() } |
| type J interface { |
| I |
| N() |
| } |
| |
| func boundMethodClosure(j J) { |
| _ = j.M |
| } |