github.com/go-asm/go@v1.21.1-0.20240213172139-40c5ead50c48/types/testdata/check/decls1.go (about)

     1  // Copyright 2012 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // variable declarations
     6  
     7  package decls1
     8  
     9  import (
    10  	"math"
    11  )
    12  
    13  // Global variables without initialization
    14  var (
    15  	a, b bool
    16  	c byte
    17  	d uint8
    18  	r rune
    19  	i int
    20  	j, k, l int
    21  	x, y float32
    22  	xx, yy float64
    23  	u, v complex64
    24  	uu, vv complex128
    25  	s, t string
    26  	array []byte
    27  	iface interface{}
    28  
    29  	blank _ /* ERROR "cannot use _" */
    30  )
    31  
    32  // Global variables with initialization
    33  var (
    34  	s1 = i + j
    35  	s2 = i /* ERROR "mismatched types" */ + x
    36  	s3 = c + d
    37  	s4 = s + t
    38  	s5 = s /* ERROR "invalid operation" */ / t
    39  	s6 = array[t1]
    40  	s7 = array[x /* ERROR "integer" */]
    41  	s8 = &a
    42  	s10 = &42 /* ERROR "cannot take address" */
    43  	s11 = &v
    44  	s12 = -(u + *t11) / *&v
    45  	s13 = a /* ERROR "shifted operand" */ << d
    46  	s14 = i << j
    47  	s18 = math.Pi * 10.0
    48  	s19 = s1 /* ERROR "cannot call" */ ()
    49   	s20 = f0 /* ERROR "no value" */ ()
    50  	s21 = f6(1, s1, i)
    51  	s22 = f6(1, s1, uu /* ERRORx `cannot use .* in argument` */ )
    52  
    53  	t1 int = i + j
    54  	t2 int = i /* ERROR "mismatched types" */ + x
    55  	t3 int = c /* ERRORx `cannot use .* variable declaration` */ + d
    56  	t4 string = s + t
    57  	t5 string = s /* ERROR "invalid operation" */ / t
    58  	t6 byte = array[t1]
    59  	t7 byte = array[x /* ERROR "must be integer" */]
    60  	t8 *int = & /* ERRORx `cannot use .* variable declaration` */ a
    61  	t10 *int = &42 /* ERROR "cannot take address" */
    62  	t11 *complex64 = &v
    63  	t12 complex64 = -(u + *t11) / *&v
    64  	t13 int = a /* ERROR "shifted operand" */ << d
    65  	t14 int = i << j
    66  	t15 math /* ERROR "not in selector" */
    67  	t16 math.xxx /* ERROR "undefined" */
    68  	t17 math /* ERROR "not a type" */ .Pi
    69  	t18 float64 = math.Pi * 10.0
    70  	t19 int = t1 /* ERROR "cannot call" */ ()
    71  	t20 int = f0 /* ERROR "no value" */ ()
    72  	t21 int = a /* ERRORx `cannot use .* variable declaration` */
    73  )
    74  
    75  // Various more complex expressions
    76  var (
    77  	u1 = x /* ERROR "not an interface" */ .(int)
    78  	u2 = iface.([]int)
    79  	u3 = iface.(a /* ERROR "not a type" */ )
    80  	u4, ok = iface.(int)
    81  	u5, ok2, ok3 = iface /* ERROR "assignment mismatch" */ .(int)
    82  )
    83  
    84  // Constant expression initializations
    85  var (
    86  	v1 = 1 /* ERROR "mismatched types untyped int and untyped string" */ + "foo"
    87  	v2 = c + 255
    88  	v3 = c + 256 /* ERROR "overflows" */
    89  	v4 = r + 2147483647
    90  	v5 = r + 2147483648 /* ERROR "overflows" */
    91  	v6 = 42
    92  	v7 = v6 + 9223372036854775807
    93  	v8 = v6 + 9223372036854775808 /* ERROR "overflows" */
    94  	v9 = i + 1 << 10
    95  	v10 byte = 1024 /* ERROR "overflows" */
    96  	v11 = xx/yy*yy - xx
    97  	v12 = true && false
    98  	v13 = nil /* ERROR "use of untyped nil" */
    99  	v14 string = 257 // ERRORx `cannot use 257 .* as string value in variable declaration$`
   100  	v15 int8 = 257 // ERRORx `cannot use 257 .* as int8 value in variable declaration .*overflows`
   101  )
   102  
   103  // Multiple assignment expressions
   104  var (
   105  	m1a, m1b = 1, 2
   106  	m2a, m2b, m2c /* ERROR "missing init expr for m2c" */ = 1, 2
   107  	m3a, m3b = 1, 2, 3 /* ERROR "extra init expr 3" */
   108  )
   109  
   110  func _() {
   111  	var (
   112  		m1a, m1b = 1, 2
   113  		m2a, m2b, m2c /* ERROR "missing init expr for m2c" */ = 1, 2
   114  		m3a, m3b = 1, 2, 3 /* ERROR "extra init expr 3" */
   115  	)
   116  
   117  	_, _ = m1a, m1b
   118  	_, _, _ = m2a, m2b, m2c
   119  	_, _ = m3a, m3b
   120  }
   121  
   122  // Declaration of parameters and results
   123  func f0() {}
   124  func f1(a /* ERROR "not a type" */) {}
   125  func f2(a, b, c d /* ERROR "not a type" */) {}
   126  
   127  func f3() int { return 0 }
   128  func f4() a /* ERROR "not a type" */ { return 0 }
   129  func f5() (a, b, c d /* ERROR "not a type" */) { return }
   130  
   131  func f6(a, b, c int) complex128 { return 0 }
   132  
   133  // Declaration of receivers
   134  type T struct{}
   135  
   136  func (T) m0() {}
   137  func (*T) m1() {}
   138  func (x T) m2() {}
   139  func (x *T) m3() {}
   140  
   141  // Initialization functions
   142  func init() {}
   143  func init /* ERROR "no arguments and no return values" */ (int) {}
   144  func init /* ERROR "no arguments and no return values" */ () int { return 0 }
   145  func init /* ERROR "no arguments and no return values" */ (int) int { return 0 }
   146  func (T) init(int) int { return 0 }