widl: Fix detection of conformant varying structs.
Rename has_conformant_array to has_conformance, add a new variable
has_variance and map has_conformant_string to has_conformance and
has_variance.
A conformant varying struct should be returned if just variance is
present and even if no pointers are present.
diff --git a/tools/widl/parser.y b/tools/widl/parser.y
index 8585218..bbce165 100644
--- a/tools/widl/parser.y
+++ b/tools/widl/parser.y
@@ -1240,8 +1240,8 @@
 static int get_struct_type(var_t *field)
 {
   int has_pointer = 0;
-  int has_conformant_array = 0;
-  int has_conformant_string = 0;
+  int has_conformance = 0;
+  int has_variance = 0;
 
   for (; field; field = NEXT_LINK(field))
   {
@@ -1253,14 +1253,15 @@
 
     if (is_string_type(field->attrs, field->ptr_level, field->array))
     {
-        has_conformant_string = 1;
+        has_conformance = 1;
+        has_variance = 1;
         continue;
     }
 
     if (is_array_type(field->attrs, field->ptr_level, field->array) &&
         field->array && !field->array->is_const)
     {
-        has_conformant_array = 1;
+        has_conformance = 1;
         if (PREV_LINK(field))
             yyerror("field %s deriving from a conformant array must be the last field in the structure\n",
                     field->name);
@@ -1306,14 +1307,15 @@
       has_pointer = 1;
       break;
     case RPC_FC_CARRAY:
-      has_conformant_array = 1;
+      has_conformance = 1;
       if (PREV_LINK(field))
           yyerror("field %s deriving from a conformant array must be the last field in the structure\n",
                   field->name);
       break;
     case RPC_FC_C_CSTRING:
     case RPC_FC_C_WSTRING:
-      has_conformant_string = 1;
+      has_conformance = 1;
+      has_variance = 1;
       break;
 
     /*
@@ -1321,12 +1323,13 @@
      *  a struct should be at least as complex as its member
      */
     case RPC_FC_CVSTRUCT:
-      has_conformant_string = 1;
+      has_conformance = 1;
+      has_variance = 1;
       has_pointer = 1;
       break;
 
     case RPC_FC_CPSTRUCT:
-      has_conformant_array = 1;
+      has_conformance = 1;
       if (PREV_LINK(field))
           yyerror("field %s deriving from a conformant array must be the last field in the structure\n",
                   field->name);
@@ -1334,7 +1337,7 @@
       break;
 
     case RPC_FC_CSTRUCT:
-      has_conformant_array = 1;
+      has_conformance = 1;
       if (PREV_LINK(field))
           yyerror("field %s deriving from a conformant array must be the last field in the structure\n",
                   field->name);
@@ -1362,11 +1365,11 @@
     }
   }
 
-  if( has_conformant_string && has_pointer )
+  if( has_variance )
     return RPC_FC_CVSTRUCT;
-  if( has_conformant_array && has_pointer )
+  if( has_conformance && has_pointer )
     return RPC_FC_CPSTRUCT;
-  if( has_conformant_array )
+  if( has_conformance )
     return RPC_FC_CSTRUCT;
   if( has_pointer )
     return RPC_FC_PSTRUCT;