Peter Collingbourne | ad9841e | 2014-11-27 00:06:42 +0000 | [diff] [blame] | 1 | // RUN: llgo -o %t %s |
| 2 | // RUN: %t 2>&1 | FileCheck %s |
| 3 | |
| 4 | // CHECK: 0 |
| 5 | // CHECK-NEXT: 1 |
| 6 | // CHECK-NEXT: 1 1 |
| 7 | // CHECK-NEXT: 1 1 1 4 |
| 8 | // CHECK-NEXT: 2147483647 |
| 9 | // CHECK-NEXT: -2147483648 |
| 10 | // CHECK-NEXT: 2147483647 |
| 11 | // CHECK-NEXT: -127 |
| 12 | // CHECK-NEXT: false |
| 13 | // CHECK-NEXT: 10000000000 |
| 14 | // CHECK-NEXT: 1 |
| 15 | // CHECK-NEXT: 3 |
| 16 | |
| 17 | package main |
| 18 | |
| 19 | import "runtime" |
| 20 | |
| 21 | const ( |
| 22 | a = iota * 2 |
| 23 | A = 1 |
| 24 | B |
| 25 | C |
| 26 | D = Z + iota |
| 27 | ) |
| 28 | |
| 29 | const ( |
| 30 | Z = iota |
| 31 | Big = 1<<31 - 1 |
| 32 | Big2 = -2147483648 |
| 33 | Big3 = 2147483647 |
| 34 | ) |
| 35 | |
| 36 | const ( |
| 37 | expbits32 uint = 8 |
| 38 | bias32 = -1<<(expbits32-1) + 1 |
| 39 | darwinAMD64 = runtime.GOOS == "darwin" && runtime.GOARCH == "amd64" |
| 40 | ) |
| 41 | |
| 42 | func f1() float32 { |
| 43 | return 0 |
| 44 | } |
| 45 | |
| 46 | func constArrayLen() { |
| 47 | a := [...]int{1, 2, 3} |
| 48 | const x = len(a) |
| 49 | println(x) |
| 50 | } |
| 51 | |
| 52 | func main() { |
| 53 | println(a) |
| 54 | println(B) |
| 55 | println(A, A) |
| 56 | println(A, B, C, D) |
| 57 | println(Big) |
| 58 | println(Big2) |
| 59 | println(Big3) |
| 60 | println(bias32) |
| 61 | |
| 62 | // Currently fails, due to difference in C printf and Go's println |
| 63 | // formatting of the exponent. |
| 64 | //println(10 * 1e9) |
| 65 | println(darwinAMD64) |
| 66 | |
| 67 | // Test conversion. |
| 68 | println(int64(10) * 1e9) |
| 69 | |
| 70 | // Ensure consts work just as well when declared inside a function. |
| 71 | const ( |
| 72 | x_ = iota |
| 73 | y_ |
| 74 | ) |
| 75 | println(y_) |
| 76 | |
| 77 | constArrayLen() |
| 78 | } |