blob: 67d3815ea3e1377f507b8aacec87144805cf5efa [file] [log] [blame]
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -parse -verify %s
import ctypes
func useStructWithUnion(_ vec: GLKVector4) -> GLKVector4 {
var vec = vec
_ = vec.v.0
_ = vec.v.1
_ = vec.v.2
_ = vec.v.3
vec.v = (0, 0, 0, 0)
}
func useUnionIndirectFields(_ vec: GLKVector4) -> GLKVector4 {
// TODO: Make indirect fields from anonymous structs in unions
// accessible.
// Anonymous indirect fields
let x: CFloat = vec.x // expected-error{{}}
let y: CFloat = vec.y // expected-error{{}}
let z: CFloat = vec.z // expected-error{{}}
let w: CFloat = vec.w // expected-error{{}}
let r: CFloat = vec.r // expected-error{{}}
let g: CFloat = vec.g // expected-error{{}}
let b: CFloat = vec.b // expected-error{{}}
let a: CFloat = vec.a // expected-error{{}}
let s: CFloat = vec.s // expected-error{{}}
let t: CFloat = vec.t // expected-error{{}}
let p: CFloat = vec.p // expected-error{{}}
let q: CFloat = vec.q // expected-error{{}}
// Named indirect fields
let v0: CFloat = vec.v.0
let v1: CFloat = vec.v.1
let v2: CFloat = vec.v.2
let v3: CFloat = vec.v.3
return vec
}
func useStructWithNamedUnion(_ u: NamedUnion) -> NamedUnion {
var u1 = NamedUnion()
u1.a = u.a
u1.b = u.b
u1.intfloat = u.intfloat
return u1
}
func useStructWithAnonymousUnion(_ u: AnonUnion) -> AnonUnion {
// TODO: Make union indirect fields from anonymous structs in unions
// accessible.
let a: CFloat = u.a // expected-error{{}}
let b: CFloat = u.b // expected-error{{}}
let c: CFloat = u.c // expected-error{{}}
let d: CFloat = u.d // expected-error{{}}
let x: CInt = u.x
return u
}
func useStructWithUnnamedUnion(_ u: UnnamedUnion) -> UnnamedUnion {
var u = u
u.u.i = 100
u.u.f = 1.0
}