| // 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. |
| |
| // binary expressions |
| |
| package expr1 |
| |
| type mybool bool |
| |
| func _(x, y bool, z mybool) { |
| x = x || y |
| x = x || true |
| x = x || false |
| x = x && y |
| x = x && true |
| x = x && false |
| |
| z = z /* ERROR "mismatched types" */ || y |
| z = z || true |
| z = z || false |
| z = z /* ERROR "mismatched types" */ && y |
| z = z && true |
| z = z && false |
| } |
| |
| type myint int |
| |
| func _(x, y int, z myint) { |
| x = x + 1 |
| x = x + 1.0 |
| x = x + 1.1 // ERROR "truncated to int" |
| x = x + y |
| x = x - y |
| x = x * y |
| x = x / y |
| x = x % y |
| x = x << y |
| x = x >> y |
| |
| z = z + 1 |
| z = z + 1.0 |
| z = z + 1.1 // ERROR "truncated to int" |
| z = z /* ERROR "mismatched types" */ + y |
| z = z /* ERROR "mismatched types" */ - y |
| z = z /* ERROR "mismatched types" */ * y |
| z = z /* ERROR "mismatched types" */ / y |
| z = z /* ERROR "mismatched types" */ % y |
| z = z << y |
| z = z >> y |
| } |
| |
| type myuint uint |
| |
| func _(x, y uint, z myuint) { |
| x = x + 1 |
| x = x + - /* ERROR "overflows uint" */ 1 |
| x = x + 1.0 |
| x = x + 1.1 // ERROR "truncated to uint" |
| x = x + y |
| x = x - y |
| x = x * y |
| x = x / y |
| x = x % y |
| x = x << y |
| x = x >> y |
| |
| z = z + 1 |
| z = x + - /* ERROR "overflows uint" */ 1 |
| z = z + 1.0 |
| z = z + 1.1 // ERROR "truncated to uint" |
| z = z /* ERROR "mismatched types" */ + y |
| z = z /* ERROR "mismatched types" */ - y |
| z = z /* ERROR "mismatched types" */ * y |
| z = z /* ERROR "mismatched types" */ / y |
| z = z /* ERROR "mismatched types" */ % y |
| z = z << y |
| z = z >> y |
| } |
| |
| type myfloat64 float64 |
| |
| func _(x, y float64, z myfloat64) { |
| x = x + 1 |
| x = x + -1 |
| x = x + 1.0 |
| x = x + 1.1 |
| x = x + y |
| x = x - y |
| x = x * y |
| x = x / y |
| x = x /* ERROR "not defined" */ % y |
| x = x /* ERRORx `operand x .* must be integer` */ << y |
| x = x /* ERRORx `operand x .* must be integer` */ >> y |
| |
| z = z + 1 |
| z = z + -1 |
| z = z + 1.0 |
| z = z + 1.1 |
| z = z /* ERROR "mismatched types" */ + y |
| z = z /* ERROR "mismatched types" */ - y |
| z = z /* ERROR "mismatched types" */ * y |
| z = z /* ERROR "mismatched types" */ / y |
| z = z /* ERROR "mismatched types" */ % y |
| z = z /* ERRORx `operand z .* must be integer` */ << y |
| z = z /* ERRORx `operand z .* must be integer` */ >> y |
| } |
| |
| type mystring string |
| |
| func _(x, y string, z mystring) { |
| x = x + "foo" |
| x = x /* ERROR "not defined" */ - "foo" |
| x = x /* ERROR "mismatched types string and untyped int" */ + 1 |
| x = x + y |
| x = x /* ERROR "not defined" */ - y |
| x = x /* ERROR "mismatched types string and untyped int" */* 10 |
| } |
| |
| func f() (a, b int) { return } |
| |
| func _(x int) { |
| _ = f /* ERROR "multiple-value f" */ () + 1 |
| _ = x + f /* ERROR "multiple-value f" */ () |
| _ = f /* ERROR "multiple-value f" */ () + f |
| _ = f /* ERROR "multiple-value f" */ () + f /* ERROR "multiple-value f" */ () |
| } |