1// errorcheck 2 3// Copyright 2010 The Go Authors. All rights reserved. 4// Use of this source code is governed by a BSD-style 5// license that can be found in the LICENSE file. 6 7// Verify that incorrect invocations of the complex predeclared function are detected. 8// Does not compile. 9 10package main 11 12type ( 13 Float32 float32 14 Float64 float64 15 Complex64 complex64 16 Complex128 complex128 17) 18 19var ( 20 f32 float32 21 f64 float64 22 F32 Float32 23 F64 Float64 24 25 c64 complex64 26 c128 complex128 27 C64 Complex64 28 C128 Complex128 29) 30 31func F1() int { 32 return 1 33} 34 35func F3() (int, int, int) { 36 return 1, 2, 3 37} 38 39func main() { 40 // ok 41 c64 = complex(f32, f32) 42 c128 = complex(f64, f64) 43 44 _ = complex128(0) // ok 45 _ = complex(f32, f64) // ERROR "complex" 46 _ = complex(f64, f32) // ERROR "complex" 47 _ = complex(f32, F32) // ERROR "complex" 48 _ = complex(F32, f32) // ERROR "complex" 49 _ = complex(f64, F64) // ERROR "complex" 50 _ = complex(F64, f64) // ERROR "complex" 51 52 _ = complex(F1()) // ERROR "not enough arguments" 53 _ = complex(F3()) // ERROR "too many arguments" 54 55 _ = complex() // ERROR "not enough arguments" 56 57 c128 = complex(f32, f32) // ERROR "cannot use" 58 c64 = complex(f64, f64) // ERROR "cannot use" 59 60 c64 = complex(1.0, 2.0) // ok, constant is untyped 61 c128 = complex(1.0, 2.0) 62 C64 = complex(1.0, 2.0) 63 C128 = complex(1.0, 2.0) 64 65 C64 = complex(f32, f32) // ERROR "cannot use" 66 C128 = complex(f64, f64) // ERROR "cannot use" 67 68} 69