// $G $D/$F.go || echo BUG: shift2

// Copyright 2011 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.

// Issue 1708, legal cases.

package p

func f(x int) int         { return 0 }
func g(x interface{}) int { return 0 }
func h(x float64) int     { return 0 }

// from the spec
var (
	s uint  = 33
	i       = 1 << s         // 1 has type int
	j int32 = 1 << s         // 1 has type int32; j == 0
	k       = uint64(1 << s) // 1 has type uint64; k == 1<<33
	m int   = 1.0 << s       // legal: 1.0 has type int
	w int64 = 1.0 << 33      // legal: 1.0<<33 is a constant shift expression
)

// non-constant shift expressions
var (
	a1 int = 2.0 << s    // typeof(2.0) is int in this context => legal shift
	d1     = f(2.0 << s) // typeof(2.0) is int in this context => legal shift
)

// constant shift expressions
const c uint = 5

var (
	a2 int     = 2.0 << c    // a2 == 64 (type int)
	b2         = 2.0 << c    // b2 == 64 (untyped integer)
	_          = f(b2)       // verify b2 has type int
	c2 float64 = 2 << c      // c2 == 64.0 (type float64)
	d2         = f(2.0 << c) // == f(64)
	e2         = g(2.0 << c) // == g(int(64))
	f2         = h(2 << c)   // == h(float64(64.0))
)
