github.com/llvm-mirror/llgo@v0.0.0-20190322182713-bf6f0a60fce1/test/execution/const.go (about)

     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  }