github.com/go-asm/go@v1.21.1-0.20240213172139-40c5ead50c48/types/testdata/check/expr1.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 // binary expressions 6 7 package expr1 8 9 type mybool bool 10 11 func _(x, y bool, z mybool) { 12 x = x || y 13 x = x || true 14 x = x || false 15 x = x && y 16 x = x && true 17 x = x && false 18 19 z = z /* ERROR "mismatched types" */ || y 20 z = z || true 21 z = z || false 22 z = z /* ERROR "mismatched types" */ && y 23 z = z && true 24 z = z && false 25 } 26 27 type myint int 28 29 func _(x, y int, z myint) { 30 x = x + 1 31 x = x + 1.0 32 x = x + 1.1 // ERROR "truncated to int" 33 x = x + y 34 x = x - y 35 x = x * y 36 x = x / y 37 x = x % y 38 x = x << y 39 x = x >> y 40 41 z = z + 1 42 z = z + 1.0 43 z = z + 1.1 // ERROR "truncated to int" 44 z = z /* ERROR "mismatched types" */ + y 45 z = z /* ERROR "mismatched types" */ - y 46 z = z /* ERROR "mismatched types" */ * y 47 z = z /* ERROR "mismatched types" */ / y 48 z = z /* ERROR "mismatched types" */ % y 49 z = z << y 50 z = z >> y 51 } 52 53 type myuint uint 54 55 func _(x, y uint, z myuint) { 56 x = x + 1 57 x = x + - /* ERROR "overflows uint" */ 1 58 x = x + 1.0 59 x = x + 1.1 // ERROR "truncated to uint" 60 x = x + y 61 x = x - y 62 x = x * y 63 x = x / y 64 x = x % y 65 x = x << y 66 x = x >> y 67 68 z = z + 1 69 z = x + - /* ERROR "overflows uint" */ 1 70 z = z + 1.0 71 z = z + 1.1 // ERROR "truncated to uint" 72 z = z /* ERROR "mismatched types" */ + y 73 z = z /* ERROR "mismatched types" */ - y 74 z = z /* ERROR "mismatched types" */ * y 75 z = z /* ERROR "mismatched types" */ / y 76 z = z /* ERROR "mismatched types" */ % y 77 z = z << y 78 z = z >> y 79 } 80 81 type myfloat64 float64 82 83 func _(x, y float64, z myfloat64) { 84 x = x + 1 85 x = x + -1 86 x = x + 1.0 87 x = x + 1.1 88 x = x + y 89 x = x - y 90 x = x * y 91 x = x / y 92 x = x /* ERROR "not defined" */ % y 93 x = x /* ERRORx `operand x .* must be integer` */ << y 94 x = x /* ERRORx `operand x .* must be integer` */ >> y 95 96 z = z + 1 97 z = z + -1 98 z = z + 1.0 99 z = z + 1.1 100 z = z /* ERROR "mismatched types" */ + y 101 z = z /* ERROR "mismatched types" */ - y 102 z = z /* ERROR "mismatched types" */ * y 103 z = z /* ERROR "mismatched types" */ / y 104 z = z /* ERROR "mismatched types" */ % y 105 z = z /* ERRORx `operand z .* must be integer` */ << y 106 z = z /* ERRORx `operand z .* must be integer` */ >> y 107 } 108 109 type mystring string 110 111 func _(x, y string, z mystring) { 112 x = x + "foo" 113 x = x /* ERROR "not defined" */ - "foo" 114 x = x /* ERROR "mismatched types string and untyped int" */ + 1 115 x = x + y 116 x = x /* ERROR "not defined" */ - y 117 x = x /* ERROR "mismatched types string and untyped int" */* 10 118 } 119 120 func f() (a, b int) { return } 121 122 func _(x int) { 123 _ = f /* ERROR "multiple-value f" */ () + 1 124 _ = x + f /* ERROR "multiple-value f" */ () 125 _ = f /* ERROR "multiple-value f" */ () + f 126 _ = f /* ERROR "multiple-value f" */ () + f /* ERROR "multiple-value f" */ () 127 }