Now, if a struct member has an explicit 'uniform' or 'varying' qualifier, then that member has that variability, regardless of the variability of the struct's variability. Members without 'uniform' or 'varying' have unbound variability, and in turn inherit the variability of the struct. As a result of this, now structs can properly be 'varying' by default, just like all the other types, while still having sensible semantics.
15 lines
242 B
Plaintext
15 lines
242 B
Plaintext
// Illegal to assign to type "varying struct Bar" in type "varying struct Foo" due to element "a" with type "const varying int32"
|
|
|
|
struct Bar {
|
|
const int a;
|
|
};
|
|
|
|
struct Foo {
|
|
struct Bar b;
|
|
};
|
|
|
|
void foo(Foo f) {
|
|
Foo g;
|
|
g = f;
|
|
}
|