]> Cypherpunks.ru repositories - gostls13.git/blobdiff - test/cmplx.go
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / test / cmplx.go
index fe05d2defaa7c619a30792643eed2d948b8e112a..d63c7ebc7e84c84b658d8880e1c28b717003dc4b 100644 (file)
@@ -4,16 +4,38 @@
 // 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)
@@ -22,4 +44,25 @@ func main() {
        _ = 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"
+
 }