github.com/JimmyHuang454/JLS-go@v0.0.0-20230831150107-90d536585ba0/internal/types/testdata/check/literals.go (about)

     1  // Copyright 2019 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  // This file tests various representations of literals
     6  // and compares them with literals or constant expressions
     7  // of equal values.
     8  
     9  package literals
    10  
    11  func _() {
    12  	// 0-octals
    13  	assert(0_123 == 0123)
    14  	assert(0123_456 == 0123456)
    15  
    16  	// decimals
    17  	assert(1_234 == 1234)
    18  	assert(1_234_567 == 1234567)
    19  
    20  	// hexadecimals
    21  	assert(0X_0 == 0)
    22  	assert(0X_1234 == 0x1234)
    23  	assert(0X_CAFE_f00d == 0xcafef00d)
    24  
    25  	// octals
    26  	assert(0o0 == 0)
    27  	assert(0o1234 == 01234)
    28  	assert(0o01234567 == 01234567)
    29  
    30  	assert(0O0 == 0)
    31  	assert(0O1234 == 01234)
    32  	assert(0O01234567 == 01234567)
    33  
    34  	assert(0o_0 == 0)
    35  	assert(0o_1234 == 01234)
    36  	assert(0o0123_4567 == 01234567)
    37  
    38  	assert(0O_0 == 0)
    39  	assert(0O_1234 == 01234)
    40  	assert(0O0123_4567 == 01234567)
    41  
    42  	// binaries
    43  	assert(0b0 == 0)
    44  	assert(0b1011 == 0xb)
    45  	assert(0b00101101 == 0x2d)
    46  
    47  	assert(0B0 == 0)
    48  	assert(0B1011 == 0xb)
    49  	assert(0B00101101 == 0x2d)
    50  
    51  	assert(0b_0 == 0)
    52  	assert(0b10_11 == 0xb)
    53  	assert(0b_0010_1101 == 0x2d)
    54  
    55  	// decimal floats
    56  	assert(1_2_3. == 123.)
    57  	assert(0_123. == 123.)
    58  
    59  	assert(0_0e0 == 0.)
    60  	assert(1_2_3e0 == 123.)
    61  	assert(0_123e0 == 123.)
    62  
    63  	assert(0e-0_0 == 0.)
    64  	assert(1_2_3E+0 == 123.)
    65  	assert(0123E1_2_3 == 123e123)
    66  
    67  	assert(0.e+1 == 0.)
    68  	assert(123.E-1_0 == 123e-10)
    69  	assert(01_23.e123 == 123e123)
    70  
    71  	assert(.0e-1 == .0)
    72  	assert(.123E+10 == .123e10)
    73  	assert(.0123E123 == .0123e123)
    74  
    75  	assert(1_2_3.123 == 123.123)
    76  	assert(0123.01_23 == 123.0123)
    77  
    78  	// hexadecimal floats
    79  	assert(0x0.p+0 == 0.)
    80  	assert(0Xdeadcafe.p-10 == 0xdeadcafe/1024.0)
    81  	assert(0x1234.P84 == 0x1234000000000000000000000)
    82  
    83  	assert(0x.1p-0 == 1./16)
    84  	assert(0X.deadcafep4 == 1.0*0xdeadcafe/0x10000000)
    85  	assert(0x.1234P+12 == 1.0*0x1234/0x10)
    86  
    87  	assert(0x0p0 == 0.)
    88  	assert(0Xdeadcafep+1 == 0x1bd5b95fc)
    89  	assert(0x1234P-10 == 0x1234/1024.0)
    90  
    91  	assert(0x0.0p0 == 0.)
    92  	assert(0Xdead.cafep+1 == 1.0*0x1bd5b95fc/0x10000)
    93  	assert(0x12.34P-10 == 1.0*0x1234/0x40000)
    94  
    95  	assert(0Xdead_cafep+1 == 0xdeadcafep+1)
    96  	assert(0x_1234P-10 == 0x1234p-10)
    97  
    98  	assert(0X_dead_cafe.p-10 == 0xdeadcafe.p-10)
    99  	assert(0x12_34.P1_2_3 == 0x1234.p123)
   100  
   101  	assert(1_234i == 1234i)
   102  	assert(1_234_567i == 1234567i)
   103  
   104  	assert(0.i == 0i)
   105  	assert(123.i == 123i)
   106  	assert(0123.i == 123i)
   107  
   108  	assert(0.e+1i == 0i)
   109  	assert(123.E-1_0i == 123e-10i)
   110  	assert(01_23.e123i == 123e123i)
   111  }