// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Test case for go.dev/issue/3106: Better synchronization of
// parser after certain syntax errors.

package main

func f() {
	var m Mutex
	c := MakeCond(&m)
	percent := 0
	const step = 10
	for i := 0; i < 5; i++ {
		go func() {
			for {
				// Emulates some useful work.
				time.Sleep(1e8)
				m.Lock()
				defer
				if /* ERROR "expected ';', found 'if'" */ percent == 100 {
					m.Unlock()
					break
				}
				percent++
				if percent % step == 0 {
					//c.Signal()
				}
				m.Unlock()
			}
		}()
	}
	for {
		m.Lock()
		if percent == 0 || percent % step != 0 {
			c.Wait()
		}
		fmt.Print(",")
		if percent == 100 {
			m.Unlock()
			break
		}
		m.Unlock()
	}
}
