Create structure definitions for structures in a return statement.

TRAC #18319
ANGLEBUG=185
Signed-off-by: Daniel Koch
Author: Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/trunk@766 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/compiler/OutputHLSL.cpp b/src/compiler/OutputHLSL.cpp
index 629a4ea..74c4805 100644
--- a/src/compiler/OutputHLSL.cpp
+++ b/src/compiler/OutputHLSL.cpp
@@ -2050,14 +2050,7 @@
     typedef std::vector<TType> ParameterArray;
     ParameterArray ctorParameters;
 
-    if (parameters)
-    {
-        for (TIntermSequence::const_iterator parameter = parameters->begin(); parameter != parameters->end(); parameter++)
-        {
-            ctorParameters.push_back((*parameter)->getAsTyped()->getType());
-        }
-    }
-    else if (type.getStruct())
+    if (type.getStruct())
     {
         mStructNames.insert(decorate(name));
 
@@ -2086,6 +2079,13 @@
             ctorParameters.push_back(*fields[i].type);
         }
     }
+    else if (parameters)
+    {
+        for (TIntermSequence::const_iterator parameter = parameters->begin(); parameter != parameters->end(); parameter++)
+        {
+            ctorParameters.push_back((*parameter)->getAsTyped()->getType());
+        }
+    }
     else UNREACHABLE();
 
     TString constructor;