1// run
2
3// Copyright 2022 The Go Authors. All rights reserved.
4// Use of this source code is governed by a BSD-style
5// license that can be found in the LICENSE file.
6
7// Test that identifiers in implicit (omitted) RHS
8// expressions of constant declarations are resolved
9// in the correct context; see issues #49157, #53585.
10
11package main
12
13const X = 2
14
15func main() {
16	const (
17		A    = iota // 0
18		iota = iota // 1
19		B           // 1 (iota is declared locally on prev. line)
20		C           // 1
21	)
22	if A != 0 || B != 1 || C != 1 {
23		println("got", A, B, C, "want 0 1 1")
24		panic("FAILED")
25	}
26
27	const (
28		X = X + X
29		Y
30		Z = iota
31	)
32	if X != 4 || Y != 8 || Z != 1 {
33		println("got", X, Y, Z, "want 4 8 1")
34		panic("FAILED")
35	}
36}
37