blob: 320bd57f5c17fb9cf6ff0b17f598a02ac6c9af9a [file] [log] [blame]
Russ Cox2b1c9b42012-02-16 23:49:30 -05001// errorcheck
Rob Pike3aecf2e2008-08-13 12:15:24 -07002
3// Copyright 2009 The Go Authors. All rights reserved.
4// Use of this source code is governed by a BSD-style
5// license that can be found in the LICENSE file.
6
7package main
8
9const (
10 c3div2 = 3/2;
11 f3div2 = 3./2.;
12)
13
14func assert(t bool, s string) {
15 if !t {
16 panic(s)
17 }
18}
19
20func main() {
21 var i int;
22 var f float64;
23
24 assert(c3div2 == 1, "3/2");
25 assert(f3div2 == 1.5, "3/2");
26
27 i = c3div2;
28 assert(i == c3div2, "i == c3div2");
29
30 f = c3div2;
31 assert(f == c3div2, "f == c3div2");
32
33 f = f3div2;
34 assert(f == f3div2, "f == f3div2");
35
Russ Cox8f194bf2009-03-12 19:04:38 -070036 i = f3div2; // ERROR "truncate"
Rob Pike3aecf2e2008-08-13 12:15:24 -070037 assert(i == c3div2, "i == c3div2 from f3div2");
Russ Cox8f194bf2009-03-12 19:04:38 -070038 assert(i != f3div2, "i != f3div2"); // ERROR "truncate"
Robert Griesemera9af1842008-08-20 15:43:12 -070039
40 const g float64 = 1.0;
Russ Cox9dc22b62009-08-03 11:58:52 -070041 i = g; // ERROR "convert|incompatible|cannot"
Robert Griesemera9af1842008-08-20 15:43:12 -070042
43 const h float64 = 3.14;
Russ Cox9dc22b62009-08-03 11:58:52 -070044 i = h; // ERROR "convert|incompatible|cannot"
Russ Cox8f194bf2009-03-12 19:04:38 -070045 i = int(h); // ERROR "truncate"
Rob Pike3aecf2e2008-08-13 12:15:24 -070046}