|  | // errorcheck | 
|  |  | 
|  | // Copyright 2010 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. | 
|  |  | 
|  | // Verify that incorrect invocations of the complex predeclared function are detected. | 
|  | // Does not compile. | 
|  |  | 
|  | package main | 
|  |  | 
|  | type ( | 
|  | Float32    float32 | 
|  | Float64    float64 | 
|  | Complex64  complex64 | 
|  | Complex128 complex128 | 
|  | ) | 
|  |  | 
|  | var ( | 
|  | f32 float32 | 
|  | f64 float64 | 
|  | F32 Float32 | 
|  | F64 Float64 | 
|  |  | 
|  | c64  complex64 | 
|  | c128 complex128 | 
|  | C64  Complex64 | 
|  | C128 Complex128 | 
|  | ) | 
|  |  | 
|  | func F1() int { | 
|  | return 1 | 
|  | } | 
|  |  | 
|  | func F3() (int, int, int) { | 
|  | return 1, 2, 3 | 
|  | } | 
|  |  | 
|  | func main() { | 
|  | // ok | 
|  | c64 = complex(f32, f32) | 
|  | c128 = complex(f64, f64) | 
|  |  | 
|  | _ = complex128(0)     // ok | 
|  | _ = complex(f32, f64) // ERROR "complex" | 
|  | _ = complex(f64, f32) // ERROR "complex" | 
|  | _ = complex(f32, F32) // ERROR "complex" | 
|  | _ = complex(F32, f32) // ERROR "complex" | 
|  | _ = complex(f64, F64) // ERROR "complex" | 
|  | _ = complex(F64, f64) // ERROR "complex" | 
|  |  | 
|  | _ = complex(F1()) // ERROR "not enough arguments" | 
|  | _ = complex(F3()) // ERROR "too many arguments" | 
|  |  | 
|  | _ = complex() // ERROR "not enough arguments" | 
|  |  | 
|  | c128 = complex(f32, f32) // ERROR "cannot use" | 
|  | c64 = complex(f64, f64)  // ERROR "cannot use" | 
|  |  | 
|  | c64 = complex(1.0, 2.0) // ok, constant is untyped | 
|  | c128 = complex(1.0, 2.0) | 
|  | C64 = complex(1.0, 2.0) | 
|  | C128 = complex(1.0, 2.0) | 
|  |  | 
|  | C64 = complex(f32, f32)  // ERROR "cannot use" | 
|  | C128 = complex(f64, f64) // ERROR "cannot use" | 
|  |  | 
|  | } |