- if(assign.target_declaration)
- append(format("Target: %%%d %s %s", get_label(*assign.target_declaration), assign.target_declaration->type, assign.target_declaration->name));
+ if(assign.target.declaration)
+ {
+ string text = format("Target: %%%d", get_label(*assign.target.declaration));
+
+ static const char swizzle[4] = { 'x', 'y', 'z', 'w' };
+ for(unsigned i=0; i<assign.target.chain_len; ++i)
+ {
+ unsigned component = assign.target.chain[i];
+ switch(static_cast<Assignment::Target::ChainType>(component&0xC0))
+ {
+ case Assignment::Target::MEMBER:
+ text += format(" .%d", component&0x3F);
+ break;
+ case Assignment::Target::SWIZZLE:
+ text += " .";
+ for(unsigned j=0; j<4; ++j)
+ if(component&(1<<j))
+ text += swizzle[j];
+ break;
+ case Assignment::Target::ARRAY:
+ text += format(" [%d]", component&0x3F);
+ break;
+ }
+ }
+ append(text);
+ }