github.com/remobjects/goldbaselibrary@v0.0.0-20230924164425-d458680a936b/Source/Gold/types/testdata/constdecl.src (about) 1 // Copyright 2013 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 package constdecl 6 7 import "math" 8 import "unsafe" 9 10 var v int 11 12 // Const decls must be initialized by constants. 13 const _ = v /* ERROR "not constant" */ 14 const _ = math /* ERROR "not constant" */ .Sin(0) 15 const _ = int /* ERROR "not an expression" */ 16 17 func _() { 18 const _ = v /* ERROR "not constant" */ 19 const _ = math /* ERROR "not constant" */ .Sin(0) 20 const _ = int /* ERROR "not an expression" */ 21 } 22 23 // Identifier and expression arity must match. 24 // The first error message is produced by the parser. 25 // In a real-world scenario, the type-checker would not be run 26 // in this case and the 2nd error message would not appear. 27 const _ /* ERROR "missing constant value" */ /* ERROR "missing init expr for _" */ 28 const _ = 1, 2 /* ERROR "extra init expr 2" */ 29 30 const _ /* ERROR "missing constant value" */ /* ERROR "missing init expr for _" */ int 31 const _ int = 1, 2 /* ERROR "extra init expr 2" */ 32 33 const ( 34 _ /* ERROR "missing constant value" */ /* ERROR "missing init expr for _" */ 35 _ = 1, 2 /* ERROR "extra init expr 2" */ 36 37 _ /* ERROR "missing constant value" */ /* ERROR "missing init expr for _" */ int 38 _ int = 1, 2 /* ERROR "extra init expr 2" */ 39 ) 40 41 const ( 42 _ = 1 43 _ 44 _, _ /* ERROR "missing init expr for _" */ 45 _ 46 ) 47 48 const ( 49 _, _ = 1, 2 50 _, _ 51 _ /* ERROR "extra init expr at" */ 52 _, _ 53 _, _, _ /* ERROR "missing init expr for _" */ 54 _, _ 55 ) 56 57 func _() { 58 const _ /* ERROR "missing constant value" */ /* ERROR "missing init expr for _" */ 59 const _ = 1, 2 /* ERROR "extra init expr 2" */ 60 61 const _ /* ERROR "missing constant value" */ /* ERROR "missing init expr for _" */ int 62 const _ int = 1, 2 /* ERROR "extra init expr 2" */ 63 64 const ( 65 _ /* ERROR "missing constant value" */ /* ERROR "missing init expr for _" */ 66 _ = 1, 2 /* ERROR "extra init expr 2" */ 67 68 _ /* ERROR "missing constant value" */ /* ERROR "missing init expr for _" */ int 69 _ int = 1, 2 /* ERROR "extra init expr 2" */ 70 ) 71 72 const ( 73 _ = 1 74 _ 75 _, _ /* ERROR "missing init expr for _" */ 76 _ 77 ) 78 79 const ( 80 _, _ = 1, 2 81 _, _ 82 _ /* ERROR "extra init expr at" */ 83 _, _ 84 _, _, _ /* ERROR "missing init expr for _" */ 85 _, _ 86 ) 87 } 88 89 // Test case for constant with invalid initialization. 90 // Caused panic because the constant value was not set up (gri - 7/8/2014). 91 func _() { 92 const ( 93 x string = missing /* ERROR "undeclared name" */ 94 y = x + "" 95 ) 96 } 97 98 // Test case for constants depending on function literals (see also #22992). 99 const A /* ERROR initialization cycle */ = unsafe.Sizeof(func() { _ = A }) 100 101 func _() { 102 // The function literal below must not see a. 103 const a = unsafe.Sizeof(func() { _ = a /* ERROR "undeclared name" */ }) 104 const b = unsafe.Sizeof(func() { _ = a }) 105 106 // The function literal below must not see x, y, or z. 107 const x, y, z = 0, 1, unsafe.Sizeof(func() { _ = x /* ERROR "undeclared name" */ + y /* ERROR "undeclared name" */ + z /* ERROR "undeclared name" */ }) 108 } 109 110 // TODO(gri) move extra tests from testdata/const0.src into here