+ Clarify that .length() returns an int type and can be used as a constant integer expression.
+ Allow swizzle operations on scalars.
+ Positive signed decimal literals, as well as octal and hexadecimal, can set all 32 bits. This includes setting the sign bit to create a negative value.
- - Clarified that a comma sequence-operator expression cannot be a constant expression. E.g., \93(2,3)\94 is not allowed, semantically,
+ + Clarified that a comma sequence-operator expression cannot be a constant expression. E.g., \93(2,3)\94 is not allowed, semantically,
as a valid constant expression 3, even though it is an expression that will evaluate to 3.
+ Use vec2 instead of vec3 for coordinate in textureGather*(sampler2DRect,...).
+ Clarify that textureGatherOffset() can take non-constants for the offsets.
vectorSize = 1;
}
- virtual void hideType() { basicType = EbtVoid; vectorSize = 1; }
- virtual bool wasTypeHidden() const { return basicType == EbtVoid; }
+ virtual void hideMember() { basicType = EbtVoid; vectorSize = 1; }
+ virtual bool hiddenMember() const { return basicType == EbtVoid; }
virtual void setTypeName(const TString& n) { typeName = NewPoolTString(n.c_str()); }
virtual void setFieldName(const TString& n) { fieldName = NewPoolTString(n.c_str()); }
if (structure) {
s.append("{");
for (size_t i = 0; i < structure->size(); ++i) {
- if ((*structure)[i].type->getBasicType() != EbtVoid) {
+ if (! (*structure)[i].type->hiddenMember()) {
s.append((*structure)[i].type->getCompleteString());
s.append(" ");
s.append((*structure)[i].type->getFieldName());
node = intermediate.addIndex(EOpIndexDirectStruct, container, constNode, loc);
node->setType(*(*variable->getType().getStruct())[anon->getMemberNumber()].type);
- if (node->getType().wasTypeHidden())
+ if (node->getType().hiddenMember())
error(loc, "member of nameless block was not redeclared", string->c_str(), "");
} else {
// Not a member of an anonymous container.
if (instanceName)
member = type.getWritableStruct()->erase(member);
else {
- member->type->hideType();
+ member->type->hideMember();
++member;
}
}