Plan 9 from Bell Labs’s /usr/web/sources/contrib/ericvh/go-plan9/test/const1.go

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


// errchk $G -e $F.go

// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package main

type I interface {}
const (
	// assume all types behave similarly to int8/uint8
	Int8 int8 = 101;
	Minus1 int8 = -1;
	Uint8 uint8 = 102;
	Const = 103;

	Float32 float32 = 104.5;
	Float float = 105.5;
	ConstFloat = 106.5;
	Big float64 = 1e300;

	String = "abc";
	Bool = true;
)

var (
	a1 = Int8 * 100;	// ERROR "overflow"
	a2 = Int8 * -1;	// OK
	a3 = Int8 * 1000;	// ERROR "overflow"
	a4 = Int8 * int8(1000);	// ERROR "overflow"
	a5 = int8(Int8 * 1000);	// ERROR "overflow"
	a6 = int8(Int8 * int8(1000));	// ERROR "overflow"
	a7 = Int8 - 2*Int8 - 2*Int8;	// ERROR "overflow"
	a8 = Int8 * Const / 100;	// ERROR "overflow"
	a9 = Int8 * (Const / 100);	// OK

	b1 = Uint8 * Uint8;	// ERROR "overflow"
	b2 = Uint8 * -1;	// ERROR "overflow"
	b3 = Uint8 - Uint8;	// OK
	b4 = Uint8 - Uint8 - Uint8;	// ERROR "overflow"
	b5 = uint8(^0);	// ERROR "overflow"
	b6 = ^uint8(0);	// OK
	b7 = uint8(Minus1);	// ERROR "overflow"
	b8 = uint8(int8(-1));	// ERROR "overflow"
	b8a = uint8(-1);	// ERROR "overflow"
	b9 byte = (1<<10) >> 8;	// OK
	b10 byte = (1<<10);	// ERROR "overflow"
	b11 byte = (byte(1)<<10) >> 8;	// ERROR "overflow"
	b12 byte = 1000;	// ERROR "overflow"
	b13 byte = byte(1000);	// ERROR "overflow"
	b14 byte = byte(100) * byte(100);	// ERROR "overflow"
	b15 byte = byte(100) * 100;	// ERROR "overflow"
	b16 byte = byte(0) * 1000;	// ERROR "overflow"
	b16a byte = 0 * 1000;	// OK
	b17 byte = byte(0) * byte(1000);	// ERROR "overflow"
	b18 byte = Uint8/0;	// ERROR "division by zero"

	c1 float64 = Big;
	c2 float64 = Big*Big;	// ERROR "overflow"
	c3 float64 = float64(Big)*Big;	// ERROR "overflow"
	c4 = Big*Big;	// ERROR "overflow"
	c5 = Big/0;	// ERROR "division by zero"
)

func f(int);

func main() {
	f(Int8);	// ERROR "convert|wrong type|cannot"
	f(Minus1);	// ERROR "convert|wrong type|cannot"
	f(Uint8);	// ERROR "convert|wrong type|cannot"
	f(Const);	// OK
	f(Float32);	// ERROR "convert|wrong type|cannot"
	f(Float);	// ERROR "convert|wrong type|cannot"
	f(ConstFloat);	// ERROR "truncate"
	f(ConstFloat - 0.5);	// OK
	f(Big);	// ERROR "convert|wrong type|cannot"
	f(String);	// ERROR "convert|wrong type|cannot|incompatible"
	f(Bool);	// ERROR "convert|wrong type|cannot|incompatible"
}

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].