diff --git a/mingw-w64-tools/widl/VERSION b/mingw-w64-tools/widl/VERSION
index dd1b8cd..43ffe70 100644
--- a/mingw-w64-tools/widl/VERSION
+++ b/mingw-w64-tools/widl/VERSION
@@ -1 +1 @@
-WIDL version 5.0-rc1
+WIDL version 5.8
diff --git a/mingw-w64-tools/widl/configure b/mingw-w64-tools/widl/configure
index 92c8f45..594a877 100755
--- a/mingw-w64-tools/widl/configure
+++ b/mingw-w64-tools/widl/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for widl 5.0-rc1.
+# Generated by GNU Autoconf 2.69 for widl 5.8.
 #
 # Report bugs to <mingw-w64-public@lists.sourceforge.net>.
 #
@@ -580,8 +580,8 @@
 # Identity of this package.
 PACKAGE_NAME='widl'
 PACKAGE_TARNAME='widl'
-PACKAGE_VERSION='5.0-rc1'
-PACKAGE_STRING='widl 5.0-rc1'
+PACKAGE_VERSION='5.8'
+PACKAGE_STRING='widl 5.8'
 PACKAGE_BUGREPORT='mingw-w64-public@lists.sourceforge.net'
 PACKAGE_URL=''
 
@@ -1296,7 +1296,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures widl 5.0-rc1 to adapt to many kinds of systems.
+\`configure' configures widl 5.8 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1368,7 +1368,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of widl 5.0-rc1:";;
+     short | recursive ) echo "Configuration of widl 5.8:";;
    esac
   cat <<\_ACEOF
 
@@ -1470,7 +1470,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-widl configure 5.0-rc1
+widl configure 5.8
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2023,7 +2023,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by widl $as_me 5.0-rc1, which was
+It was created by widl $as_me 5.8, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3002,7 +3002,7 @@
 
 # Define the identity of the package.
  PACKAGE='widl'
- VERSION='5.0-rc1'
+ VERSION='5.8'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -5466,7 +5466,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by widl $as_me 5.0-rc1, which was
+This file was extended by widl $as_me 5.8, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -5532,7 +5532,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-widl config.status 5.0-rc1
+widl config.status 5.8
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/mingw-w64-tools/widl/include/basetsd.h b/mingw-w64-tools/widl/include/basetsd.h
index 96ea3f0..c9f5c90 100644
--- a/mingw-w64-tools/widl/include/basetsd.h
+++ b/mingw-w64-tools/widl/include/basetsd.h
@@ -271,44 +271,24 @@
 /* These are hardcoded to avoid dependencies on config.h in Winelib apps. */
 #if defined(__i386__)
 # undef  WORDS_BIGENDIAN
-# undef  BITFIELDS_BIGENDIAN
-# define ALLOW_UNALIGNED_ACCESS
 #elif defined(__x86_64__)
 # undef  WORDS_BIGENDIAN
-# undef  BITFIELDS_BIGENDIAN
-# define ALLOW_UNALIGNED_ACCESS
 #elif defined(__powerpc__)
 # define WORDS_BIGENDIAN
-# define BITFIELDS_BIGENDIAN
-# undef  ALLOW_UNALIGNED_ACCESS
 #elif defined(__ALPHA__)
 # undef  WORDS_BIGENDIAN
-# undef  BITFIELDS_BIGENDIAN
-# undef  ALLOW_UNALIGNED_ACCESS
 #elif defined(__ARMEB__)
 # define WORDS_BIGENDIAN
-# define BITFIELDS_BIGENDIAN
-# undef  ALLOW_UNALIGNED_ACCESS
 #elif defined(__ARMEL__) || defined(__arm__)
 # undef  WORDS_BIGENDIAN
-# undef  BITFIELDS_BIGENDIAN
-# undef  ALLOW_UNALIGNED_ACCESS
 #elif defined(__AARCH64EB__)
 # define WORDS_BIGENDIAN
-# define BITFIELDS_BIGENDIAN
-# undef  ALLOW_UNALIGNED_ACCESS
 #elif defined(__AARCH64EL__) || defined(__aarch64__)
 # undef  WORDS_BIGENDIAN
-# undef  BITFIELDS_BIGENDIAN
-# undef  ALLOW_UNALIGNED_ACCESS
 #elif defined(__MIPSEB__)
 # define WORDS_BIGENDIAN
-# define BITFIELDS_BIGENDIAN
-# undef  ALLOW_UNALIGNED_ACCESS
 #elif defined(__MIPSEL__)
 # undef  WORDS_BIGENDIAN
-# undef  BITFIELDS_BIGENDIAN
-# undef  ALLOW_UNALIGNED_ACCESS
 #elif !defined(RC_INVOKED) && !defined(__WIDL__) && !defined(__midl)
 # error Unknown CPU architecture!
 #endif
diff --git a/mingw-w64-tools/widl/include/guiddef.h b/mingw-w64-tools/widl/include/guiddef.h
index ba39dd8..546c450 100644
--- a/mingw-w64-tools/widl/include/guiddef.h
+++ b/mingw-w64-tools/widl/include/guiddef.h
@@ -30,7 +30,7 @@
 #else
 typedef struct _GUID
 {
-#ifdef _MSC_VER
+#ifdef WINE_USE_LONG
     unsigned long  Data1;
 #else
     unsigned int   Data1;
@@ -42,30 +42,45 @@
 #endif
 
 /* Macros for __uuidof emulation */
-#if defined(__cplusplus) && !defined(_MSC_VER)
+#ifdef __cplusplus
+# if defined(__MINGW32__)
+#  define __WINE_UUID_ATTR __attribute__((selectany))
+# elif defined(__GNUC__)
+#  define __WINE_UUID_ATTR __attribute__((visibility("hidden"),weak))
+# endif
+#endif
+
+#ifdef __WINE_UUID_ATTR
 
 extern "C++" {
-    template<typename T> const GUID &__wine_uuidof();
+    template<typename T> struct __wine_uuidof;
+
+    template<typename T> struct __wine_uuidof_type {
+        typedef __wine_uuidof<T> inst;
+    };
+    template<typename T> struct __wine_uuidof_type<T *> {
+        typedef __wine_uuidof<T> inst;
+    };
+    template<typename T> struct __wine_uuidof_type<T * const> {
+        typedef __wine_uuidof<T> inst;
+    };
 }
 
 #define __CRT_UUID_DECL(type,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)           \
     extern "C++" {                                                      \
-    template<> inline const GUID &__wine_uuidof<type>() {               \
-        static const IID __uuid_inst = {l,w1,w2, {b1,b2,b3,b4,b5,b6,b7,b8}}; \
-        return __uuid_inst;                                             \
-    }                                                                   \
-    template<> inline const GUID &__wine_uuidof<type*>() {              \
-        return __wine_uuidof<type>();                                   \
-    }                                                                   \
+        template<> struct __wine_uuidof<type> {                         \
+            static const GUID uuid;                                     \
+        };                                                              \
+        __WINE_UUID_ATTR const GUID __wine_uuidof<type>::uuid = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}; \
     }
 
-#define __uuidof(type) __wine_uuidof<typeof(type)>()
+#define __uuidof(type) __wine_uuidof_type<typeof(type)>::inst::uuid
 
-#else
+#else /* __WINE_UUID_ATTR */
 
 #define __CRT_UUID_DECL(type,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
 
-#endif
+#endif /* __WINE_UUID_ATTR */
 
 #endif
 
@@ -130,14 +145,14 @@
 #define REFCLSID            const CLSID &
 #define REFIID              const IID &
 #define REFFMTID            const FMTID &
-#else /* !defined(__cplusplus) */
+#else
 #define REFGUID             const GUID* __MIDL_CONST
 #define REFCLSID            const CLSID* __MIDL_CONST
 #define REFIID              const IID* __MIDL_CONST
 #define REFFMTID            const FMTID* __MIDL_CONST
-#endif /* !defined(__cplusplus) */
+#endif
 
-#if defined(__cplusplus) && !defined(CINTERFACE)
+#ifdef __cplusplus
 #define IsEqualGUID(rguid1, rguid2) (!memcmp(&(rguid1), &(rguid2), sizeof(GUID)))
 inline int InlineIsEqualGUID(REFGUID rguid1, REFGUID rguid2)
 {
@@ -146,16 +161,16 @@
            ((ULONG *)&rguid1)[2] == ((ULONG *)&rguid2)[2] &&
            ((ULONG *)&rguid1)[3] == ((ULONG *)&rguid2)[3]);
 }
-#else /* defined(__cplusplus) && !defined(CINTERFACE) */
+#else
 #define IsEqualGUID(rguid1, rguid2) (!memcmp(rguid1, rguid2, sizeof(GUID)))
 #define InlineIsEqualGUID(rguid1, rguid2)  \
         (((ULONG *)rguid1)[0] == ((ULONG *)rguid2)[0] && \
          ((ULONG *)rguid1)[1] == ((ULONG *)rguid2)[1] && \
          ((ULONG *)rguid1)[2] == ((ULONG *)rguid2)[2] && \
          ((ULONG *)rguid1)[3] == ((ULONG *)rguid2)[3])
-#endif /* defined(__cplusplus) && !defined(CINTERFACE) */
+#endif
 
-#if defined(__cplusplus) && !defined(CINTERFACE)
+#ifdef __cplusplus
 #include <string.h>
 inline bool operator==(const GUID& guidOne, const GUID& guidOther)
 {
@@ -167,6 +182,4 @@
 }
 #endif
 
-extern const IID GUID_NULL;
-
 #endif /* _GUIDDEF_H_ */
diff --git a/mingw-w64-tools/widl/include/threadpoolapiset.h b/mingw-w64-tools/widl/include/threadpoolapiset.h
index 010ee3a..e218834 100644
--- a/mingw-w64-tools/widl/include/threadpoolapiset.h
+++ b/mingw-w64-tools/widl/include/threadpoolapiset.h
@@ -43,9 +43,11 @@
 WINBASEAPI void        WINAPI FreeLibraryWhenCallbackReturns(PTP_CALLBACK_INSTANCE,HMODULE);
 WINBASEAPI BOOL        WINAPI IsThreadpoolTimerSet(PTP_TIMER);
 WINBASEAPI void        WINAPI LeaveCriticalSectionWhenCallbackReturns(PTP_CALLBACK_INSTANCE,RTL_CRITICAL_SECTION*);
+WINBASEAPI BOOL        WINAPI QueryThreadpoolStackInformation(PTP_POOL,PTP_POOL_STACK_INFORMATION);
 WINBASEAPI void        WINAPI ReleaseMutexWhenCallbackReturns(PTP_CALLBACK_INSTANCE,HANDLE);
 WINBASEAPI void        WINAPI ReleaseSemaphoreWhenCallbackReturns(PTP_CALLBACK_INSTANCE,HANDLE,DWORD);
 WINBASEAPI void        WINAPI SetEventWhenCallbackReturns(PTP_CALLBACK_INSTANCE,HANDLE);
+WINBASEAPI BOOL        WINAPI SetThreadpoolStackInformation(PTP_POOL,PTP_POOL_STACK_INFORMATION);
 WINBASEAPI void        WINAPI SetThreadpoolThreadMaximum(PTP_POOL,DWORD);
 WINBASEAPI BOOL        WINAPI SetThreadpoolThreadMinimum(PTP_POOL,DWORD);
 WINBASEAPI void        WINAPI SetThreadpoolTimer(PTP_TIMER,FILETIME*,DWORD,DWORD);
diff --git a/mingw-w64-tools/widl/include/winbase.h b/mingw-w64-tools/widl/include/winbase.h
index 655eb48..78ed660 100644
--- a/mingw-w64-tools/widl/include/winbase.h
+++ b/mingw-w64-tools/widl/include/winbase.h
@@ -1409,7 +1409,7 @@
 	DWORD dwProviderSubType;
 	DWORD dwProviderOffset;
 	DWORD dwProviderSize;
-	DWORD wcProviderData[1];
+	WCHAR wcProviderData[1];
 } COMMCONFIG, *LPCOMMCONFIG;
 
 typedef struct tagCOMMPROP {
@@ -2418,6 +2418,7 @@
 WINBASEAPI HMODULE     WINAPI LoadLibraryExW(LPCWSTR,HANDLE,DWORD);
 #define                       LoadLibraryEx WINELIB_NAME_AW(LoadLibraryEx)
 WINBASEAPI DWORD       WINAPI LoadModule(LPCSTR,LPVOID);
+WINBASEAPI HMODULE     WINAPI LoadPackagedLibrary(LPCWSTR,DWORD);
 WINBASEAPI HGLOBAL     WINAPI LoadResource(HMODULE,HRSRC);
 WINBASEAPI HLOCAL      WINAPI LocalAlloc(UINT,SIZE_T) __WINE_ALLOC_SIZE(2);
 WINBASEAPI SIZE_T      WINAPI LocalCompact(UINT);
@@ -2618,6 +2619,9 @@
 WINBASEAPI BOOL        WINAPI SetDllDirectoryW(LPCWSTR);
 #define                       SetDllDirectory WINELIB_NAME_AW(SetDllDirectory)
 WINBASEAPI BOOL        WINAPI SetEndOfFile(HANDLE);
+WINBASEAPI BOOL        WINAPI SetEnvironmentStringsA(char *);
+WINBASEAPI BOOL        WINAPI SetEnvironmentStringsW(WCHAR *);
+#define                       SetEnvironmentStrings WINELIB_NAME_AW(SetEnvironmentStrings)
 WINBASEAPI BOOL        WINAPI SetEnvironmentVariableA(LPCSTR,LPCSTR);
 WINBASEAPI BOOL        WINAPI SetEnvironmentVariableW(LPCWSTR,LPCWSTR);
 #define                       SetEnvironmentVariable WINELIB_NAME_AW(SetEnvironmentVariable)
@@ -2903,123 +2907,135 @@
 
 /* Interlocked functions */
 
-#ifdef __i386__
-# if defined(__GNUC__) && !defined(_NTSYSTEM_) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 2)))
-
-static FORCEINLINE LONG WINAPI InterlockedCompareExchange( LONG volatile *dest, LONG xchg, LONG compare )
-{
-    LONG ret;
-    __asm__ __volatile__( "lock; cmpxchgl %2,(%1)"
-                          : "=a" (ret) : "r" (dest), "r" (xchg), "0" (compare) : "memory" );
-    return ret;
-}
-
-static FORCEINLINE LONG WINAPI InterlockedExchange( LONG volatile *dest, LONG val )
-{
-    LONG ret;
-    __asm__ __volatile__( "lock; xchgl %0,(%1)"
-                          : "=r" (ret) :"r" (dest), "0" (val) : "memory" );
-    return ret;
-}
-
-static FORCEINLINE LONG WINAPI InterlockedExchangeAdd( LONG volatile *dest, LONG incr )
-{
-    LONG ret;
-    __asm__ __volatile__( "lock; xaddl %0,(%1)"
-                          : "=r" (ret) : "r" (dest), "0" (incr) : "memory" );
-    return ret;
-}
-
-static FORCEINLINE LONG WINAPI InterlockedIncrement( LONG volatile *dest )
-{
-    return InterlockedExchangeAdd( dest, 1 ) + 1;
-}
-
-static FORCEINLINE LONG WINAPI InterlockedDecrement( LONG volatile *dest )
-{
-    return InterlockedExchangeAdd( dest, -1 ) - 1;
-}
-
-# else  /* __GNUC__ */
-
-WINBASEAPI LONG WINAPI InterlockedCompareExchange(LONG volatile*,LONG,LONG);
-WINBASEAPI LONG WINAPI InterlockedDecrement(LONG volatile*);
-WINBASEAPI LONG WINAPI InterlockedExchange(LONG volatile*,LONG);
-WINBASEAPI LONG WINAPI InterlockedExchangeAdd(LONG volatile*,LONG);
-WINBASEAPI LONG WINAPI InterlockedIncrement(LONG volatile*);
-
-# endif  /* __GNUC__ */
-
-static FORCEINLINE PVOID WINAPI InterlockedCompareExchangePointer( PVOID volatile *dest, PVOID xchg, PVOID compare )
-{
-    return (PVOID)InterlockedCompareExchange( (LONG volatile*)dest, (LONG)xchg, (LONG)compare );
-}
-
-static FORCEINLINE PVOID WINAPI InterlockedExchangePointer( PVOID volatile *dest, PVOID val )
-{
-    return (PVOID)InterlockedExchange( (LONG volatile*)dest, (LONG)val );
-}
-
-WINBASEAPI LONGLONG WINAPI InterlockedCompareExchange64(LONGLONG volatile*,LONGLONG,LONGLONG);
-
-#elif defined(_MSC_VER)
+#ifdef _MSC_VER
 
 #pragma intrinsic(_InterlockedCompareExchange)
-#pragma intrinsic(_InterlockedCompareExchangePointer)
 #pragma intrinsic(_InterlockedCompareExchange64)
 #pragma intrinsic(_InterlockedExchange)
-#pragma intrinsic(_InterlockedExchangePointer)
 #pragma intrinsic(_InterlockedExchangeAdd)
 #pragma intrinsic(_InterlockedIncrement)
 #pragma intrinsic(_InterlockedDecrement)
 
+long      _InterlockedCompareExchange(long volatile*,long,long);
+long long _InterlockedCompareExchange64(long long volatile*,long long,long long);
+long      _InterlockedDecrement(long volatile*);
+long      _InterlockedExchange(long volatile*,long);
+long      _InterlockedExchangeAdd(long volatile*,long);
+long      _InterlockedIncrement(long volatile*);
+
 static FORCEINLINE LONG WINAPI InterlockedCompareExchange( LONG volatile *dest, LONG xchg, LONG compare )
 {
-    return _InterlockedCompareExchange( dest, xchg, compare );
-}
-
-static FORCEINLINE PVOID WINAPI InterlockedCompareExchangePointer( PVOID volatile *dest, PVOID xchg, PVOID compare )
-{
-    return _InterlockedCompareExchangePointer( dest, xchg, compare );
+    return _InterlockedCompareExchange( (long volatile *)dest, xchg, compare );
 }
 
 static FORCEINLINE LONGLONG WINAPI InterlockedCompareExchange64( LONGLONG volatile *dest, LONGLONG xchg, LONGLONG compare )
 {
-    return _InterlockedCompareExchange64( dest, xchg, compare );
+    return _InterlockedCompareExchange64( (long long volatile *)dest, compare, xchg );
 }
 
 static FORCEINLINE LONG WINAPI InterlockedExchange( LONG volatile *dest, LONG val )
 {
-    return _InterlockedExchange( dest, val );
-}
-
-static FORCEINLINE PVOID WINAPI InterlockedExchangePointer( PVOID volatile *dest, PVOID val )
-{
-    return _InterlockedExchangePointer( dest, val );
+    return _InterlockedExchange( (long volatile *)dest, val );
 }
 
 static FORCEINLINE LONG WINAPI InterlockedExchangeAdd( LONG volatile *dest, LONG incr )
 {
-    return _InterlockedExchangeAdd( dest, incr );
+    return _InterlockedExchangeAdd( (long volatile *)dest, incr );
 }
 
 static FORCEINLINE LONG WINAPI InterlockedIncrement( LONG volatile *dest )
 {
-    return _InterlockedIncrement( dest );
+    return _InterlockedIncrement( (long volatile *)dest );
 }
 
 static FORCEINLINE LONG WINAPI InterlockedDecrement( LONG volatile *dest )
 {
-    return _InterlockedDecrement( dest );
+    return _InterlockedDecrement( (long volatile *)dest );
 }
 
+#ifndef __i386__
+
+#pragma intrinsic(_InterlockedCompareExchangePointer)
+#pragma intrinsic(_InterlockedExchangePointer)
+
+#define InterlockedCompareExchangePointer    _InterlockedCompareExchangePointer
+#define InterlockedExchangePointer           _InterlockedExchangePointer
+
+void *InterlockedCompareExchangePointer(void *volatile*,void*,void*);
+void *InterlockedExchangePointer(void *volatile*,void*);
+
+#else
+
+static FORCEINLINE void *WINAPI InterlockedCompareExchangePointer( void *volatile *dest, void *xchg, void *compare )
+{
+    return (void *)_InterlockedCompareExchange( (long volatile*)dest, (long)xchg, (long)compare );
+}
+
+static FORCEINLINE void *WINAPI InterlockedExchangePointer( void *volatile *dest, void *val )
+{
+    return (void *)_InterlockedExchange( (long volatile*)dest, (long)val );
+}
+
+#endif
+
 #elif defined(__GNUC__)
 
 static FORCEINLINE LONG WINAPI InterlockedCompareExchange( LONG volatile *dest, LONG xchg, LONG compare )
 {
+#ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
     return __sync_val_compare_and_swap( dest, compare, xchg );
+#else
+    LONG ret;
+    __asm__ __volatile__( "lock; cmpxchgl %2,(%1)"
+                          : "=a" (ret) : "r" (dest), "r" (xchg), "0" (compare) : "memory" );
+    return ret;
+#endif
 }
 
+static FORCEINLINE LONG WINAPI InterlockedExchange( LONG volatile *dest, LONG val )
+{
+    LONG ret;
+#if defined(__i386__) || defined(__x86_64__)
+    __asm__ __volatile__( "lock; xchgl %0,(%1)"
+                          : "=r" (ret) :"r" (dest), "0" (val) : "memory" );
+#else
+    do ret = *dest; while (!__sync_bool_compare_and_swap( dest, ret, val ));
+#endif
+    return ret;
+}
+
+static FORCEINLINE LONG WINAPI InterlockedExchangeAdd( LONG volatile *dest, LONG incr )
+{
+#ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
+    return __sync_fetch_and_add( dest, incr );
+#else
+    LONG ret;
+    __asm__ __volatile__( "lock; xaddl %0,(%1)"
+                          : "=r" (ret) : "r" (dest), "0" (incr) : "memory" );
+    return ret;
+#endif
+}
+
+static FORCEINLINE LONG WINAPI InterlockedIncrement( LONG volatile *dest )
+{
+#ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
+    return __sync_add_and_fetch( dest, 1 );
+#else
+    return InterlockedExchangeAdd( dest, 1 ) + 1;
+#endif
+}
+
+static FORCEINLINE LONG WINAPI InterlockedDecrement( LONG volatile *dest )
+{
+#ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
+    return __sync_add_and_fetch( dest, -1 );
+#else
+    return InterlockedExchangeAdd( dest, -1 ) - 1;
+#endif
+}
+
+#ifdef _WIN64
+
 static FORCEINLINE PVOID WINAPI InterlockedCompareExchangePointer( PVOID volatile *dest, PVOID xchg, PVOID compare )
 {
     return __sync_val_compare_and_swap( dest, compare, xchg );
@@ -3030,17 +3046,6 @@
     return __sync_val_compare_and_swap( dest, compare, xchg );
 }
 
-static FORCEINLINE LONG WINAPI InterlockedExchange( LONG volatile *dest, LONG val )
-{
-    LONG ret;
-#ifdef __x86_64__
-    __asm__ __volatile__( "lock; xchgl %0,(%1)" : "=r" (ret) :"r" (dest), "0" (val) : "memory" );
-#else
-    do ret = *dest; while (!__sync_bool_compare_and_swap( dest, ret, val ));
-#endif
-    return ret;
-}
-
 static FORCEINLINE PVOID WINAPI InterlockedExchangePointer( PVOID volatile *dest, PVOID val )
 {
     PVOID ret;
@@ -3052,22 +3057,30 @@
     return ret;
 }
 
-static FORCEINLINE LONG WINAPI InterlockedExchangeAdd( LONG volatile *dest, LONG incr )
+#else
+
+static FORCEINLINE PVOID WINAPI InterlockedCompareExchangePointer( PVOID volatile *dest, PVOID xchg, PVOID compare )
 {
-    return __sync_fetch_and_add( dest, incr );
+    return (PVOID)InterlockedCompareExchange( (LONG volatile*)dest, (LONG)xchg, (LONG)compare );
 }
 
-static FORCEINLINE LONG WINAPI InterlockedIncrement( LONG volatile *dest )
+static FORCEINLINE PVOID WINAPI InterlockedExchangePointer( PVOID volatile *dest, PVOID val )
 {
-    return __sync_add_and_fetch( dest, 1 );
+    return (PVOID)InterlockedExchange( (LONG volatile*)dest, (LONG)val );
 }
 
-static FORCEINLINE LONG WINAPI InterlockedDecrement( LONG volatile *dest )
+#ifdef __GCC_HAVE_SYNC_COMPARE_AND_SWAP_8
+static FORCEINLINE LONGLONG WINAPI InterlockedCompareExchange64( LONGLONG volatile *dest, LONGLONG xchg, LONGLONG compare )
 {
-    return __sync_add_and_fetch( dest, -1 );
+    return __sync_val_compare_and_swap( dest, compare, xchg );
 }
+#else
+WINBASEAPI LONGLONG WINAPI InterlockedCompareExchange64(LONGLONG volatile*,LONGLONG,LONGLONG);
+#endif
 
-#endif  /* __i386__ */
+#endif
+
+#endif  /* __GNUC__ */
 
 #ifdef __WINESRC__
 
@@ -3136,6 +3149,7 @@
 /* WinMain(entry point) must be declared in winbase.h. */
 /* If this is not declared, we cannot compile many sources written with C++. */
 int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int);
+int WINAPI wWinMain(HINSTANCE,HINSTANCE,LPWSTR,int);
 
 #ifdef __WINESRC__
 /* shouldn't be here, but is nice for type checking */
diff --git a/mingw-w64-tools/widl/include/windef.h b/mingw-w64-tools/widl/include/windef.h
index 0074d5c..7ece7c8 100644
--- a/mingw-w64-tools/widl/include/windef.h
+++ b/mingw-w64-tools/widl/include/windef.h
@@ -50,7 +50,7 @@
 # endif
 #endif
 
-#ifndef __stdcall
+#if !defined(_MSC_VER) && !defined(__stdcall)
 # ifdef __i386__
 #  ifdef __GNUC__
 #   if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 2)) || defined(__APPLE__)
@@ -58,8 +58,6 @@
 #   else
 #    define __stdcall __attribute__((__stdcall__))
 #   endif
-#  elif defined(_MSC_VER)
-    /* Nothing needs to be done. __stdcall already exists */
 #  else
 #   error You need to define __stdcall for your compiler
 #  endif
@@ -78,7 +76,7 @@
 # endif  /* __i386__ */
 #endif /* __stdcall */
 
-#ifndef __cdecl
+#if !defined(_MSC_VER) && !defined(__cdecl)
 # if defined(__i386__) && defined(__GNUC__)
 #   if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 2)) || defined(__APPLE__)
 #   define __cdecl __attribute__((__cdecl__)) __attribute__((__force_align_arg_pointer__))
@@ -100,13 +98,11 @@
 # endif
 #endif /* __cdecl */
 
-#ifndef __fastcall
-# ifndef _MSC_VER
-#  define __fastcall __stdcall
-# endif
+#if !defined(_MSC_VER) && !defined(__fastcall)
+# define __fastcall __stdcall
 #endif
 
-#ifndef __thiscall
+#if (!defined(_MSC_VER) || !defined(__clang__)) && !defined(__thiscall)
 # define __thiscall __stdcall
 #endif
 
@@ -140,12 +136,7 @@
 #define __ONLY_IN_WINELIB(x)	x
 #endif
 
-#ifndef pascal
-#define pascal      __ONLY_IN_WINELIB(__stdcall)
-#endif
-#ifndef _pascal
-#define _pascal	    __ONLY_IN_WINELIB(__stdcall)
-#endif
+#ifndef _MSC_VER
 #ifndef _stdcall
 #define _stdcall    __ONLY_IN_WINELIB(__stdcall)
 #endif
@@ -155,16 +146,23 @@
 #ifndef __fastcall
 #define __fastcall  __ONLY_IN_WINELIB(__stdcall)
 #endif
-#ifndef __export
-#define __export    __ONLY_IN_WINELIB(__stdcall)
-#endif
 #ifndef cdecl
 #define cdecl       __ONLY_IN_WINELIB(__cdecl)
 #endif
 #ifndef _cdecl
 #define _cdecl      __ONLY_IN_WINELIB(__cdecl)
 #endif
+#endif /* _MSC_VER */
 
+#ifndef pascal
+#define pascal      __ONLY_IN_WINELIB(__stdcall)
+#endif
+#ifndef _pascal
+#define _pascal     __ONLY_IN_WINELIB(__stdcall)
+#endif
+#ifndef __export
+#define __export    __ONLY_IN_WINELIB(__stdcall)
+#endif
 #ifndef near
 #define near        __ONLY_IN_WINELIB(/* nothing */)
 #endif
@@ -239,25 +237,32 @@
 
 /* Standard data types */
 
+#ifndef BASETYPES
+#define BASETYPES
+typedef unsigned char UCHAR, *PUCHAR;
+typedef unsigned short USHORT, *PUSHORT;
+#ifdef WINE_USE_LONG
+typedef unsigned long ULONG, *PULONG;
+#else
+typedef unsigned int ULONG, *PULONG;
+#endif
+#endif
+
 typedef void                                   *LPVOID;
 typedef const void                             *LPCVOID;
 typedef int             BOOL,       *PBOOL,    *LPBOOL;
 typedef unsigned char   BYTE,       *PBYTE,    *LPBYTE;
-typedef unsigned char   UCHAR,      *PUCHAR;
 typedef unsigned short  WORD,       *PWORD,    *LPWORD;
-typedef unsigned short  USHORT,     *PUSHORT;
 typedef int             INT,        *PINT,     *LPINT;
 typedef unsigned int    UINT,       *PUINT;
 typedef float           FLOAT,      *PFLOAT;
 typedef char                        *PSZ;
-#ifdef _MSC_VER
+#ifdef WINE_USE_LONG
 typedef long                                   *LPLONG;
 typedef unsigned long   DWORD,      *PDWORD,   *LPDWORD;
-typedef unsigned long   ULONG,      *PULONG;
 #else
 typedef int                                    *LPLONG;
 typedef unsigned int    DWORD,      *PDWORD,   *LPDWORD;
-typedef unsigned int    ULONG,      *PULONG;
 #endif
 
 /* Macros to map Winelib names to the correct implementation name */
diff --git a/mingw-w64-tools/widl/include/winerror.h b/mingw-w64-tools/widl/include/winerror.h
index 73027c4..4ebb48c 100644
--- a/mingw-w64-tools/widl/include/winerror.h
+++ b/mingw-w64-tools/widl/include/winerror.h
@@ -348,15 +348,101 @@
 #define ERROR_FT_DI_SCAN_REQUIRED                          339
 #define ERROR_INVALID_KERNEL_INFO_VERSION                  340
 #define ERROR_INVALID_PEP_INFO_VERSION                     341
+#define ERROR_OBJECT_NOT_EXTERNALLY_BACKED                 342
+#define ERROR_EXTERNAL_BACKING_PROVIDER_UNKNOWN            343
+#define ERROR_COMPRESSION_NOT_BENEFICIAL                   344
+#define ERROR_STORAGE_TOPOLOGY_ID_MISMATCH                 345
+#define ERROR_BLOCKED_BY_PARENTAL_CONTROLS                 346
+#define ERROR_BLOCK_TOO_MANY_REFERENCES                    347
+#define ERROR_MARKED_TO_DISALLOW_WRITES                    348
+#define ERROR_ENCLAVE_FAILURE                              349
 #define ERROR_FAIL_NOACTION_REBOOT                         350
 #define ERROR_FAIL_SHUTDOWN                                351
 #define ERROR_FAIL_RESTART                                 352
 #define ERROR_MAX_SESSIONS_REACHED                         353
+#define ERROR_NETWORK_ACCESS_DENIED_EDP                    354
+#define ERROR_DEVICE_HINT_NAME_BUFFER_TOO_SMALL            355
+#define ERROR_EDP_POLICY_DENIES_OPERATION                  356
+#define ERROR_EDP_DPL_POLICY_CANT_BE_SATISFIED             357
+#define ERROR_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT        358
+#define ERROR_DEVICE_IN_MAINTENANCE                        359
+#define ERROR_NOT_SUPPORTED_ON_DAX                         360
+#define ERROR_DAX_MAPPING_EXISTS                           361
+#define ERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING              362
+#define ERROR_CLOUD_FILE_METADATA_CORRUPT                  363
+#define ERROR_CLOUD_FILE_METADATA_TOO_LARGE                364
+#define ERROR_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE           365
+#define ERROR_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH   366
+#define ERROR_CHILD_PROCESS_BLOCKED                        367
+#define ERROR_STORAGE_LOST_DATA_PERSISTENCE                368
+#define ERROR_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE       369
+#define ERROR_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT  370
+#define ERROR_FILE_SYSTEM_VIRTUALIZATION_BUSY              371
+#define ERROR_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN  372
+#define ERROR_GDI_HANDLE_LEAK                              373
+#define ERROR_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS           374
+#define ERROR_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED    375
+#define ERROR_NOT_A_CLOUD_FILE                             376
+#define ERROR_CLOUD_FILE_NOT_IN_SYNC                       377
+#define ERROR_CLOUD_FILE_ALREADY_CONNECTED                 378
+#define ERROR_CLOUD_FILE_NOT_SUPPORTED                     379
+#define ERROR_CLOUD_FILE_INVALID_REQUEST                   380
+#define ERROR_CLOUD_FILE_READ_ONLY_VOLUME                  381
+#define ERROR_CLOUD_FILE_CONNECTED_PROVIDER_ONLY           382
+#define ERROR_CLOUD_FILE_VALIDATION_FAILED                 383
+#define ERROR_SMB1_NOT_AVAILABLE                           384
+#define ERROR_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION 385
+#define ERROR_CLOUD_FILE_AUTHENTICATION_FAILED             386
+#define ERROR_CLOUD_FILE_INSUFFICIENT_RESOURCES            387
+#define ERROR_CLOUD_FILE_NETWORK_UNAVAILABLE               388
+#define ERROR_CLOUD_FILE_UNSUCCESSFUL                      389
+#define ERROR_CLOUD_FILE_NOT_UNDER_SYNC_ROOT               390
+#define ERROR_CLOUD_FILE_IN_USE                            391
+#define ERROR_CLOUD_FILE_PINNED                            392
+#define ERROR_CLOUD_FILE_REQUEST_ABORTED                   393
+#define ERROR_CLOUD_FILE_PROPERTY_CORRUPT                  394
+#define ERROR_CLOUD_FILE_ACCESS_DENIED                     395
+#define ERROR_CLOUD_FILE_INCOMPATIBLE_HARDLINKS            396
+#define ERROR_CLOUD_FILE_PROPERTY_LOCK_CONFLICT            397
+#define ERROR_CLOUD_FILE_REQUEST_CANCELED                  398
+#define ERROR_EXTERNAL_SYSKEY_NOT_SUPPORTED                399
+#define ERROR_THREAD_MODE_ALREADY_BACKGROUND               400
+#define ERROR_THREAD_MODE_NOT_BACKGROUND                   401
+#define ERROR_PROCESS_MODE_ALREADY_BACKGROUND              402
+#define ERROR_PROCESS_MODE_NOT_BACKGROUND                  403
+#define ERROR_PNP_QUERY_REMOVE_DEVICE_TIMEOUT              480
+#define ERROR_PNP_QUERY_REMOVE_RELATED_DEVICE_TIMEOUT      481
+#define ERROR_PNP_QUERY_REMOVE_UNRELATED_DEVICE_TIMEOUT    482
+#define ERROR_DEVICE_HARDWARE_ERROR                        483
 #define ERROR_INVALID_ADDRESS                              487
 #define ERROR_USER_PROFILE_LOAD                            500
 #define ERROR_ARITHMETIC_OVERFLOW                          534
 #define ERROR_PIPE_CONNECTED                               535
 #define ERROR_PIPE_LISTENING                               536
+#define ERROR_VERIFIER_STOP                                537
+#define ERROR_ABIOS_ERROR                                  538
+#define ERROR_WX86_WARNING                                 539
+#define ERROR_WX86_ERROR                                   540
+#define ERROR_TIMER_NOT_CANCELED                           541
+#define ERROR_UNWIND                                       542
+#define ERROR_BAD_STACK                                    543
+#define ERROR_INVALID_UNWIND_TARGET                        544
+#define ERROR_INVALID_PORT_ATTRIBUTES                      545
+#define ERROR_PORT_MESSAGE_TOO_LONG                        546
+#define ERROR_INVALID_QUOTA_LOWER                          547
+#define ERROR_DEVICE_ALREADY_ATTACHED                      548
+#define ERROR_INSTRUCTION_MISALIGNMENT                     549
+#define ERROR_PROFILING_NOT_STARTED                        550
+#define ERROR_PROFILING_NOT_STOPPED                        551
+#define ERROR_COULD_NOT_INTERPRET                          552
+#define ERROR_PROFILING_AT_LIMIT                           553
+#define ERROR_CANT_WAIT                                    554
+#define ERROR_CANT_TERMINATE_SELF                          555
+#define ERROR_UNEXPECTED_MM_CREATE_ERR                     556
+#define ERROR_UNEXPECTED_MM_MAP_ERROR                      557
+#define ERROR_UNEXPECTED_MM_EXTEND_ERR                     558
+#define ERROR_BAD_FUNCTION_TABLE                           559
+#define ERROR_NO_GUID_TRANSLATION                          560
 #define ERROR_INVALID_LDT_SIZE                             561
 #define ERROR_INVALID_LDT_OFFSET                           563
 #define ERROR_INVALID_LDT_DESCRIPTOR                       564
@@ -451,6 +537,7 @@
 #define ERROR_DRIVER_FAILED_PRIOR_UNLOAD                   654
 #define ERROR_VOLSNAP_PREPARE_HIBERNATE                    655
 #define ERROR_HIBERNATION_FAILURE                          656
+#define ERROR_PWD_TOO_LONG                                 657
 #define ERROR_FILE_SYSTEM_LIMITATION                       665
 #define ERROR_ASSERTION_FAILURE                            668
 #define ERROR_ACPI_ERROR                                   669
@@ -575,8 +662,30 @@
 #define ERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED   788
 #define ERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR   789
 #define ERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR       790
+#define ERROR_BAD_MCFG_TABLE                               791
+#define ERROR_DISK_REPAIR_REDIRECTED                       792
+#define ERROR_DISK_REPAIR_UNSUCCESSFUL                     793
+#define ERROR_CORRUPT_LOG_OVERFULL                         794
+#define ERROR_CORRUPT_LOG_CORRUPTED                        795
+#define ERROR_CORRUPT_LOG_UNAVAILABLE                      796
+#define ERROR_CORRUPT_LOG_DELETED_FULL                     797
+#define ERROR_CORRUPT_LOG_CLEARED                          798
+#define ERROR_ORPHAN_NAME_EXHAUSTED                        799
+#define ERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE                800
+#define ERROR_CANNOT_GRANT_REQUESTED_OPLOCK                801
+#define ERROR_CANNOT_BREAK_OPLOCK                          802
+#define ERROR_OPLOCK_HANDLE_CLOSED                         803
 #define ERROR_NO_ACE_CONDITION                             804
 #define ERROR_INVALID_ACE_CONDITION                        805
+#define ERROR_FILE_HANDLE_REVOKED                          806
+#define ERROR_IMAGE_AT_DIFFERENT_BASE                      807
+#define ERROR_ENCRYPTED_IO_NOT_POSSIBLE                    808
+#define ERROR_FILE_METADATA_OPTIMIZATION_IN_PROGRESS       809
+#define ERROR_QUOTA_ACTIVITY                               810
+#define ERROR_HANDLE_REVOKED                               811
+#define ERROR_CALLBACK_INVOKE_INLINE                       812
+#define ERROR_CPU_SET_INVALID                              813
+#define ERROR_ENCLAVE_NOT_TERMINATED                       814
 #define ERROR_EA_ACCESS_DENIED                             994
 #define ERROR_OPERATION_ABORTED                            995
 #define ERROR_IO_INCOMPLETE                                996
@@ -705,6 +814,8 @@
 #define ERROR_JOURNAL_NOT_ACTIVE                           1179
 #define ERROR_POTENTIAL_FILE_FOUND                         1180
 #define ERROR_JOURNAL_ENTRY_DELETED                        1181
+#define ERROR_VRF_CFG_ENABLED                              1183
+#define ERROR_PARTITION_TERMINATING                        1184
 #define ERROR_BAD_DEVICE                                   1200
 #define ERROR_CONNECTION_UNAVAIL                           1201
 #define ERROR_DEVICE_ALREADY_REMEMBERED                    1202
@@ -764,6 +875,7 @@
 #define ERROR_HOST_DOWN                                    1256
 #define ERROR_NON_ACCOUNT_SID                              1257
 #define ERROR_NON_DOMAIN_SID                               1258
+#define ERROR_APPHELP_BLOCK                                1259
 #define ERROR_ACCESS_DISABLED_BY_POLICY                    1260
 #define ERROR_REG_NAT_CONSUMPTION                          1261
 #define ERROR_PKINIT_FAILURE                               1263
@@ -774,6 +886,29 @@
 #define ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED             1274
 #define ERROR_DRIVER_BLOCKED                               1275
 #define ERROR_INVALID_IMPORT_OF_NON_DLL                    1276
+#define ERROR_ACCESS_DISABLED_WEBBLADE                     1277
+#define ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER              1278
+#define ERROR_RECOVERY_FAILURE                             1279
+#define ERROR_ALREADY_FIBER                                1280
+#define ERROR_ALREADY_THREAD                               1281
+#define ERROR_STACK_BUFFER_OVERRUN                         1282
+#define ERROR_PARAMETER_QUOTA_EXCEEDED                     1283
+#define ERROR_DEBUGGER_INACTIVE                            1284
+#define ERROR_DELAY_LOAD_FAILED                            1285
+#define ERROR_VDM_DISALLOWED                               1286
+#define ERROR_UNIDENTIFIED_ERROR                           1287
+#define ERROR_INVALID_CRUNTIME_PARAMETER                   1288
+#define ERROR_BEYOND_VDL                                   1289
+#define ERROR_INCOMPATIBLE_SERVICE_SID_TYPE                1290
+#define ERROR_DRIVER_PROCESS_TERMINATED                    1291
+#define ERROR_IMPLEMENTATION_LIMIT                         1292
+#define ERROR_PROCESS_IS_PROTECTED                         1293
+#define ERROR_SERVICE_NOTIFY_CLIENT_LAGGING                1294
+#define ERROR_DISK_QUOTA_EXCEEDED                          1295
+#define ERROR_CONTENT_BLOCKED                              1296
+#define ERROR_INCOMPATIBLE_SERVICE_PRIVILEGE               1297
+#define ERROR_APP_HANG                                     1298
+#define ERROR_INVALID_LABEL                                1299
 #define ERROR_NOT_ALL_ASSIGNED                             1300
 #define ERROR_SOME_NOT_MAPPED                              1301
 #define ERROR_NO_QUOTAS_FOR_ACCOUNT                        1302
@@ -944,10 +1079,13 @@
 #define ERROR_WRONG_COMPARTMENT                            1468
 #define ERROR_AUTHIP_FAILURE                               1469
 #define ERROR_NO_NVRAM_RESOURCES                           1470
+#define ERROR_NOT_GUI_PROCESS                              1471
 #define ERROR_EVENTLOG_FILE_CORRUPT                        1500
 #define ERROR_EVENTLOG_CANT_START                          1501
 #define ERROR_LOG_FILE_FULL                                1502
 #define ERROR_EVENTLOG_FILE_CHANGED                        1503
+#define ERROR_CONTAINER_ASSIGNED                           1504
+#define ERROR_JOB_NO_CONTAINER                             1505
 #define ERROR_INVALID_TASK_NAME                            1550
 #define ERROR_INVALID_TASK_INDEX                           1551
 #define ERROR_THREAD_ALREADY_IN_TASK                       1552
@@ -1003,6 +1141,13 @@
 #define ERROR_INVALID_PATCH_XML                            1650
 #define ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT             1651
 #define ERROR_INSTALL_SERVICE_SAFEBOOT                     1652
+#define ERROR_FAIL_FAST_EXCEPTION                          1653
+#define ERROR_INSTALL_REJECTED                             1654
+#define ERROR_DYNAMIC_CODE_BLOCKED                         1655
+#define ERROR_NOT_SAME_OBJECT                              1656
+#define ERROR_STRICT_CFG_VIOLATION                         1657
+#define ERROR_SET_CONTEXT_DENIED                           1660
+#define ERROR_CROSS_PARTITION_VIOLATION                    1661
 #define RPC_S_INVALID_STRING_BINDING                       1700
 #define RPC_S_WRONG_KIND_OF_BINDING                        1701
 #define RPC_S_INVALID_BINDING                              1702
@@ -1032,6 +1177,7 @@
 #define RPC_S_CALL_FAILED                                  1726
 #define RPC_S_CALL_FAILED_DNE                              1727
 #define RPC_S_PROTOCOL_ERROR                               1728
+#define RPC_S_PROXY_ACCESS_DENIED                          1729
 #define RPC_S_UNSUPPORTED_TRANS_SYN                        1730
 #define RPC_S_UNSUPPORTED_TYPE                             1732
 #define RPC_S_INVALID_TAG                                  1733
@@ -1132,6 +1278,10 @@
 #define RPC_X_INVALID_PIPE_OBJECT                          1830
 #define RPC_X_WRONG_PIPE_ORDER                             1831
 #define RPC_X_WRONG_PIPE_VERSION                           1832
+#define RPC_S_COOKIE_AUTH_FAILED                           1833
+#define RPC_S_DO_NOT_DISTURB                               1834
+#define RPC_S_SYSTEM_HANDLE_COUNT_EXCEEDED                 1835
+#define RPC_S_SYSTEM_HANDLE_TYPE_MISMATCH                  1836
 #define RPC_S_GROUP_MEMBER_NOT_FOUND                       1898
 #define EPT_S_CANT_CREATE                                  1899
 #define RPC_S_INVALID_OBJECT                               1900
@@ -1171,6 +1321,9 @@
 #define ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED             1934
 #define ERROR_AUTHENTICATION_FIREWALL_FAILED               1935
 #define ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED             1936
+#define ERROR_NTLM_BLOCKED                                 1937
+#define ERROR_PASSWORD_CHANGE_REQUIRED                     1938
+#define ERROR_LOST_MODE_LOGON_RESTRICTION                  1939
 #define ERROR_INVALID_PIXEL_FORMAT                         2000
 #define ERROR_BAD_DRIVER                                   2001
 #define ERROR_INVALID_WINDOW_STYLE                         2002
@@ -1284,6 +1437,34 @@
 #define ERROR_INVALID_REPARSE_DATA                         4392
 #define ERROR_REPARSE_TAG_INVALID                          4393
 #define ERROR_REPARSE_TAG_MISMATCH                         4394
+#define ERROR_REPARSE_POINT_ENCOUNTERED                    4395
+#define ERROR_APP_DATA_NOT_FOUND                           4400
+#define ERROR_APP_DATA_EXPIRED                             4401
+#define ERROR_APP_DATA_CORRUPT                             4402
+#define ERROR_APP_DATA_LIMIT_EXCEEDED                      4403
+#define ERROR_APP_DATA_REBOOT_REQUIRED                     4404
+#define ERROR_SECUREBOOT_ROLLBACK_DETECTED                 4420
+#define ERROR_SECUREBOOT_POLICY_VIOLATION                  4421
+#define ERROR_SECUREBOOT_INVALID_POLICY                    4422
+#define ERROR_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND        4423
+#define ERROR_SECUREBOOT_POLICY_NOT_SIGNED                 4424
+#define ERROR_SECUREBOOT_NOT_ENABLED                       4425
+#define ERROR_SECUREBOOT_FILE_REPLACED                     4426
+#define ERROR_SECUREBOOT_POLICY_NOT_AUTHORIZED             4427
+#define ERROR_SECUREBOOT_POLICY_UNKNOWN                    4428
+#define ERROR_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION 4429
+#define ERROR_SECUREBOOT_PLATFORM_ID_MISMATCH              4430
+#define ERROR_SECUREBOOT_POLICY_ROLLBACK_DETECTED          4431
+#define ERROR_SECUREBOOT_POLICY_UPGRADE_MISMATCH           4432
+#define ERROR_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING      4433
+#define ERROR_SECUREBOOT_NOT_BASE_POLICY                   4434
+#define ERROR_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY           4435
+#define ERROR_OFFLOAD_READ_FLT_NOT_SUPPORTED               4440
+#define ERROR_OFFLOAD_WRITE_FLT_NOT_SUPPORTED              4441
+#define ERROR_OFFLOAD_READ_FILE_NOT_SUPPORTED              4442
+#define ERROR_OFFLOAD_WRITE_FILE_NOT_SUPPORTED             4443
+#define ERROR_ALREADY_HAS_STREAM_ID                        4444
+#define ERROR_SMR_GARBAGE_COLLECTION_REQUIRED              4445
 #define ERROR_VOLUME_NOT_SIS_ENABLED                       4500
 #define ERROR_DEPENDENT_RESOURCE_EXISTS                    5001
 #define ERROR_DEPENDENCY_NOT_FOUND                         5002
@@ -1373,6 +1554,116 @@
 #define ERROR_DATABASE_BACKUP_CORRUPT                      5087
 #define ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT            5088
 #define ERROR_RESOURCE_PROPERTY_UNCHANGEABLE               5089
+#define ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE             5890
+#define ERROR_CLUSTER_QUORUMLOG_NOT_FOUND                  5891
+#define ERROR_CLUSTER_MEMBERSHIP_HALT                      5892
+#define ERROR_CLUSTER_INSTANCE_ID_MISMATCH                 5893
+#define ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP             5894
+#define ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH          5895
+#define ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP                5896
+#define ERROR_CLUSTER_PARAMETER_MISMATCH                   5897
+#define ERROR_NODE_CANNOT_BE_CLUSTERED                     5898
+#define ERROR_CLUSTER_WRONG_OS_VERSION                     5899
+#define ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME         5900
+#define ERROR_CLUSCFG_ALREADY_COMMITTED                    5901
+#define ERROR_CLUSCFG_ROLLBACK_FAILED                      5902
+#define ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT    5903
+#define ERROR_CLUSTER_OLD_VERSION                          5904
+#define ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME        5905
+#define ERROR_CLUSTER_NO_NET_ADAPTERS                      5906
+#define ERROR_CLUSTER_POISONED                             5907
+#define ERROR_CLUSTER_GROUP_MOVING                         5908
+#define ERROR_CLUSTER_RESOURCE_TYPE_BUSY                   5909
+#define ERROR_RESOURCE_CALL_TIMED_OUT                      5910
+#define ERROR_INVALID_CLUSTER_IPV6_ADDRESS                 5911
+#define ERROR_CLUSTER_INTERNAL_INVALID_FUNCTION            5912
+#define ERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS              5913
+#define ERROR_CLUSTER_PARTIAL_SEND                         5914
+#define ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION            5915
+#define ERROR_CLUSTER_INVALID_STRING_TERMINATION           5916
+#define ERROR_CLUSTER_INVALID_STRING_FORMAT                5917
+#define ERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS     5918
+#define ERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS 5919
+#define ERROR_CLUSTER_NULL_DATA                            5920
+#define ERROR_CLUSTER_PARTIAL_READ                         5921
+#define ERROR_CLUSTER_PARTIAL_WRITE                        5922
+#define ERROR_CLUSTER_CANT_DESERIALIZE_DATA                5923
+#define ERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT         5924
+#define ERROR_CLUSTER_NO_QUORUM                            5925
+#define ERROR_CLUSTER_INVALID_IPV6_NETWORK                 5926
+#define ERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK          5927
+#define ERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP             5928
+#define ERROR_DEPENDENCY_TREE_TOO_COMPLEX                  5929
+#define ERROR_EXCEPTION_IN_RESOURCE_CALL                   5930
+#define ERROR_CLUSTER_RHS_FAILED_INITIALIZATION            5931
+#define ERROR_CLUSTER_NOT_INSTALLED                        5932
+#define ERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE 5933
+#define ERROR_CLUSTER_MAX_NODES_IN_CLUSTER                 5934
+#define ERROR_CLUSTER_TOO_MANY_NODES                       5935
+#define ERROR_CLUSTER_OBJECT_ALREADY_USED                  5936
+#define ERROR_NONCORE_GROUPS_FOUND                         5937
+#define ERROR_FILE_SHARE_RESOURCE_CONFLICT                 5938
+#define ERROR_CLUSTER_EVICT_INVALID_REQUEST                5939
+#define ERROR_CLUSTER_SINGLETON_RESOURCE                   5940
+#define ERROR_CLUSTER_GROUP_SINGLETON_RESOURCE             5941
+#define ERROR_CLUSTER_RESOURCE_PROVIDER_FAILED             5942
+#define ERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR         5943
+#define ERROR_CLUSTER_GROUP_BUSY                           5944
+#define ERROR_CLUSTER_NOT_SHARED_VOLUME                    5945
+#define ERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR          5946
+#define ERROR_CLUSTER_SHARED_VOLUMES_IN_USE                5947
+#define ERROR_CLUSTER_USE_SHARED_VOLUMES_API               5948
+#define ERROR_CLUSTER_BACKUP_IN_PROGRESS                   5949
+#define ERROR_NON_CSV_PATH                                 5950
+#define ERROR_CSV_VOLUME_NOT_LOCAL                         5951
+#define ERROR_CLUSTER_WATCHDOG_TERMINATING                 5952
+#define ERROR_CLUSTER_RESOURCE_VETOED_MOVE_INCOMPATIBLE_NODES 5953
+#define ERROR_CLUSTER_INVALID_NODE_WEIGHT                  5954
+#define ERROR_CLUSTER_RESOURCE_VETOED_CALL                 5955
+#define ERROR_RESMON_SYSTEM_RESOURCES_LACKING              5956
+#define ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_DESTINATION 5957
+#define ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_SOURCE 5958
+#define ERROR_CLUSTER_GROUP_QUEUED                         5959
+#define ERROR_CLUSTER_RESOURCE_LOCKED_STATUS               5960
+#define ERROR_CLUSTER_SHARED_VOLUME_FAILOVER_NOT_ALLOWED   5961
+#define ERROR_CLUSTER_NODE_DRAIN_IN_PROGRESS               5962
+#define ERROR_CLUSTER_DISK_NOT_CONNECTED                   5963
+#define ERROR_DISK_NOT_CSV_CAPABLE                         5964
+#define ERROR_RESOURCE_NOT_IN_AVAILABLE_STORAGE            5965
+#define ERROR_CLUSTER_SHARED_VOLUME_REDIRECTED             5966
+#define ERROR_CLUSTER_SHARED_VOLUME_NOT_REDIRECTED         5967
+#define ERROR_CLUSTER_CANNOT_RETURN_PROPERTIES             5968
+#define ERROR_CLUSTER_RESOURCE_CONTAINS_UNSUPPORTED_DIFF_AREA_FOR_SHARED_VOLUMES 5969
+#define ERROR_CLUSTER_RESOURCE_IS_IN_MAINTENANCE_MODE      5970
+#define ERROR_CLUSTER_AFFINITY_CONFLICT                    5971
+#define ERROR_CLUSTER_RESOURCE_IS_REPLICA_VIRTUAL_MACHINE  5972
+#define ERROR_CLUSTER_UPGRADE_INCOMPATIBLE_VERSIONS        5973
+#define ERROR_CLUSTER_UPGRADE_FIX_QUORUM_NOT_SUPPORTED     5974
+#define ERROR_CLUSTER_UPGRADE_RESTART_REQUIRED             5975
+#define ERROR_CLUSTER_UPGRADE_IN_PROGRESS                  5976
+#define ERROR_CLUSTER_UPGRADE_INCOMPLETE                   5977
+#define ERROR_CLUSTER_NODE_IN_GRACE_PERIOD                 5978
+#define ERROR_CLUSTER_CSV_IO_PAUSE_TIMEOUT                 5979
+#define ERROR_NODE_NOT_ACTIVE_CLUSTER_MEMBER               5980
+#define ERROR_CLUSTER_RESOURCE_NOT_MONITORED               5981
+#define ERROR_CLUSTER_RESOURCE_DOES_NOT_SUPPORT_UNMONITORED 5982
+#define ERROR_CLUSTER_RESOURCE_IS_REPLICATED               5983
+#define ERROR_CLUSTER_NODE_ISOLATED                        5984
+#define ERROR_CLUSTER_NODE_QUARANTINED                     5985
+#define ERROR_CLUSTER_DATABASE_UPDATE_CONDITION_FAILED     5986
+#define ERROR_CLUSTER_SPACE_DEGRADED                       5987
+#define ERROR_CLUSTER_TOKEN_DELEGATION_NOT_SUPPORTED       5988
+#define ERROR_CLUSTER_CSV_INVALID_HANDLE                   5989
+#define ERROR_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR    5990
+#define ERROR_GROUPSET_NOT_AVAILABLE                       5991
+#define ERROR_GROUPSET_NOT_FOUND                           5992
+#define ERROR_GROUPSET_CANT_PROVIDE                        5993
+#define ERROR_CLUSTER_FAULT_DOMAIN_PARENT_NOT_FOUND        5994
+#define ERROR_CLUSTER_FAULT_DOMAIN_INVALID_HIERARCHY       5995
+#define ERROR_CLUSTER_FAULT_DOMAIN_FAILED_S2D_VALIDATION   5996
+#define ERROR_CLUSTER_FAULT_DOMAIN_S2D_CONNECTIVITY_LOSS   5997
+#define ERROR_CLUSTER_INVALID_INFRASTRUCTURE_FILESERVER_NAME 5998
+#define ERROR_CLUSTERSET_MANAGEMENT_CLUSTER_UNREACHABLE    5999
 #define ERROR_ENCRYPTION_FAILED                            6000
 #define ERROR_DECRYPTION_FAILED                            6001
 #define ERROR_FILE_ENCRYPTED                               6002
@@ -1386,8 +1677,71 @@
 #define ERROR_DIR_EFS_DISALLOWED                           6010
 #define ERROR_EFS_SERVER_NOT_TRUSTED                       6011
 #define ERROR_EFS_ALG_BLOB_TOO_BIG                         6013
+#define ERROR_VOLUME_NOT_SUPPORT_EFS                       6014
+#define ERROR_EFS_DISABLED                                 6015
+#define ERROR_EFS_VERSION_NOT_SUPPORT                      6016
+#define ERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE        6017
+#define ERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER             6018
+#define ERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE        6019
+#define ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE             6020
+#define ERROR_CS_ENCRYPTION_FILE_NOT_CSE                   6021
+#define ERROR_ENCRYPTION_POLICY_DENIES_OPERATION           6022
 #define ERROR_NO_BROWSER_SERVERS_FOUND                     6118
 #define SCHED_E_SERVICE_NOT_LOCALSYSTEM                    6200
+#define ERROR_TRANSACTIONAL_CONFLICT                       6800
+#define ERROR_RM_NOT_ACTIVE                                6801
+#define ERROR_RM_METADATA_CORRUPT                          6802
+#define ERROR_DIRECTORY_NOT_RM                             6803
+#define ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE              6805
+#define ERROR_LOG_RESIZE_INVALID_SIZE                      6806
+#define ERROR_OBJECT_NO_LONGER_EXISTS                      6807
+#define ERROR_STREAM_MINIVERSION_NOT_FOUND                 6808
+#define ERROR_STREAM_MINIVERSION_NOT_VALID                 6809
+#define ERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION 6810
+#define ERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT     6811
+#define ERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS         6812
+#define ERROR_REMOTE_FILE_VERSION_MISMATCH                 6814
+#define ERROR_HANDLE_NO_LONGER_VALID                       6815
+#define ERROR_NO_TXF_METADATA                              6816
+#define ERROR_LOG_CORRUPTION_DETECTED                      6817
+#define ERROR_CANT_RECOVER_WITH_HANDLE_OPEN                6818
+#define ERROR_RM_DISCONNECTED                              6819
+#define ERROR_ENLISTMENT_NOT_SUPERIOR                      6820
+#define ERROR_RECOVERY_NOT_NEEDED                          6821
+#define ERROR_RM_ALREADY_STARTED                           6822
+#define ERROR_FILE_IDENTITY_NOT_PERSISTENT                 6823
+#define ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY          6824
+#define ERROR_CANT_CROSS_RM_BOUNDARY                       6825
+#define ERROR_TXF_DIR_NOT_EMPTY                            6826
+#define ERROR_INDOUBT_TRANSACTIONS_EXIST                   6827
+#define ERROR_TM_VOLATILE                                  6828
+#define ERROR_ROLLBACK_TIMER_EXPIRED                       6829
+#define ERROR_TXF_ATTRIBUTE_CORRUPT                        6830
+#define ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION               6831
+#define ERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED               6832
+#define ERROR_LOG_GROWTH_FAILED                            6833
+#define ERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE        6834
+#define ERROR_TXF_METADATA_ALREADY_PRESENT                 6835
+#define ERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET          6836
+#define ERROR_TRANSACTION_REQUIRED_PROMOTION               6837
+#define ERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION           6838
+#define ERROR_TRANSACTIONS_NOT_FROZEN                      6839
+#define ERROR_TRANSACTION_FREEZE_IN_PROGRESS               6840
+#define ERROR_NOT_SNAPSHOT_VOLUME                          6841
+#define ERROR_NO_SAVEPOINT_WITH_OPEN_FILES                 6842
+#define ERROR_DATA_LOST_REPAIR                             6843
+#define ERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION            6844
+#define ERROR_TM_IDENTITY_MISMATCH                         6845
+#define ERROR_FLOATED_SECTION                              6846
+#define ERROR_CANNOT_ACCEPT_TRANSACTED_WORK                6847
+#define ERROR_CANNOT_ABORT_TRANSACTIONS                    6848
+#define ERROR_BAD_CLUSTERS                                 6849
+#define ERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION       6850
+#define ERROR_VOLUME_DIRTY                                 6851
+#define ERROR_NO_LINK_TRACKING_IN_TRANSACTION              6852
+#define ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION       6853
+#define ERROR_EXPIRED_HANDLE                               6854
+#define ERROR_TRANSACTION_NOT_ENLISTED                     6855
 #define ERROR_CTX_WINSTATION_NAME_INVALID                  7001
 #define ERROR_CTX_INVALID_PD                               7002
 #define ERROR_CTX_PD_NOT_FOUND                             7003
@@ -1427,6 +1781,18 @@
 #define ERROR_CTX_LICENSE_EXPIRED                          7056
 #define ERROR_CTX_SHADOW_NOT_RUNNING                       7057
 #define ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE              7058
+#define ERROR_ACTIVATION_COUNT_EXCEEDED                    7059
+#define ERROR_CTX_WINSTATIONS_DISABLED                     7060
+#define ERROR_CTX_ENCRYPTION_LEVEL_REQUIRED                7061
+#define ERROR_CTX_SESSION_IN_USE                           7062
+#define ERROR_CTX_NO_FORCE_LOGOFF                          7063
+#define ERROR_CTX_ACCOUNT_RESTRICTION                      7064
+#define ERROR_RDP_PROTOCOL_ERROR                           7065
+#define ERROR_CTX_CDM_CONNECT                              7066
+#define ERROR_CTX_CDM_DISCONNECT                           7067
+#define ERROR_CTX_SECURITY_LAYER_ERROR                     7068
+#define ERROR_TS_INCOMPATIBLE_SESSIONS                     7069
+#define ERROR_TS_VIDEO_SUBSYSTEM_ERROR                     7070
 #define FRS_ERR_INVALID_API_SEQUENCE                       8001
 #define FRS_ERR_STARTING_SERVICE                           8002
 #define FRS_ERR_STOPPING_SERVICE                           8003
@@ -1504,6 +1870,9 @@
 #define ERROR_DS_CONTROL_NOT_FOUND                         8258
 #define ERROR_DS_CLIENT_LOOP                               8259
 #define ERROR_DS_REFERRAL_LIMIT_EXCEEDED                   8260
+#define ERROR_DS_SORT_CONTROL_MISSING                      8261
+#define ERROR_DS_OFFSET_RANGE_ERROR                        8262
+#define ERROR_DS_RIDMGR_DISABLED                           8263
 #define ERROR_DS_ROOT_MUST_BE_NC                           8301
 #define ERROR_DS_ADD_REPLICA_INHIBITED                     8302
 #define ERROR_DS_ATT_NOT_DEF_IN_SCHEMA                     8303
@@ -1764,8 +2133,89 @@
 #define ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ             8560
 #define ERROR_DS_INIT_FAILURE_CONSOLE                      8561
 #define ERROR_DS_SAM_INIT_FAILURE_CONSOLE                  8562
+#define ERROR_DS_FOREST_VERSION_TOO_HIGH                   8563
+#define ERROR_DS_DOMAIN_VERSION_TOO_HIGH                   8564
+#define ERROR_DS_FOREST_VERSION_TOO_LOW                    8565
+#define ERROR_DS_DOMAIN_VERSION_TOO_LOW                    8566
+#define ERROR_DS_INCOMPATIBLE_VERSION                      8567
+#define ERROR_DS_LOW_DSA_VERSION                           8568
+#define ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN        8569
+#define ERROR_DS_NOT_SUPPORTED_SORT_ORDER                  8570
+#define ERROR_DS_NAME_NOT_UNIQUE                           8571
 #define ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4            8572
 #define ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER             8578
+#define ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE      8579
+#define ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC               8580
+#define ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG               8581
+#define ERROR_DS_MODIFYDN_WRONG_GRANDPARENT                8582
+#define ERROR_DS_NAME_ERROR_TRUST_REFERRAL                 8583
+#define ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER             8584
+#define ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD             8585
+#define ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2              8586
+#define ERROR_DS_THREAD_LIMIT_EXCEEDED                     8587
+#define ERROR_DS_NOT_CLOSEST                               8588
+#define ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF        8589
+#define ERROR_DS_SINGLE_USER_MODE_FAILED                   8590
+#define ERROR_DS_NTDSCRIPT_SYNTAX_ERROR                    8591
+#define ERROR_DS_NTDSCRIPT_PROCESS_ERROR                   8592
+#define ERROR_DS_DIFFERENT_REPL_EPOCHS                     8593
+#define ERROR_DS_DRS_EXTENSIONS_CHANGED                    8594
+#define ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR 8595
+#define ERROR_DS_NO_MSDS_INTID                             8596
+#define ERROR_DS_DUP_MSDS_INTID                            8597
+#define ERROR_DS_EXISTS_IN_RDNATTID                        8598
+#define ERROR_DS_AUTHORIZATION_FAILED                      8599
+#define ERROR_DS_INVALID_SCRIPT                            8600
+#define ERROR_DS_REMOTE_CROSSREF_OP_FAILED                 8601
+#define ERROR_DS_CROSS_REF_BUSY                            8602
+#define ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN        8603
+#define ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC             8604
+#define ERROR_DS_DUPLICATE_ID_FOUND                        8605
+#define ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT        8606
+#define ERROR_DS_GROUP_CONVERSION_ERROR                    8607
+#define ERROR_DS_CANT_MOVE_APP_BASIC_GROUP                 8608
+#define ERROR_DS_CANT_MOVE_APP_QUERY_GROUP                 8609
+#define ERROR_DS_ROLE_NOT_VERIFIED                         8610
+#define ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL           8611
+#define ERROR_DS_DOMAIN_RENAME_IN_PROGRESS                 8612
+#define ERROR_DS_EXISTING_AD_CHILD_NC                      8613
+#define ERROR_DS_REPL_LIFETIME_EXCEEDED                    8614
+#define ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER            8615
+#define ERROR_DS_LDAP_SEND_QUEUE_FULL                      8616
+#define ERROR_DS_DRA_OUT_SCHEDULE_WINDOW                   8617
+#define ERROR_DS_POLICY_NOT_KNOWN                          8618
+#define ERROR_NO_SITE_SETTINGS_OBJECT                      8619
+#define ERROR_NO_SECRETS                                   8620
+#define ERROR_NO_WRITABLE_DC_FOUND                         8621
+#define ERROR_DS_NO_SERVER_OBJECT                          8622
+#define ERROR_DS_NO_NTDSA_OBJECT                           8623
+#define ERROR_DS_NON_ASQ_SEARCH                            8624
+#define ERROR_DS_AUDIT_FAILURE                             8625
+#define ERROR_DS_INVALID_SEARCH_FLAG_SUBTREE               8626
+#define ERROR_DS_INVALID_SEARCH_FLAG_TUPLE                 8627
+#define ERROR_DS_HIERARCHY_TABLE_TOO_DEEP                  8628
+#define ERROR_DS_DRA_CORRUPT_UTD_VECTOR                    8629
+#define ERROR_DS_DRA_SECRETS_DENIED                        8630
+#define ERROR_DS_RESERVED_MAPI_ID                          8631
+#define ERROR_DS_MAPI_ID_NOT_AVAILABLE                     8632
+#define ERROR_DS_DRA_MISSING_KRBTGT_SECRET                 8633
+#define ERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST              8634
+#define ERROR_DS_FLAT_NAME_EXISTS_IN_FOREST                8635
+#define ERROR_INVALID_USER_PRINCIPAL_NAME                  8636
+#define ERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS        8637
+#define ERROR_DS_OID_NOT_FOUND                             8638
+#define ERROR_DS_DRA_RECYCLED_TARGET                       8639
+#define ERROR_DS_DISALLOWED_NC_REDIRECT                    8640
+#define ERROR_DS_HIGH_ADLDS_FFL                            8641
+#define ERROR_DS_HIGH_DSA_VERSION                          8642
+#define ERROR_DS_LOW_ADLDS_FFL                             8643
+#define ERROR_DOMAIN_SID_SAME_AS_LOCAL_WORKSTATION         8644
+#define ERROR_DS_UNDELETE_SAM_VALIDATION_FAILED            8645
+#define ERROR_INCORRECT_ACCOUNT_TYPE                       8646
+#define ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST            8647
+#define ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST            8648
+#define ERROR_DS_MISSING_FOREST_TRUST                      8649
+#define ERROR_DS_VALUE_KEY_NOT_UNIQUE                      8650
 #define DNS_ERROR_RCODE_FORMAT_ERROR                       9001
 #define DNS_ERROR_RCODE_SERVER_FAILURE                     9002
 #define DNS_ERROR_RCODE_NAME_ERROR                         9003
@@ -2074,10 +2524,31 @@
 #define ERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN              15624
 #define ERROR_RESILIENCY_FILE_CORRUPT                      15625
 #define ERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING         15626
+#define ERROR_PACKAGE_MOVE_FAILED                          15627
+#define ERROR_INSTALL_VOLUME_NOT_EMPTY                     15628
+#define ERROR_INSTALL_VOLUME_OFFLINE                       15629
+#define ERROR_INSTALL_VOLUME_CORRUPT                       15630
+#define ERROR_NEEDS_REGISTRATION                           15631
+#define ERROR_INSTALL_WRONG_PROCESSOR_ARCHITECTURE         15632
+#define ERROR_DEV_SIDELOAD_LIMIT_EXCEEDED                  15633
+#define ERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE 15634
+#define ERROR_PACKAGE_NOT_SUPPORTED_ON_FILESYSTEM          15635
+#define ERROR_PACKAGE_MOVE_BLOCKED_BY_STREAMING            15636
+#define ERROR_INSTALL_OPTIONAL_PACKAGE_APPLICATIONID_NOT_UNIQUE 15637
+#define ERROR_PACKAGE_STAGING_ONHOLD                       15638
+#define ERROR_INSTALL_INVALID_RELATED_SET_UPDATE           15639
+#define ERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_FULLTRUST_CAPABILITY 15640
+#define ERROR_DEPLOYMENT_BLOCKED_BY_USER_LOG_OFF           15641
+#define ERROR_PROVISION_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_PROVISIONED 15642
+#define ERROR_PACKAGES_REPUTATION_CHECK_FAILED             15643
+#define ERROR_PACKAGES_REPUTATION_CHECK_TIMEDOUT           15644
 #define APPMODEL_ERROR_NO_PACKAGE                          15700
 #define APPMODEL_ERROR_PACKAGE_RUNTIME_CORRUPT             15701
 #define APPMODEL_ERROR_PACKAGE_IDENTITY_CORRUPT            15702
 #define APPMODEL_ERROR_NO_APPLICATION                      15703
+#define APPMODEL_ERROR_DYNAMIC_PROPERTY_READ_FAILED        15704
+#define APPMODEL_ERROR_DYNAMIC_PROPERTY_INVALID            15705
+#define APPMODEL_ERROR_PACKAGE_NOT_AVAILABLE               15706
 
 /* HRESULT values for OLE, SHELL and other Interface stuff */
 /* the codes 4000-40ff are reserved for OLE */
@@ -2088,8 +2559,10 @@
 
 #ifdef RC_INVOKED
 #define _HRESULT_TYPEDEF_(x) (x)
+#define _NDIS_ERROR_TYPEDEF_(x) (x)
 #else
 #define _HRESULT_TYPEDEF_(x) ((HRESULT)x)
+#define _NDIS_ERROR_TYPEDEF_(x) ((DWORD)x)
 #endif
 
 #define NOERROR                                            _HRESULT_TYPEDEF_(0)
@@ -2099,7 +2572,9 @@
 
 #define E_PENDING                                          _HRESULT_TYPEDEF_(0x8000000A)
 #define E_BOUNDS                                           _HRESULT_TYPEDEF_(0x8000000B)
-
+#define E_CHANGED_STATE                                    _HRESULT_TYPEDEF_(0x8000000C)
+#define E_ILLEGAL_STATE_CHANGE                             _HRESULT_TYPEDEF_(0x8000000D)
+#define E_ILLEGAL_METHOD_CALL                              _HRESULT_TYPEDEF_(0x8000000E)
 
 #define E_NOTIMPL                                          _HRESULT_TYPEDEF_(0x80004001)
 #define E_NOINTERFACE                                      _HRESULT_TYPEDEF_(0x80004002)
@@ -2293,6 +2768,23 @@
 #define STG_E_NOTFILEBASEDSTORAGE                          _HRESULT_TYPEDEF_(0x80030107)
 #define STG_E_EXTANTMARSHALLINGS                           _HRESULT_TYPEDEF_(0x80030108)
 #define STG_E_DOCFILECORRUPT                               _HRESULT_TYPEDEF_(0x80030109)
+#define STG_E_BADBASEADDRESS                               _HRESULT_TYPEDEF_(0x80030110)
+#define STG_E_DOCFILETOOLARGE                              _HRESULT_TYPEDEF_(0x80030111)
+#define STG_E_NOTSIMPLEFORMAT                              _HRESULT_TYPEDEF_(0x80030112)
+
+#define STG_E_INCOMPLETE                                   _HRESULT_TYPEDEF_(0x80030201)
+#define STG_E_TERMINATED                                   _HRESULT_TYPEDEF_(0x80030202)
+#define STG_S_CONVERTED                                    _HRESULT_TYPEDEF_(0x00030200)
+#define STG_S_BLOCK                                        _HRESULT_TYPEDEF_(0x00030201)
+#define STG_S_RETRYNOW                                     _HRESULT_TYPEDEF_(0x00030202)
+#define STG_S_MONITORING                                   _HRESULT_TYPEDEF_(0x00030203)
+#define STG_S_MULTIPLEOPENS                                _HRESULT_TYPEDEF_(0x00030204)
+#define STG_S_CONSOLIDATIONFAILED                          _HRESULT_TYPEDEF_(0x00030205)
+#define STG_S_CANNOTCONSOLIDATE                            _HRESULT_TYPEDEF_(0x00030206)
+#define STG_S_POWER_CYCLE_REQUIRED                         _HRESULT_TYPEDEF_(0x00030207)
+#define STG_E_FIRMWARE_SLOT_INVALID                        _HRESULT_TYPEDEF_(0x80030208)
+#define STG_E_FIRMWARE_IMAGE_INVALID                       _HRESULT_TYPEDEF_(0x80030209)
+#define STG_E_DEVICE_UNRESPONSIVE                          _HRESULT_TYPEDEF_(0x8003020A)
 
 #define STG_E_STATUS_COPY_PROTECTION_FAILURE               _HRESULT_TYPEDEF_(0x80030305)
 #define STG_E_CSS_AUTHENTICATION_FAILURE                   _HRESULT_TYPEDEF_(0x80030306)
@@ -2592,8 +3084,6 @@
 #define E_OUTOFMEMORY                                      _HRESULT_TYPEDEF_(0x8007000E)
 #define E_INVALIDARG                                       _HRESULT_TYPEDEF_(0x80070057)
 
-#define CO_S_NOTALLINTERFACES                              _HRESULT_TYPEDEF_(0x00080012)
-
 #define CO_E_CLASS_CREATE_FAILED                           _HRESULT_TYPEDEF_(0x80080001)
 #define CO_E_SCM_ERROR                                     _HRESULT_TYPEDEF_(0x80080002)
 #define CO_E_SCM_RPC_FAILURE                               _HRESULT_TYPEDEF_(0x80080003)
@@ -2605,6 +3095,11 @@
 #define MEM_E_INVALID_ROOT                                 _HRESULT_TYPEDEF_(0x80080009)
 #define MEM_E_INVALID_LINK                                 _HRESULT_TYPEDEF_(0x80080010)
 #define MEM_E_INVALID_SIZE                                 _HRESULT_TYPEDEF_(0x80080011)
+#define CO_S_NOTALLINTERFACES                              _HRESULT_TYPEDEF_(0x00080012)
+
+#define ERROR_AUDITING_DISABLED                            _HRESULT_TYPEDEF_(0xC0090001)
+#define ERROR_ALL_SIDS_FILTERED                            _HRESULT_TYPEDEF_(0xC0090002)
+#define ERROR_BIZRULES_NOT_ENABLED                         _HRESULT_TYPEDEF_(0xC0090003)
 
 /*Cryptographic Error Codes */
 #define NTE_BAD_UID                                        _HRESULT_TYPEDEF_(0x80090001)
@@ -2674,10 +3169,6 @@
 #define SEC_E_MESSAGE_ALTERED                              _HRESULT_TYPEDEF_(0x8009030F)
 #define SEC_E_OUT_OF_SEQUENCE                              _HRESULT_TYPEDEF_(0x80090310)
 #define SEC_E_NO_AUTHENTICATING_AUTHORITY                  _HRESULT_TYPEDEF_(0x80090311)
-#define SEC_I_CONTINUE_NEEDED                              _HRESULT_TYPEDEF_(0x00090312)
-#define SEC_I_COMPLETE_NEEDED                              _HRESULT_TYPEDEF_(0x00090313)
-#define SEC_I_COMPLETE_AND_CONTINUE                        _HRESULT_TYPEDEF_(0x00090314)
-#define SEC_I_CONTEXT_EXPIRED                              _HRESULT_TYPEDEF_(0x00090317)
 #define SEC_E_BAD_PKGID                                    _HRESULT_TYPEDEF_(0x80090316)
 #define SEC_E_CONTEXT_EXPIRED                              _HRESULT_TYPEDEF_(0x80090317)
 #define SEC_E_INCOMPLETE_MESSAGE                           _HRESULT_TYPEDEF_(0x80090318)
@@ -2727,6 +3218,26 @@
 #define SEC_E_ISSUING_CA_UNTRUSTED_KDC                     _HRESULT_TYPEDEF_(0x80090359)
 #define SEC_E_KDC_CERT_EXPIRED                             _HRESULT_TYPEDEF_(0x8009035A)
 #define SEC_E_KDC_CERT_REVOKED                             _HRESULT_TYPEDEF_(0x8009035B)
+#define SEC_E_INVALID_PARAMETER                            _HRESULT_TYPEDEF_(0x8009035D)
+#define SEC_E_DELEGATION_POLICY                            _HRESULT_TYPEDEF_(0x8009035E)
+#define SEC_E_POLICY_NLTM_ONLY                             _HRESULT_TYPEDEF_(0x8009035F)
+#define SEC_E_NO_CONTEXT                                   _HRESULT_TYPEDEF_(0x80090361)
+#define SEC_E_PKU2U_CERT_FAILURE                           _HRESULT_TYPEDEF_(0x80090362)
+#define SEC_E_MUTUAL_AUTH_FAILED                           _HRESULT_TYPEDEF_(0x80090363)
+#define SEC_E_ONLY_HTTPS_ALLOWED                           _HRESULT_TYPEDEF_(0x80090365)
+#define SEC_E_APPLICATION_PROTOCOL_MISMATCH                _HRESULT_TYPEDEF_(0x80090367)
+#define SEC_E_INVALID_UPN_NAME                             _HRESULT_TYPEDEF_(0x80090369)
+
+#define SEC_I_CONTINUE_NEEDED                              _HRESULT_TYPEDEF_(0x00090312)
+#define SEC_I_COMPLETE_NEEDED                              _HRESULT_TYPEDEF_(0x00090313)
+#define SEC_I_COMPLETE_AND_CONTINUE                        _HRESULT_TYPEDEF_(0x00090314)
+#define SEC_I_CONTEXT_EXPIRED                              _HRESULT_TYPEDEF_(0x00090317)
+#define SEC_I_RENEGOTIATE                                  _HRESULT_TYPEDEF_(0x00090321)
+#define SEC_I_SIGNATURE_NEEDED                             _HRESULT_TYPEDEF_(0x0009035C)
+#define SEC_I_NO_RENEGOTIATION                             _HRESULT_TYPEDEF_(0x00090360)
+#define SEC_I_MESSAGE_FRAGMENT                             _HRESULT_TYPEDEF_(0x00090364)
+#define SEC_I_CONTINUE_NEEDED_MESSAGE_OK                   _HRESULT_TYPEDEF_(0x00090366)
+#define SEC_I_ASYNC_CALL_PENDING                           _HRESULT_TYPEDEF_(0x00090368)
 
 #define CRYPT_E_MSG_ERROR                                  _HRESULT_TYPEDEF_(0x80091001)
 #define CRYPT_E_UNKNOWN_ALGO                               _HRESULT_TYPEDEF_(0x80091002)
@@ -2855,6 +3366,31 @@
 #define TRUST_E_BAD_DIGEST                                 _HRESULT_TYPEDEF_(0x80096010)
 #define TRUST_E_BASIC_CONSTRAINTS                          _HRESULT_TYPEDEF_(0x80096019)
 #define TRUST_E_FINANCIAL_CRITERIA                         _HRESULT_TYPEDEF_(0x8009601E)
+
+#define MSSIPOTF_E_OUTOFMEMRANGE                           _HRESULT_TYPEDEF_(0x80097001)
+#define MSSIPOTF_E_CANTGETOBJECT                           _HRESULT_TYPEDEF_(0x80097002)
+#define MSSIPOTF_E_NOHEADTABLE                             _HRESULT_TYPEDEF_(0x80097003)
+#define MSSIPOTF_E_BAD_MAGICNUMBER                         _HRESULT_TYPEDEF_(0x80097004)
+#define MSSIPOTF_E_BAD_OFFSET_TABLE                        _HRESULT_TYPEDEF_(0x80097005)
+#define MSSIPOTF_E_TABLE_TAGORDER                          _HRESULT_TYPEDEF_(0x80097006)
+#define MSSIPOTF_E_TABLE_LONGWORD                          _HRESULT_TYPEDEF_(0x80097007)
+#define MSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT               _HRESULT_TYPEDEF_(0x80097008)
+#define MSSIPOTF_E_TABLES_OVERLAP                          _HRESULT_TYPEDEF_(0x80097009)
+#define MSSIPOTF_E_TABLE_PADBYTES                          _HRESULT_TYPEDEF_(0x8009700A)
+#define MSSIPOTF_E_FILETOOSMALL                            _HRESULT_TYPEDEF_(0x8009700B)
+#define MSSIPOTF_E_TABLE_CHECKSUM                          _HRESULT_TYPEDEF_(0x8009700C)
+#define MSSIPOTF_E_FILE_CHECKSUM                           _HRESULT_TYPEDEF_(0x8009700D)
+#define MSSIPOTF_E_FAILED_POLICY                           _HRESULT_TYPEDEF_(0x80097010)
+#define MSSIPOTF_E_FAILED_HINTS_CHECK                      _HRESULT_TYPEDEF_(0x80097011)
+#define MSSIPOTF_E_NOT_OPENTYPE                            _HRESULT_TYPEDEF_(0x80097012)
+#define MSSIPOTF_E_FILE                                    _HRESULT_TYPEDEF_(0x80097013)
+#define MSSIPOTF_E_CRYPT                                   _HRESULT_TYPEDEF_(0x80097014)
+#define MSSIPOTF_E_BADVERSION                              _HRESULT_TYPEDEF_(0x80097015)
+#define MSSIPOTF_E_DSIG_STRUCTURE                          _HRESULT_TYPEDEF_(0x80097016)
+#define MSSIPOTF_E_PCONST_CHECK                            _HRESULT_TYPEDEF_(0x80097017)
+#define MSSIPOTF_E_STRUCTURE                               _HRESULT_TYPEDEF_(0x80097018)
+#define ERROR_CRED_REQUIRES_CONFIRMATION                   _HRESULT_TYPEDEF_(0x80097019)
+
 #define TRUST_E_PROVIDER_UNKNOWN                           _HRESULT_TYPEDEF_(0x800B0001)
 #define TRUST_E_ACTION_UNKNOWN                             _HRESULT_TYPEDEF_(0x800B0002)
 #define TRUST_E_SUBJECT_FORM_UNKNOWN                       _HRESULT_TYPEDEF_(0x800B0003)
@@ -3093,6 +3629,7 @@
 #define WININET_E_LOGIN_FAILURE_DISPLAY_ENTITY_BODY        _HRESULT_TYPEDEF_(0x80072f8e)
 #define WININET_E_DECODING_FAILED                          _HRESULT_TYPEDEF_(0x80072f8f)
 
+#define ERROR_HUNG_DISPLAY_DRIVER_THREAD                   _HRESULT_TYPEDEF_(0x80260001)
 #define DWM_E_COMPOSITIONDISABLED                          _HRESULT_TYPEDEF_(0x80263001)
 #define DWM_E_REMOTING_NOT_SUPPORTED                       _HRESULT_TYPEDEF_(0x80263002)
 #define DWM_E_NO_REDIRECTION_SURFACE_AVAILABLE             _HRESULT_TYPEDEF_(0x80263003)
@@ -3126,6 +3663,120 @@
 #define UI_E_PRIMITIVE_OUT_OF_BOUNDS                       _HRESULT_TYPEDEF_(0x802a010c)
 #define UI_E_WINDOW_CLOSED                                 _HRESULT_TYPEDEF_(0x802a0201)
 
+#define ERROR_VOLMGR_INCOMPLETE_REGENERATION               _NDIS_ERROR_TYPEDEF_(0x80380001)
+#define ERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION             _NDIS_ERROR_TYPEDEF_(0x80380002)
+#define ERROR_VOLMGR_DATABASE_FULL                         _NDIS_ERROR_TYPEDEF_(0xC0380001)
+#define ERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED          _NDIS_ERROR_TYPEDEF_(0xC0380002)
+#define ERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC        _NDIS_ERROR_TYPEDEF_(0xC0380003)
+#define ERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED             _NDIS_ERROR_TYPEDEF_(0xC0380004)
+#define ERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME       _NDIS_ERROR_TYPEDEF_(0xC0380005)
+#define ERROR_VOLMGR_DISK_DUPLICATE                        _NDIS_ERROR_TYPEDEF_(0xC0380006)
+#define ERROR_VOLMGR_DISK_DYNAMIC                          _NDIS_ERROR_TYPEDEF_(0xC0380007)
+#define ERROR_VOLMGR_DISK_ID_INVALID                       _NDIS_ERROR_TYPEDEF_(0xC0380008)
+#define ERROR_VOLMGR_DISK_INVALID                          _NDIS_ERROR_TYPEDEF_(0xC0380009)
+#define ERROR_VOLMGR_DISK_LAST_VOTER                       _NDIS_ERROR_TYPEDEF_(0xC038000A)
+#define ERROR_VOLMGR_DISK_LAYOUT_INVALID                   _NDIS_ERROR_TYPEDEF_(0xC038000B)
+#define ERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS _NDIS_ERROR_TYPEDEF_(0xC038000C)
+#define ERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED      _NDIS_ERROR_TYPEDEF_(0xC038000D)
+#define ERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL      _NDIS_ERROR_TYPEDEF_(0xC038000E)
+#define ERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS _NDIS_ERROR_TYPEDEF_(0xC038000F)
+#define ERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS       _NDIS_ERROR_TYPEDEF_(0xC0380010)
+#define ERROR_VOLMGR_DISK_MISSING                          _NDIS_ERROR_TYPEDEF_(0xC0380011)
+#define ERROR_VOLMGR_DISK_NOT_EMPTY                        _NDIS_ERROR_TYPEDEF_(0xC0380012)
+#define ERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE                 _NDIS_ERROR_TYPEDEF_(0xC0380013)
+#define ERROR_VOLMGR_DISK_REVECTORING_FAILED               _NDIS_ERROR_TYPEDEF_(0xC0380014)
+#define ERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID              _NDIS_ERROR_TYPEDEF_(0xC0380015)
+#define ERROR_VOLMGR_DISK_SET_NOT_CONTAINED                _NDIS_ERROR_TYPEDEF_(0xC0380016)
+#define ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS         _NDIS_ERROR_TYPEDEF_(0xC0380017)
+#define ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES          _NDIS_ERROR_TYPEDEF_(0xC0380018)
+#define ERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED            _NDIS_ERROR_TYPEDEF_(0xC0380019)
+#define ERROR_VOLMGR_EXTENT_ALREADY_USED                   _NDIS_ERROR_TYPEDEF_(0xC038001A)
+#define ERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS                 _NDIS_ERROR_TYPEDEF_(0xC038001B)
+#define ERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION           _NDIS_ERROR_TYPEDEF_(0xC038001C)
+#define ERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED             _NDIS_ERROR_TYPEDEF_(0xC038001D)
+#define ERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION         _NDIS_ERROR_TYPEDEF_(0xC038001E)
+#define ERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH    _NDIS_ERROR_TYPEDEF_(0xC038001F)
+#define ERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED          _NDIS_ERROR_TYPEDEF_(0xC0380020)
+#define ERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID             _NDIS_ERROR_TYPEDEF_(0xC0380021)
+#define ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS              _NDIS_ERROR_TYPEDEF_(0xC0380022)
+#define ERROR_VOLMGR_MEMBER_IN_SYNC                        _NDIS_ERROR_TYPEDEF_(0xC0380023)
+#define ERROR_VOLMGR_MEMBER_INDEX_DUPLICATE                _NDIS_ERROR_TYPEDEF_(0xC0380024)
+#define ERROR_VOLMGR_MEMBER_INDEX_INVALID                  _NDIS_ERROR_TYPEDEF_(0xC0380025)
+#define ERROR_VOLMGR_MEMBER_MISSING                        _NDIS_ERROR_TYPEDEF_(0xC0380026)
+#define ERROR_VOLMGR_MEMBER_NOT_DETACHED                   _NDIS_ERROR_TYPEDEF_(0xC0380027)
+#define ERROR_VOLMGR_MEMBER_REGENERATING                   _NDIS_ERROR_TYPEDEF_(0xC0380028)
+#define ERROR_VOLMGR_ALL_DISKS_FAILED                      _NDIS_ERROR_TYPEDEF_(0xC0380029)
+#define ERROR_VOLMGR_NO_REGISTERED_USERS                   _NDIS_ERROR_TYPEDEF_(0xC038002A)
+#define ERROR_VOLMGR_NO_SUCH_USER                          _NDIS_ERROR_TYPEDEF_(0xC038002B)
+#define ERROR_VOLMGR_NOTIFICATION_RESET                    _NDIS_ERROR_TYPEDEF_(0xC038002C)
+#define ERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID             _NDIS_ERROR_TYPEDEF_(0xC038002D)
+#define ERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID              _NDIS_ERROR_TYPEDEF_(0xC038002E)
+#define ERROR_VOLMGR_PACK_DUPLICATE                        _NDIS_ERROR_TYPEDEF_(0xC038002F)
+#define ERROR_VOLMGR_PACK_ID_INVALID                       _NDIS_ERROR_TYPEDEF_(0xC0380030)
+#define ERROR_VOLMGR_PACK_INVALID                          _NDIS_ERROR_TYPEDEF_(0xC0380031)
+#define ERROR_VOLMGR_PACK_NAME_INVALID                     _NDIS_ERROR_TYPEDEF_(0xC0380032)
+#define ERROR_VOLMGR_PACK_OFFLINE                          _NDIS_ERROR_TYPEDEF_(0xC0380033)
+#define ERROR_VOLMGR_PACK_HAS_QUORUM                       _NDIS_ERROR_TYPEDEF_(0xC0380034)
+#define ERROR_VOLMGR_PACK_WITHOUT_QUORUM                   _NDIS_ERROR_TYPEDEF_(0xC0380035)
+#define ERROR_VOLMGR_PARTITION_STYLE_INVALID               _NDIS_ERROR_TYPEDEF_(0xC0380036)
+#define ERROR_VOLMGR_PARTITION_UPDATE_FAILED               _NDIS_ERROR_TYPEDEF_(0xC0380037)
+#define ERROR_VOLMGR_PLEX_IN_SYNC                          _NDIS_ERROR_TYPEDEF_(0xC0380038)
+#define ERROR_VOLMGR_PLEX_INDEX_DUPLICATE                  _NDIS_ERROR_TYPEDEF_(0xC0380039)
+#define ERROR_VOLMGR_PLEX_INDEX_INVALID                    _NDIS_ERROR_TYPEDEF_(0xC038003A)
+#define ERROR_VOLMGR_PLEX_LAST_ACTIVE                      _NDIS_ERROR_TYPEDEF_(0xC038003B)
+#define ERROR_VOLMGR_PLEX_MISSING                          _NDIS_ERROR_TYPEDEF_(0xC038003C)
+#define ERROR_VOLMGR_PLEX_REGENERATING                     _NDIS_ERROR_TYPEDEF_(0xC038003D)
+#define ERROR_VOLMGR_PLEX_TYPE_INVALID                     _NDIS_ERROR_TYPEDEF_(0xC038003E)
+#define ERROR_VOLMGR_PLEX_NOT_RAID5                        _NDIS_ERROR_TYPEDEF_(0xC038003F)
+#define ERROR_VOLMGR_PLEX_NOT_SIMPLE                       _NDIS_ERROR_TYPEDEF_(0xC0380040)
+#define ERROR_VOLMGR_STRUCTURE_SIZE_INVALID                _NDIS_ERROR_TYPEDEF_(0xC0380041)
+#define ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS        _NDIS_ERROR_TYPEDEF_(0xC0380042)
+#define ERROR_VOLMGR_TRANSACTION_IN_PROGRESS               _NDIS_ERROR_TYPEDEF_(0xC0380043)
+#define ERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE         _NDIS_ERROR_TYPEDEF_(0xC0380044)
+#define ERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK          _NDIS_ERROR_TYPEDEF_(0xC0380045)
+#define ERROR_VOLMGR_VOLUME_ID_INVALID                     _NDIS_ERROR_TYPEDEF_(0xC0380046)
+#define ERROR_VOLMGR_VOLUME_LENGTH_INVALID                 _NDIS_ERROR_TYPEDEF_(0xC0380047)
+#define ERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE _NDIS_ERROR_TYPEDEF_(0xC0380048)
+#define ERROR_VOLMGR_VOLUME_NOT_MIRRORED                   _NDIS_ERROR_TYPEDEF_(0xC0380049)
+#define ERROR_VOLMGR_VOLUME_NOT_RETAINED                   _NDIS_ERROR_TYPEDEF_(0xC038004A)
+#define ERROR_VOLMGR_VOLUME_OFFLINE                        _NDIS_ERROR_TYPEDEF_(0xC038004B)
+#define ERROR_VOLMGR_VOLUME_RETAINED                       _NDIS_ERROR_TYPEDEF_(0xC038004C)
+#define ERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID             _NDIS_ERROR_TYPEDEF_(0xC038004D)
+#define ERROR_VOLMGR_DIFFERENT_SECTOR_SIZE                 _NDIS_ERROR_TYPEDEF_(0xC038004E)
+#define ERROR_VOLMGR_BAD_BOOT_DISK                         _NDIS_ERROR_TYPEDEF_(0xC038004F)
+#define ERROR_VOLMGR_PACK_CONFIG_OFFLINE                   _NDIS_ERROR_TYPEDEF_(0xC0380050)
+#define ERROR_VOLMGR_PACK_CONFIG_ONLINE                    _NDIS_ERROR_TYPEDEF_(0xC0380051)
+#define ERROR_VOLMGR_NOT_PRIMARY_PACK                      _NDIS_ERROR_TYPEDEF_(0xC0380052)
+#define ERROR_VOLMGR_PACK_LOG_UPDATE_FAILED                _NDIS_ERROR_TYPEDEF_(0xC0380053)
+#define ERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID       _NDIS_ERROR_TYPEDEF_(0xC0380054)
+#define ERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID     _NDIS_ERROR_TYPEDEF_(0xC0380055)
+#define ERROR_VOLMGR_VOLUME_MIRRORED                       _NDIS_ERROR_TYPEDEF_(0xC0380056)
+#define ERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED               _NDIS_ERROR_TYPEDEF_(0xC0380057)
+#define ERROR_VOLMGR_NO_VALID_LOG_COPIES                   _NDIS_ERROR_TYPEDEF_(0xC0380058)
+#define ERROR_VOLMGR_PRIMARY_PACK_PRESENT                  _NDIS_ERROR_TYPEDEF_(0xC0380059)
+#define ERROR_VOLMGR_NUMBER_OF_DISKS_INVALID               _NDIS_ERROR_TYPEDEF_(0xC038005A)
+#define ERROR_VOLMGR_MIRROR_NOT_SUPPORTED                  _NDIS_ERROR_TYPEDEF_(0xC038005B)
+#define ERROR_VOLMGR_RAID5_NOT_SUPPORTED                   _NDIS_ERROR_TYPEDEF_(0xC038005C)
+
+#define ERROR_SPACES_POOL_WAS_DELETED                      _HRESULT_TYPEDEF_(0x00e70001)
+#define ERROR_SPACES_FAULT_DOMAIN_TYPE_INVALID             _HRESULT_TYPEDEF_(0x80e70001)
+#define ERROR_SPACES_INTERNAL_ERROR                        _HRESULT_TYPEDEF_(0x80e70002)
+#define ERROR_SPACES_RESILIENCY_TYPE_INVALID               _HRESULT_TYPEDEF_(0x80e70003)
+#define ERROR_SPACES_DRIVE_SECTOR_SIZE_INVALID             _HRESULT_TYPEDEF_(0x80e70004)
+#define ERROR_SPACES_DRIVE_REDUNDANCY_INVALID              _HRESULT_TYPEDEF_(0x80e70006)
+#define ERROR_SPACES_NUMBER_OF_DATA_COPIES_INVALID         _HRESULT_TYPEDEF_(0x80e70007)
+#define ERROR_SPACES_PARITY_LAYOUT_INVALID                 _HRESULT_TYPEDEF_(0x80e70008)
+#define ERROR_SPACES_INTERLEAVE_LENGTH_INVALID             _HRESULT_TYPEDEF_(0x80e70009)
+#define ERROR_SPACES_NUMBER_OF_COLUMNS_INVALID             _HRESULT_TYPEDEF_(0x80e7000a)
+#define ERROR_SPACES_NOT_ENOUGH_DRIVES                     _HRESULT_TYPEDEF_(0x80e7000b)
+#define ERROR_SPACES_EXTENDED_ERROR                        _HRESULT_TYPEDEF_(0x80e7000c)
+#define ERROR_SPACES_PROVISIONING_TYPE_INVALID             _HRESULT_TYPEDEF_(0x80e7000d)
+#define ERROR_SPACES_ALLOCATION_SIZE_INVALID               _HRESULT_TYPEDEF_(0x80e7000e)
+#define ERROR_SPACES_ENCLOSURE_AWARE_INVALID               _HRESULT_TYPEDEF_(0x80e7000f)
+#define ERROR_SPACES_WRITE_CACHE_SIZE_INVALID              _HRESULT_TYPEDEF_(0x80e70010)
+#define ERROR_SPACES_NUMBER_OF_GROUPS_INVALID              _HRESULT_TYPEDEF_(0x80e70011)
+#define ERROR_SPACES_DRIVE_OPERATIONAL_STATE_INVALID       _HRESULT_TYPEDEF_(0x80e70012)
+
 #define D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS          _HRESULT_TYPEDEF_(0x887c0001)
 #define D3D11_ERROR_FILE_NOT_FOUND                         _HRESULT_TYPEDEF_(0x887c0002)
 #define D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS           _HRESULT_TYPEDEF_(0x887c0003)
diff --git a/mingw-w64-tools/widl/include/winnls.h b/mingw-w64-tools/widl/include/winnls.h
index c7c2cfb..e7b478b 100644
--- a/mingw-w64-tools/widl/include/winnls.h
+++ b/mingw-w64-tools/widl/include/winnls.h
@@ -735,6 +735,8 @@
     DWORD dwNLSVersionInfoSize;
     DWORD dwNLSVersion;
     DWORD dwDefinedVersion;
+    DWORD dwEffectiveId;
+    GUID  guidCustomVersion;
 } NLSVERSIONINFO, *LPNLSVERSIONINFO;
 
 typedef struct _nlsversioninfoex {
@@ -745,6 +747,9 @@
     GUID  guidCustomVersion;
 } NLSVERSIONINFOEX, *LPNLSVERSIONINFOEX;
 
+enum SYSNLS_FUNCTION { COMPARE_STRING = 1 };
+typedef DWORD NLS_FUNCTION;
+
 /* Define a bunch of callback types */
 
 typedef BOOL    (CALLBACK *CALINFO_ENUMPROCEXEX)(LPWSTR,CALID,LPWSTR,LPARAM);
@@ -913,6 +918,8 @@
 WINBASEAPI INT         WINAPI GetLocaleInfoW(LCID,LCTYPE,LPWSTR,INT);
 #define                       GetLocaleInfo WINELIB_NAME_AW(GetLocaleInfo)
 WINBASEAPI INT         WINAPI GetLocaleInfoEx(LPCWSTR,LCTYPE,LPWSTR,INT);
+WINBASEAPI BOOL        WINAPI GetNLSVersion(NLS_FUNCTION,LCID,NLSVERSIONINFO*);
+WINBASEAPI BOOL        WINAPI GetNLSVersionEx(NLS_FUNCTION,LPCWSTR,NLSVERSIONINFOEX*);
 WINBASEAPI INT         WINAPI GetNumberFormatA(LCID,DWORD,LPCSTR,const NUMBERFMTA*,LPSTR,INT);
 WINBASEAPI INT         WINAPI GetNumberFormatW(LCID,DWORD,LPCWSTR,const NUMBERFMTW*,LPWSTR,INT);
 #define                       GetNumberFormat WINELIB_NAME_AW(GetNumberFormat)
@@ -950,6 +957,7 @@
 WINBASEAPI BOOL        WINAPI IsValidLanguageGroup(LGRPID,DWORD);
 WINBASEAPI BOOL        WINAPI IsValidLocale(LCID,DWORD);
 WINBASEAPI BOOL        WINAPI IsValidLocaleName(LPCWSTR);
+WINBASEAPI DWORD       WINAPI IsValidNLSVersion(NLS_FUNCTION,LPCWSTR,NLSVERSIONINFOEX*);
 WINBASEAPI INT         WINAPI LCIDToLocaleName(LCID,LPWSTR,INT,DWORD);
 WINBASEAPI INT         WINAPI LCMapStringA(LCID,DWORD,LPCSTR,INT,LPSTR,INT);
 WINBASEAPI INT         WINAPI LCMapStringW(LCID,DWORD,LPCWSTR,INT,LPWSTR,INT);
diff --git a/mingw-w64-tools/widl/include/winnt.h b/mingw-w64-tools/widl/include/winnt.h
index 56734f1..46e17c5 100644
--- a/mingw-w64-tools/widl/include/winnt.h
+++ b/mingw-w64-tools/widl/include/winnt.h
@@ -388,11 +388,7 @@
 
 /* Compile time assertion */
 
-#if defined(_MSC_VER)
-# define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1]
-#else
-# define C_ASSERT(e) extern void __C_ASSERT__(int [(e)?1:-1])
-#endif
+#define C_ASSERT(e) extern void __C_ASSERT__(int [(e)?1:-1])
 
 /* Eliminate Microsoft C/C++ compiler warning 4715 */
 #if defined(_MSC_VER) && (_MSC_VER > 1200)
@@ -456,18 +452,21 @@
 typedef BYTE            BOOLEAN,    *PBOOLEAN;
 typedef char            CHAR,       *PCHAR;
 typedef short           SHORT,      *PSHORT;
-#ifdef _MSC_VER
+#ifdef WINE_USE_LONG
 typedef long            LONG,       *PLONG;
 #else
 typedef int             LONG,       *PLONG;
 #endif
 
 /* Some systems might have wchar_t, but we really need 16 bit characters */
-#ifdef WINE_UNICODE_NATIVE
-typedef wchar_t         WCHAR,      *PWCHAR;
+#if defined(WINE_UNICODE_NATIVE)
+typedef wchar_t         WCHAR;
+#elif defined(WINE_UNICODE_CHAR16)
+typedef char16_t        WCHAR;
 #else
-typedef unsigned short  WCHAR,      *PWCHAR;
+typedef unsigned short  WCHAR;
 #endif
+typedef WCHAR          *PWCHAR;
 
 typedef ULONG           UCSCHAR;
 #define MIN_UCSCHAR                 (0)
@@ -607,10 +606,13 @@
 #define STATUS_TIMEOUT                   ((DWORD) 0x00000102)
 #define STATUS_PENDING                   ((DWORD) 0x00000103)
 #define STATUS_SEGMENT_NOTIFICATION      ((DWORD) 0x40000005)
+#define STATUS_FATAL_APP_EXIT            ((DWORD) 0x40000015)
 #define STATUS_GUARD_PAGE_VIOLATION      ((DWORD) 0x80000001)
 #define STATUS_DATATYPE_MISALIGNMENT     ((DWORD) 0x80000002)
 #define STATUS_BREAKPOINT                ((DWORD) 0x80000003)
 #define STATUS_SINGLE_STEP               ((DWORD) 0x80000004)
+#define STATUS_LONGJUMP                  ((DWORD) 0x80000026)
+#define STATUS_UNWIND_CONSOLIDATE        ((DWORD) 0x80000029)
 #define STATUS_ACCESS_VIOLATION          ((DWORD) 0xC0000005)
 #define STATUS_IN_PAGE_ERROR             ((DWORD) 0xC0000006)
 #define STATUS_INVALID_HANDLE            ((DWORD) 0xC0000008)
@@ -630,16 +632,25 @@
 #define STATUS_INTEGER_OVERFLOW          ((DWORD) 0xC0000095)
 #define STATUS_PRIVILEGED_INSTRUCTION    ((DWORD) 0xC0000096)
 #define STATUS_STACK_OVERFLOW            ((DWORD) 0xC00000FD)
+#define STATUS_DLL_NOT_FOUND             ((DWORD) 0xC0000135)
+#define STATUS_ORDINAL_NOT_FOUND         ((DWORD) 0xC0000138)
+#define STATUS_ENTRYPOINT_NOT_FOUND      ((DWORD) 0xC0000139)
 #define STATUS_CONTROL_C_EXIT            ((DWORD) 0xC000013A)
+#define STATUS_DLL_INIT_FAILED           ((DWORD) 0xC0000142)
 #define STATUS_FLOAT_MULTIPLE_FAULTS     ((DWORD) 0xC00002B4)
 #define STATUS_FLOAT_MULTIPLE_TRAPS      ((DWORD) 0xC00002B5)
 #define STATUS_REG_NAT_CONSUMPTION       ((DWORD) 0xC00002C9)
+#define STATUS_HEAP_CORRUPTION           ((DWORD) 0xC0000374)
+#define STATUS_STACK_BUFFER_OVERRUN      ((DWORD) 0xC0000409)
+#define STATUS_INVALID_CRUNTIME_PARAMETER ((DWORD) 0xC0000417)
+#define STATUS_ASSERTION_FAILURE         ((DWORD) 0xC0000420)
 #define STATUS_SXS_EARLY_DEACTIVATION    ((DWORD) 0xC015000F)
 #define STATUS_SXS_INVALID_DEACTIVATION  ((DWORD) 0xC0150010)
 
 /* status values for ContinueDebugEvent */
 #define DBG_EXCEPTION_HANDLED       ((DWORD) 0x00010001)
 #define DBG_CONTINUE                ((DWORD) 0x00010002)
+#define DBG_REPLY_LATER             ((DWORD) 0x40010001)
 #define DBG_TERMINATE_THREAD        ((DWORD) 0x40010003)
 #define DBG_TERMINATE_PROCESS       ((DWORD) 0x40010004)
 #define DBG_CONTROL_C               ((DWORD) 0x40010005)
@@ -647,6 +658,7 @@
 #define DBG_RIPEXCEPTION            ((DWORD) 0x40010007)
 #define DBG_CONTROL_BREAK           ((DWORD) 0x40010008)
 #define DBG_COMMAND_EXCEPTION       ((DWORD) 0x40010009)
+#define DBG_PRINTEXCEPTION_WIDE_C   ((DWORD) 0x4001000A)
 #define DBG_EXCEPTION_NOT_HANDLED   ((DWORD) 0x80010001)
 
 #endif /* WIN32_NO_STATUS */
@@ -784,6 +796,7 @@
 #define CONTAINING_RECORD(address, type, field) \
   ((type *)((PCHAR)(address) - offsetof(type, field)))
 
+#define ARRAYSIZE(x) (sizeof(x) / sizeof((x)[0]))
 #ifdef __WINESRC__
 # define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
 #endif
@@ -2651,6 +2664,7 @@
     return teb;
 }
 #elif defined(__x86_64__) && defined(_MSC_VER)
+unsigned __int64 __readgsqword(unsigned long);
 #pragma intrinsic(__readgsqword)
 static FORCEINLINE struct _TEB * WINAPI NtCurrentTeb(void)
 {
@@ -3804,33 +3818,17 @@
 typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
 	union {
 		struct {
-#ifdef BITFIELDS_BIGENDIAN
-			unsigned NameIsString:1;
-			unsigned NameOffset:31;
-#else
 			unsigned NameOffset:31;
 			unsigned NameIsString:1;
-#endif
 		} DUMMYSTRUCTNAME;
 		DWORD   Name;
-#ifdef WORDS_BIGENDIAN
-		WORD    __pad;
 		WORD    Id;
-#else
-		WORD    Id;
-		WORD    __pad;
-#endif
 	} DUMMYUNIONNAME;
 	union {
 		DWORD   OffsetToData;
 		struct {
-#ifdef BITFIELDS_BIGENDIAN
-			unsigned DataIsDirectory:1;
-			unsigned OffsetToDirectory:31;
-#else
 			unsigned OffsetToDirectory:31;
 			unsigned DataIsDirectory:1;
-#endif
 		} DUMMYSTRUCTNAME2;
 	} DUMMYUNIONNAME2;
 } IMAGE_RESOURCE_DIRECTORY_ENTRY,*PIMAGE_RESOURCE_DIRECTORY_ENTRY;
@@ -4324,6 +4322,12 @@
 #define SE_MANAGE_VOLUME_NAME           L"SeManageVolumePrivilege"
 #define SE_IMPERSONATE_NAME             L"SeImpersonatePrivilege"
 #define SE_CREATE_GLOBAL_NAME           L"SeCreateGlobalPrivilege"
+#define SE_TRUSTED_CREDMAN_ACCESS_NAME  L"SeTrustedCredManAccessPrivilege"
+#define SE_RELABEL_NAME                 L"SeRelabelPrivilege"
+#define SE_INC_WORKING_SET_NAME         L"SeIncreaseWorkingSetPrivilege"
+#define SE_TIME_ZONE_NAME               L"SeTimeZonePrivilege"
+#define SE_CREATE_SYMBOLIC_LINK_NAME    L"SeCreateSymbolicLinkPrivilege"
+#define SE_DELEGATE_SESSION_USER_IMPERSONATE_NAME L"SeDelegateSessionUserImpersonatePrivilege"
 #else /* _MSC_VER/__MINGW32__ */
 static const WCHAR SE_CREATE_TOKEN_NAME[] = { 'S','e','C','r','e','a','t','e','T','o','k','e','n','P','r','i','v','i','l','e','g','e',0 };
 static const WCHAR SE_ASSIGNPRIMARYTOKEN_NAME[] = { 'S','e','A','s','s','i','g','n','P','r','i','m','a','r','y','T','o','k','e','n','P','r','i','v','i','l','e','g','e',0 };
@@ -4354,6 +4358,12 @@
 static const WCHAR SE_MANAGE_VOLUME_NAME[] = { 'S','e','M','a','n','a','g','e','V','o','l','u','m','e','P','r','i','v','i','l','e','g','e',0 };
 static const WCHAR SE_IMPERSONATE_NAME[] = { 'S','e','I','m','p','e','r','s','o','n','a','t','e','P','r','i','v','i','l','e','g','e',0 };
 static const WCHAR SE_CREATE_GLOBAL_NAME[] = { 'S','e','C','r','e','a','t','e','G','l','o','b','a','l','P','r','i','v','i','l','e','g','e',0 };
+static const WCHAR SE_TRUSTED_CREDMAN_ACCESS_NAME[] = { 'S','e','T','r','u','s','t','e','d','C','r','e','d','M','a','n','A','c','c','e','s','s','P','r','i','v','i','l','e','g','e',0 };
+static const WCHAR SE_RELABEL_NAME[] = { 'S','e','R','e','l','a','b','e','l','P','r','i','v','i','l','e','g','e',0 };
+static const WCHAR SE_INC_WORKING_SET_NAME[] = { 'S','e','I','n','c','r','e','a','s','e','W','o','r','k','i','n','g','S','e','t','P','r','i','v','i','l','e','g','e',0 };
+static const WCHAR SE_TIME_ZONE_NAME[] = { 'S','e','T','i','m','e','Z','o','n','e','P','r','i','v','i','l','e','g','e',0 };
+static const WCHAR SE_CREATE_SYMBOLIC_LINK_NAME[] = { 'S','e','C','r','e','a','t','e','S','y','m','b','o','l','i','c','L','i','n','k','P','r','i','v','i','l','e','g','e',0 };
+static const WCHAR SE_DELEGATE_SESSION_USER_IMPERSONATE_NAME[] = { 'S','e','D','e','l','e','g','a','t','e','S','e','s','s','i','o','n','U','s','e','r','I','m','p','e','r','s','o','n','a','t','e','P','r','i','v','i','l','e','g','e',0 };
 #endif
 #else /* UNICODE */
 #define SE_CREATE_TOKEN_NAME            "SeCreateTokenPrivilege"
@@ -4385,6 +4395,12 @@
 #define SE_MANAGE_VOLUME_NAME           "SeManageVolumePrivilege"
 #define SE_IMPERSONATE_NAME             "SeImpersonatePrivilege"
 #define SE_CREATE_GLOBAL_NAME           "SeCreateGlobalPrivilege"
+#define SE_TRUSTED_CREDMAN_ACCESS_NAME  "SeTrustedCredManAccessPrivilege"
+#define SE_RELABEL_NAME                 "SeRelabelPrivilege"
+#define SE_INC_WORKING_SET_NAME         "SeIncreaseWorkingSetPrivilege"
+#define SE_TIME_ZONE_NAME               "SeTimeZonePrivilege"
+#define SE_CREATE_SYMBOLIC_LINK_NAME    "SeCreateSymbolicLinkPrivilege"
+#define SE_DELEGATE_SESSION_USER_IMPERSONATE_NAME "SeDelegateSessionUserImpersonatePrivilege"
 #endif
 
 #define SE_GROUP_MANDATORY          0x00000001
@@ -5046,7 +5062,10 @@
 #define	SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE 0xf
 #define	SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE 0x10
 #define SYSTEM_MANDATORY_LABEL_ACE_TYPE 0x11
-#define	ACCESS_MAX_MS_V5_ACE_TYPE	0x11
+#define SYSTEM_RESOURCE_ATTRIBUTE_ACE_TYPE  0x12
+#define SYSTEM_SCOPED_POLICY_ID_ACE_TYPE    0x13
+#define SYSTEM_PROCESS_TRUST_LABEL_ACE_TYPE 0x14
+#define ACCESS_MAX_MS_V5_ACE_TYPE           0x14
 
 /* inherit AceFlags */
 #define	OBJECT_INHERIT_ACE		0x01
@@ -5308,6 +5327,15 @@
 #define QUOTA_LIMITS_HARDWS_MIN_DISABLE 0x00000002
 #define QUOTA_LIMITS_HARDWS_MAX_ENABLE  0x00000004
 #define QUOTA_LIMITS_HARDWS_MAX_DISABLE 0x00000008
+#define QUOTA_LIMITS_USE_DEFAULT_LIMITS 0x00000010
+
+typedef union _RATE_QUOTA_LIMIT {
+    DWORD RateData;
+    struct {
+        DWORD RatePercent:7;
+        DWORD Reserved0:25;
+    } DUMMYSTRUCTNAME;
+} RATE_QUOTA_LIMIT, *PRATE_QUOTA_LIMIT;
 
 typedef struct _QUOTA_LIMITS_EX {
     SIZE_T PagedPoolLimit;
@@ -5316,12 +5344,12 @@
     SIZE_T MaximumWorkingSetSize;
     SIZE_T PagefileLimit;
     LARGE_INTEGER TimeLimit;
-    SIZE_T Reserved1;
+    SIZE_T WorkingSetLimit;
     SIZE_T Reserved2;
     SIZE_T Reserved3;
     SIZE_T Reserved4;
     DWORD Flags;
-    DWORD Reserved5;
+    RATE_QUOTA_LIMIT CpuRateLimit;
 } QUOTA_LIMITS_EX, *PQUOTA_LIMITS_EX;
 
 #define SECTION_QUERY              0x0001
@@ -5436,6 +5464,8 @@
 #define FILE_SUPPORTS_INTEGRITY_STREAMS      0x04000000
 #define FILE_SUPPORTS_BLOCK_REFCOUNTING      0x08000000
 #define FILE_SUPPORTS_SPARSE_VDL             0x10000000
+#define FILE_DAX_VOLUME                      0x20000000
+#define FILE_SUPPORTS_GHOSTING               0x40000000
 
 /* File alignments (NT) */
 #define	FILE_BYTE_ALIGNMENT		0x00000000
@@ -6249,8 +6279,10 @@
 typedef const ASSEMBLY_FILE_DETAILED_INFORMATION *PCASSEMBLY_FILE_DETAILED_INFORMATION;
 
 typedef enum {
-    ACTCX_COMPATIBILITY_ELEMENT_TYPE_UNKNOWN = 0,
-    ACTCX_COMPATIBILITY_ELEMENT_TYPE_OS
+    ACTCTX_COMPATIBILITY_ELEMENT_TYPE_UNKNOWN = 0,
+    ACTCTX_COMPATIBILITY_ELEMENT_TYPE_OS,
+    ACTCTX_COMPATIBILITY_ELEMENT_TYPE_MITIGATION,
+    ACTCTX_COMPATIBILITY_ELEMENT_TYPE_MAXVERSIONTESTED
 } ACTCTX_COMPATIBILITY_ELEMENT_TYPE;
 
 typedef struct _COMPATIBILITY_CONTEXT_ELEMENT {
diff --git a/mingw-w64-tools/widl/include/winnt.rh b/mingw-w64-tools/widl/include/winnt.rh
index 59791bc..786a38f 100644
--- a/mingw-w64-tools/widl/include/winnt.rh
+++ b/mingw-w64-tools/widl/include/winnt.rh
@@ -24,10 +24,12 @@
  * macro which only exists in the user's code.
  */
 #ifndef WINE_NO_UNICODE_MACROS
-# ifdef UNICODE
+# ifndef UNICODE
+#  define __TEXT(string) string
+# elif defined(WINE_UNICODE_NATIVE)
 #  define __TEXT(string) L##string
 # else
-#  define __TEXT(string) string
+#  define __TEXT(string) u##string
 # endif
 # define TEXT(string) __TEXT(string)
 #endif
diff --git a/mingw-w64-tools/widl/patches/0001-relocatable.patch b/mingw-w64-tools/widl/patches/0001-relocatable.patch
index c555468..84f3058 100644
--- a/mingw-w64-tools/widl/patches/0001-relocatable.patch
+++ b/mingw-w64-tools/widl/patches/0001-relocatable.patch
@@ -1,5 +1,5 @@
 diff --git a/mingw-w64-tools/widl/src/widl.c b/mingw-w64-tools/widl/src/widl.c
-index aa669713..35d37d9b 100644
+index a99eed4e..38b9d864 100644
 --- a/mingw-w64-tools/widl/src/widl.c
 +++ b/mingw-w64-tools/widl/src/widl.c
 @@ -42,6 +42,7 @@
@@ -10,12 +10,17 @@
  
  static const char usage[] =
  "Usage: widl [options...] infile.idl\n"
-@@ -749,14 +750,12 @@ int main(int argc,char *argv[])
+@@ -772,19 +773,12 @@ int main(int argc,char *argv[])
  
    if (stdinc)
    {
 -      static const char *incl_dirs[] = { INCLUDEDIR, "/usr/include", "/usr/local/include" };
 -
+-      if (includedir)
+-      {
+-          wpp_add_include_path( strmake( "%s/wine/msvcrt", includedir ));
+-          wpp_add_include_path( strmake( "%s/wine/windows", includedir ));
+-      }
 -      for (i = 0; i < ARRAY_SIZE(incl_dirs); i++)
 -      {
 -          if (i && !strcmp( incl_dirs[i], incl_dirs[0] )) continue;
diff --git a/mingw-w64-tools/widl/src/parser.tab.c b/mingw-w64-tools/widl/src/parser.tab.c
index 9484289..047b535 100644
--- a/mingw-w64-tools/widl/src/parser.tab.c
+++ b/mingw-w64-tools/widl/src/parser.tab.c
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.1.  */
+/* A Bison parser, made by GNU Bison 3.5.4.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+   Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -40,11 +41,14 @@
    define necessary library symbols; they are noted "INFRINGES ON
    USER NAME SPACE" below.  */
 
+/* Undocumented macros, especially those whose name start with YY_,
+   are private implementation details.  Do not rely on them.  */
+
 /* Identify Bison output.  */
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "3.1"
+#define YYBISON_VERSION "3.5.4"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -65,12 +69,11 @@
 #define yyerror         parser_error
 #define yydebug         parser_debug
 #define yynerrs         parser_nerrs
-
 #define yylval          parser_lval
 #define yychar          parser_char
 
-/* Copy the first part of user declarations.  */
-#line 1 "parser.y" /* yacc.c:339  */
+/* First part of user prologue.  */
+#line 1 "parser.y"
 
 /*
  * IDL Compiler
@@ -199,13 +202,26 @@
 static typelib_t *current_typelib;
 
 
-#line 203 "parser.tab.c" /* yacc.c:339  */
+#line 206 "parser.tab.c"
 
-# ifndef YY_NULLPTR
-#  if defined __cplusplus && 201103L <= __cplusplus
-#   define YY_NULLPTR nullptr
+# ifndef YY_CAST
+#  ifdef __cplusplus
+#   define YY_CAST(Type, Val) static_cast<Type> (Val)
+#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
 #  else
-#   define YY_NULLPTR 0
+#   define YY_CAST(Type, Val) ((Type) (Val))
+#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+#  endif
+# endif
+# ifndef YY_NULLPTR
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTR nullptr
+#   else
+#    define YY_NULLPTR 0
+#   endif
+#  else
+#   define YY_NULLPTR ((void*)0)
 #  endif
 # endif
 
@@ -422,10 +438,9 @@
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
 union YYSTYPE
 {
-#line 129 "parser.y" /* yacc.c:355  */
+#line 129 "parser.y"
 
 	attr_t *attr;
 	attr_list_t *attr_list;
@@ -454,9 +469,9 @@
 	enum type_qualifier type_qualifier;
 	enum function_specifier function_specifier;
 
-#line 458 "parser.tab.c" /* yacc.c:355  */
-};
+#line 473 "parser.tab.c"
 
+};
 typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
@@ -469,44 +484,89 @@
 
 
 
-/* Copy the second part of user declarations.  */
 
-#line 475 "parser.tab.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
 #endif
 
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
+/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
+   <limits.h> and (if available) <stdint.h> are included
+   so that the code can choose integer types of a good width.  */
+
+#ifndef __PTRDIFF_MAX__
+# include <limits.h> /* INFRINGES ON USER NAME SPACE */
+# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
+#  define YY_STDINT_H
+# endif
 #endif
 
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
+/* Narrow types that promote to a signed type and that can represent a
+   signed or unsigned integer of at least N bits.  In tables they can
+   save space and decrease cache pressure.  Promoting to a signed type
+   helps avoid bugs in integer arithmetic.  */
+
+#ifdef __INT_LEAST8_MAX__
+typedef __INT_LEAST8_TYPE__ yytype_int8;
+#elif defined YY_STDINT_H
+typedef int_least8_t yytype_int8;
 #else
 typedef signed char yytype_int8;
 #endif
 
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short yytype_uint16;
-#endif
-
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
+#ifdef __INT_LEAST16_MAX__
+typedef __INT_LEAST16_TYPE__ yytype_int16;
+#elif defined YY_STDINT_H
+typedef int_least16_t yytype_int16;
 #else
 typedef short yytype_int16;
 #endif
 
+#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST8_TYPE__ yytype_uint8;
+#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST8_MAX <= INT_MAX)
+typedef uint_least8_t yytype_uint8;
+#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
+typedef unsigned char yytype_uint8;
+#else
+typedef short yytype_uint8;
+#endif
+
+#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST16_TYPE__ yytype_uint16;
+#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST16_MAX <= INT_MAX)
+typedef uint_least16_t yytype_uint16;
+#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
+typedef unsigned short yytype_uint16;
+#else
+typedef int yytype_uint16;
+#endif
+
+#ifndef YYPTRDIFF_T
+# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
+#  define YYPTRDIFF_T __PTRDIFF_TYPE__
+#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
+# elif defined PTRDIFF_MAX
+#  ifndef ptrdiff_t
+#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  endif
+#  define YYPTRDIFF_T ptrdiff_t
+#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
+# else
+#  define YYPTRDIFF_T long
+#  define YYPTRDIFF_MAXIMUM LONG_MAX
+# endif
+#endif
+
 #ifndef YYSIZE_T
 # ifdef __SIZE_TYPE__
 #  define YYSIZE_T __SIZE_TYPE__
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T
+# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
@@ -514,7 +574,19 @@
 # endif
 #endif
 
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+#define YYSIZE_MAXIMUM                                  \
+  YY_CAST (YYPTRDIFF_T,                                 \
+           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
+            ? YYPTRDIFF_MAXIMUM                         \
+            : YY_CAST (YYSIZE_T, -1)))
+
+#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
+
+/* Stored state numbers (used for stacks). */
+typedef yytype_int16 yy_state_t;
+
+/* State numbers in computations.  */
+typedef int yy_state_fast_t;
 
 #ifndef YY_
 # if defined YYENABLE_NLS && YYENABLE_NLS
@@ -528,30 +600,19 @@
 # endif
 #endif
 
-#ifndef YY_ATTRIBUTE
-# if (defined __GNUC__                                               \
-      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
-     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
-#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+#ifndef YY_ATTRIBUTE_PURE
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
 # else
-#  define YY_ATTRIBUTE(Spec) /* empty */
+#  define YY_ATTRIBUTE_PURE
 # endif
 #endif
 
-#ifndef YY_ATTRIBUTE_PURE
-# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
-#endif
-
 #ifndef YY_ATTRIBUTE_UNUSED
-# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
-#endif
-
-#if !defined _Noreturn \
-     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
-# if defined _MSC_VER && 1200 <= _MSC_VER
-#  define _Noreturn __declspec (noreturn)
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
 # else
-#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+#  define YY_ATTRIBUTE_UNUSED
 # endif
 #endif
 
@@ -564,11 +625,11 @@
 
 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
-    _Pragma ("GCC diagnostic push") \
-    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
+    _Pragma ("GCC diagnostic push")                                     \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
     _Pragma ("GCC diagnostic pop")
 #else
 # define YY_INITIAL_VALUE(Value) Value
@@ -581,6 +642,20 @@
 # define YY_INITIAL_VALUE(Value) /* Nothing. */
 #endif
 
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN                          \
+    _Pragma ("GCC diagnostic push")                            \
+    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END            \
+    _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
+
+
+#define YY_ASSERT(E) ((void) (0 && (E)))
 
 #if ! defined yyoverflow || YYERROR_VERBOSE
 
@@ -657,17 +732,17 @@
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss_alloc;
+  yy_state_t yyss_alloc;
   YYSTYPE yyvs_alloc;
 };
 
 /* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
 
 /* The size of an array large to enough to hold all stacks, each with
    N elements.  */
 # define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
       + YYSTACK_GAP_MAXIMUM)
 
 # define YYCOPY_NEEDED 1
@@ -680,11 +755,11 @@
 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
     do                                                                  \
       {                                                                 \
-        YYSIZE_T yynewbytes;                                            \
+        YYPTRDIFF_T yynewbytes;                                         \
         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
         Stack = &yyptr->Stack_alloc;                                    \
-        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-        yyptr += yynewbytes / sizeof (*yyptr);                          \
+        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
       }                                                                 \
     while (0)
 
@@ -696,12 +771,12 @@
 # ifndef YYCOPY
 #  if defined __GNUC__ && 1 < __GNUC__
 #   define YYCOPY(Dst, Src, Count) \
-      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
 #  else
 #   define YYCOPY(Dst, Src, Count)              \
       do                                        \
         {                                       \
-          YYSIZE_T yyi;                         \
+          YYPTRDIFF_T yyi;                      \
           for (yyi = 0; yyi < (Count); yyi++)   \
             (Dst)[yyi] = (Src)[yyi];            \
         }                                       \
@@ -724,16 +799,17 @@
 /* YYNSTATES -- Number of states.  */
 #define YYNSTATES  718
 
-/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
-   by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
 #define YYMAXUTOK   443
 
+
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, with out-of-bounds checking.  */
 #define YYTRANSLATE(YYX)                                                \
-  ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+  (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
-   as returned by yylex, without out-of-bounds checking.  */
+   as returned by yylex.  */
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -785,7 +861,7 @@
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
+static const yytype_int16 yyrline[] =
 {
        0,   315,   315,   329,   329,   331,   332,   332,   334,   335,
      336,   339,   342,   343,   344,   347,   348,   349,   349,   351,
@@ -826,8 +902,8 @@
     1043,  1044,  1045,  1049,  1056,  1057,  1060,  1061,  1064,  1071,
     1072,  1077,  1078,  1082,  1083,  1084,  1085,  1086,  1090,  1091,
     1092,  1095,  1098,  1099,  1100,  1101,  1102,  1103,  1104,  1105,
-    1106,  1107,  1110,  1117,  1119,  1125,  1126,  1127,  1130,  1132,
-    1134,  1136,  1139,  1144,  1152,  1153,  1156,  1157,  1160,  1161,
+    1106,  1107,  1110,  1117,  1119,  1125,  1126,  1127,  1131,  1132,
+    1135,  1136,  1139,  1144,  1152,  1153,  1156,  1157,  1160,  1161,
     1162
 };
 #endif
@@ -907,7 +983,7 @@
 # ifdef YYPRINT
 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
    (internal) symbol number NUM (which must be that of a token).  */
-static const yytype_uint16 yytoknum[] =
+static const yytype_int16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
@@ -934,14 +1010,14 @@
 };
 # endif
 
-#define YYPACT_NINF -560
+#define YYPACT_NINF (-560)
 
-#define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-560)))
+#define yypact_value_is_default(Yyn) \
+  ((Yyn) == YYPACT_NINF)
 
-#define YYTABLE_NINF -405
+#define YYTABLE_NINF (-405)
 
-#define yytable_value_is_error(Yytable_value) \
+#define yytable_value_is_error(Yyn) \
   0
 
   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -1025,7 +1101,7 @@
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
      Performed when YYTABLE does not specify something else to do.  Zero
      means the default is an error.  */
-static const yytype_uint16 yydefact[] =
+static const yytype_int16 yydefact[] =
 {
        5,     0,     3,     1,    35,   383,   398,   273,   265,   284,
        0,   322,     0,     0,   272,   260,   274,   318,   271,   275,
@@ -1758,7 +1834,7 @@
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
-static const yytype_uint16 yystos[] =
+static const yytype_int16 yystos[] =
 {
        0,   214,   216,     0,     4,     5,    14,    33,    35,    41,
       42,    45,    50,    59,    61,    67,    68,    70,    74,    77,
@@ -1835,7 +1911,7 @@
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint16 yyr1[] =
+static const yytype_int16 yyr1[] =
 {
        0,   213,   214,   215,   215,   216,   217,   216,   216,   216,
      216,   216,   216,   216,   216,   218,   218,   219,   218,   218,
@@ -1882,7 +1958,7 @@
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
+static const yytype_int8 yyr2[] =
 {
        0,     2,     2,     0,     2,     0,     0,     6,     2,     2,
        3,     2,     2,     2,     2,     0,     2,     0,     6,     2,
@@ -1941,22 +2017,22 @@
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
-#define YYBACKUP(Token, Value)                                  \
-do                                                              \
-  if (yychar == YYEMPTY)                                        \
-    {                                                           \
-      yychar = (Token);                                         \
-      yylval = (Value);                                         \
-      YYPOPSTACK (yylen);                                       \
-      yystate = *yyssp;                                         \
-      goto yybackup;                                            \
-    }                                                           \
-  else                                                          \
-    {                                                           \
-      yyerror (YY_("syntax error: cannot back up")); \
-      YYERROR;                                                  \
-    }                                                           \
-while (0)
+#define YYBACKUP(Token, Value)                                    \
+  do                                                              \
+    if (yychar == YYEMPTY)                                        \
+      {                                                           \
+        yychar = (Token);                                         \
+        yylval = (Value);                                         \
+        YYPOPSTACK (yylen);                                       \
+        yystate = *yyssp;                                         \
+        goto yybackup;                                            \
+      }                                                           \
+    else                                                          \
+      {                                                           \
+        yyerror (YY_("syntax error: cannot back up")); \
+        YYERROR;                                                  \
+      }                                                           \
+  while (0)
 
 /* Error token number */
 #define YYTERROR        1
@@ -1996,37 +2072,39 @@
 } while (0)
 
 
-/*----------------------------------------.
-| Print this symbol's value on YYOUTPUT.  |
-`----------------------------------------*/
+/*-----------------------------------.
+| Print this symbol's value on YYO.  |
+`-----------------------------------*/
 
 static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
 {
-  FILE *yyo = yyoutput;
-  YYUSE (yyo);
+  FILE *yyoutput = yyo;
+  YYUSE (yyoutput);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
   if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+    YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
 # endif
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   YYUSE (yytype);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO.  |
+`---------------------------*/
 
 static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
 {
-  YYFPRINTF (yyoutput, "%s %s (",
+  YYFPRINTF (yyo, "%s %s (",
              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
 
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-  YYFPRINTF (yyoutput, ")");
+  yy_symbol_value_print (yyo, yytype, yyvaluep);
+  YYFPRINTF (yyo, ")");
 }
 
 /*------------------------------------------------------------------.
@@ -2035,7 +2113,7 @@
 `------------------------------------------------------------------*/
 
 static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
 {
   YYFPRINTF (stderr, "Stack now");
   for (; yybottom <= yytop; yybottom++)
@@ -2058,20 +2136,20 @@
 `------------------------------------------------*/
 
 static void
-yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule)
 {
-  unsigned long yylno = yyrline[yyrule];
+  int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
              yyrule - 1, yylno);
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
       yy_symbol_print (stderr,
-                       yystos[yyssp[yyi + 1 - yynrhs]],
-                       &(yyvsp[(yyi + 1) - (yynrhs)])
+                       yystos[+yyssp[yyi + 1 - yynrhs]],
+                       &yyvsp[(yyi + 1) - (yynrhs)]
                                               );
       YYFPRINTF (stderr, "\n");
     }
@@ -2115,13 +2193,13 @@
 
 # ifndef yystrlen
 #  if defined __GLIBC__ && defined _STRING_H
-#   define yystrlen strlen
+#   define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
 #  else
 /* Return the length of YYSTR.  */
-static YYSIZE_T
+static YYPTRDIFF_T
 yystrlen (const char *yystr)
 {
-  YYSIZE_T yylen;
+  YYPTRDIFF_T yylen;
   for (yylen = 0; yystr[yylen]; yylen++)
     continue;
   return yylen;
@@ -2157,12 +2235,12 @@
    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
    null, do not copy; instead, return the length of what the result
    would have been.  */
-static YYSIZE_T
+static YYPTRDIFF_T
 yytnamerr (char *yyres, const char *yystr)
 {
   if (*yystr == '"')
     {
-      YYSIZE_T yyn = 0;
+      YYPTRDIFF_T yyn = 0;
       char const *yyp = yystr;
 
       for (;;)
@@ -2175,7 +2253,10 @@
           case '\\':
             if (*++yyp != '\\')
               goto do_not_strip_quotes;
-            /* Fall through.  */
+            else
+              goto append;
+
+          append:
           default:
             if (yyres)
               yyres[yyn] = *yyp;
@@ -2190,10 +2271,10 @@
     do_not_strip_quotes: ;
     }
 
-  if (! yyres)
+  if (yyres)
+    return yystpcpy (yyres, yystr) - yyres;
+  else
     return yystrlen (yystr);
-
-  return yystpcpy (yyres, yystr) - yyres;
 }
 # endif
 
@@ -2206,19 +2287,19 @@
    *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
    required number of bytes is too large to store.  */
 static int
-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
-                yytype_int16 *yyssp, int yytoken)
+yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
+                yy_state_t *yyssp, int yytoken)
 {
-  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
-  YYSIZE_T yysize = yysize0;
   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
   /* Internationalized format string. */
   const char *yyformat = YY_NULLPTR;
-  /* Arguments of yyformat. */
+  /* Arguments of yyformat: reported tokens (one for the "unexpected",
+     one per "expected"). */
   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-  /* Number of reported tokens (one for the "unexpected", one per
-     "expected"). */
+  /* Actual size of YYARG. */
   int yycount = 0;
+  /* Cumulated lengths of YYARG.  */
+  YYPTRDIFF_T yysize = 0;
 
   /* There are many possibilities here to consider:
      - If this state is a consistent state with a default action, then
@@ -2245,7 +2326,9 @@
   */
   if (yytoken != YYEMPTY)
     {
-      int yyn = yypact[*yyssp];
+      int yyn = yypact[+*yyssp];
+      YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
+      yysize = yysize0;
       yyarg[yycount++] = yytname[yytoken];
       if (!yypact_value_is_default (yyn))
         {
@@ -2270,11 +2353,12 @@
                   }
                 yyarg[yycount++] = yytname[yyx];
                 {
-                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
-                  if (! (yysize <= yysize1
-                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+                  YYPTRDIFF_T yysize1
+                    = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
+                  if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
+                    yysize = yysize1;
+                  else
                     return 2;
-                  yysize = yysize1;
                 }
               }
         }
@@ -2297,10 +2381,13 @@
     }
 
   {
-    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
-    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+    /* Don't count the "%s"s in the final size, but reserve room for
+       the terminator.  */
+    YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1;
+    if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
+      yysize = yysize1;
+    else
       return 2;
-    yysize = yysize1;
   }
 
   if (*yymsg_alloc < yysize)
@@ -2326,8 +2413,8 @@
         }
       else
         {
-          yyp++;
-          yyformat++;
+          ++yyp;
+          ++yyformat;
         }
   }
   return 0;
@@ -2370,7 +2457,7 @@
 int
 yyparse (void)
 {
-    int yystate;
+    yy_state_fast_t yystate;
     /* Number of tokens to shift before error messages enabled.  */
     int yyerrstatus;
 
@@ -2382,16 +2469,16 @@
        to reallocate them elsewhere.  */
 
     /* The state stack.  */
-    yytype_int16 yyssa[YYINITDEPTH];
-    yytype_int16 *yyss;
-    yytype_int16 *yyssp;
+    yy_state_t yyssa[YYINITDEPTH];
+    yy_state_t *yyss;
+    yy_state_t *yyssp;
 
     /* The semantic value stack.  */
     YYSTYPE yyvsa[YYINITDEPTH];
     YYSTYPE *yyvs;
     YYSTYPE *yyvsp;
 
-    YYSIZE_T yystacksize;
+    YYPTRDIFF_T yystacksize;
 
   int yyn;
   int yyresult;
@@ -2405,7 +2492,7 @@
   /* Buffer for error messages, and its allocated size.  */
   char yymsgbuf[128];
   char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+  YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
 #endif
 
 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
@@ -2426,46 +2513,54 @@
   yychar = YYEMPTY; /* Cause a token to be read.  */
   goto yysetstate;
 
+
 /*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
+| yynewstate -- push a new state, which is found in yystate.  |
 `------------------------------------------------------------*/
- yynewstate:
+yynewstate:
   /* In all cases, when you get here, the value and location stacks
      have just been pushed.  So pushing a state here evens the stacks.  */
   yyssp++;
 
- yysetstate:
-  *yyssp = yystate;
+
+/*--------------------------------------------------------------------.
+| yysetstate -- set current state (the top of the stack) to yystate.  |
+`--------------------------------------------------------------------*/
+yysetstate:
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+  YY_IGNORE_USELESS_CAST_BEGIN
+  *yyssp = YY_CAST (yy_state_t, yystate);
+  YY_IGNORE_USELESS_CAST_END
 
   if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+    goto yyexhaustedlab;
+#else
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      YYPTRDIFF_T yysize = yyssp - yyss + 1;
 
-#ifdef yyoverflow
+# if defined yyoverflow
       {
         /* Give user a chance to reallocate the stack.  Use copies of
            these so that the &'s don't force the real ones into
            memory.  */
+        yy_state_t *yyss1 = yyss;
         YYSTYPE *yyvs1 = yyvs;
-        yytype_int16 *yyss1 = yyss;
 
         /* Each stack pointer address is followed by the size of the
            data in use in that stack, in bytes.  This used to be a
            conditional around just the two extra args, but that might
            be undefined if yyoverflow is a macro.  */
         yyoverflow (YY_("memory exhausted"),
-                    &yyss1, yysize * sizeof (*yyssp),
-                    &yyvs1, yysize * sizeof (*yyvsp),
+                    &yyss1, yysize * YYSIZEOF (*yyssp),
+                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
                     &yystacksize);
-
         yyss = yyss1;
         yyvs = yyvs1;
       }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
+# else /* defined YYSTACK_RELOCATE */
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
         goto yyexhaustedlab;
@@ -2474,42 +2569,43 @@
         yystacksize = YYMAXDEPTH;
 
       {
-        yytype_int16 *yyss1 = yyss;
+        yy_state_t *yyss1 = yyss;
         union yyalloc *yyptr =
-          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+          YY_CAST (union yyalloc *,
+                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
         if (! yyptr)
           goto yyexhaustedlab;
         YYSTACK_RELOCATE (yyss_alloc, yyss);
         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
-#  undef YYSTACK_RELOCATE
+# undef YYSTACK_RELOCATE
         if (yyss1 != yyssa)
           YYSTACK_FREE (yyss1);
       }
 # endif
-#endif /* no yyoverflow */
 
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                  (unsigned long) yystacksize));
+      YY_IGNORE_USELESS_CAST_BEGIN
+      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
+                  YY_CAST (long, yystacksize)));
+      YY_IGNORE_USELESS_CAST_END
 
       if (yyss + yystacksize - 1 <= yyssp)
         YYABORT;
     }
-
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 
   if (yystate == YYFINAL)
     YYACCEPT;
 
   goto yybackup;
 
+
 /*-----------.
 | yybackup.  |
 `-----------*/
 yybackup:
-
   /* Do appropriate processing given the current state.  Read a
      lookahead token if we need one and don't already have one.  */
 
@@ -2559,15 +2655,13 @@
 
   /* Shift the lookahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
-
   yystate = yyn;
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
   YY_IGNORE_MAYBE_UNINITIALIZED_END
 
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
   goto yynewstate;
 
 
@@ -2582,7 +2676,7 @@
 
 
 /*-----------------------------.
-| yyreduce -- Do a reduction.  |
+| yyreduce -- do a reduction.  |
 `-----------------------------*/
 yyreduce:
   /* yyn is the number of a rule to reduce with.  */
@@ -2602,9 +2696,9 @@
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 2:
-#line 315 "parser.y" /* yacc.c:1651  */
-    { check_statements((yyvsp[-1].stmt_list), FALSE);
+  case 2:
+#line 315 "parser.y"
+                                                { check_statements((yyvsp[-1].stmt_list), FALSE);
 						  check_all_user_types((yyvsp[-1].stmt_list));
 						  write_header((yyvsp[-1].stmt_list));
 						  write_id_data((yyvsp[-1].stmt_list));
@@ -2616,1108 +2710,1108 @@
 						  write_dlldata((yyvsp[-1].stmt_list));
 						  write_local_stubs((yyvsp[-1].stmt_list));
 						}
-#line 2620 "parser.tab.c" /* yacc.c:1651  */
+#line 2714 "parser.tab.c"
     break;
 
   case 5:
-#line 331 "parser.y" /* yacc.c:1651  */
-    { (yyval.stmt_list) = NULL; }
-#line 2626 "parser.tab.c" /* yacc.c:1651  */
+#line 331 "parser.y"
+                                                { (yyval.stmt_list) = NULL; }
+#line 2720 "parser.tab.c"
     break;
 
   case 6:
-#line 332 "parser.y" /* yacc.c:1651  */
-    { push_namespace((yyvsp[-1].str)); }
-#line 2632 "parser.tab.c" /* yacc.c:1651  */
+#line 332 "parser.y"
+                                          { push_namespace((yyvsp[-1].str)); }
+#line 2726 "parser.tab.c"
     break;
 
   case 7:
-#line 333 "parser.y" /* yacc.c:1651  */
-    { pop_namespace((yyvsp[-4].str)); (yyval.stmt_list) = append_statements((yyvsp[-5].stmt_list), (yyvsp[-1].stmt_list)); }
-#line 2638 "parser.tab.c" /* yacc.c:1651  */
+#line 333 "parser.y"
+                                                { pop_namespace((yyvsp[-4].str)); (yyval.stmt_list) = append_statements((yyvsp[-5].stmt_list), (yyvsp[-1].stmt_list)); }
+#line 2732 "parser.tab.c"
     break;
 
   case 8:
-#line 334 "parser.y" /* yacc.c:1651  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_reference((yyvsp[0].type))); }
-#line 2644 "parser.tab.c" /* yacc.c:1651  */
+#line 334 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_reference((yyvsp[0].type))); }
+#line 2738 "parser.tab.c"
     break;
 
   case 9:
-#line 335 "parser.y" /* yacc.c:1651  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); }
-#line 2650 "parser.tab.c" /* yacc.c:1651  */
+#line 335 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); }
+#line 2744 "parser.tab.c"
     break;
 
   case 10:
-#line 336 "parser.y" /* yacc.c:1651  */
-    { (yyval.stmt_list) = (yyvsp[-2].stmt_list);
+#line 336 "parser.y"
+                                                { (yyval.stmt_list) = (yyvsp[-2].stmt_list);
 						  reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, current_namespace, 0);
 						}
-#line 2658 "parser.tab.c" /* yacc.c:1651  */
+#line 2752 "parser.tab.c"
     break;
 
   case 11:
-#line 339 "parser.y" /* yacc.c:1651  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type)));
+#line 339 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type)));
 						  reg_type((yyvsp[0].type), (yyvsp[0].type)->name, current_namespace, 0);
 						}
-#line 2666 "parser.tab.c" /* yacc.c:1651  */
+#line 2760 "parser.tab.c"
     break;
 
   case 12:
-#line 342 "parser.y" /* yacc.c:1651  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_module((yyvsp[0].type))); }
-#line 2672 "parser.tab.c" /* yacc.c:1651  */
+#line 342 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_module((yyvsp[0].type))); }
+#line 2766 "parser.tab.c"
     break;
 
   case 13:
-#line 343 "parser.y" /* yacc.c:1651  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_library((yyvsp[0].typelib))); }
-#line 2678 "parser.tab.c" /* yacc.c:1651  */
+#line 343 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_library((yyvsp[0].typelib))); }
+#line 2772 "parser.tab.c"
     break;
 
   case 14:
-#line 344 "parser.y" /* yacc.c:1651  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
-#line 2684 "parser.tab.c" /* yacc.c:1651  */
+#line 344 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
+#line 2778 "parser.tab.c"
     break;
 
   case 15:
-#line 347 "parser.y" /* yacc.c:1651  */
-    { (yyval.stmt_list) = NULL; }
-#line 2690 "parser.tab.c" /* yacc.c:1651  */
+#line 347 "parser.y"
+                                                { (yyval.stmt_list) = NULL; }
+#line 2784 "parser.tab.c"
     break;
 
   case 16:
-#line 348 "parser.y" /* yacc.c:1651  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_reference((yyvsp[0].type))); }
-#line 2696 "parser.tab.c" /* yacc.c:1651  */
+#line 348 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_reference((yyvsp[0].type))); }
+#line 2790 "parser.tab.c"
     break;
 
   case 17:
-#line 349 "parser.y" /* yacc.c:1651  */
-    { push_namespace((yyvsp[-1].str)); }
-#line 2702 "parser.tab.c" /* yacc.c:1651  */
+#line 349 "parser.y"
+                                          { push_namespace((yyvsp[-1].str)); }
+#line 2796 "parser.tab.c"
     break;
 
   case 18:
-#line 350 "parser.y" /* yacc.c:1651  */
-    { pop_namespace((yyvsp[-4].str)); (yyval.stmt_list) = append_statements((yyvsp[-5].stmt_list), (yyvsp[-1].stmt_list)); }
-#line 2708 "parser.tab.c" /* yacc.c:1651  */
+#line 350 "parser.y"
+                                                { pop_namespace((yyvsp[-4].str)); (yyval.stmt_list) = append_statements((yyvsp[-5].stmt_list), (yyvsp[-1].stmt_list)); }
+#line 2802 "parser.tab.c"
     break;
 
   case 19:
-#line 351 "parser.y" /* yacc.c:1651  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); }
-#line 2714 "parser.tab.c" /* yacc.c:1651  */
+#line 351 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); }
+#line 2808 "parser.tab.c"
     break;
 
   case 20:
-#line 352 "parser.y" /* yacc.c:1651  */
-    { (yyval.stmt_list) = (yyvsp[-2].stmt_list); reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, current_namespace, 0); }
-#line 2720 "parser.tab.c" /* yacc.c:1651  */
+#line 352 "parser.y"
+                                                { (yyval.stmt_list) = (yyvsp[-2].stmt_list); reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, current_namespace, 0); }
+#line 2814 "parser.tab.c"
     break;
 
   case 21:
-#line 353 "parser.y" /* yacc.c:1651  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type)));
+#line 353 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type)));
 						  reg_type((yyvsp[0].type), (yyvsp[0].type)->name, current_namespace, 0);
 						}
-#line 2728 "parser.tab.c" /* yacc.c:1651  */
+#line 2822 "parser.tab.c"
     break;
 
   case 22:
-#line 356 "parser.y" /* yacc.c:1651  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_module((yyvsp[0].type))); }
-#line 2734 "parser.tab.c" /* yacc.c:1651  */
+#line 356 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_module((yyvsp[0].type))); }
+#line 2828 "parser.tab.c"
     break;
 
   case 23:
-#line 357 "parser.y" /* yacc.c:1651  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
-#line 2740 "parser.tab.c" /* yacc.c:1651  */
+#line 357 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
+#line 2834 "parser.tab.c"
     break;
 
   case 24:
-#line 358 "parser.y" /* yacc.c:1651  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_importlib((yyvsp[0].str))); }
-#line 2746 "parser.tab.c" /* yacc.c:1651  */
+#line 358 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_importlib((yyvsp[0].str))); }
+#line 2840 "parser.tab.c"
     break;
 
   case 25:
-#line 359 "parser.y" /* yacc.c:1651  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_library((yyvsp[0].typelib))); }
-#line 2752 "parser.tab.c" /* yacc.c:1651  */
+#line 359 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_library((yyvsp[0].typelib))); }
+#line 2846 "parser.tab.c"
     break;
 
   case 26:
-#line 362 "parser.y" /* yacc.c:1651  */
-    { (yyval.stmt_list) = NULL; }
-#line 2758 "parser.tab.c" /* yacc.c:1651  */
+#line 362 "parser.y"
+                                                { (yyval.stmt_list) = NULL; }
+#line 2852 "parser.tab.c"
     break;
 
   case 27:
-#line 363 "parser.y" /* yacc.c:1651  */
-    { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
-#line 2764 "parser.tab.c" /* yacc.c:1651  */
+#line 363 "parser.y"
+                                                { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); }
+#line 2858 "parser.tab.c"
     break;
 
   case 30:
-#line 371 "parser.y" /* yacc.c:1651  */
-    { (yyval.statement) = make_statement_cppquote((yyvsp[0].str)); }
-#line 2770 "parser.tab.c" /* yacc.c:1651  */
+#line 371 "parser.y"
+                                                { (yyval.statement) = make_statement_cppquote((yyvsp[0].str)); }
+#line 2864 "parser.tab.c"
     break;
 
   case 31:
-#line 372 "parser.y" /* yacc.c:1651  */
-    { (yyval.statement) = make_statement_type_decl((yyvsp[-1].type)); }
-#line 2776 "parser.tab.c" /* yacc.c:1651  */
+#line 372 "parser.y"
+                                                { (yyval.statement) = make_statement_type_decl((yyvsp[-1].type)); }
+#line 2870 "parser.tab.c"
     break;
 
   case 32:
-#line 373 "parser.y" /* yacc.c:1651  */
-    { (yyval.statement) = make_statement_declaration((yyvsp[-1].var)); }
-#line 2782 "parser.tab.c" /* yacc.c:1651  */
+#line 373 "parser.y"
+                                                { (yyval.statement) = make_statement_declaration((yyvsp[-1].var)); }
+#line 2876 "parser.tab.c"
     break;
 
   case 33:
-#line 374 "parser.y" /* yacc.c:1651  */
-    { (yyval.statement) = make_statement_import((yyvsp[0].str)); }
-#line 2788 "parser.tab.c" /* yacc.c:1651  */
+#line 374 "parser.y"
+                                                { (yyval.statement) = make_statement_import((yyvsp[0].str)); }
+#line 2882 "parser.tab.c"
     break;
 
   case 34:
-#line 375 "parser.y" /* yacc.c:1651  */
-    { (yyval.statement) = (yyvsp[-1].statement); }
-#line 2794 "parser.tab.c" /* yacc.c:1651  */
+#line 375 "parser.y"
+                                                { (yyval.statement) = (yyvsp[-1].statement); }
+#line 2888 "parser.tab.c"
     break;
 
   case 35:
-#line 376 "parser.y" /* yacc.c:1651  */
-    { (yyval.statement) = make_statement_pragma((yyvsp[0].str)); }
-#line 2800 "parser.tab.c" /* yacc.c:1651  */
+#line 376 "parser.y"
+                                                { (yyval.statement) = make_statement_pragma((yyvsp[0].str)); }
+#line 2894 "parser.tab.c"
     break;
 
   case 36:
-#line 377 "parser.y" /* yacc.c:1651  */
-    { (yyval.statement) = NULL; }
-#line 2806 "parser.tab.c" /* yacc.c:1651  */
+#line 377 "parser.y"
+                         { (yyval.statement) = NULL; }
+#line 2900 "parser.tab.c"
     break;
 
   case 37:
-#line 381 "parser.y" /* yacc.c:1651  */
-    {
+#line 381 "parser.y"
+                  {
                       int result;
                       (yyval.statement) = NULL;
                       result = do_warning((yyvsp[-3].str), (yyvsp[-1].warning_list));
                       if(!result)
                           error_loc("expected \"disable\" or \"enable\"\n");
                   }
-#line 2818 "parser.tab.c" /* yacc.c:1651  */
+#line 2912 "parser.tab.c"
     break;
 
   case 38:
-#line 391 "parser.y" /* yacc.c:1651  */
-    { (yyval.warning_list) = append_warning(NULL, (yyvsp[0].num)); }
-#line 2824 "parser.tab.c" /* yacc.c:1651  */
+#line 391 "parser.y"
+               { (yyval.warning_list) = append_warning(NULL, (yyvsp[0].num)); }
+#line 2918 "parser.tab.c"
     break;
 
   case 39:
-#line 392 "parser.y" /* yacc.c:1651  */
-    { (yyval.warning_list) = append_warning((yyvsp[-1].warning_list), (yyvsp[0].num)); }
-#line 2830 "parser.tab.c" /* yacc.c:1651  */
+#line 392 "parser.y"
+                        { (yyval.warning_list) = append_warning((yyvsp[-1].warning_list), (yyvsp[0].num)); }
+#line 2924 "parser.tab.c"
     break;
 
   case 41:
-#line 397 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_enum((yyvsp[0].str), current_namespace, FALSE, NULL); }
-#line 2836 "parser.tab.c" /* yacc.c:1651  */
+#line 397 "parser.y"
+                                                { (yyval.type) = type_new_enum((yyvsp[0].str), current_namespace, FALSE, NULL); }
+#line 2930 "parser.tab.c"
     break;
 
   case 43:
-#line 399 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_struct((yyvsp[0].str), current_namespace, FALSE, NULL); }
-#line 2842 "parser.tab.c" /* yacc.c:1651  */
+#line 399 "parser.y"
+                                                { (yyval.type) = type_new_struct((yyvsp[0].str), current_namespace, FALSE, NULL); }
+#line 2936 "parser.tab.c"
     break;
 
   case 45:
-#line 401 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[0].str), FALSE, NULL); }
-#line 2848 "parser.tab.c" /* yacc.c:1651  */
+#line 401 "parser.y"
+                                                { (yyval.type) = type_new_nonencapsulated_union((yyvsp[0].str), FALSE, NULL); }
+#line 2942 "parser.tab.c"
     break;
 
   case 46:
-#line 402 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_enum_attrs((yyvsp[-1].attr_list)); }
-#line 2854 "parser.tab.c" /* yacc.c:1651  */
+#line 402 "parser.y"
+                                                { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_enum_attrs((yyvsp[-1].attr_list)); }
+#line 2948 "parser.tab.c"
     break;
 
   case 47:
-#line 403 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_struct_attrs((yyvsp[-1].attr_list)); }
-#line 2860 "parser.tab.c" /* yacc.c:1651  */
+#line 403 "parser.y"
+                                                { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_struct_attrs((yyvsp[-1].attr_list)); }
+#line 2954 "parser.tab.c"
     break;
 
   case 48:
-#line 404 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_union_attrs((yyvsp[-1].attr_list)); }
-#line 2866 "parser.tab.c" /* yacc.c:1651  */
+#line 404 "parser.y"
+                                                { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_union_attrs((yyvsp[-1].attr_list)); }
+#line 2960 "parser.tab.c"
     break;
 
   case 49:
-#line 407 "parser.y" /* yacc.c:1651  */
-    { (yyval.str) = (yyvsp[-1].str); }
-#line 2872 "parser.tab.c" /* yacc.c:1651  */
+#line 407 "parser.y"
+                                                { (yyval.str) = (yyvsp[-1].str); }
+#line 2966 "parser.tab.c"
     break;
 
   case 50:
-#line 409 "parser.y" /* yacc.c:1651  */
-    { assert(yychar == YYEMPTY);
+#line 409 "parser.y"
+                                                { assert(yychar == YYEMPTY);
 						  (yyval.import) = xmalloc(sizeof(struct _import_t));
 						  (yyval.import)->name = (yyvsp[-1].str);
 						  (yyval.import)->import_performed = do_import((yyvsp[-1].str));
 						  if (!(yyval.import)->import_performed) yychar = aEOF;
 						}
-#line 2883 "parser.tab.c" /* yacc.c:1651  */
+#line 2977 "parser.tab.c"
     break;
 
   case 51:
-#line 417 "parser.y" /* yacc.c:1651  */
-    { (yyval.str) = (yyvsp[-2].import)->name;
+#line 417 "parser.y"
+                                                { (yyval.str) = (yyvsp[-2].import)->name;
 						  if ((yyvsp[-2].import)->import_performed) pop_import();
 						  free((yyvsp[-2].import));
 						}
-#line 2892 "parser.tab.c" /* yacc.c:1651  */
+#line 2986 "parser.tab.c"
     break;
 
   case 52:
-#line 424 "parser.y" /* yacc.c:1651  */
-    { (yyval.str) = (yyvsp[-2].str); if(!parse_only) add_importlib((yyvsp[-2].str), current_typelib); }
-#line 2898 "parser.tab.c" /* yacc.c:1651  */
+#line 424 "parser.y"
+                                                { (yyval.str) = (yyvsp[-2].str); if(!parse_only) add_importlib((yyvsp[-2].str), current_typelib); }
+#line 2992 "parser.tab.c"
     break;
 
   case 53:
-#line 427 "parser.y" /* yacc.c:1651  */
-    { (yyval.str) = (yyvsp[0].str); }
-#line 2904 "parser.tab.c" /* yacc.c:1651  */
+#line 427 "parser.y"
+                                                { (yyval.str) = (yyvsp[0].str); }
+#line 2998 "parser.tab.c"
     break;
 
   case 54:
-#line 428 "parser.y" /* yacc.c:1651  */
-    { (yyval.str) = (yyvsp[0].str); }
-#line 2910 "parser.tab.c" /* yacc.c:1651  */
+#line 428 "parser.y"
+                                                { (yyval.str) = (yyvsp[0].str); }
+#line 3004 "parser.tab.c"
     break;
 
   case 55:
-#line 430 "parser.y" /* yacc.c:1651  */
-    { (yyval.typelib) = make_library((yyvsp[-1].str), check_library_attrs((yyvsp[-1].str), (yyvsp[-2].attr_list)));
+#line 430 "parser.y"
+                                                { (yyval.typelib) = make_library((yyvsp[-1].str), check_library_attrs((yyvsp[-1].str), (yyvsp[-2].attr_list)));
 						  if (!parse_only && do_typelib) current_typelib = (yyval.typelib);
 						}
-#line 2918 "parser.tab.c" /* yacc.c:1651  */
+#line 3012 "parser.tab.c"
     break;
 
   case 56:
-#line 435 "parser.y" /* yacc.c:1651  */
-    { (yyval.typelib) = (yyvsp[-3].typelib); (yyval.typelib)->stmts = (yyvsp[-2].stmt_list); }
-#line 2924 "parser.tab.c" /* yacc.c:1651  */
+#line 435 "parser.y"
+                                                { (yyval.typelib) = (yyvsp[-3].typelib); (yyval.typelib)->stmts = (yyvsp[-2].stmt_list); }
+#line 3018 "parser.tab.c"
     break;
 
   case 57:
-#line 438 "parser.y" /* yacc.c:1651  */
-    { (yyval.var_list) = NULL; }
-#line 2930 "parser.tab.c" /* yacc.c:1651  */
+#line 438 "parser.y"
+                                                { (yyval.var_list) = NULL; }
+#line 3024 "parser.tab.c"
     break;
 
   case 59:
-#line 442 "parser.y" /* yacc.c:1651  */
-    { check_arg_attrs((yyvsp[0].var)); (yyval.var_list) = append_var( NULL, (yyvsp[0].var) ); }
-#line 2936 "parser.tab.c" /* yacc.c:1651  */
+#line 442 "parser.y"
+                                                { check_arg_attrs((yyvsp[0].var)); (yyval.var_list) = append_var( NULL, (yyvsp[0].var) ); }
+#line 3030 "parser.tab.c"
     break;
 
   case 60:
-#line 443 "parser.y" /* yacc.c:1651  */
-    { check_arg_attrs((yyvsp[0].var)); (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[0].var) ); }
-#line 2942 "parser.tab.c" /* yacc.c:1651  */
+#line 443 "parser.y"
+                                                { check_arg_attrs((yyvsp[0].var)); (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[0].var) ); }
+#line 3036 "parser.tab.c"
     break;
 
   case 62:
-#line 447 "parser.y" /* yacc.c:1651  */
-    { (yyval.var_list) = append_var( (yyvsp[-2].var_list), make_var(strdup("...")) ); }
-#line 2948 "parser.tab.c" /* yacc.c:1651  */
+#line 447 "parser.y"
+                                                { (yyval.var_list) = append_var( (yyvsp[-2].var_list), make_var(strdup("...")) ); }
+#line 3042 "parser.tab.c"
     break;
 
   case 63:
-#line 451 "parser.y" /* yacc.c:1651  */
-    { if ((yyvsp[-1].declspec)->stgclass != STG_NONE && (yyvsp[-1].declspec)->stgclass != STG_REGISTER)
+#line 451 "parser.y"
+                                                { if ((yyvsp[-1].declspec)->stgclass != STG_NONE && (yyvsp[-1].declspec)->stgclass != STG_REGISTER)
 						    error_loc("invalid storage class for function parameter\n");
 						  (yyval.var) = declare_var((yyvsp[-2].attr_list), (yyvsp[-1].declspec), (yyvsp[0].declarator), TRUE);
 						  free((yyvsp[-1].declspec)); free((yyvsp[0].declarator));
 						}
-#line 2958 "parser.tab.c" /* yacc.c:1651  */
+#line 3052 "parser.tab.c"
     break;
 
   case 64:
-#line 456 "parser.y" /* yacc.c:1651  */
-    { if ((yyvsp[-1].declspec)->stgclass != STG_NONE && (yyvsp[-1].declspec)->stgclass != STG_REGISTER)
+#line 456 "parser.y"
+                                                { if ((yyvsp[-1].declspec)->stgclass != STG_NONE && (yyvsp[-1].declspec)->stgclass != STG_REGISTER)
 						    error_loc("invalid storage class for function parameter\n");
 						  (yyval.var) = declare_var(NULL, (yyvsp[-1].declspec), (yyvsp[0].declarator), TRUE);
 						  free((yyvsp[-1].declspec)); free((yyvsp[0].declarator));
 						}
-#line 2968 "parser.tab.c" /* yacc.c:1651  */
+#line 3062 "parser.tab.c"
     break;
 
   case 65:
-#line 463 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = (yyvsp[-1].expr);
+#line 463 "parser.y"
+                                                { (yyval.expr) = (yyvsp[-1].expr);
 						  if (!(yyval.expr)->is_const || (yyval.expr)->cval <= 0)
 						      error_loc("array dimension is not a positive integer constant\n");
 						}
-#line 2977 "parser.tab.c" /* yacc.c:1651  */
+#line 3071 "parser.tab.c"
     break;
 
   case 66:
-#line 467 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr(EXPR_VOID); }
-#line 2983 "parser.tab.c" /* yacc.c:1651  */
+#line 467 "parser.y"
+                                                { (yyval.expr) = make_expr(EXPR_VOID); }
+#line 3077 "parser.tab.c"
     break;
 
   case 67:
-#line 468 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr(EXPR_VOID); }
-#line 2989 "parser.tab.c" /* yacc.c:1651  */
+#line 468 "parser.y"
+                                                { (yyval.expr) = make_expr(EXPR_VOID); }
+#line 3083 "parser.tab.c"
     break;
 
   case 68:
-#line 471 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr_list) = NULL; }
-#line 2995 "parser.tab.c" /* yacc.c:1651  */
+#line 471 "parser.y"
+                                                { (yyval.attr_list) = NULL; }
+#line 3089 "parser.tab.c"
     break;
 
   case 70:
-#line 476 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr_list) = (yyvsp[-1].attr_list); }
-#line 3001 "parser.tab.c" /* yacc.c:1651  */
+#line 476 "parser.y"
+                                                { (yyval.attr_list) = (yyvsp[-1].attr_list); }
+#line 3095 "parser.tab.c"
     break;
 
   case 71:
-#line 479 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr_list) = append_attr( NULL, (yyvsp[0].attr) ); }
-#line 3007 "parser.tab.c" /* yacc.c:1651  */
+#line 479 "parser.y"
+                                                { (yyval.attr_list) = append_attr( NULL, (yyvsp[0].attr) ); }
+#line 3101 "parser.tab.c"
     break;
 
   case 72:
-#line 480 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr_list) = append_attr( (yyvsp[-2].attr_list), (yyvsp[0].attr) ); }
-#line 3013 "parser.tab.c" /* yacc.c:1651  */
+#line 480 "parser.y"
+                                                { (yyval.attr_list) = append_attr( (yyvsp[-2].attr_list), (yyvsp[0].attr) ); }
+#line 3107 "parser.tab.c"
     break;
 
   case 73:
-#line 481 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr_list) = append_attr( (yyvsp[-3].attr_list), (yyvsp[0].attr) ); }
-#line 3019 "parser.tab.c" /* yacc.c:1651  */
+#line 481 "parser.y"
+                                                { (yyval.attr_list) = append_attr( (yyvsp[-3].attr_list), (yyvsp[0].attr) ); }
+#line 3113 "parser.tab.c"
     break;
 
   case 74:
-#line 484 "parser.y" /* yacc.c:1651  */
-    { (yyval.str_list) = append_str( NULL, (yyvsp[0].str) ); }
-#line 3025 "parser.tab.c" /* yacc.c:1651  */
+#line 484 "parser.y"
+                                                { (yyval.str_list) = append_str( NULL, (yyvsp[0].str) ); }
+#line 3119 "parser.tab.c"
     break;
 
   case 75:
-#line 485 "parser.y" /* yacc.c:1651  */
-    { (yyval.str_list) = append_str( (yyvsp[-2].str_list), (yyvsp[0].str) ); }
-#line 3031 "parser.tab.c" /* yacc.c:1651  */
+#line 485 "parser.y"
+                                                { (yyval.str_list) = append_str( (yyvsp[-2].str_list), (yyvsp[0].str) ); }
+#line 3125 "parser.tab.c"
     break;
 
   case 76:
-#line 488 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = NULL; }
-#line 3037 "parser.tab.c" /* yacc.c:1651  */
+#line 488 "parser.y"
+                                                { (yyval.attr) = NULL; }
+#line 3131 "parser.tab.c"
     break;
 
   case 77:
-#line 489 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_AGGREGATABLE); }
-#line 3043 "parser.tab.c" /* yacc.c:1651  */
+#line 489 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_AGGREGATABLE); }
+#line 3137 "parser.tab.c"
     break;
 
   case 78:
-#line 490 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_ANNOTATION, (yyvsp[-1].str)); }
-#line 3049 "parser.tab.c" /* yacc.c:1651  */
+#line 490 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_ANNOTATION, (yyvsp[-1].str)); }
+#line 3143 "parser.tab.c"
     break;
 
   case 79:
-#line 491 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_APPOBJECT); }
-#line 3055 "parser.tab.c" /* yacc.c:1651  */
+#line 491 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_APPOBJECT); }
+#line 3149 "parser.tab.c"
     break;
 
   case 80:
-#line 492 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_ASYNC); }
-#line 3061 "parser.tab.c" /* yacc.c:1651  */
+#line 492 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_ASYNC); }
+#line 3155 "parser.tab.c"
     break;
 
   case 81:
-#line 493 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_AUTO_HANDLE); }
-#line 3067 "parser.tab.c" /* yacc.c:1651  */
+#line 493 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_AUTO_HANDLE); }
+#line 3161 "parser.tab.c"
     break;
 
   case 82:
-#line 494 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_BINDABLE); }
-#line 3073 "parser.tab.c" /* yacc.c:1651  */
+#line 494 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_BINDABLE); }
+#line 3167 "parser.tab.c"
     break;
 
   case 83:
-#line 495 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_BROADCAST); }
-#line 3079 "parser.tab.c" /* yacc.c:1651  */
+#line 495 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_BROADCAST); }
+#line 3173 "parser.tab.c"
     break;
 
   case 84:
-#line 496 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_CALLAS, (yyvsp[-1].var)); }
-#line 3085 "parser.tab.c" /* yacc.c:1651  */
+#line 496 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_CALLAS, (yyvsp[-1].var)); }
+#line 3179 "parser.tab.c"
     break;
 
   case 85:
-#line 497 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_CASE, (yyvsp[-1].expr_list)); }
-#line 3091 "parser.tab.c" /* yacc.c:1651  */
+#line 497 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_CASE, (yyvsp[-1].expr_list)); }
+#line 3185 "parser.tab.c"
     break;
 
   case 86:
-#line 498 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_CODE); }
-#line 3097 "parser.tab.c" /* yacc.c:1651  */
+#line 498 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_CODE); }
+#line 3191 "parser.tab.c"
     break;
 
   case 87:
-#line 499 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_COMMSTATUS); }
-#line 3103 "parser.tab.c" /* yacc.c:1651  */
+#line 499 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_COMMSTATUS); }
+#line 3197 "parser.tab.c"
     break;
 
   case 88:
-#line 500 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); }
-#line 3109 "parser.tab.c" /* yacc.c:1651  */
+#line 500 "parser.y"
+                                                { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); }
+#line 3203 "parser.tab.c"
     break;
 
   case 89:
-#line 501 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_DONT_SERIALIZE */ }
-#line 3115 "parser.tab.c" /* yacc.c:1651  */
+#line 501 "parser.y"
+                                                { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_DONT_SERIALIZE */ }
+#line 3209 "parser.tab.c"
     break;
 
   case 90:
-#line 502 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_SERIALIZE */ }
-#line 3121 "parser.tab.c" /* yacc.c:1651  */
+#line 502 "parser.y"
+                                                { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_SERIALIZE */ }
+#line 3215 "parser.tab.c"
     break;
 
   case 91:
-#line 503 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_CONTROL); }
-#line 3127 "parser.tab.c" /* yacc.c:1651  */
+#line 503 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_CONTROL); }
+#line 3221 "parser.tab.c"
     break;
 
   case 92:
-#line 504 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_DECODE); }
-#line 3133 "parser.tab.c" /* yacc.c:1651  */
+#line 504 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_DECODE); }
+#line 3227 "parser.tab.c"
     break;
 
   case 93:
-#line 505 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_DEFAULT); }
-#line 3139 "parser.tab.c" /* yacc.c:1651  */
+#line 505 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_DEFAULT); }
+#line 3233 "parser.tab.c"
     break;
 
   case 94:
-#line 506 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_DEFAULTBIND); }
-#line 3145 "parser.tab.c" /* yacc.c:1651  */
+#line 506 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_DEFAULTBIND); }
+#line 3239 "parser.tab.c"
     break;
 
   case 95:
-#line 507 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_DEFAULTCOLLELEM); }
-#line 3151 "parser.tab.c" /* yacc.c:1651  */
+#line 507 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_DEFAULTCOLLELEM); }
+#line 3245 "parser.tab.c"
     break;
 
   case 96:
-#line 508 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_DEFAULTVALUE, (yyvsp[-1].expr)); }
-#line 3157 "parser.tab.c" /* yacc.c:1651  */
+#line 508 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_DEFAULTVALUE, (yyvsp[-1].expr)); }
+#line 3251 "parser.tab.c"
     break;
 
   case 97:
-#line 509 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_DEFAULTVTABLE); }
-#line 3163 "parser.tab.c" /* yacc.c:1651  */
+#line 509 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_DEFAULTVTABLE); }
+#line 3257 "parser.tab.c"
     break;
 
   case 98:
-#line 510 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_DISABLECONSISTENCYCHECK); }
-#line 3169 "parser.tab.c" /* yacc.c:1651  */
+#line 510 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_DISABLECONSISTENCYCHECK); }
+#line 3263 "parser.tab.c"
     break;
 
   case 99:
-#line 511 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_DISPLAYBIND); }
-#line 3175 "parser.tab.c" /* yacc.c:1651  */
+#line 511 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_DISPLAYBIND); }
+#line 3269 "parser.tab.c"
     break;
 
   case 100:
-#line 512 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_DLLNAME, (yyvsp[-1].str)); }
-#line 3181 "parser.tab.c" /* yacc.c:1651  */
+#line 512 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_DLLNAME, (yyvsp[-1].str)); }
+#line 3275 "parser.tab.c"
     break;
 
   case 101:
-#line 513 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_DUAL); }
-#line 3187 "parser.tab.c" /* yacc.c:1651  */
+#line 513 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_DUAL); }
+#line 3281 "parser.tab.c"
     break;
 
   case 102:
-#line 514 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_ENABLEALLOCATE); }
-#line 3193 "parser.tab.c" /* yacc.c:1651  */
+#line 514 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_ENABLEALLOCATE); }
+#line 3287 "parser.tab.c"
     break;
 
   case 103:
-#line 515 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_ENCODE); }
-#line 3199 "parser.tab.c" /* yacc.c:1651  */
+#line 515 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_ENCODE); }
+#line 3293 "parser.tab.c"
     break;
 
   case 104:
-#line 516 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_ENDPOINT, (yyvsp[-1].str_list)); }
-#line 3205 "parser.tab.c" /* yacc.c:1651  */
+#line 516 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_ENDPOINT, (yyvsp[-1].str_list)); }
+#line 3299 "parser.tab.c"
     break;
 
   case 105:
-#line 517 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_ENTRY, (yyvsp[-1].expr)); }
-#line 3211 "parser.tab.c" /* yacc.c:1651  */
+#line 517 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_ENTRY, (yyvsp[-1].expr)); }
+#line 3305 "parser.tab.c"
     break;
 
   case 106:
-#line 518 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_EXPLICIT_HANDLE); }
-#line 3217 "parser.tab.c" /* yacc.c:1651  */
+#line 518 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_EXPLICIT_HANDLE); }
+#line 3311 "parser.tab.c"
     break;
 
   case 107:
-#line 519 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_FAULTSTATUS); }
-#line 3223 "parser.tab.c" /* yacc.c:1651  */
+#line 519 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_FAULTSTATUS); }
+#line 3317 "parser.tab.c"
     break;
 
   case 108:
-#line 520 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_FORCEALLOCATE); }
-#line 3229 "parser.tab.c" /* yacc.c:1651  */
+#line 520 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_FORCEALLOCATE); }
+#line 3323 "parser.tab.c"
     break;
 
   case 109:
-#line 521 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_HANDLE); }
-#line 3235 "parser.tab.c" /* yacc.c:1651  */
+#line 521 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_HANDLE); }
+#line 3329 "parser.tab.c"
     break;
 
   case 110:
-#line 522 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_HELPCONTEXT, (yyvsp[-1].expr)); }
-#line 3241 "parser.tab.c" /* yacc.c:1651  */
+#line 522 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_HELPCONTEXT, (yyvsp[-1].expr)); }
+#line 3335 "parser.tab.c"
     break;
 
   case 111:
-#line 523 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_HELPFILE, (yyvsp[-1].str)); }
-#line 3247 "parser.tab.c" /* yacc.c:1651  */
+#line 523 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_HELPFILE, (yyvsp[-1].str)); }
+#line 3341 "parser.tab.c"
     break;
 
   case 112:
-#line 524 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_HELPSTRING, (yyvsp[-1].str)); }
-#line 3253 "parser.tab.c" /* yacc.c:1651  */
+#line 524 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_HELPSTRING, (yyvsp[-1].str)); }
+#line 3347 "parser.tab.c"
     break;
 
   case 113:
-#line 525 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_HELPSTRINGCONTEXT, (yyvsp[-1].expr)); }
-#line 3259 "parser.tab.c" /* yacc.c:1651  */
+#line 525 "parser.y"
+                                                        { (yyval.attr) = make_attrp(ATTR_HELPSTRINGCONTEXT, (yyvsp[-1].expr)); }
+#line 3353 "parser.tab.c"
     break;
 
   case 114:
-#line 526 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_HELPSTRINGDLL, (yyvsp[-1].str)); }
-#line 3265 "parser.tab.c" /* yacc.c:1651  */
+#line 526 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_HELPSTRINGDLL, (yyvsp[-1].str)); }
+#line 3359 "parser.tab.c"
     break;
 
   case 115:
-#line 527 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_HIDDEN); }
-#line 3271 "parser.tab.c" /* yacc.c:1651  */
+#line 527 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_HIDDEN); }
+#line 3365 "parser.tab.c"
     break;
 
   case 116:
-#line 528 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_ID, (yyvsp[-1].expr)); }
-#line 3277 "parser.tab.c" /* yacc.c:1651  */
+#line 528 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_ID, (yyvsp[-1].expr)); }
+#line 3371 "parser.tab.c"
     break;
 
   case 117:
-#line 529 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_IDEMPOTENT); }
-#line 3283 "parser.tab.c" /* yacc.c:1651  */
+#line 529 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_IDEMPOTENT); }
+#line 3377 "parser.tab.c"
     break;
 
   case 118:
-#line 530 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_IGNORE); }
-#line 3289 "parser.tab.c" /* yacc.c:1651  */
+#line 530 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_IGNORE); }
+#line 3383 "parser.tab.c"
     break;
 
   case 119:
-#line 531 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_IIDIS, (yyvsp[-1].expr)); }
-#line 3295 "parser.tab.c" /* yacc.c:1651  */
+#line 531 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_IIDIS, (yyvsp[-1].expr)); }
+#line 3389 "parser.tab.c"
     break;
 
   case 120:
-#line 532 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_IMMEDIATEBIND); }
-#line 3301 "parser.tab.c" /* yacc.c:1651  */
+#line 532 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_IMMEDIATEBIND); }
+#line 3395 "parser.tab.c"
     break;
 
   case 121:
-#line 533 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_IMPLICIT_HANDLE, (yyvsp[-1].var)); }
-#line 3307 "parser.tab.c" /* yacc.c:1651  */
+#line 533 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_IMPLICIT_HANDLE, (yyvsp[-1].var)); }
+#line 3401 "parser.tab.c"
     break;
 
   case 122:
-#line 534 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_IN); }
-#line 3313 "parser.tab.c" /* yacc.c:1651  */
+#line 534 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_IN); }
+#line 3407 "parser.tab.c"
     break;
 
   case 123:
-#line 535 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_INPUTSYNC); }
-#line 3319 "parser.tab.c" /* yacc.c:1651  */
+#line 535 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_INPUTSYNC); }
+#line 3413 "parser.tab.c"
     break;
 
   case 124:
-#line 536 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_LENGTHIS, (yyvsp[-1].expr_list)); }
-#line 3325 "parser.tab.c" /* yacc.c:1651  */
+#line 536 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_LENGTHIS, (yyvsp[-1].expr_list)); }
+#line 3419 "parser.tab.c"
     break;
 
   case 125:
-#line 537 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_LIBLCID, (yyvsp[-1].expr)); }
-#line 3331 "parser.tab.c" /* yacc.c:1651  */
+#line 537 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_LIBLCID, (yyvsp[-1].expr)); }
+#line 3425 "parser.tab.c"
     break;
 
   case 126:
-#line 538 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_PARAMLCID); }
-#line 3337 "parser.tab.c" /* yacc.c:1651  */
+#line 538 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_PARAMLCID); }
+#line 3431 "parser.tab.c"
     break;
 
   case 127:
-#line 539 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_LICENSED); }
-#line 3343 "parser.tab.c" /* yacc.c:1651  */
+#line 539 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_LICENSED); }
+#line 3437 "parser.tab.c"
     break;
 
   case 128:
-#line 540 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_LOCAL); }
-#line 3349 "parser.tab.c" /* yacc.c:1651  */
+#line 540 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_LOCAL); }
+#line 3443 "parser.tab.c"
     break;
 
   case 129:
-#line 541 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_MAYBE); }
-#line 3355 "parser.tab.c" /* yacc.c:1651  */
+#line 541 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_MAYBE); }
+#line 3449 "parser.tab.c"
     break;
 
   case 130:
-#line 542 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_MESSAGE); }
-#line 3361 "parser.tab.c" /* yacc.c:1651  */
+#line 542 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_MESSAGE); }
+#line 3455 "parser.tab.c"
     break;
 
   case 131:
-#line 543 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_NOCODE); }
-#line 3367 "parser.tab.c" /* yacc.c:1651  */
+#line 543 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_NOCODE); }
+#line 3461 "parser.tab.c"
     break;
 
   case 132:
-#line 544 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_NONBROWSABLE); }
-#line 3373 "parser.tab.c" /* yacc.c:1651  */
+#line 544 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_NONBROWSABLE); }
+#line 3467 "parser.tab.c"
     break;
 
   case 133:
-#line 545 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_NONCREATABLE); }
-#line 3379 "parser.tab.c" /* yacc.c:1651  */
+#line 545 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_NONCREATABLE); }
+#line 3473 "parser.tab.c"
     break;
 
   case 134:
-#line 546 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_NONEXTENSIBLE); }
-#line 3385 "parser.tab.c" /* yacc.c:1651  */
+#line 546 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_NONEXTENSIBLE); }
+#line 3479 "parser.tab.c"
     break;
 
   case 135:
-#line 547 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_NOTIFY); }
-#line 3391 "parser.tab.c" /* yacc.c:1651  */
+#line 547 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_NOTIFY); }
+#line 3485 "parser.tab.c"
     break;
 
   case 136:
-#line 548 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_NOTIFYFLAG); }
-#line 3397 "parser.tab.c" /* yacc.c:1651  */
+#line 548 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_NOTIFYFLAG); }
+#line 3491 "parser.tab.c"
     break;
 
   case 137:
-#line 549 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_OBJECT); }
-#line 3403 "parser.tab.c" /* yacc.c:1651  */
+#line 549 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_OBJECT); }
+#line 3497 "parser.tab.c"
     break;
 
   case 138:
-#line 550 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_ODL); }
-#line 3409 "parser.tab.c" /* yacc.c:1651  */
+#line 550 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_ODL); }
+#line 3503 "parser.tab.c"
     break;
 
   case 139:
-#line 551 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_OLEAUTOMATION); }
-#line 3415 "parser.tab.c" /* yacc.c:1651  */
+#line 551 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_OLEAUTOMATION); }
+#line 3509 "parser.tab.c"
     break;
 
   case 140:
-#line 552 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_OPTIMIZE, (yyvsp[-1].str)); }
-#line 3421 "parser.tab.c" /* yacc.c:1651  */
+#line 552 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_OPTIMIZE, (yyvsp[-1].str)); }
+#line 3515 "parser.tab.c"
     break;
 
   case 141:
-#line 553 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_OPTIONAL); }
-#line 3427 "parser.tab.c" /* yacc.c:1651  */
+#line 553 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_OPTIONAL); }
+#line 3521 "parser.tab.c"
     break;
 
   case 142:
-#line 554 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_OUT); }
-#line 3433 "parser.tab.c" /* yacc.c:1651  */
+#line 554 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_OUT); }
+#line 3527 "parser.tab.c"
     break;
 
   case 143:
-#line 555 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_PARTIALIGNORE); }
-#line 3439 "parser.tab.c" /* yacc.c:1651  */
+#line 555 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_PARTIALIGNORE); }
+#line 3533 "parser.tab.c"
     break;
 
   case 144:
-#line 556 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrv(ATTR_POINTERDEFAULT, (yyvsp[-1].num)); }
-#line 3445 "parser.tab.c" /* yacc.c:1651  */
+#line 556 "parser.y"
+                                                { (yyval.attr) = make_attrv(ATTR_POINTERDEFAULT, (yyvsp[-1].num)); }
+#line 3539 "parser.tab.c"
     break;
 
   case 145:
-#line 557 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_PROGID, (yyvsp[-1].str)); }
-#line 3451 "parser.tab.c" /* yacc.c:1651  */
+#line 557 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_PROGID, (yyvsp[-1].str)); }
+#line 3545 "parser.tab.c"
     break;
 
   case 146:
-#line 558 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_PROPGET); }
-#line 3457 "parser.tab.c" /* yacc.c:1651  */
+#line 558 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_PROPGET); }
+#line 3551 "parser.tab.c"
     break;
 
   case 147:
-#line 559 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_PROPPUT); }
-#line 3463 "parser.tab.c" /* yacc.c:1651  */
+#line 559 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_PROPPUT); }
+#line 3557 "parser.tab.c"
     break;
 
   case 148:
-#line 560 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_PROPPUTREF); }
-#line 3469 "parser.tab.c" /* yacc.c:1651  */
+#line 560 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_PROPPUTREF); }
+#line 3563 "parser.tab.c"
     break;
 
   case 149:
-#line 561 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_PROXY); }
-#line 3475 "parser.tab.c" /* yacc.c:1651  */
+#line 561 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_PROXY); }
+#line 3569 "parser.tab.c"
     break;
 
   case 150:
-#line 562 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_PUBLIC); }
-#line 3481 "parser.tab.c" /* yacc.c:1651  */
+#line 562 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_PUBLIC); }
+#line 3575 "parser.tab.c"
     break;
 
   case 151:
-#line 564 "parser.y" /* yacc.c:1651  */
-    { expr_list_t *list = append_expr( NULL, (yyvsp[-3].expr) );
+#line 564 "parser.y"
+                                                { expr_list_t *list = append_expr( NULL, (yyvsp[-3].expr) );
 						  list = append_expr( list, (yyvsp[-1].expr) );
 						  (yyval.attr) = make_attrp(ATTR_RANGE, list); }
-#line 3489 "parser.tab.c" /* yacc.c:1651  */
+#line 3583 "parser.tab.c"
     break;
 
   case 152:
-#line 567 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_READONLY); }
-#line 3495 "parser.tab.c" /* yacc.c:1651  */
+#line 567 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_READONLY); }
+#line 3589 "parser.tab.c"
     break;
 
   case 153:
-#line 568 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_REPRESENTAS, (yyvsp[-1].type)); }
-#line 3501 "parser.tab.c" /* yacc.c:1651  */
+#line 568 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_REPRESENTAS, (yyvsp[-1].type)); }
+#line 3595 "parser.tab.c"
     break;
 
   case 154:
-#line 569 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_REQUESTEDIT); }
-#line 3507 "parser.tab.c" /* yacc.c:1651  */
+#line 569 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_REQUESTEDIT); }
+#line 3601 "parser.tab.c"
     break;
 
   case 155:
-#line 570 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_RESTRICTED); }
-#line 3513 "parser.tab.c" /* yacc.c:1651  */
+#line 570 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_RESTRICTED); }
+#line 3607 "parser.tab.c"
     break;
 
   case 156:
-#line 571 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_RETVAL); }
-#line 3519 "parser.tab.c" /* yacc.c:1651  */
+#line 571 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_RETVAL); }
+#line 3613 "parser.tab.c"
     break;
 
   case 157:
-#line 572 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_SIZEIS, (yyvsp[-1].expr_list)); }
-#line 3525 "parser.tab.c" /* yacc.c:1651  */
+#line 572 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_SIZEIS, (yyvsp[-1].expr_list)); }
+#line 3619 "parser.tab.c"
     break;
 
   case 158:
-#line 573 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_SOURCE); }
-#line 3531 "parser.tab.c" /* yacc.c:1651  */
+#line 573 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_SOURCE); }
+#line 3625 "parser.tab.c"
     break;
 
   case 159:
-#line 574 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_STRICTCONTEXTHANDLE); }
-#line 3537 "parser.tab.c" /* yacc.c:1651  */
+#line 574 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_STRICTCONTEXTHANDLE); }
+#line 3631 "parser.tab.c"
     break;
 
   case 160:
-#line 575 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_STRING); }
-#line 3543 "parser.tab.c" /* yacc.c:1651  */
+#line 575 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_STRING); }
+#line 3637 "parser.tab.c"
     break;
 
   case 161:
-#line 576 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_SWITCHIS, (yyvsp[-1].expr)); }
-#line 3549 "parser.tab.c" /* yacc.c:1651  */
+#line 576 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_SWITCHIS, (yyvsp[-1].expr)); }
+#line 3643 "parser.tab.c"
     break;
 
   case 162:
-#line 577 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_SWITCHTYPE, (yyvsp[-1].type)); }
-#line 3555 "parser.tab.c" /* yacc.c:1651  */
+#line 577 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_SWITCHTYPE, (yyvsp[-1].type)); }
+#line 3649 "parser.tab.c"
     break;
 
   case 163:
-#line 578 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_TRANSMITAS, (yyvsp[-1].type)); }
-#line 3561 "parser.tab.c" /* yacc.c:1651  */
+#line 578 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_TRANSMITAS, (yyvsp[-1].type)); }
+#line 3655 "parser.tab.c"
     break;
 
   case 164:
-#line 579 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrv(ATTR_THREADING, (yyvsp[-1].num)); }
-#line 3567 "parser.tab.c" /* yacc.c:1651  */
+#line 579 "parser.y"
+                                                { (yyval.attr) = make_attrv(ATTR_THREADING, (yyvsp[-1].num)); }
+#line 3661 "parser.tab.c"
     break;
 
   case 165:
-#line 580 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_UIDEFAULT); }
-#line 3573 "parser.tab.c" /* yacc.c:1651  */
+#line 580 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_UIDEFAULT); }
+#line 3667 "parser.tab.c"
     break;
 
   case 166:
-#line 581 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_USESGETLASTERROR); }
-#line 3579 "parser.tab.c" /* yacc.c:1651  */
+#line 581 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_USESGETLASTERROR); }
+#line 3673 "parser.tab.c"
     break;
 
   case 167:
-#line 582 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_USERMARSHAL, (yyvsp[-1].type)); }
-#line 3585 "parser.tab.c" /* yacc.c:1651  */
+#line 582 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_USERMARSHAL, (yyvsp[-1].type)); }
+#line 3679 "parser.tab.c"
     break;
 
   case 168:
-#line 583 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_UUID, (yyvsp[-1].uuid)); }
-#line 3591 "parser.tab.c" /* yacc.c:1651  */
+#line 583 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_UUID, (yyvsp[-1].uuid)); }
+#line 3685 "parser.tab.c"
     break;
 
   case 169:
-#line 584 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_ASYNCUUID, (yyvsp[-1].uuid)); }
-#line 3597 "parser.tab.c" /* yacc.c:1651  */
+#line 584 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_ASYNCUUID, (yyvsp[-1].uuid)); }
+#line 3691 "parser.tab.c"
     break;
 
   case 170:
-#line 585 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_V1ENUM); }
-#line 3603 "parser.tab.c" /* yacc.c:1651  */
+#line 585 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_V1ENUM); }
+#line 3697 "parser.tab.c"
     break;
 
   case 171:
-#line 586 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_VARARG); }
-#line 3609 "parser.tab.c" /* yacc.c:1651  */
+#line 586 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_VARARG); }
+#line 3703 "parser.tab.c"
     break;
 
   case 172:
-#line 587 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrv(ATTR_VERSION, (yyvsp[-1].num)); }
-#line 3615 "parser.tab.c" /* yacc.c:1651  */
+#line 587 "parser.y"
+                                                { (yyval.attr) = make_attrv(ATTR_VERSION, (yyvsp[-1].num)); }
+#line 3709 "parser.tab.c"
     break;
 
   case 173:
-#line 588 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_VIPROGID, (yyvsp[-1].str)); }
-#line 3621 "parser.tab.c" /* yacc.c:1651  */
+#line 588 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_VIPROGID, (yyvsp[-1].str)); }
+#line 3715 "parser.tab.c"
     break;
 
   case 174:
-#line 589 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrp(ATTR_WIREMARSHAL, (yyvsp[-1].type)); }
-#line 3627 "parser.tab.c" /* yacc.c:1651  */
+#line 589 "parser.y"
+                                                { (yyval.attr) = make_attrp(ATTR_WIREMARSHAL, (yyvsp[-1].type)); }
+#line 3721 "parser.tab.c"
     break;
 
   case 175:
-#line 590 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attrv(ATTR_POINTERTYPE, (yyvsp[0].num)); }
-#line 3633 "parser.tab.c" /* yacc.c:1651  */
+#line 590 "parser.y"
+                                                { (yyval.attr) = make_attrv(ATTR_POINTERTYPE, (yyvsp[0].num)); }
+#line 3727 "parser.tab.c"
     break;
 
   case 177:
-#line 595 "parser.y" /* yacc.c:1651  */
-    { if (!is_valid_uuid((yyvsp[0].str)))
+#line 595 "parser.y"
+                                                { if (!is_valid_uuid((yyvsp[0].str)))
 						    error_loc("invalid UUID: %s\n", (yyvsp[0].str));
 						  (yyval.uuid) = parse_uuid((yyvsp[0].str)); }
-#line 3641 "parser.tab.c" /* yacc.c:1651  */
+#line 3735 "parser.tab.c"
     break;
 
   case 178:
-#line 600 "parser.y" /* yacc.c:1651  */
-    { (yyval.str) = xstrdup("__cdecl"); }
-#line 3647 "parser.tab.c" /* yacc.c:1651  */
+#line 600 "parser.y"
+                                                { (yyval.str) = xstrdup("__cdecl"); }
+#line 3741 "parser.tab.c"
     break;
 
   case 179:
-#line 601 "parser.y" /* yacc.c:1651  */
-    { (yyval.str) = xstrdup("__fastcall"); }
-#line 3653 "parser.tab.c" /* yacc.c:1651  */
+#line 601 "parser.y"
+                                                { (yyval.str) = xstrdup("__fastcall"); }
+#line 3747 "parser.tab.c"
     break;
 
   case 180:
-#line 602 "parser.y" /* yacc.c:1651  */
-    { (yyval.str) = xstrdup("__pascal"); }
-#line 3659 "parser.tab.c" /* yacc.c:1651  */
+#line 602 "parser.y"
+                                                { (yyval.str) = xstrdup("__pascal"); }
+#line 3753 "parser.tab.c"
     break;
 
   case 181:
-#line 603 "parser.y" /* yacc.c:1651  */
-    { (yyval.str) = xstrdup("__stdcall"); }
-#line 3665 "parser.tab.c" /* yacc.c:1651  */
+#line 603 "parser.y"
+                                                { (yyval.str) = xstrdup("__stdcall"); }
+#line 3759 "parser.tab.c"
     break;
 
   case 182:
-#line 606 "parser.y" /* yacc.c:1651  */
-    { (yyval.var_list) = NULL; }
-#line 3671 "parser.tab.c" /* yacc.c:1651  */
+#line 606 "parser.y"
+                                                { (yyval.var_list) = NULL; }
+#line 3765 "parser.tab.c"
     break;
 
   case 183:
-#line 607 "parser.y" /* yacc.c:1651  */
-    { (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); }
-#line 3677 "parser.tab.c" /* yacc.c:1651  */
+#line 607 "parser.y"
+                                                { (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); }
+#line 3771 "parser.tab.c"
     break;
 
   case 184:
-#line 610 "parser.y" /* yacc.c:1651  */
-    { attr_t *a = make_attrp(ATTR_CASE, append_expr( NULL, (yyvsp[-2].expr) ));
+#line 610 "parser.y"
+                                                { attr_t *a = make_attrp(ATTR_CASE, append_expr( NULL, (yyvsp[-2].expr) ));
 						  (yyval.var) = (yyvsp[0].var); if (!(yyval.var)) (yyval.var) = make_var(NULL);
 						  (yyval.var)->attrs = append_attr( (yyval.var)->attrs, a );
 						}
-#line 3686 "parser.tab.c" /* yacc.c:1651  */
+#line 3780 "parser.tab.c"
     break;
 
   case 185:
-#line 614 "parser.y" /* yacc.c:1651  */
-    { attr_t *a = make_attr(ATTR_DEFAULT);
+#line 614 "parser.y"
+                                                { attr_t *a = make_attr(ATTR_DEFAULT);
 						  (yyval.var) = (yyvsp[0].var); if (!(yyval.var)) (yyval.var) = make_var(NULL);
 						  (yyval.var)->attrs = append_attr( (yyval.var)->attrs, a );
 						}
-#line 3695 "parser.tab.c" /* yacc.c:1651  */
+#line 3789 "parser.tab.c"
     break;
 
   case 186:
-#line 620 "parser.y" /* yacc.c:1651  */
-    { (yyval.var_list) = NULL; }
-#line 3701 "parser.tab.c" /* yacc.c:1651  */
+#line 620 "parser.y"
+                                                { (yyval.var_list) = NULL; }
+#line 3795 "parser.tab.c"
     break;
 
   case 187:
-#line 621 "parser.y" /* yacc.c:1651  */
-    { (yyval.var_list) = (yyvsp[-1].var_list); }
-#line 3707 "parser.tab.c" /* yacc.c:1651  */
+#line 621 "parser.y"
+                                                { (yyval.var_list) = (yyvsp[-1].var_list); }
+#line 3801 "parser.tab.c"
     break;
 
   case 189:
-#line 625 "parser.y" /* yacc.c:1651  */
-    { if (!(yyvsp[0].var)->eval)
+#line 625 "parser.y"
+                                                { if (!(yyvsp[0].var)->eval)
 						    (yyvsp[0].var)->eval = make_exprl(EXPR_NUM, 0 /* default for first enum entry */);
                                                   (yyval.var_list) = append_var( NULL, (yyvsp[0].var) );
 						}
-#line 3716 "parser.tab.c" /* yacc.c:1651  */
+#line 3810 "parser.tab.c"
     break;
 
   case 190:
-#line 629 "parser.y" /* yacc.c:1651  */
-    { if (!(yyvsp[0].var)->eval)
+#line 629 "parser.y"
+                                                { if (!(yyvsp[0].var)->eval)
                                                   {
                                                     var_t *last = LIST_ENTRY( list_tail((yyval.var_list)), var_t, entry );
                                                     enum expr_type type = EXPR_NUM;
@@ -3727,1325 +3821,1326 @@
                                                   }
                                                   (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[0].var) );
 						}
-#line 3731 "parser.tab.c" /* yacc.c:1651  */
+#line 3825 "parser.tab.c"
     break;
 
   case 191:
-#line 641 "parser.y" /* yacc.c:1651  */
-    { (yyval.var) = reg_const((yyvsp[-2].var));
+#line 641 "parser.y"
+                                                { (yyval.var) = reg_const((yyvsp[-2].var));
 						  (yyval.var)->eval = (yyvsp[0].expr);
                                                   (yyval.var)->declspec.type = type_new_int(TYPE_BASIC_INT, 0);
 						}
-#line 3740 "parser.tab.c" /* yacc.c:1651  */
+#line 3834 "parser.tab.c"
     break;
 
   case 192:
-#line 645 "parser.y" /* yacc.c:1651  */
-    { (yyval.var) = reg_const((yyvsp[0].var));
+#line 645 "parser.y"
+                                                { (yyval.var) = reg_const((yyvsp[0].var));
                                                   (yyval.var)->declspec.type = type_new_int(TYPE_BASIC_INT, 0);
 						}
-#line 3748 "parser.tab.c" /* yacc.c:1651  */
+#line 3842 "parser.tab.c"
     break;
 
   case 193:
-#line 650 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_enum((yyvsp[-3].str), current_namespace, TRUE, (yyvsp[-1].var_list)); }
-#line 3754 "parser.tab.c" /* yacc.c:1651  */
+#line 650 "parser.y"
+                                                { (yyval.type) = type_new_enum((yyvsp[-3].str), current_namespace, TRUE, (yyvsp[-1].var_list)); }
+#line 3848 "parser.tab.c"
     break;
 
   case 194:
-#line 653 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); }
-#line 3760 "parser.tab.c" /* yacc.c:1651  */
+#line 653 "parser.y"
+                                                { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); }
+#line 3854 "parser.tab.c"
     break;
 
   case 195:
-#line 654 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); }
-#line 3766 "parser.tab.c" /* yacc.c:1651  */
+#line 654 "parser.y"
+                                                { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); }
+#line 3860 "parser.tab.c"
     break;
 
   case 196:
-#line 657 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr(EXPR_VOID); }
-#line 3772 "parser.tab.c" /* yacc.c:1651  */
+#line 657 "parser.y"
+                                                { (yyval.expr) = make_expr(EXPR_VOID); }
+#line 3866 "parser.tab.c"
     break;
 
   case 198:
-#line 661 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_exprl(EXPR_NUM, (yyvsp[0].num)); }
-#line 3778 "parser.tab.c" /* yacc.c:1651  */
+#line 661 "parser.y"
+                                                { (yyval.expr) = make_exprl(EXPR_NUM, (yyvsp[0].num)); }
+#line 3872 "parser.tab.c"
     break;
 
   case 199:
-#line 662 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_exprl(EXPR_HEXNUM, (yyvsp[0].num)); }
-#line 3784 "parser.tab.c" /* yacc.c:1651  */
+#line 662 "parser.y"
+                                                { (yyval.expr) = make_exprl(EXPR_HEXNUM, (yyvsp[0].num)); }
+#line 3878 "parser.tab.c"
     break;
 
   case 200:
-#line 663 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_exprd(EXPR_DOUBLE, (yyvsp[0].dbl)); }
-#line 3790 "parser.tab.c" /* yacc.c:1651  */
+#line 663 "parser.y"
+                                                { (yyval.expr) = make_exprd(EXPR_DOUBLE, (yyvsp[0].dbl)); }
+#line 3884 "parser.tab.c"
     break;
 
   case 201:
-#line 664 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 0); }
-#line 3796 "parser.tab.c" /* yacc.c:1651  */
+#line 664 "parser.y"
+                                                { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 0); }
+#line 3890 "parser.tab.c"
     break;
 
   case 202:
-#line 665 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_exprl(EXPR_NUM, 0); }
-#line 3802 "parser.tab.c" /* yacc.c:1651  */
+#line 665 "parser.y"
+                                                { (yyval.expr) = make_exprl(EXPR_NUM, 0); }
+#line 3896 "parser.tab.c"
     break;
 
   case 203:
-#line 666 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 1); }
-#line 3808 "parser.tab.c" /* yacc.c:1651  */
+#line 666 "parser.y"
+                                                { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 1); }
+#line 3902 "parser.tab.c"
     break;
 
   case 204:
-#line 667 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_exprs(EXPR_STRLIT, (yyvsp[0].str)); }
-#line 3814 "parser.tab.c" /* yacc.c:1651  */
+#line 667 "parser.y"
+                                                { (yyval.expr) = make_exprs(EXPR_STRLIT, (yyvsp[0].str)); }
+#line 3908 "parser.tab.c"
     break;
 
   case 205:
-#line 668 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_exprs(EXPR_WSTRLIT, (yyvsp[0].str)); }
-#line 3820 "parser.tab.c" /* yacc.c:1651  */
+#line 668 "parser.y"
+                                                { (yyval.expr) = make_exprs(EXPR_WSTRLIT, (yyvsp[0].str)); }
+#line 3914 "parser.tab.c"
     break;
 
   case 206:
-#line 669 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_exprs(EXPR_CHARCONST, (yyvsp[0].str)); }
-#line 3826 "parser.tab.c" /* yacc.c:1651  */
+#line 669 "parser.y"
+                                                { (yyval.expr) = make_exprs(EXPR_CHARCONST, (yyvsp[0].str)); }
+#line 3920 "parser.tab.c"
     break;
 
   case 207:
-#line 670 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str)); }
-#line 3832 "parser.tab.c" /* yacc.c:1651  */
+#line 670 "parser.y"
+                                                { (yyval.expr) = make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str)); }
+#line 3926 "parser.tab.c"
     break;
 
   case 208:
-#line 671 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr3(EXPR_COND, (yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3838 "parser.tab.c" /* yacc.c:1651  */
+#line 671 "parser.y"
+                                                { (yyval.expr) = make_expr3(EXPR_COND, (yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3932 "parser.tab.c"
     break;
 
   case 209:
-#line 672 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_LOGOR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3844 "parser.tab.c" /* yacc.c:1651  */
+#line 672 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_LOGOR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3938 "parser.tab.c"
     break;
 
   case 210:
-#line 673 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_LOGAND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3850 "parser.tab.c" /* yacc.c:1651  */
+#line 673 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_LOGAND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3944 "parser.tab.c"
     break;
 
   case 211:
-#line 674 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_OR , (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3856 "parser.tab.c" /* yacc.c:1651  */
+#line 674 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_OR , (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3950 "parser.tab.c"
     break;
 
   case 212:
-#line 675 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_XOR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3862 "parser.tab.c" /* yacc.c:1651  */
+#line 675 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_XOR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3956 "parser.tab.c"
     break;
 
   case 213:
-#line 676 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3868 "parser.tab.c" /* yacc.c:1651  */
+#line 676 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3962 "parser.tab.c"
     break;
 
   case 214:
-#line 677 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_EQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3874 "parser.tab.c" /* yacc.c:1651  */
+#line 677 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_EQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3968 "parser.tab.c"
     break;
 
   case 215:
-#line 678 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_INEQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3880 "parser.tab.c" /* yacc.c:1651  */
+#line 678 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_INEQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3974 "parser.tab.c"
     break;
 
   case 216:
-#line 679 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_GTR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3886 "parser.tab.c" /* yacc.c:1651  */
+#line 679 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_GTR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3980 "parser.tab.c"
     break;
 
   case 217:
-#line 680 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_LESS, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3892 "parser.tab.c" /* yacc.c:1651  */
+#line 680 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_LESS, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3986 "parser.tab.c"
     break;
 
   case 218:
-#line 681 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_GTREQL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3898 "parser.tab.c" /* yacc.c:1651  */
+#line 681 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_GTREQL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3992 "parser.tab.c"
     break;
 
   case 219:
-#line 682 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_LESSEQL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3904 "parser.tab.c" /* yacc.c:1651  */
+#line 682 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_LESSEQL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 3998 "parser.tab.c"
     break;
 
   case 220:
-#line 683 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_SHL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3910 "parser.tab.c" /* yacc.c:1651  */
+#line 683 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_SHL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4004 "parser.tab.c"
     break;
 
   case 221:
-#line 684 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_SHR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3916 "parser.tab.c" /* yacc.c:1651  */
+#line 684 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_SHR, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4010 "parser.tab.c"
     break;
 
   case 222:
-#line 685 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3922 "parser.tab.c" /* yacc.c:1651  */
+#line 685 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4016 "parser.tab.c"
     break;
 
   case 223:
-#line 686 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_SUB, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3928 "parser.tab.c" /* yacc.c:1651  */
+#line 686 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_SUB, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4022 "parser.tab.c"
     break;
 
   case 224:
-#line 687 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_MOD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3934 "parser.tab.c" /* yacc.c:1651  */
+#line 687 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_MOD, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4028 "parser.tab.c"
     break;
 
   case 225:
-#line 688 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_MUL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3940 "parser.tab.c" /* yacc.c:1651  */
+#line 688 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_MUL, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4034 "parser.tab.c"
     break;
 
   case 226:
-#line 689 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_DIV, (yyvsp[-2].expr), (yyvsp[0].expr)); }
-#line 3946 "parser.tab.c" /* yacc.c:1651  */
+#line 689 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_DIV, (yyvsp[-2].expr), (yyvsp[0].expr)); }
+#line 4040 "parser.tab.c"
     break;
 
   case 227:
-#line 690 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr1(EXPR_LOGNOT, (yyvsp[0].expr)); }
-#line 3952 "parser.tab.c" /* yacc.c:1651  */
+#line 690 "parser.y"
+                                                { (yyval.expr) = make_expr1(EXPR_LOGNOT, (yyvsp[0].expr)); }
+#line 4046 "parser.tab.c"
     break;
 
   case 228:
-#line 691 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr1(EXPR_NOT, (yyvsp[0].expr)); }
-#line 3958 "parser.tab.c" /* yacc.c:1651  */
+#line 691 "parser.y"
+                                                { (yyval.expr) = make_expr1(EXPR_NOT, (yyvsp[0].expr)); }
+#line 4052 "parser.tab.c"
     break;
 
   case 229:
-#line 692 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr1(EXPR_POS, (yyvsp[0].expr)); }
-#line 3964 "parser.tab.c" /* yacc.c:1651  */
+#line 692 "parser.y"
+                                                { (yyval.expr) = make_expr1(EXPR_POS, (yyvsp[0].expr)); }
+#line 4058 "parser.tab.c"
     break;
 
   case 230:
-#line 693 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr1(EXPR_NEG, (yyvsp[0].expr)); }
-#line 3970 "parser.tab.c" /* yacc.c:1651  */
+#line 693 "parser.y"
+                                                { (yyval.expr) = make_expr1(EXPR_NEG, (yyvsp[0].expr)); }
+#line 4064 "parser.tab.c"
     break;
 
   case 231:
-#line 694 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr1(EXPR_ADDRESSOF, (yyvsp[0].expr)); }
-#line 3976 "parser.tab.c" /* yacc.c:1651  */
+#line 694 "parser.y"
+                                                { (yyval.expr) = make_expr1(EXPR_ADDRESSOF, (yyvsp[0].expr)); }
+#line 4070 "parser.tab.c"
     break;
 
   case 232:
-#line 695 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr1(EXPR_PPTR, (yyvsp[0].expr)); }
-#line 3982 "parser.tab.c" /* yacc.c:1651  */
+#line 695 "parser.y"
+                                                { (yyval.expr) = make_expr1(EXPR_PPTR, (yyvsp[0].expr)); }
+#line 4076 "parser.tab.c"
     break;
 
   case 233:
-#line 696 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_MEMBER, make_expr1(EXPR_PPTR, (yyvsp[-2].expr)), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); }
-#line 3988 "parser.tab.c" /* yacc.c:1651  */
+#line 696 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_MEMBER, make_expr1(EXPR_PPTR, (yyvsp[-2].expr)), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); }
+#line 4082 "parser.tab.c"
     break;
 
   case 234:
-#line 697 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_MEMBER, (yyvsp[-2].expr), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); }
-#line 3994 "parser.tab.c" /* yacc.c:1651  */
+#line 697 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_MEMBER, (yyvsp[-2].expr), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); }
+#line 4088 "parser.tab.c"
     break;
 
   case 235:
-#line 699 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_exprt(EXPR_CAST, declare_var(NULL, (yyvsp[-3].declspec), (yyvsp[-2].declarator), 0), (yyvsp[0].expr)); free((yyvsp[-3].declspec)); free((yyvsp[-2].declarator)); }
-#line 4000 "parser.tab.c" /* yacc.c:1651  */
+#line 699 "parser.y"
+                                                { (yyval.expr) = make_exprt(EXPR_CAST, declare_var(NULL, (yyvsp[-3].declspec), (yyvsp[-2].declarator), 0), (yyvsp[0].expr)); free((yyvsp[-3].declspec)); free((yyvsp[-2].declarator)); }
+#line 4094 "parser.tab.c"
     break;
 
   case 236:
-#line 701 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_exprt(EXPR_SIZEOF, declare_var(NULL, (yyvsp[-2].declspec), (yyvsp[-1].declarator), 0), NULL); free((yyvsp[-2].declspec)); free((yyvsp[-1].declarator)); }
-#line 4006 "parser.tab.c" /* yacc.c:1651  */
+#line 701 "parser.y"
+                                                { (yyval.expr) = make_exprt(EXPR_SIZEOF, declare_var(NULL, (yyvsp[-2].declspec), (yyvsp[-1].declarator), 0), NULL); free((yyvsp[-2].declspec)); free((yyvsp[-1].declarator)); }
+#line 4100 "parser.tab.c"
     break;
 
   case 237:
-#line 702 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = make_expr2(EXPR_ARRAY, (yyvsp[-3].expr), (yyvsp[-1].expr)); }
-#line 4012 "parser.tab.c" /* yacc.c:1651  */
+#line 702 "parser.y"
+                                                { (yyval.expr) = make_expr2(EXPR_ARRAY, (yyvsp[-3].expr), (yyvsp[-1].expr)); }
+#line 4106 "parser.tab.c"
     break;
 
   case 238:
-#line 703 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = (yyvsp[-1].expr); }
-#line 4018 "parser.tab.c" /* yacc.c:1651  */
+#line 703 "parser.y"
+                                                { (yyval.expr) = (yyvsp[-1].expr); }
+#line 4112 "parser.tab.c"
     break;
 
   case 239:
-#line 706 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); }
-#line 4024 "parser.tab.c" /* yacc.c:1651  */
+#line 706 "parser.y"
+                                                { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); }
+#line 4118 "parser.tab.c"
     break;
 
   case 240:
-#line 707 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); }
-#line 4030 "parser.tab.c" /* yacc.c:1651  */
+#line 707 "parser.y"
+                                                        { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); }
+#line 4124 "parser.tab.c"
     break;
 
   case 241:
-#line 710 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = (yyvsp[0].expr);
+#line 710 "parser.y"
+                                                { (yyval.expr) = (yyvsp[0].expr);
 						  if (!(yyval.expr)->is_const)
 						      error_loc("expression is not an integer constant\n");
 						}
-#line 4039 "parser.tab.c" /* yacc.c:1651  */
+#line 4133 "parser.tab.c"
     break;
 
   case 242:
-#line 716 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = (yyvsp[0].expr);
+#line 716 "parser.y"
+                                                { (yyval.expr) = (yyvsp[0].expr);
 						  if (!(yyval.expr)->is_const && (yyval.expr)->type != EXPR_STRLIT && (yyval.expr)->type != EXPR_WSTRLIT)
 						      error_loc("expression is not constant\n");
 						}
-#line 4048 "parser.tab.c" /* yacc.c:1651  */
+#line 4142 "parser.tab.c"
     break;
 
   case 243:
-#line 722 "parser.y" /* yacc.c:1651  */
-    { (yyval.var_list) = NULL; }
-#line 4054 "parser.tab.c" /* yacc.c:1651  */
+#line 722 "parser.y"
+                                                { (yyval.var_list) = NULL; }
+#line 4148 "parser.tab.c"
     break;
 
   case 244:
-#line 723 "parser.y" /* yacc.c:1651  */
-    { (yyval.var_list) = append_var_list((yyvsp[-1].var_list), (yyvsp[0].var_list)); }
-#line 4060 "parser.tab.c" /* yacc.c:1651  */
+#line 723 "parser.y"
+                                                { (yyval.var_list) = append_var_list((yyvsp[-1].var_list), (yyvsp[0].var_list)); }
+#line 4154 "parser.tab.c"
     break;
 
   case 245:
-#line 727 "parser.y" /* yacc.c:1651  */
-    { const char *first = LIST_ENTRY(list_head((yyvsp[-1].declarator_list)), declarator_t, entry)->var->name;
+#line 727 "parser.y"
+                                                { const char *first = LIST_ENTRY(list_head((yyvsp[-1].declarator_list)), declarator_t, entry)->var->name;
 						  check_field_attrs(first, (yyvsp[-3].attr_list));
 						  (yyval.var_list) = set_var_types((yyvsp[-3].attr_list), (yyvsp[-2].declspec), (yyvsp[-1].declarator_list));
 						}
-#line 4069 "parser.tab.c" /* yacc.c:1651  */
+#line 4163 "parser.tab.c"
     break;
 
   case 246:
-#line 731 "parser.y" /* yacc.c:1651  */
-    { var_t *v = make_var(NULL);
+#line 731 "parser.y"
+                                                { var_t *v = make_var(NULL);
 						  v->declspec.type = (yyvsp[-1].type); v->attrs = (yyvsp[-2].attr_list);
 						  (yyval.var_list) = append_var(NULL, v);
 						}
-#line 4078 "parser.tab.c" /* yacc.c:1651  */
+#line 4172 "parser.tab.c"
     break;
 
   case 247:
-#line 738 "parser.y" /* yacc.c:1651  */
-    { (yyval.var) = (yyvsp[-1].var); }
-#line 4084 "parser.tab.c" /* yacc.c:1651  */
+#line 738 "parser.y"
+                                                { (yyval.var) = (yyvsp[-1].var); }
+#line 4178 "parser.tab.c"
     break;
 
   case 248:
-#line 739 "parser.y" /* yacc.c:1651  */
-    { (yyval.var) = make_var(NULL); (yyval.var)->attrs = (yyvsp[-1].attr_list); }
-#line 4090 "parser.tab.c" /* yacc.c:1651  */
+#line 739 "parser.y"
+                                                { (yyval.var) = make_var(NULL); (yyval.var)->attrs = (yyvsp[-1].attr_list); }
+#line 4184 "parser.tab.c"
     break;
 
   case 249:
-#line 742 "parser.y" /* yacc.c:1651  */
-    { (yyval.var_list) = NULL; }
-#line 4096 "parser.tab.c" /* yacc.c:1651  */
+#line 742 "parser.y"
+                                                { (yyval.var_list) = NULL; }
+#line 4190 "parser.tab.c"
     break;
 
   case 250:
-#line 743 "parser.y" /* yacc.c:1651  */
-    { (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); }
-#line 4102 "parser.tab.c" /* yacc.c:1651  */
+#line 743 "parser.y"
+                                                { (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); }
+#line 4196 "parser.tab.c"
     break;
 
   case 251:
-#line 747 "parser.y" /* yacc.c:1651  */
-    { (yyval.var) = (yyvsp[-1].var); }
-#line 4108 "parser.tab.c" /* yacc.c:1651  */
+#line 747 "parser.y"
+                                                { (yyval.var) = (yyvsp[-1].var); }
+#line 4202 "parser.tab.c"
     break;
 
   case 252:
-#line 748 "parser.y" /* yacc.c:1651  */
-    { (yyval.var) = NULL; }
-#line 4114 "parser.tab.c" /* yacc.c:1651  */
+#line 748 "parser.y"
+                                                { (yyval.var) = NULL; }
+#line 4208 "parser.tab.c"
     break;
 
   case 253:
-#line 751 "parser.y" /* yacc.c:1651  */
-    { (yyval.var) = declare_var(check_field_attrs((yyvsp[0].declarator)->var->name, (yyvsp[-2].attr_list)),
+#line 751 "parser.y"
+                                                { (yyval.var) = declare_var(check_field_attrs((yyvsp[0].declarator)->var->name, (yyvsp[-2].attr_list)),
 						                (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
 						  free((yyvsp[0].declarator));
 						}
-#line 4123 "parser.tab.c" /* yacc.c:1651  */
+#line 4217 "parser.tab.c"
     break;
 
   case 254:
-#line 755 "parser.y" /* yacc.c:1651  */
-    { var_t *v = make_var(NULL);
+#line 755 "parser.y"
+                                                { var_t *v = make_var(NULL);
 						  v->declspec.type = (yyvsp[0].type); v->attrs = (yyvsp[-1].attr_list);
 						  (yyval.var) = v;
 						}
-#line 4132 "parser.tab.c" /* yacc.c:1651  */
+#line 4226 "parser.tab.c"
     break;
 
   case 255:
-#line 761 "parser.y" /* yacc.c:1651  */
-    { (yyval.var) = (yyvsp[0].var);
+#line 761 "parser.y"
+                                                { (yyval.var) = (yyvsp[0].var);
 						  if (type_get_type((yyval.var)->declspec.type) != TYPE_FUNCTION)
 						    error_loc("only methods may be declared inside the methods section of a dispinterface\n");
 						  check_function_attrs((yyval.var)->name, (yyval.var)->attrs);
 						}
-#line 4142 "parser.tab.c" /* yacc.c:1651  */
+#line 4236 "parser.tab.c"
     break;
 
   case 256:
-#line 770 "parser.y" /* yacc.c:1651  */
-    { (yyval.var) = declare_var((yyvsp[-2].attr_list), (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
+#line 770 "parser.y"
+                                                { (yyval.var) = declare_var((yyvsp[-2].attr_list), (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
 						  free((yyvsp[0].declarator));
 						}
-#line 4150 "parser.tab.c" /* yacc.c:1651  */
+#line 4244 "parser.tab.c"
     break;
 
   case 257:
-#line 773 "parser.y" /* yacc.c:1651  */
-    { (yyval.var) = declare_var(NULL, (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
+#line 773 "parser.y"
+                                                { (yyval.var) = declare_var(NULL, (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE);
 						  free((yyvsp[0].declarator));
 						}
-#line 4158 "parser.tab.c" /* yacc.c:1651  */
+#line 4252 "parser.tab.c"
     break;
 
   case 258:
-#line 778 "parser.y" /* yacc.c:1651  */
-    { (yyval.var) = NULL; }
-#line 4164 "parser.tab.c" /* yacc.c:1651  */
+#line 778 "parser.y"
+                                                { (yyval.var) = NULL; }
+#line 4258 "parser.tab.c"
     break;
 
   case 260:
-#line 782 "parser.y" /* yacc.c:1651  */
-    { (yyval.str) = NULL; }
-#line 4170 "parser.tab.c" /* yacc.c:1651  */
+#line 782 "parser.y"
+                                                { (yyval.str) = NULL; }
+#line 4264 "parser.tab.c"
     break;
 
   case 261:
-#line 783 "parser.y" /* yacc.c:1651  */
-    { (yyval.str) = (yyvsp[0].str); }
-#line 4176 "parser.tab.c" /* yacc.c:1651  */
+#line 783 "parser.y"
+                                                { (yyval.str) = (yyvsp[0].str); }
+#line 4270 "parser.tab.c"
     break;
 
   case 262:
-#line 784 "parser.y" /* yacc.c:1651  */
-    { (yyval.str) = (yyvsp[0].str); }
-#line 4182 "parser.tab.c" /* yacc.c:1651  */
+#line 784 "parser.y"
+                                                { (yyval.str) = (yyvsp[0].str); }
+#line 4276 "parser.tab.c"
     break;
 
   case 263:
-#line 787 "parser.y" /* yacc.c:1651  */
-    { (yyval.var) = make_var((yyvsp[0].str)); }
-#line 4188 "parser.tab.c" /* yacc.c:1651  */
+#line 787 "parser.y"
+                                                { (yyval.var) = make_var((yyvsp[0].str)); }
+#line 4282 "parser.tab.c"
     break;
 
   case 264:
-#line 789 "parser.y" /* yacc.c:1651  */
-    { (yyval.var) = make_var((yyvsp[0].str)); }
-#line 4194 "parser.tab.c" /* yacc.c:1651  */
+#line 789 "parser.y"
+                                                { (yyval.var) = make_var((yyvsp[0].str)); }
+#line 4288 "parser.tab.c"
     break;
 
   case 265:
-#line 792 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4200 "parser.tab.c" /* yacc.c:1651  */
+#line 792 "parser.y"
+                                                { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4294 "parser.tab.c"
     break;
 
   case 266:
-#line 793 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4206 "parser.tab.c" /* yacc.c:1651  */
+#line 793 "parser.y"
+                                                { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4300 "parser.tab.c"
     break;
 
   case 268:
-#line 795 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), -1); }
-#line 4212 "parser.tab.c" /* yacc.c:1651  */
+#line 795 "parser.y"
+                                                { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), -1); }
+#line 4306 "parser.tab.c"
     break;
 
   case 269:
-#line 796 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), 1); }
-#line 4218 "parser.tab.c" /* yacc.c:1651  */
+#line 796 "parser.y"
+                                                { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), 1); }
+#line 4312 "parser.tab.c"
     break;
 
   case 270:
-#line 797 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT, 1); }
-#line 4224 "parser.tab.c" /* yacc.c:1651  */
+#line 797 "parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT, 1); }
+#line 4318 "parser.tab.c"
     break;
 
   case 271:
-#line 798 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4230 "parser.tab.c" /* yacc.c:1651  */
+#line 798 "parser.y"
+                                                { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4324 "parser.tab.c"
     break;
 
   case 272:
-#line 799 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4236 "parser.tab.c" /* yacc.c:1651  */
+#line 799 "parser.y"
+                                                { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4330 "parser.tab.c"
     break;
 
   case 273:
-#line 800 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4242 "parser.tab.c" /* yacc.c:1651  */
+#line 800 "parser.y"
+                                                { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4336 "parser.tab.c"
     break;
 
   case 274:
-#line 801 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4248 "parser.tab.c" /* yacc.c:1651  */
+#line 801 "parser.y"
+                                                { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4342 "parser.tab.c"
     break;
 
   case 275:
-#line 802 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4254 "parser.tab.c" /* yacc.c:1651  */
+#line 802 "parser.y"
+                                                { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4348 "parser.tab.c"
     break;
 
   case 278:
-#line 809 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT, 0); }
-#line 4260 "parser.tab.c" /* yacc.c:1651  */
+#line 809 "parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT, 0); }
+#line 4354 "parser.tab.c"
     break;
 
   case 279:
-#line 810 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT16, 0); }
-#line 4266 "parser.tab.c" /* yacc.c:1651  */
+#line 810 "parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT16, 0); }
+#line 4360 "parser.tab.c"
     break;
 
   case 280:
-#line 811 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT8, 0); }
-#line 4272 "parser.tab.c" /* yacc.c:1651  */
+#line 811 "parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT8, 0); }
+#line 4366 "parser.tab.c"
     break;
 
   case 281:
-#line 812 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_LONG, 0); }
-#line 4278 "parser.tab.c" /* yacc.c:1651  */
+#line 812 "parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_LONG, 0); }
+#line 4372 "parser.tab.c"
     break;
 
   case 282:
-#line 813 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_HYPER, 0); }
-#line 4284 "parser.tab.c" /* yacc.c:1651  */
+#line 813 "parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_HYPER, 0); }
+#line 4378 "parser.tab.c"
     break;
 
   case 283:
-#line 814 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT64, 0); }
-#line 4290 "parser.tab.c" /* yacc.c:1651  */
+#line 814 "parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT64, 0); }
+#line 4384 "parser.tab.c"
     break;
 
   case 284:
-#line 815 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_CHAR, 0); }
-#line 4296 "parser.tab.c" /* yacc.c:1651  */
+#line 815 "parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_CHAR, 0); }
+#line 4390 "parser.tab.c"
     break;
 
   case 285:
-#line 816 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT32, 0); }
-#line 4302 "parser.tab.c" /* yacc.c:1651  */
+#line 816 "parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT32, 0); }
+#line 4396 "parser.tab.c"
     break;
 
   case 286:
-#line 817 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_int(TYPE_BASIC_INT3264, 0); }
-#line 4308 "parser.tab.c" /* yacc.c:1651  */
+#line 817 "parser.y"
+                                                { (yyval.type) = type_new_int(TYPE_BASIC_INT3264, 0); }
+#line 4402 "parser.tab.c"
     break;
 
   case 287:
-#line 820 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_coclass((yyvsp[0].str)); }
-#line 4314 "parser.tab.c" /* yacc.c:1651  */
+#line 820 "parser.y"
+                                                { (yyval.type) = type_new_coclass((yyvsp[0].str)); }
+#line 4408 "parser.tab.c"
     break;
 
   case 288:
-#line 821 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = find_type((yyvsp[0].str), NULL, 0);
+#line 821 "parser.y"
+                                                { (yyval.type) = find_type((yyvsp[0].str), NULL, 0);
 						  if (type_get_type_detect_alias((yyval.type)) != TYPE_COCLASS)
 						    error_loc("%s was not declared a coclass at %s:%d\n",
 							      (yyvsp[0].str), (yyval.type)->loc_info.input_name,
 							      (yyval.type)->loc_info.line_number);
 						}
-#line 4325 "parser.tab.c" /* yacc.c:1651  */
+#line 4419 "parser.tab.c"
     break;
 
   case 289:
-#line 829 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = (yyvsp[0].type);
+#line 829 "parser.y"
+                                                { (yyval.type) = (yyvsp[0].type);
 						  check_def((yyval.type));
 						  (yyval.type)->attrs = check_coclass_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list));
 						}
-#line 4334 "parser.tab.c" /* yacc.c:1651  */
+#line 4428 "parser.tab.c"
     break;
 
   case 290:
-#line 836 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_coclass_define((yyvsp[-4].type), (yyvsp[-2].ifref_list)); }
-#line 4340 "parser.tab.c" /* yacc.c:1651  */
+#line 836 "parser.y"
+                                                { (yyval.type) = type_coclass_define((yyvsp[-4].type), (yyvsp[-2].ifref_list)); }
+#line 4434 "parser.tab.c"
     break;
 
   case 291:
-#line 839 "parser.y" /* yacc.c:1651  */
-    { (yyval.str) = (yyvsp[0].str); }
-#line 4346 "parser.tab.c" /* yacc.c:1651  */
+#line 839 "parser.y"
+                                                { (yyval.str) = (yyvsp[0].str); }
+#line 4440 "parser.tab.c"
     break;
 
   case 292:
-#line 842 "parser.y" /* yacc.c:1651  */
-    { (yyval.ifref_list) = NULL; }
-#line 4352 "parser.tab.c" /* yacc.c:1651  */
+#line 842 "parser.y"
+                                                { (yyval.ifref_list) = NULL; }
+#line 4446 "parser.tab.c"
     break;
 
   case 293:
-#line 843 "parser.y" /* yacc.c:1651  */
-    { (yyval.ifref_list) = append_ifref( (yyvsp[-1].ifref_list), (yyvsp[0].ifref) ); }
-#line 4358 "parser.tab.c" /* yacc.c:1651  */
+#line 843 "parser.y"
+                                                { (yyval.ifref_list) = append_ifref( (yyvsp[-1].ifref_list), (yyvsp[0].ifref) ); }
+#line 4452 "parser.tab.c"
     break;
 
   case 294:
-#line 847 "parser.y" /* yacc.c:1651  */
-    { (yyval.ifref) = make_ifref((yyvsp[0].type)); (yyval.ifref)->attrs = (yyvsp[-1].attr_list); }
-#line 4364 "parser.tab.c" /* yacc.c:1651  */
+#line 847 "parser.y"
+                                                { (yyval.ifref) = make_ifref((yyvsp[0].type)); (yyval.ifref)->attrs = (yyvsp[-1].attr_list); }
+#line 4458 "parser.tab.c"
     break;
 
   case 295:
-#line 850 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
-#line 4370 "parser.tab.c" /* yacc.c:1651  */
+#line 850 "parser.y"
+                                                { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
+#line 4464 "parser.tab.c"
     break;
 
   case 296:
-#line 851 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
-#line 4376 "parser.tab.c" /* yacc.c:1651  */
+#line 851 "parser.y"
+                                                { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
+#line 4470 "parser.tab.c"
     break;
 
   case 297:
-#line 854 "parser.y" /* yacc.c:1651  */
-    { attr_t *attrs;
+#line 854 "parser.y"
+                                                { attr_t *attrs;
 						  (yyval.type) = (yyvsp[0].type);
 						  check_def((yyval.type));
 						  attrs = make_attr(ATTR_DISPINTERFACE);
 						  (yyval.type)->attrs = append_attr( check_dispiface_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list)), attrs );
 						  (yyval.type)->defined = TRUE;
 						}
-#line 4388 "parser.tab.c" /* yacc.c:1651  */
+#line 4482 "parser.tab.c"
     break;
 
   case 298:
-#line 863 "parser.y" /* yacc.c:1651  */
-    { (yyval.var_list) = NULL; }
-#line 4394 "parser.tab.c" /* yacc.c:1651  */
+#line 863 "parser.y"
+                                                { (yyval.var_list) = NULL; }
+#line 4488 "parser.tab.c"
     break;
 
   case 299:
-#line 864 "parser.y" /* yacc.c:1651  */
-    { (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); }
-#line 4400 "parser.tab.c" /* yacc.c:1651  */
+#line 864 "parser.y"
+                                                { (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); }
+#line 4494 "parser.tab.c"
     break;
 
   case 300:
-#line 867 "parser.y" /* yacc.c:1651  */
-    { (yyval.var_list) = NULL; }
-#line 4406 "parser.tab.c" /* yacc.c:1651  */
+#line 867 "parser.y"
+                                                { (yyval.var_list) = NULL; }
+#line 4500 "parser.tab.c"
     break;
 
   case 301:
-#line 868 "parser.y" /* yacc.c:1651  */
-    { (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); }
-#line 4412 "parser.tab.c" /* yacc.c:1651  */
+#line 868 "parser.y"
+                                                { (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); }
+#line 4506 "parser.tab.c"
     break;
 
   case 302:
-#line 874 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = (yyvsp[-4].type);
+#line 874 "parser.y"
+                                                { (yyval.type) = (yyvsp[-4].type);
 						  type_dispinterface_define((yyval.type), (yyvsp[-2].var_list), (yyvsp[-1].var_list));
 						}
-#line 4420 "parser.tab.c" /* yacc.c:1651  */
+#line 4514 "parser.tab.c"
     break;
 
   case 303:
-#line 878 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = (yyvsp[-4].type);
+#line 878 "parser.y"
+                                                { (yyval.type) = (yyvsp[-4].type);
 						  type_dispinterface_define_from_iface((yyval.type), (yyvsp[-2].type));
 						}
-#line 4428 "parser.tab.c" /* yacc.c:1651  */
+#line 4522 "parser.tab.c"
     break;
 
   case 304:
-#line 883 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = NULL; }
-#line 4434 "parser.tab.c" /* yacc.c:1651  */
+#line 883 "parser.y"
+                                                { (yyval.type) = NULL; }
+#line 4528 "parser.tab.c"
     break;
 
   case 305:
-#line 884 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = find_type_or_error2((yyvsp[0].str), 0); }
-#line 4440 "parser.tab.c" /* yacc.c:1651  */
+#line 884 "parser.y"
+                                                { (yyval.type) = find_type_or_error2((yyvsp[0].str), 0); }
+#line 4534 "parser.tab.c"
     break;
 
   case 306:
-#line 887 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
-#line 4446 "parser.tab.c" /* yacc.c:1651  */
+#line 887 "parser.y"
+                                                { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
+#line 4540 "parser.tab.c"
     break;
 
   case 307:
-#line 888 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
-#line 4452 "parser.tab.c" /* yacc.c:1651  */
+#line 888 "parser.y"
+                                                { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); }
+#line 4546 "parser.tab.c"
     break;
 
   case 308:
-#line 891 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = (yyvsp[0].type);
+#line 891 "parser.y"
+                                                { (yyval.type) = (yyvsp[0].type);
 						  check_def((yyvsp[0].type));
 						  (yyvsp[0].type)->attrs = check_iface_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list));
 						  (yyvsp[0].type)->defined = TRUE;
 						}
-#line 4462 "parser.tab.c" /* yacc.c:1651  */
+#line 4556 "parser.tab.c"
     break;
 
   case 309:
-#line 899 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = (yyvsp[-5].type);
+#line 899 "parser.y"
+                                                { (yyval.type) = (yyvsp[-5].type);
 						  if((yyval.type) == (yyvsp[-4].type))
 						    error_loc("Interface can't inherit from itself\n");
 						  type_interface_define((yyval.type), (yyvsp[-4].type), (yyvsp[-2].stmt_list));
 						  check_async_uuid((yyval.type));
 						}
-#line 4473 "parser.tab.c" /* yacc.c:1651  */
+#line 4567 "parser.tab.c"
     break;
 
   case 310:
-#line 909 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = (yyvsp[-7].type);
+#line 909 "parser.y"
+                                                { (yyval.type) = (yyvsp[-7].type);
 						  type_interface_define((yyval.type), find_type_or_error2((yyvsp[-5].str), 0), (yyvsp[-2].stmt_list));
 						}
-#line 4481 "parser.tab.c" /* yacc.c:1651  */
+#line 4575 "parser.tab.c"
     break;
 
   case 311:
-#line 912 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = (yyvsp[-1].type); }
-#line 4487 "parser.tab.c" /* yacc.c:1651  */
+#line 912 "parser.y"
+                                                { (yyval.type) = (yyvsp[-1].type); }
+#line 4581 "parser.tab.c"
     break;
 
   case 312:
-#line 916 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = (yyvsp[-1].type); }
-#line 4493 "parser.tab.c" /* yacc.c:1651  */
+#line 916 "parser.y"
+                                                { (yyval.type) = (yyvsp[-1].type); }
+#line 4587 "parser.tab.c"
     break;
 
   case 313:
-#line 917 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = (yyvsp[-1].type); }
-#line 4499 "parser.tab.c" /* yacc.c:1651  */
+#line 917 "parser.y"
+                                                { (yyval.type) = (yyvsp[-1].type); }
+#line 4593 "parser.tab.c"
     break;
 
   case 314:
-#line 920 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_module((yyvsp[0].str)); }
-#line 4505 "parser.tab.c" /* yacc.c:1651  */
+#line 920 "parser.y"
+                                                { (yyval.type) = type_new_module((yyvsp[0].str)); }
+#line 4599 "parser.tab.c"
     break;
 
   case 315:
-#line 921 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_module((yyvsp[0].str)); }
-#line 4511 "parser.tab.c" /* yacc.c:1651  */
+#line 921 "parser.y"
+                                                { (yyval.type) = type_new_module((yyvsp[0].str)); }
+#line 4605 "parser.tab.c"
     break;
 
   case 316:
-#line 924 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = (yyvsp[0].type);
+#line 924 "parser.y"
+                                                { (yyval.type) = (yyvsp[0].type);
 						  (yyval.type)->attrs = check_module_attrs((yyvsp[0].type)->name, (yyvsp[-1].attr_list));
 						}
-#line 4519 "parser.tab.c" /* yacc.c:1651  */
+#line 4613 "parser.tab.c"
     break;
 
   case 317:
-#line 930 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = (yyvsp[-4].type);
+#line 930 "parser.y"
+                                                { (yyval.type) = (yyvsp[-4].type);
                                                   type_module_define((yyval.type), (yyvsp[-2].stmt_list));
 						}
-#line 4527 "parser.tab.c" /* yacc.c:1651  */
+#line 4621 "parser.tab.c"
     break;
 
   case 318:
-#line 936 "parser.y" /* yacc.c:1651  */
-    { (yyval.stgclass) = STG_EXTERN; }
-#line 4533 "parser.tab.c" /* yacc.c:1651  */
+#line 936 "parser.y"
+                                                { (yyval.stgclass) = STG_EXTERN; }
+#line 4627 "parser.tab.c"
     break;
 
   case 319:
-#line 937 "parser.y" /* yacc.c:1651  */
-    { (yyval.stgclass) = STG_STATIC; }
-#line 4539 "parser.tab.c" /* yacc.c:1651  */
+#line 937 "parser.y"
+                                                { (yyval.stgclass) = STG_STATIC; }
+#line 4633 "parser.tab.c"
     break;
 
   case 320:
-#line 938 "parser.y" /* yacc.c:1651  */
-    { (yyval.stgclass) = STG_REGISTER; }
-#line 4545 "parser.tab.c" /* yacc.c:1651  */
+#line 938 "parser.y"
+                                                { (yyval.stgclass) = STG_REGISTER; }
+#line 4639 "parser.tab.c"
     break;
 
   case 321:
-#line 942 "parser.y" /* yacc.c:1651  */
-    { (yyval.function_specifier) = FUNCTION_SPECIFIER_INLINE; }
-#line 4551 "parser.tab.c" /* yacc.c:1651  */
+#line 942 "parser.y"
+                                                { (yyval.function_specifier) = FUNCTION_SPECIFIER_INLINE; }
+#line 4645 "parser.tab.c"
     break;
 
   case 322:
-#line 946 "parser.y" /* yacc.c:1651  */
-    { (yyval.type_qualifier) = TYPE_QUALIFIER_CONST; }
-#line 4557 "parser.tab.c" /* yacc.c:1651  */
+#line 946 "parser.y"
+                                                { (yyval.type_qualifier) = TYPE_QUALIFIER_CONST; }
+#line 4651 "parser.tab.c"
     break;
 
   case 323:
-#line 949 "parser.y" /* yacc.c:1651  */
-    { (yyval.type_qualifier) = 0; }
-#line 4563 "parser.tab.c" /* yacc.c:1651  */
+#line 949 "parser.y"
+                                                { (yyval.type_qualifier) = 0; }
+#line 4657 "parser.tab.c"
     break;
 
   case 324:
-#line 950 "parser.y" /* yacc.c:1651  */
-    { (yyval.type_qualifier) = (yyvsp[-1].type_qualifier) | (yyvsp[0].type_qualifier); }
-#line 4569 "parser.tab.c" /* yacc.c:1651  */
+#line 950 "parser.y"
+                                                { (yyval.type_qualifier) = (yyvsp[-1].type_qualifier) | (yyvsp[0].type_qualifier); }
+#line 4663 "parser.tab.c"
     break;
 
   case 325:
-#line 953 "parser.y" /* yacc.c:1651  */
-    { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[0].declspec), NULL, STG_NONE, 0, 0); }
-#line 4575 "parser.tab.c" /* yacc.c:1651  */
+#line 953 "parser.y"
+                                                { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[0].declspec), NULL, STG_NONE, 0, 0); }
+#line 4669 "parser.tab.c"
     break;
 
   case 326:
-#line 955 "parser.y" /* yacc.c:1651  */
-    { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[-2].declspec), (yyvsp[0].declspec), STG_NONE, 0, 0); }
-#line 4581 "parser.tab.c" /* yacc.c:1651  */
+#line 955 "parser.y"
+                                                { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[-2].declspec), (yyvsp[0].declspec), STG_NONE, 0, 0); }
+#line 4675 "parser.tab.c"
     break;
 
   case 327:
-#line 958 "parser.y" /* yacc.c:1651  */
-    { (yyval.declspec) = NULL; }
-#line 4587 "parser.tab.c" /* yacc.c:1651  */
+#line 958 "parser.y"
+                                                { (yyval.declspec) = NULL; }
+#line 4681 "parser.tab.c"
     break;
 
   case 329:
-#line 963 "parser.y" /* yacc.c:1651  */
-    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, STG_NONE, (yyvsp[-1].type_qualifier), 0); }
-#line 4593 "parser.tab.c" /* yacc.c:1651  */
+#line 963 "parser.y"
+                                                { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, STG_NONE, (yyvsp[-1].type_qualifier), 0); }
+#line 4687 "parser.tab.c"
     break;
 
   case 330:
-#line 964 "parser.y" /* yacc.c:1651  */
-    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, STG_NONE, 0, (yyvsp[-1].function_specifier)); }
-#line 4599 "parser.tab.c" /* yacc.c:1651  */
+#line 964 "parser.y"
+                                                  { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, STG_NONE, 0, (yyvsp[-1].function_specifier)); }
+#line 4693 "parser.tab.c"
     break;
 
   case 331:
-#line 965 "parser.y" /* yacc.c:1651  */
-    { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, (yyvsp[-1].stgclass), 0, 0); }
-#line 4605 "parser.tab.c" /* yacc.c:1651  */
+#line 965 "parser.y"
+                                                { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, (yyvsp[-1].stgclass), 0, 0); }
+#line 4699 "parser.tab.c"
     break;
 
   case 332:
-#line 970 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); }
-#line 4611 "parser.tab.c" /* yacc.c:1651  */
+#line 970 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); }
+#line 4705 "parser.tab.c"
     break;
 
   case 333:
-#line 971 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv((yyval.declarator)->type, (yyvsp[-1].str)); }
-#line 4617 "parser.tab.c" /* yacc.c:1651  */
+#line 971 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv((yyval.declarator)->type, (yyvsp[-1].str)); }
+#line 4711 "parser.tab.c"
     break;
 
   case 335:
-#line 976 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = make_declarator((yyvsp[0].var)); }
-#line 4623 "parser.tab.c" /* yacc.c:1651  */
+#line 976 "parser.y"
+                                                { (yyval.declarator) = make_declarator((yyvsp[0].var)); }
+#line 4717 "parser.tab.c"
     break;
 
   case 336:
-#line 977 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[-1].declarator); }
-#line 4629 "parser.tab.c" /* yacc.c:1651  */
+#line 977 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-1].declarator); }
+#line 4723 "parser.tab.c"
     break;
 
   case 337:
-#line 978 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[-1].declarator); append_array((yyval.declarator), (yyvsp[0].expr)); }
-#line 4635 "parser.tab.c" /* yacc.c:1651  */
+#line 978 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-1].declarator); append_array((yyval.declarator), (yyvsp[0].expr)); }
+#line 4729 "parser.tab.c"
     break;
 
   case 338:
-#line 979 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[-3].declarator); append_chain_type((yyval.declarator), type_new_function((yyvsp[-1].var_list)), 0); }
-#line 4641 "parser.tab.c" /* yacc.c:1651  */
+#line 979 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-3].declarator); append_chain_type((yyval.declarator), type_new_function((yyvsp[-1].var_list)), 0); }
+#line 4735 "parser.tab.c"
     break;
 
   case 339:
-#line 985 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); }
-#line 4647 "parser.tab.c" /* yacc.c:1651  */
+#line 985 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); }
+#line 4741 "parser.tab.c"
     break;
 
   case 340:
-#line 986 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv((yyval.declarator)->type, (yyvsp[-1].str)); }
-#line 4653 "parser.tab.c" /* yacc.c:1651  */
+#line 986 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv((yyval.declarator)->type, (yyvsp[-1].str)); }
+#line 4747 "parser.tab.c"
     break;
 
   case 342:
-#line 993 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); }
-#line 4659 "parser.tab.c" /* yacc.c:1651  */
+#line 993 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); }
+#line 4753 "parser.tab.c"
     break;
 
   case 343:
-#line 994 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv((yyval.declarator)->type, (yyvsp[-1].str)); }
-#line 4665 "parser.tab.c" /* yacc.c:1651  */
+#line 994 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv((yyval.declarator)->type, (yyvsp[-1].str)); }
+#line 4759 "parser.tab.c"
     break;
 
   case 344:
-#line 998 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = make_declarator(NULL); }
-#line 4671 "parser.tab.c" /* yacc.c:1651  */
+#line 998 "parser.y"
+                                                { (yyval.declarator) = make_declarator(NULL); }
+#line 4765 "parser.tab.c"
     break;
 
   case 346:
-#line 1004 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[-1].declarator); }
-#line 4677 "parser.tab.c" /* yacc.c:1651  */
+#line 1004 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-1].declarator); }
+#line 4771 "parser.tab.c"
     break;
 
   case 347:
-#line 1005 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[-1].declarator); append_array((yyval.declarator), (yyvsp[0].expr)); }
-#line 4683 "parser.tab.c" /* yacc.c:1651  */
+#line 1005 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-1].declarator); append_array((yyval.declarator), (yyvsp[0].expr)); }
+#line 4777 "parser.tab.c"
     break;
 
   case 348:
-#line 1006 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = make_declarator(NULL); append_array((yyval.declarator), (yyvsp[0].expr)); }
-#line 4689 "parser.tab.c" /* yacc.c:1651  */
+#line 1006 "parser.y"
+                                                { (yyval.declarator) = make_declarator(NULL); append_array((yyval.declarator), (yyvsp[0].expr)); }
+#line 4783 "parser.tab.c"
     break;
 
   case 349:
-#line 1008 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = make_declarator(NULL);
+#line 1008 "parser.y"
+                                                { (yyval.declarator) = make_declarator(NULL);
 						  append_chain_type((yyval.declarator), type_new_function((yyvsp[-1].var_list)), 0);
 						}
-#line 4697 "parser.tab.c" /* yacc.c:1651  */
+#line 4791 "parser.tab.c"
     break;
 
   case 350:
-#line 1012 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[-3].declarator);
+#line 1012 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-3].declarator);
 						  append_chain_type((yyval.declarator), type_new_function((yyvsp[-1].var_list)), 0);
 						}
-#line 4705 "parser.tab.c" /* yacc.c:1651  */
+#line 4799 "parser.tab.c"
     break;
 
   case 351:
-#line 1020 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); }
-#line 4711 "parser.tab.c" /* yacc.c:1651  */
+#line 1020 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); }
+#line 4805 "parser.tab.c"
     break;
 
   case 352:
-#line 1021 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv((yyval.declarator)->type, (yyvsp[-1].str)); }
-#line 4717 "parser.tab.c" /* yacc.c:1651  */
+#line 1021 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv((yyval.declarator)->type, (yyvsp[-1].str)); }
+#line 4811 "parser.tab.c"
     break;
 
   case 354:
-#line 1028 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); }
-#line 4723 "parser.tab.c" /* yacc.c:1651  */
+#line 1028 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); }
+#line 4817 "parser.tab.c"
     break;
 
   case 355:
-#line 1029 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv((yyval.declarator)->type, (yyvsp[-1].str)); }
-#line 4729 "parser.tab.c" /* yacc.c:1651  */
+#line 1029 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv((yyval.declarator)->type, (yyvsp[-1].str)); }
+#line 4823 "parser.tab.c"
     break;
 
   case 356:
-#line 1033 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = make_declarator(NULL); }
-#line 4735 "parser.tab.c" /* yacc.c:1651  */
+#line 1033 "parser.y"
+                                                { (yyval.declarator) = make_declarator(NULL); }
+#line 4829 "parser.tab.c"
     break;
 
   case 358:
-#line 1041 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = make_declarator((yyvsp[0].var)); }
-#line 4741 "parser.tab.c" /* yacc.c:1651  */
+#line 1041 "parser.y"
+                                                { (yyval.declarator) = make_declarator((yyvsp[0].var)); }
+#line 4835 "parser.tab.c"
     break;
 
   case 359:
-#line 1042 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[-1].declarator); }
-#line 4747 "parser.tab.c" /* yacc.c:1651  */
+#line 1042 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-1].declarator); }
+#line 4841 "parser.tab.c"
     break;
 
   case 360:
-#line 1043 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[-1].declarator); append_array((yyval.declarator), (yyvsp[0].expr)); }
-#line 4753 "parser.tab.c" /* yacc.c:1651  */
+#line 1043 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-1].declarator); append_array((yyval.declarator), (yyvsp[0].expr)); }
+#line 4847 "parser.tab.c"
     break;
 
   case 361:
-#line 1044 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = make_declarator(NULL); append_array((yyval.declarator), (yyvsp[0].expr)); }
-#line 4759 "parser.tab.c" /* yacc.c:1651  */
+#line 1044 "parser.y"
+                                                { (yyval.declarator) = make_declarator(NULL); append_array((yyval.declarator), (yyvsp[0].expr)); }
+#line 4853 "parser.tab.c"
     break;
 
   case 362:
-#line 1046 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = make_declarator(NULL);
+#line 1046 "parser.y"
+                                                { (yyval.declarator) = make_declarator(NULL);
 						  append_chain_type((yyval.declarator), type_new_function((yyvsp[-1].var_list)), 0);
 						}
-#line 4767 "parser.tab.c" /* yacc.c:1651  */
+#line 4861 "parser.tab.c"
     break;
 
   case 363:
-#line 1050 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[-3].declarator);
+#line 1050 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-3].declarator);
 						  append_chain_type((yyval.declarator), type_new_function((yyvsp[-1].var_list)), 0);
 						}
-#line 4775 "parser.tab.c" /* yacc.c:1651  */
+#line 4869 "parser.tab.c"
     break;
 
   case 364:
-#line 1056 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); }
-#line 4781 "parser.tab.c" /* yacc.c:1651  */
+#line 1056 "parser.y"
+                                                { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); }
+#line 4875 "parser.tab.c"
     break;
 
   case 365:
-#line 1057 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator_list) = append_declarator( (yyvsp[-2].declarator_list), (yyvsp[0].declarator) ); }
-#line 4787 "parser.tab.c" /* yacc.c:1651  */
+#line 1057 "parser.y"
+                                                { (yyval.declarator_list) = append_declarator( (yyvsp[-2].declarator_list), (yyvsp[0].declarator) ); }
+#line 4881 "parser.tab.c"
     break;
 
   case 366:
-#line 1060 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = NULL; }
-#line 4793 "parser.tab.c" /* yacc.c:1651  */
+#line 1060 "parser.y"
+                                                { (yyval.expr) = NULL; }
+#line 4887 "parser.tab.c"
     break;
 
   case 367:
-#line 1061 "parser.y" /* yacc.c:1651  */
-    { (yyval.expr) = (yyvsp[0].expr); }
-#line 4799 "parser.tab.c" /* yacc.c:1651  */
+#line 1061 "parser.y"
+                                                { (yyval.expr) = (yyvsp[0].expr); }
+#line 4893 "parser.tab.c"
     break;
 
   case 368:
-#line 1064 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->bits = (yyvsp[0].expr);
+#line 1064 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-1].declarator); (yyval.declarator)->bits = (yyvsp[0].expr);
 						  if (!(yyval.declarator)->bits && !(yyval.declarator)->var->name)
 						    error_loc("unnamed fields are not allowed\n");
 						}
-#line 4808 "parser.tab.c" /* yacc.c:1651  */
+#line 4902 "parser.tab.c"
     break;
 
   case 369:
-#line 1071 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); }
-#line 4814 "parser.tab.c" /* yacc.c:1651  */
+#line 1071 "parser.y"
+                                                { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); }
+#line 4908 "parser.tab.c"
     break;
 
   case 370:
-#line 1073 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator_list) = append_declarator( (yyvsp[-2].declarator_list), (yyvsp[0].declarator) ); }
-#line 4820 "parser.tab.c" /* yacc.c:1651  */
+#line 1073 "parser.y"
+                                                { (yyval.declarator_list) = append_declarator( (yyvsp[-2].declarator_list), (yyvsp[0].declarator) ); }
+#line 4914 "parser.tab.c"
     break;
 
   case 371:
-#line 1077 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[0].declarator); }
-#line 4826 "parser.tab.c" /* yacc.c:1651  */
+#line 1077 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[0].declarator); }
+#line 4920 "parser.tab.c"
     break;
 
   case 372:
-#line 1078 "parser.y" /* yacc.c:1651  */
-    { (yyval.declarator) = (yyvsp[-2].declarator); (yyvsp[-2].declarator)->var->eval = (yyvsp[0].expr); }
-#line 4832 "parser.tab.c" /* yacc.c:1651  */
+#line 1078 "parser.y"
+                                                { (yyval.declarator) = (yyvsp[-2].declarator); (yyvsp[-2].declarator)->var->eval = (yyvsp[0].expr); }
+#line 4926 "parser.tab.c"
     break;
 
   case 373:
-#line 1082 "parser.y" /* yacc.c:1651  */
-    { (yyval.num) = THREADING_APARTMENT; }
-#line 4838 "parser.tab.c" /* yacc.c:1651  */
+#line 1082 "parser.y"
+                                                { (yyval.num) = THREADING_APARTMENT; }
+#line 4932 "parser.tab.c"
     break;
 
   case 374:
-#line 1083 "parser.y" /* yacc.c:1651  */
-    { (yyval.num) = THREADING_NEUTRAL; }
-#line 4844 "parser.tab.c" /* yacc.c:1651  */
+#line 1083 "parser.y"
+                                                { (yyval.num) = THREADING_NEUTRAL; }
+#line 4938 "parser.tab.c"
     break;
 
   case 375:
-#line 1084 "parser.y" /* yacc.c:1651  */
-    { (yyval.num) = THREADING_SINGLE; }
-#line 4850 "parser.tab.c" /* yacc.c:1651  */
+#line 1084 "parser.y"
+                                                { (yyval.num) = THREADING_SINGLE; }
+#line 4944 "parser.tab.c"
     break;
 
   case 376:
-#line 1085 "parser.y" /* yacc.c:1651  */
-    { (yyval.num) = THREADING_FREE; }
-#line 4856 "parser.tab.c" /* yacc.c:1651  */
+#line 1085 "parser.y"
+                                                { (yyval.num) = THREADING_FREE; }
+#line 4950 "parser.tab.c"
     break;
 
   case 377:
-#line 1086 "parser.y" /* yacc.c:1651  */
-    { (yyval.num) = THREADING_BOTH; }
-#line 4862 "parser.tab.c" /* yacc.c:1651  */
+#line 1086 "parser.y"
+                                                { (yyval.num) = THREADING_BOTH; }
+#line 4956 "parser.tab.c"
     break;
 
   case 378:
-#line 1090 "parser.y" /* yacc.c:1651  */
-    { (yyval.num) = FC_RP; }
-#line 4868 "parser.tab.c" /* yacc.c:1651  */
+#line 1090 "parser.y"
+                                                { (yyval.num) = FC_RP; }
+#line 4962 "parser.tab.c"
     break;
 
   case 379:
-#line 1091 "parser.y" /* yacc.c:1651  */
-    { (yyval.num) = FC_UP; }
-#line 4874 "parser.tab.c" /* yacc.c:1651  */
+#line 1091 "parser.y"
+                                                { (yyval.num) = FC_UP; }
+#line 4968 "parser.tab.c"
     break;
 
   case 380:
-#line 1092 "parser.y" /* yacc.c:1651  */
-    { (yyval.num) = FC_FP; }
-#line 4880 "parser.tab.c" /* yacc.c:1651  */
+#line 1092 "parser.y"
+                                                { (yyval.num) = FC_FP; }
+#line 4974 "parser.tab.c"
     break;
 
   case 381:
-#line 1095 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_struct((yyvsp[-3].str), current_namespace, TRUE, (yyvsp[-1].var_list)); }
-#line 4886 "parser.tab.c" /* yacc.c:1651  */
+#line 1095 "parser.y"
+                                                { (yyval.type) = type_new_struct((yyvsp[-3].str), current_namespace, TRUE, (yyvsp[-1].var_list)); }
+#line 4980 "parser.tab.c"
     break;
 
   case 382:
-#line 1098 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_void(); }
-#line 4892 "parser.tab.c" /* yacc.c:1651  */
+#line 1098 "parser.y"
+                                                { (yyval.type) = type_new_void(); }
+#line 4986 "parser.tab.c"
     break;
 
   case 383:
-#line 1099 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
-#line 4898 "parser.tab.c" /* yacc.c:1651  */
+#line 1099 "parser.y"
+                                                { (yyval.type) = find_type_or_error((yyvsp[0].str), 0); }
+#line 4992 "parser.tab.c"
     break;
 
   case 384:
-#line 1100 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = (yyvsp[0].type); }
-#line 4904 "parser.tab.c" /* yacc.c:1651  */
+#line 1100 "parser.y"
+                                                { (yyval.type) = (yyvsp[0].type); }
+#line 4998 "parser.tab.c"
     break;
 
   case 385:
-#line 1101 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = (yyvsp[0].type); }
-#line 4910 "parser.tab.c" /* yacc.c:1651  */
+#line 1101 "parser.y"
+                                                { (yyval.type) = (yyvsp[0].type); }
+#line 5004 "parser.tab.c"
     break;
 
   case 386:
-#line 1102 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_enum((yyvsp[0].str), current_namespace, FALSE, NULL); }
-#line 4916 "parser.tab.c" /* yacc.c:1651  */
+#line 1102 "parser.y"
+                                                { (yyval.type) = type_new_enum((yyvsp[0].str), current_namespace, FALSE, NULL); }
+#line 5010 "parser.tab.c"
     break;
 
   case 387:
-#line 1103 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = (yyvsp[0].type); }
-#line 4922 "parser.tab.c" /* yacc.c:1651  */
+#line 1103 "parser.y"
+                                                { (yyval.type) = (yyvsp[0].type); }
+#line 5016 "parser.tab.c"
     break;
 
   case 388:
-#line 1104 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_struct((yyvsp[0].str), current_namespace, FALSE, NULL); }
-#line 4928 "parser.tab.c" /* yacc.c:1651  */
+#line 1104 "parser.y"
+                                                { (yyval.type) = type_new_struct((yyvsp[0].str), current_namespace, FALSE, NULL); }
+#line 5022 "parser.tab.c"
     break;
 
   case 389:
-#line 1105 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = (yyvsp[0].type); }
-#line 4934 "parser.tab.c" /* yacc.c:1651  */
+#line 1105 "parser.y"
+                                                { (yyval.type) = (yyvsp[0].type); }
+#line 5028 "parser.tab.c"
     break;
 
   case 390:
-#line 1106 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[0].str), FALSE, NULL); }
-#line 4940 "parser.tab.c" /* yacc.c:1651  */
+#line 1106 "parser.y"
+                                                { (yyval.type) = type_new_nonencapsulated_union((yyvsp[0].str), FALSE, NULL); }
+#line 5034 "parser.tab.c"
     break;
 
   case 391:
-#line 1107 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = make_safearray((yyvsp[-1].type)); }
-#line 4946 "parser.tab.c" /* yacc.c:1651  */
+#line 1107 "parser.y"
+                                                { (yyval.type) = make_safearray((yyvsp[-1].type)); }
+#line 5040 "parser.tab.c"
     break;
 
   case 392:
-#line 1111 "parser.y" /* yacc.c:1651  */
-    { (yyvsp[-4].attr_list) = append_attribs((yyvsp[-4].attr_list), (yyvsp[-2].attr_list));
+#line 1111 "parser.y"
+                                                { (yyvsp[-4].attr_list) = append_attribs((yyvsp[-4].attr_list), (yyvsp[-2].attr_list));
 						  reg_typedefs((yyvsp[-1].declspec), (yyvsp[0].declarator_list), check_typedef_attrs((yyvsp[-4].attr_list)));
 						  (yyval.statement) = make_statement_typedef((yyvsp[0].declarator_list), !(yyvsp[-1].declspec)->type->defined);
 						}
-#line 4955 "parser.tab.c" /* yacc.c:1651  */
+#line 5049 "parser.tab.c"
     break;
 
   case 393:
-#line 1118 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_nonencapsulated_union((yyvsp[-3].str), TRUE, (yyvsp[-1].var_list)); }
-#line 4961 "parser.tab.c" /* yacc.c:1651  */
+#line 1118 "parser.y"
+                                                { (yyval.type) = type_new_nonencapsulated_union((yyvsp[-3].str), TRUE, (yyvsp[-1].var_list)); }
+#line 5055 "parser.tab.c"
     break;
 
   case 394:
-#line 1121 "parser.y" /* yacc.c:1651  */
-    { (yyval.type) = type_new_encapsulated_union((yyvsp[-8].str), (yyvsp[-5].var), (yyvsp[-3].var), (yyvsp[-1].var_list)); }
-#line 4967 "parser.tab.c" /* yacc.c:1651  */
+#line 1121 "parser.y"
+                                                { (yyval.type) = type_new_encapsulated_union((yyvsp[-8].str), (yyvsp[-5].var), (yyvsp[-3].var), (yyvsp[-1].var_list)); }
+#line 5061 "parser.tab.c"
     break;
 
   case 395:
-#line 1125 "parser.y" /* yacc.c:1651  */
-    { (yyval.num) = MAKEVERSION((yyvsp[0].num), 0); }
-#line 4973 "parser.tab.c" /* yacc.c:1651  */
+#line 1125 "parser.y"
+                                                { (yyval.num) = MAKEVERSION((yyvsp[0].num), 0); }
+#line 5067 "parser.tab.c"
     break;
 
   case 396:
-#line 1126 "parser.y" /* yacc.c:1651  */
-    { (yyval.num) = MAKEVERSION((yyvsp[-2].num), (yyvsp[0].num)); }
-#line 4979 "parser.tab.c" /* yacc.c:1651  */
+#line 1126 "parser.y"
+                                                { (yyval.num) = MAKEVERSION((yyvsp[-2].num), (yyvsp[0].num)); }
+#line 5073 "parser.tab.c"
     break;
 
   case 397:
-#line 1127 "parser.y" /* yacc.c:1651  */
-    { (yyval.num) = (yyvsp[0].num); }
-#line 4985 "parser.tab.c" /* yacc.c:1651  */
+#line 1127 "parser.y"
+                                                { (yyval.num) = (yyvsp[0].num); }
+#line 5079 "parser.tab.c"
     break;
 
   case 402:
-#line 1140 "parser.y" /* yacc.c:1651  */
-    { type_t *type = find_type_or_error((yyvsp[-1].str), 0);
+#line 1140 "parser.y"
+                                                { type_t *type = find_type_or_error((yyvsp[-1].str), 0);
                                                   type->attrs = append_attr_list(type->attrs, (yyvsp[-2].attr_list));
                                                 }
-#line 4993 "parser.tab.c" /* yacc.c:1651  */
+#line 5087 "parser.tab.c"
     break;
 
   case 403:
-#line 1145 "parser.y" /* yacc.c:1651  */
-    {  type_t *iface = find_type_or_error2((yyvsp[-3].str), 0);
+#line 1145 "parser.y"
+                                                {  type_t *iface = find_type_or_error2((yyvsp[-3].str), 0);
                                                    if (type_get_type(iface) != TYPE_INTERFACE)
                                                        error_loc("%s is not an interface\n", iface->name);
                                                    iface->attrs = append_attr_list(iface->attrs, (yyvsp[-5].attr_list));
                                                 }
-#line 5003 "parser.tab.c" /* yacc.c:1651  */
+#line 5097 "parser.tab.c"
     break;
 
   case 404:
-#line 1152 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr_list) = NULL; }
-#line 5009 "parser.tab.c" /* yacc.c:1651  */
+#line 1152 "parser.y"
+                                                { (yyval.attr_list) = NULL; }
+#line 5103 "parser.tab.c"
     break;
 
   case 405:
-#line 1153 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr_list) = (yyvsp[-1].attr_list); }
-#line 5015 "parser.tab.c" /* yacc.c:1651  */
+#line 1153 "parser.y"
+                                                { (yyval.attr_list) = (yyvsp[-1].attr_list); }
+#line 5109 "parser.tab.c"
     break;
 
   case 406:
-#line 1156 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr_list) = append_attr(NULL, (yyvsp[0].attr)); }
-#line 5021 "parser.tab.c" /* yacc.c:1651  */
+#line 1156 "parser.y"
+                                                { (yyval.attr_list) = append_attr(NULL, (yyvsp[0].attr)); }
+#line 5115 "parser.tab.c"
     break;
 
   case 407:
-#line 1157 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr_list) = append_attr((yyvsp[-2].attr_list), (yyvsp[0].attr)); }
-#line 5027 "parser.tab.c" /* yacc.c:1651  */
+#line 1157 "parser.y"
+                                                { (yyval.attr_list) = append_attr((yyvsp[-2].attr_list), (yyvsp[0].attr)); }
+#line 5121 "parser.tab.c"
     break;
 
   case 408:
-#line 1160 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_ENCODE); }
-#line 5033 "parser.tab.c" /* yacc.c:1651  */
+#line 1160 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_ENCODE); }
+#line 5127 "parser.tab.c"
     break;
 
   case 409:
-#line 1161 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_DECODE); }
-#line 5039 "parser.tab.c" /* yacc.c:1651  */
+#line 1161 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_DECODE); }
+#line 5133 "parser.tab.c"
     break;
 
   case 410:
-#line 1162 "parser.y" /* yacc.c:1651  */
-    { (yyval.attr) = make_attr(ATTR_EXPLICIT_HANDLE); }
-#line 5045 "parser.tab.c" /* yacc.c:1651  */
+#line 1162 "parser.y"
+                                                { (yyval.attr) = make_attr(ATTR_EXPLICIT_HANDLE); }
+#line 5139 "parser.tab.c"
     break;
 
 
-#line 5049 "parser.tab.c" /* yacc.c:1651  */
+#line 5143 "parser.tab.c"
+
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -5070,14 +5165,13 @@
   /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+  {
+    const int yylhs = yyr1[yyn] - YYNTOKENS;
+    const int yyi = yypgoto[yylhs] + *yyssp;
+    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+               ? yytable[yyi]
+               : yydefgoto[yylhs]);
+  }
 
   goto yynewstate;
 
@@ -5109,7 +5203,7 @@
           {
             if (yymsg != yymsgbuf)
               YYSTACK_FREE (yymsg);
-            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+            yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
             if (!yymsg)
               {
                 yymsg = yymsgbuf;
@@ -5160,12 +5254,10 @@
 | yyerrorlab -- error raised explicitly by YYERROR.  |
 `---------------------------------------------------*/
 yyerrorlab:
-
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
-     goto yyerrorlab;
+  /* Pacify compilers when the user code never invokes YYERROR and the
+     label yyerrorlab therefore never appears in user code.  */
+  if (0)
+    YYERROR;
 
   /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
@@ -5227,6 +5319,7 @@
   yyresult = 0;
   goto yyreturn;
 
+
 /*-----------------------------------.
 | yyabortlab -- YYABORT comes here.  |
 `-----------------------------------*/
@@ -5234,6 +5327,7 @@
   yyresult = 1;
   goto yyreturn;
 
+
 #if !defined yyoverflow || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
@@ -5244,6 +5338,10 @@
   /* Fall through.  */
 #endif
 
+
+/*-----------------------------------------------------.
+| yyreturn -- parsing is finished, return the result.  |
+`-----------------------------------------------------*/
 yyreturn:
   if (yychar != YYEMPTY)
     {
@@ -5260,7 +5358,7 @@
   while (yyssp != yyss)
     {
       yydestruct ("Cleanup: popping",
-                  yystos[*yyssp], yyvsp);
+                  yystos[+*yyssp], yyvsp);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
@@ -5273,7 +5371,7 @@
 #endif
   return yyresult;
 }
-#line 1164 "parser.y" /* yacc.c:1910  */
+#line 1164 "parser.y"
 
 
 static void decl_builtin_basic(const char *name, enum type_basic_type type)
@@ -5905,6 +6003,7 @@
 static typelib_t *make_library(const char *name, const attr_list_t *attrs)
 {
     typelib_t *typelib = xmalloc(sizeof(*typelib));
+    memset(typelib, 0, sizeof(*typelib));
     typelib->name = xstrdup(name);
     typelib->attrs = attrs;
     list_init( &typelib->importlibs );
@@ -6813,6 +6912,25 @@
 static void check_functions(const type_t *iface, int is_inside_library)
 {
     const statement_t *stmt;
+    /* check for duplicates */
+    if (is_attr(iface->attrs, ATTR_DISPINTERFACE))
+    {
+        var_list_t *methods = type_dispiface_get_methods(iface);
+        var_t *func, *func_iter;
+
+        if (methods) LIST_FOR_EACH_ENTRY( func, methods, var_t, entry )
+        {
+            LIST_FOR_EACH_ENTRY( func_iter, methods, var_t, entry )
+            {
+                if (func == func_iter) break;
+                if (strcmp(func->name, func_iter->name)) continue;
+                if (is_attr(func->attrs, ATTR_PROPGET) != is_attr(func_iter->attrs, ATTR_PROPGET)) continue;
+                if (is_attr(func->attrs, ATTR_PROPPUT) != is_attr(func_iter->attrs, ATTR_PROPPUT)) continue;
+                if (is_attr(func->attrs, ATTR_PROPPUTREF) != is_attr(func_iter->attrs, ATTR_PROPPUTREF)) continue;
+                error_loc_info(&func->loc_info, "duplicated function \'%s\'\n", func->name);
+            }
+        }
+    }
     if (is_attr(iface->attrs, ATTR_EXPLICIT_HANDLE))
     {
         STATEMENTS_FOR_EACH_FUNC( stmt, type_iface_get_stmts(iface) )
diff --git a/mingw-w64-tools/widl/src/parser.tab.h b/mingw-w64-tools/widl/src/parser.tab.h
index 289ba0f..453bf31 100644
--- a/mingw-w64-tools/widl/src/parser.tab.h
+++ b/mingw-w64-tools/widl/src/parser.tab.h
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.1.  */
+/* A Bison parser, made by GNU Bison 3.5.4.  */
 
 /* Bison interface for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+   Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -30,6 +31,9 @@
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
+/* Undocumented macros, especially those whose name start with YY_,
+   are private implementation details.  Do not rely on them.  */
+
 #ifndef YY_PARSER_PARSER_TAB_H_INCLUDED
 # define YY_PARSER_PARSER_TAB_H_INCLUDED
 /* Debug traces.  */
@@ -236,10 +240,9 @@
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
 union YYSTYPE
 {
-#line 129 "parser.y" /* yacc.c:1913  */
+#line 129 "parser.y"
 
 	attr_t *attr;
 	attr_list_t *attr_list;
@@ -268,9 +271,9 @@
 	enum type_qualifier type_qualifier;
 	enum function_specifier function_specifier;
 
-#line 272 "parser.tab.h" /* yacc.c:1913  */
-};
+#line 275 "parser.tab.h"
 
+};
 typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
diff --git a/mingw-w64-tools/widl/src/parser.y b/mingw-w64-tools/widl/src/parser.y
index 5f6eb50..3ef8d89 100644
--- a/mingw-w64-tools/widl/src/parser.y
+++ b/mingw-w64-tools/widl/src/parser.y
@@ -1792,6 +1792,7 @@
 static typelib_t *make_library(const char *name, const attr_list_t *attrs)
 {
     typelib_t *typelib = xmalloc(sizeof(*typelib));
+    memset(typelib, 0, sizeof(*typelib));
     typelib->name = xstrdup(name);
     typelib->attrs = attrs;
     list_init( &typelib->importlibs );
@@ -2700,6 +2701,25 @@
 static void check_functions(const type_t *iface, int is_inside_library)
 {
     const statement_t *stmt;
+    /* check for duplicates */
+    if (is_attr(iface->attrs, ATTR_DISPINTERFACE))
+    {
+        var_list_t *methods = type_dispiface_get_methods(iface);
+        var_t *func, *func_iter;
+
+        if (methods) LIST_FOR_EACH_ENTRY( func, methods, var_t, entry )
+        {
+            LIST_FOR_EACH_ENTRY( func_iter, methods, var_t, entry )
+            {
+                if (func == func_iter) break;
+                if (strcmp(func->name, func_iter->name)) continue;
+                if (is_attr(func->attrs, ATTR_PROPGET) != is_attr(func_iter->attrs, ATTR_PROPGET)) continue;
+                if (is_attr(func->attrs, ATTR_PROPPUT) != is_attr(func_iter->attrs, ATTR_PROPPUT)) continue;
+                if (is_attr(func->attrs, ATTR_PROPPUTREF) != is_attr(func_iter->attrs, ATTR_PROPPUTREF)) continue;
+                error_loc_info(&func->loc_info, "duplicated function \'%s\'\n", func->name);
+            }
+        }
+    }
     if (is_attr(iface->attrs, ATTR_EXPLICIT_HANDLE))
     {
         STATEMENTS_FOR_EACH_FUNC( stmt, type_iface_get_stmts(iface) )
diff --git a/mingw-w64-tools/widl/src/register.c b/mingw-w64-tools/widl/src/register.c
index f65cbdd..c03ab3c 100644
--- a/mingw-w64-tools/widl/src/register.c
+++ b/mingw-w64-tools/widl/src/register.c
@@ -119,8 +119,6 @@
 
     if (!uuid) return;
     if (!is_object( iface )) return;
-    if (!is_attr( iface->attrs, ATTR_OLEAUTOMATION ) && !is_attr( iface->attrs, ATTR_DISPINTERFACE ))
-        return;
     put_str( indent, "'%s' = s '%s'\n", format_uuid( uuid ), iface->name );
     put_str( indent, "{\n" );
     indent++;
@@ -137,13 +135,10 @@
 
 static void write_typelib_interfaces( const typelib_t *typelib )
 {
-    const statement_t *stmt;
+    unsigned int i;
 
-    if (typelib->stmts) LIST_FOR_EACH_ENTRY( stmt, typelib->stmts, const statement_t, entry )
-    {
-        if (stmt->type == STMT_TYPE && type_get_type( stmt->u.type ) == TYPE_INTERFACE)
-            write_typelib_interface( stmt->u.type, typelib );
-    }
+    for (i = 0; i < typelib->reg_iface_count; ++i)
+        write_typelib_interface( typelib->reg_ifaces[i], typelib );
 }
 
 static int write_coclass( const type_t *class, const typelib_t *typelib )
diff --git a/mingw-w64-tools/widl/src/server.c b/mingw-w64-tools/widl/src/server.c
index 79dc079..cce880b 100644
--- a/mingw-w64-tools/widl/src/server.c
+++ b/mingw-w64-tools/widl/src/server.c
@@ -307,7 +307,7 @@
     {
         var_t *func = stmt->u.var;
         if (is_local( func->attrs )) continue;
-        print_server( "(SERVER_ROUTINE)%s%s,\n", prefix_server, get_name(func));
+        print_server( "(void *)%s%s,\n", prefix_server, get_name(func));
     }
     indent--;
     print_server( "};\n\n" );
diff --git a/mingw-w64-tools/widl/src/typegen.c b/mingw-w64-tools/widl/src/typegen.c
index 9b8aa1a..04280cb 100644
--- a/mingw-w64-tools/widl/src/typegen.c
+++ b/mingw-w64-tools/widl/src/typegen.c
@@ -4813,20 +4813,21 @@
         if (is_array( arg->declspec.type ) || is_ptr( arg->declspec.type )) align = pointer_size;
         else type_memsize_and_alignment( arg->declspec.type, &align );
 
-        if (align >= pointer_size)
-            fprintf( file, "%s;\n", arg->name );
-        else
-            fprintf( file, "%s DECLSPEC_ALIGN(%u);\n", arg->name, pointer_size );
+        if (align < pointer_size)
+            fprintf( file, "DECLSPEC_ALIGN(%u) ", pointer_size );
+        fprintf( file, "%s;\n", arg->name );
     }
     if (add_retval && !is_void( retval->declspec.type ))
     {
         print_file(file, 2, "%s", "");
-        write_type_decl( file, &retval->declspec, retval->name );
-        if (is_array( retval->declspec.type ) || is_ptr( retval->declspec.type ) ||
-            type_memsize( retval->declspec.type ) == pointer_size)
-            fprintf( file, ";\n" );
-        else
-            fprintf( file, " DECLSPEC_ALIGN(%u);\n", pointer_size );
+        write_type_left( file, &retval->declspec, NAME_DEFAULT, TRUE, TRUE );
+        if (needs_space_after( retval->declspec.type )) fputc( ' ', file );
+        if (!is_array( retval->declspec.type ) && !is_ptr( retval->declspec.type ) &&
+            type_memsize( retval->declspec.type ) != pointer_size)
+        {
+            fprintf( file, "DECLSPEC_ALIGN(%u) ", pointer_size );
+        }
+        fprintf( file, "%s;\n", retval->name );
     }
     print_file(file, 1, "} %s;\n", var_decl );
     if (needs_packing) print_file( file, 0, "#include <poppack.h>\n" );
diff --git a/mingw-w64-tools/widl/src/widl.c b/mingw-w64-tools/widl/src/widl.c
index 35d37d9..38b9d86 100644
--- a/mingw-w64-tools/widl/src/widl.c
+++ b/mingw-w64-tools/widl/src/widl.c
@@ -151,6 +151,7 @@
 char *temp_name;
 const char *prefix_client = "";
 const char *prefix_server = "";
+static const char *includedir;
 
 int line_number = 1;
 
@@ -573,6 +574,27 @@
   fclose(idfile);
 }
 
+static void init_argv0_dir( const char *argv0 )
+{
+#ifndef _WIN32
+    char *p, *dir;
+
+#if defined(__linux__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__)
+    dir = realpath( "/proc/self/exe", NULL );
+#elif defined (__FreeBSD__) || defined(__DragonFly__)
+    dir = realpath( "/proc/curproc/file", NULL );
+#else
+    dir = realpath( argv0, NULL );
+#endif
+    if (!dir) return;
+    if (!(p = strrchr( dir, '/' ))) return;
+    if (p == dir) p++;
+    *p = 0;
+    includedir = strmake( "%s/%s", dir, BIN_TO_INCLUDEDIR );
+    free( dir );
+#endif
+}
+
 int main(int argc,char *argv[])
 {
   int i, optc;
@@ -586,6 +608,7 @@
 #ifdef SIGHUP
   signal( SIGHUP, exit_on_signal );
 #endif
+  init_argv0_dir( argv[0] );
 
   now = time(NULL);
 
diff --git a/mingw-w64-tools/widl/src/widltypes.h b/mingw-w64-tools/widl/src/widltypes.h
index 5e28329..085a0ff 100644
--- a/mingw-w64-tools/widl/src/widltypes.h
+++ b/mingw-w64-tools/widl/src/widltypes.h
@@ -538,6 +538,9 @@
     const attr_list_t *attrs;
     struct list importlibs;
     statement_list_t *stmts;
+
+    type_t **reg_ifaces;
+    unsigned int reg_iface_count;
 };
 
 struct _user_type_t {
diff --git a/mingw-w64-tools/widl/src/wpp/ppl.l b/mingw-w64-tools/widl/src/wpp/ppl.l
index 4fd12c6..a681243 100644
--- a/mingw-w64-tools/widl/src/wpp/ppl.l
+++ b/mingw-w64-tools/widl/src/wpp/ppl.l
@@ -1620,8 +1620,8 @@
 	pp_incl_state.ppp = NULL;
 
 	if(pp_status.debug)
-		fprintf(stderr, "pp_do_include: %s:%d: include_state=%d, include_ppp='%s', include_ifdepth=%d\n",
-                        pp_status.input, pp_status.line_number, pp_incl_state.state, pp_incl_state.ppp, pp_incl_state.ifdepth);
+		fprintf(stderr, "pp_do_include: %s:%d: include_state=%d, include_ifdepth=%d\n",
+                        pp_status.input, pp_status.line_number, pp_incl_state.state, pp_incl_state.ifdepth);
 	pp_status.file = fp;
 	ppy__switch_to_buffer(ppy__create_buffer(NULL, YY_BUF_SIZE));
 
diff --git a/mingw-w64-tools/widl/src/wpp/ppl.yy.c b/mingw-w64-tools/widl/src/wpp/ppl.yy.c
index c7b1e1c..aff35a1 100644
--- a/mingw-w64-tools/widl/src/wpp/ppl.yy.c
+++ b/mingw-w64-tools/widl/src/wpp/ppl.yy.c
@@ -4827,8 +4827,8 @@
 	pp_incl_state.ppp = NULL;
 
 	if(pp_status.debug)
-		fprintf(stderr, "pp_do_include: %s:%d: include_state=%d, include_ppp='%s', include_ifdepth=%d\n",
-                        pp_status.input, pp_status.line_number, pp_incl_state.state, pp_incl_state.ppp, pp_incl_state.ifdepth);
+		fprintf(stderr, "pp_do_include: %s:%d: include_state=%d, include_ifdepth=%d\n",
+                        pp_status.input, pp_status.line_number, pp_incl_state.state, pp_incl_state.ifdepth);
 	pp_status.file = fp;
 	ppy__switch_to_buffer(ppy__create_buffer(NULL, YY_BUF_SIZE));
 
diff --git a/mingw-w64-tools/widl/src/wpp/ppy.tab.c b/mingw-w64-tools/widl/src/wpp/ppy.tab.c
index c5a1323..7b8686c 100644
--- a/mingw-w64-tools/widl/src/wpp/ppy.tab.c
+++ b/mingw-w64-tools/widl/src/wpp/ppy.tab.c
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.1.  */
+/* A Bison parser, made by GNU Bison 3.5.4.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+   Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -40,11 +41,14 @@
    define necessary library symbols; they are noted "INFRINGES ON
    USER NAME SPACE" below.  */
 
+/* Undocumented macros, especially those whose name start with YY_,
+   are private implementation details.  Do not rely on them.  */
+
 /* Identify Bison output.  */
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "3.1"
+#define YYBISON_VERSION "3.5.4"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -65,12 +69,11 @@
 #define yyerror         ppy_error
 #define yydebug         ppy_debug
 #define yynerrs         ppy_nerrs
-
 #define yylval          ppy_lval
 #define yychar          ppy_char
 
-/* Copy the first part of user declarations.  */
-#line 30 "ppy.y" /* yacc.c:339  */
+/* First part of user prologue.  */
+#line 30 "ppy.y"
 
 #include "config.h"
 #include "wine/port.h"
@@ -166,13 +169,26 @@
 static int	nmacro_args;
 
 
-#line 170 "ppy.tab.c" /* yacc.c:339  */
+#line 173 "ppy.tab.c"
 
-# ifndef YY_NULLPTR
-#  if defined __cplusplus && 201103L <= __cplusplus
-#   define YY_NULLPTR nullptr
+# ifndef YY_CAST
+#  ifdef __cplusplus
+#   define YY_CAST(Type, Val) static_cast<Type> (Val)
+#   define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
 #  else
-#   define YY_NULLPTR 0
+#   define YY_CAST(Type, Val) ((Type) (Val))
+#   define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+#  endif
+# endif
+# ifndef YY_NULLPTR
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTR nullptr
+#   else
+#    define YY_NULLPTR 0
+#   endif
+#  else
+#   define YY_NULLPTR ((void*)0)
 #  endif
 # endif
 
@@ -246,10 +262,9 @@
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
 union YYSTYPE
 {
-#line 126 "ppy.y" /* yacc.c:355  */
+#line 126 "ppy.y"
 
 	int		sint;
 	unsigned int	uint;
@@ -263,9 +278,9 @@
 	marg_t		*marg;
 	mtext_t		*mtext;
 
-#line 267 "ppy.tab.c" /* yacc.c:355  */
-};
+#line 282 "ppy.tab.c"
 
+};
 typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
@@ -278,44 +293,89 @@
 
 
 
-/* Copy the second part of user declarations.  */
 
-#line 284 "ppy.tab.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
 #endif
 
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
+/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
+   <limits.h> and (if available) <stdint.h> are included
+   so that the code can choose integer types of a good width.  */
+
+#ifndef __PTRDIFF_MAX__
+# include <limits.h> /* INFRINGES ON USER NAME SPACE */
+# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+#  include <stdint.h> /* INFRINGES ON USER NAME SPACE */
+#  define YY_STDINT_H
+# endif
 #endif
 
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
+/* Narrow types that promote to a signed type and that can represent a
+   signed or unsigned integer of at least N bits.  In tables they can
+   save space and decrease cache pressure.  Promoting to a signed type
+   helps avoid bugs in integer arithmetic.  */
+
+#ifdef __INT_LEAST8_MAX__
+typedef __INT_LEAST8_TYPE__ yytype_int8;
+#elif defined YY_STDINT_H
+typedef int_least8_t yytype_int8;
 #else
 typedef signed char yytype_int8;
 #endif
 
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
-#else
-typedef unsigned short yytype_uint16;
-#endif
-
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
+#ifdef __INT_LEAST16_MAX__
+typedef __INT_LEAST16_TYPE__ yytype_int16;
+#elif defined YY_STDINT_H
+typedef int_least16_t yytype_int16;
 #else
 typedef short yytype_int16;
 #endif
 
+#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST8_TYPE__ yytype_uint8;
+#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST8_MAX <= INT_MAX)
+typedef uint_least8_t yytype_uint8;
+#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
+typedef unsigned char yytype_uint8;
+#else
+typedef short yytype_uint8;
+#endif
+
+#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST16_TYPE__ yytype_uint16;
+#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
+       && UINT_LEAST16_MAX <= INT_MAX)
+typedef uint_least16_t yytype_uint16;
+#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
+typedef unsigned short yytype_uint16;
+#else
+typedef int yytype_uint16;
+#endif
+
+#ifndef YYPTRDIFF_T
+# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
+#  define YYPTRDIFF_T __PTRDIFF_TYPE__
+#  define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
+# elif defined PTRDIFF_MAX
+#  ifndef ptrdiff_t
+#   include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+#  endif
+#  define YYPTRDIFF_T ptrdiff_t
+#  define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
+# else
+#  define YYPTRDIFF_T long
+#  define YYPTRDIFF_MAXIMUM LONG_MAX
+# endif
+#endif
+
 #ifndef YYSIZE_T
 # ifdef __SIZE_TYPE__
 #  define YYSIZE_T __SIZE_TYPE__
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T
+# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
@@ -323,7 +383,19 @@
 # endif
 #endif
 
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+#define YYSIZE_MAXIMUM                                  \
+  YY_CAST (YYPTRDIFF_T,                                 \
+           (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1)  \
+            ? YYPTRDIFF_MAXIMUM                         \
+            : YY_CAST (YYSIZE_T, -1)))
+
+#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
+
+/* Stored state numbers (used for stacks). */
+typedef yytype_uint8 yy_state_t;
+
+/* State numbers in computations.  */
+typedef int yy_state_fast_t;
 
 #ifndef YY_
 # if defined YYENABLE_NLS && YYENABLE_NLS
@@ -337,30 +409,19 @@
 # endif
 #endif
 
-#ifndef YY_ATTRIBUTE
-# if (defined __GNUC__                                               \
-      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
-     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
-#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+#ifndef YY_ATTRIBUTE_PURE
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
 # else
-#  define YY_ATTRIBUTE(Spec) /* empty */
+#  define YY_ATTRIBUTE_PURE
 # endif
 #endif
 
-#ifndef YY_ATTRIBUTE_PURE
-# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
-#endif
-
 #ifndef YY_ATTRIBUTE_UNUSED
-# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
-#endif
-
-#if !defined _Noreturn \
-     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
-# if defined _MSC_VER && 1200 <= _MSC_VER
-#  define _Noreturn __declspec (noreturn)
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+#  define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
 # else
-#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+#  define YY_ATTRIBUTE_UNUSED
 # endif
 #endif
 
@@ -373,11 +434,11 @@
 
 #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
-    _Pragma ("GCC diagnostic push") \
-    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN                            \
+    _Pragma ("GCC diagnostic push")                                     \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")              \
     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END      \
     _Pragma ("GCC diagnostic pop")
 #else
 # define YY_INITIAL_VALUE(Value) Value
@@ -390,6 +451,20 @@
 # define YY_INITIAL_VALUE(Value) /* Nothing. */
 #endif
 
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN                          \
+    _Pragma ("GCC diagnostic push")                            \
+    _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END            \
+    _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
+
+
+#define YY_ASSERT(E) ((void) (0 && (E)))
 
 #if ! defined yyoverflow || YYERROR_VERBOSE
 
@@ -466,17 +541,17 @@
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
 {
-  yytype_int16 yyss_alloc;
+  yy_state_t yyss_alloc;
   YYSTYPE yyvs_alloc;
 };
 
 /* The size of the maximum gap between one aligned stack and the next.  */
-# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
 
 /* The size of an array large to enough to hold all stacks, each with
    N elements.  */
 # define YYSTACK_BYTES(N) \
-     ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+     ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
       + YYSTACK_GAP_MAXIMUM)
 
 # define YYCOPY_NEEDED 1
@@ -489,11 +564,11 @@
 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
     do                                                                  \
       {                                                                 \
-        YYSIZE_T yynewbytes;                                            \
+        YYPTRDIFF_T yynewbytes;                                         \
         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
         Stack = &yyptr->Stack_alloc;                                    \
-        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-        yyptr += yynewbytes / sizeof (*yyptr);                          \
+        yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / YYSIZEOF (*yyptr);                        \
       }                                                                 \
     while (0)
 
@@ -505,12 +580,12 @@
 # ifndef YYCOPY
 #  if defined __GNUC__ && 1 < __GNUC__
 #   define YYCOPY(Dst, Src, Count) \
-      __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+      __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
 #  else
 #   define YYCOPY(Dst, Src, Count)              \
       do                                        \
         {                                       \
-          YYSIZE_T yyi;                         \
+          YYPTRDIFF_T yyi;                      \
           for (yyi = 0; yyi < (Count); yyi++)   \
             (Dst)[yyi] = (Src)[yyi];            \
         }                                       \
@@ -533,17 +608,18 @@
 /* YYNSTATES -- Number of states.  */
 #define YYNSTATES  153
 
-/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
-   by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
 #define YYMAXUTOK   300
 
+
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, with out-of-bounds checking.  */
 #define YYTRANSLATE(YYX)                                                \
-  ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+  (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
-   as returned by yylex, without out-of-bounds checking.  */
-static const yytype_uint8 yytranslate[] =
+   as returned by yylex.  */
+static const yytype_int8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -580,7 +656,7 @@
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
-static const yytype_uint16 yyrline[] =
+static const yytype_int16 yyrline[] =
 {
        0,   181,   181,   182,   186,   187,   188,   189,   190,   210,
      234,   260,   277,   278,   279,   282,   283,   284,   286,   288,
@@ -616,7 +692,7 @@
 # ifdef YYPRINT
 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
    (internal) symbol number NUM (which must be that of a token).  */
-static const yytype_uint16 yytoknum[] =
+static const yytype_int16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
@@ -628,14 +704,14 @@
 };
 # endif
 
-#define YYPACT_NINF -27
+#define YYPACT_NINF (-27)
 
-#define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-27)))
+#define yypact_value_is_default(Yyn) \
+  ((Yyn) == YYPACT_NINF)
 
-#define YYTABLE_NINF -1
+#define YYTABLE_NINF (-1)
 
-#define yytable_value_is_error(Yytable_value) \
+#define yytable_value_is_error(Yyn) \
   0
 
   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -663,7 +739,7 @@
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
      Performed when YYTABLE does not specify something else to do.  Zero
      means the default is an error.  */
-static const yytype_uint8 yydefact[] =
+static const yytype_int8 yydefact[] =
 {
        2,     0,     1,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,    28,    28,    28,    28,     0,    36,    28,
@@ -772,7 +848,7 @@
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
-static const yytype_uint8 yystos[] =
+static const yytype_int8 yystos[] =
 {
        0,    63,     0,     3,     4,     5,     6,     7,     8,     9,
       12,    13,    14,    15,    16,    17,    18,    19,    26,    27,
@@ -793,7 +869,7 @@
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
+static const yytype_int8 yyr1[] =
 {
        0,    62,    63,    63,    64,    64,    64,    64,    64,    64,
       64,    64,    64,    64,    64,    64,    64,    64,    64,    64,
@@ -807,7 +883,7 @@
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
+static const yytype_int8 yyr2[] =
 {
        0,     2,     0,     2,     3,     3,     3,     3,     3,     3,
        2,     2,     3,     3,     6,     4,     4,     5,     6,     7,
@@ -833,22 +909,22 @@
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
-#define YYBACKUP(Token, Value)                                  \
-do                                                              \
-  if (yychar == YYEMPTY)                                        \
-    {                                                           \
-      yychar = (Token);                                         \
-      yylval = (Value);                                         \
-      YYPOPSTACK (yylen);                                       \
-      yystate = *yyssp;                                         \
-      goto yybackup;                                            \
-    }                                                           \
-  else                                                          \
-    {                                                           \
-      yyerror (YY_("syntax error: cannot back up")); \
-      YYERROR;                                                  \
-    }                                                           \
-while (0)
+#define YYBACKUP(Token, Value)                                    \
+  do                                                              \
+    if (yychar == YYEMPTY)                                        \
+      {                                                           \
+        yychar = (Token);                                         \
+        yylval = (Value);                                         \
+        YYPOPSTACK (yylen);                                       \
+        yystate = *yyssp;                                         \
+        goto yybackup;                                            \
+      }                                                           \
+    else                                                          \
+      {                                                           \
+        yyerror (YY_("syntax error: cannot back up")); \
+        YYERROR;                                                  \
+      }                                                           \
+  while (0)
 
 /* Error token number */
 #define YYTERROR        1
@@ -888,37 +964,39 @@
 } while (0)
 
 
-/*----------------------------------------.
-| Print this symbol's value on YYOUTPUT.  |
-`----------------------------------------*/
+/*-----------------------------------.
+| Print this symbol's value on YYO.  |
+`-----------------------------------*/
 
 static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
 {
-  FILE *yyo = yyoutput;
-  YYUSE (yyo);
+  FILE *yyoutput = yyo;
+  YYUSE (yyoutput);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
   if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+    YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
 # endif
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   YYUSE (yytype);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO.  |
+`---------------------------*/
 
 static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
 {
-  YYFPRINTF (yyoutput, "%s %s (",
+  YYFPRINTF (yyo, "%s %s (",
              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
 
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-  YYFPRINTF (yyoutput, ")");
+  yy_symbol_value_print (yyo, yytype, yyvaluep);
+  YYFPRINTF (yyo, ")");
 }
 
 /*------------------------------------------------------------------.
@@ -927,7 +1005,7 @@
 `------------------------------------------------------------------*/
 
 static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
 {
   YYFPRINTF (stderr, "Stack now");
   for (; yybottom <= yytop; yybottom++)
@@ -950,20 +1028,20 @@
 `------------------------------------------------*/
 
 static void
-yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule)
 {
-  unsigned long yylno = yyrline[yyrule];
+  int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
-  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+  YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
              yyrule - 1, yylno);
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
       yy_symbol_print (stderr,
-                       yystos[yyssp[yyi + 1 - yynrhs]],
-                       &(yyvsp[(yyi + 1) - (yynrhs)])
+                       yystos[+yyssp[yyi + 1 - yynrhs]],
+                       &yyvsp[(yyi + 1) - (yynrhs)]
                                               );
       YYFPRINTF (stderr, "\n");
     }
@@ -1007,13 +1085,13 @@
 
 # ifndef yystrlen
 #  if defined __GLIBC__ && defined _STRING_H
-#   define yystrlen strlen
+#   define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
 #  else
 /* Return the length of YYSTR.  */
-static YYSIZE_T
+static YYPTRDIFF_T
 yystrlen (const char *yystr)
 {
-  YYSIZE_T yylen;
+  YYPTRDIFF_T yylen;
   for (yylen = 0; yystr[yylen]; yylen++)
     continue;
   return yylen;
@@ -1049,12 +1127,12 @@
    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
    null, do not copy; instead, return the length of what the result
    would have been.  */
-static YYSIZE_T
+static YYPTRDIFF_T
 yytnamerr (char *yyres, const char *yystr)
 {
   if (*yystr == '"')
     {
-      YYSIZE_T yyn = 0;
+      YYPTRDIFF_T yyn = 0;
       char const *yyp = yystr;
 
       for (;;)
@@ -1067,7 +1145,10 @@
           case '\\':
             if (*++yyp != '\\')
               goto do_not_strip_quotes;
-            /* Fall through.  */
+            else
+              goto append;
+
+          append:
           default:
             if (yyres)
               yyres[yyn] = *yyp;
@@ -1082,10 +1163,10 @@
     do_not_strip_quotes: ;
     }
 
-  if (! yyres)
+  if (yyres)
+    return yystpcpy (yyres, yystr) - yyres;
+  else
     return yystrlen (yystr);
-
-  return yystpcpy (yyres, yystr) - yyres;
 }
 # endif
 
@@ -1098,19 +1179,19 @@
    *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
    required number of bytes is too large to store.  */
 static int
-yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
-                yytype_int16 *yyssp, int yytoken)
+yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
+                yy_state_t *yyssp, int yytoken)
 {
-  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
-  YYSIZE_T yysize = yysize0;
   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
   /* Internationalized format string. */
   const char *yyformat = YY_NULLPTR;
-  /* Arguments of yyformat. */
+  /* Arguments of yyformat: reported tokens (one for the "unexpected",
+     one per "expected"). */
   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
-  /* Number of reported tokens (one for the "unexpected", one per
-     "expected"). */
+  /* Actual size of YYARG. */
   int yycount = 0;
+  /* Cumulated lengths of YYARG.  */
+  YYPTRDIFF_T yysize = 0;
 
   /* There are many possibilities here to consider:
      - If this state is a consistent state with a default action, then
@@ -1137,7 +1218,9 @@
   */
   if (yytoken != YYEMPTY)
     {
-      int yyn = yypact[*yyssp];
+      int yyn = yypact[+*yyssp];
+      YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
+      yysize = yysize0;
       yyarg[yycount++] = yytname[yytoken];
       if (!yypact_value_is_default (yyn))
         {
@@ -1162,11 +1245,12 @@
                   }
                 yyarg[yycount++] = yytname[yyx];
                 {
-                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
-                  if (! (yysize <= yysize1
-                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+                  YYPTRDIFF_T yysize1
+                    = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
+                  if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
+                    yysize = yysize1;
+                  else
                     return 2;
-                  yysize = yysize1;
                 }
               }
         }
@@ -1189,10 +1273,13 @@
     }
 
   {
-    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
-    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+    /* Don't count the "%s"s in the final size, but reserve room for
+       the terminator.  */
+    YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1;
+    if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
+      yysize = yysize1;
+    else
       return 2;
-    yysize = yysize1;
   }
 
   if (*yymsg_alloc < yysize)
@@ -1218,8 +1305,8 @@
         }
       else
         {
-          yyp++;
-          yyformat++;
+          ++yyp;
+          ++yyformat;
         }
   }
   return 0;
@@ -1262,7 +1349,7 @@
 int
 yyparse (void)
 {
-    int yystate;
+    yy_state_fast_t yystate;
     /* Number of tokens to shift before error messages enabled.  */
     int yyerrstatus;
 
@@ -1274,16 +1361,16 @@
        to reallocate them elsewhere.  */
 
     /* The state stack.  */
-    yytype_int16 yyssa[YYINITDEPTH];
-    yytype_int16 *yyss;
-    yytype_int16 *yyssp;
+    yy_state_t yyssa[YYINITDEPTH];
+    yy_state_t *yyss;
+    yy_state_t *yyssp;
 
     /* The semantic value stack.  */
     YYSTYPE yyvsa[YYINITDEPTH];
     YYSTYPE *yyvs;
     YYSTYPE *yyvsp;
 
-    YYSIZE_T yystacksize;
+    YYPTRDIFF_T yystacksize;
 
   int yyn;
   int yyresult;
@@ -1297,7 +1384,7 @@
   /* Buffer for error messages, and its allocated size.  */
   char yymsgbuf[128];
   char *yymsg = yymsgbuf;
-  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+  YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
 #endif
 
 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
@@ -1318,46 +1405,54 @@
   yychar = YYEMPTY; /* Cause a token to be read.  */
   goto yysetstate;
 
+
 /*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
+| yynewstate -- push a new state, which is found in yystate.  |
 `------------------------------------------------------------*/
- yynewstate:
+yynewstate:
   /* In all cases, when you get here, the value and location stacks
      have just been pushed.  So pushing a state here evens the stacks.  */
   yyssp++;
 
- yysetstate:
-  *yyssp = yystate;
+
+/*--------------------------------------------------------------------.
+| yysetstate -- set current state (the top of the stack) to yystate.  |
+`--------------------------------------------------------------------*/
+yysetstate:
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+  YY_IGNORE_USELESS_CAST_BEGIN
+  *yyssp = YY_CAST (yy_state_t, yystate);
+  YY_IGNORE_USELESS_CAST_END
 
   if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+    goto yyexhaustedlab;
+#else
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      YYPTRDIFF_T yysize = yyssp - yyss + 1;
 
-#ifdef yyoverflow
+# if defined yyoverflow
       {
         /* Give user a chance to reallocate the stack.  Use copies of
            these so that the &'s don't force the real ones into
            memory.  */
+        yy_state_t *yyss1 = yyss;
         YYSTYPE *yyvs1 = yyvs;
-        yytype_int16 *yyss1 = yyss;
 
         /* Each stack pointer address is followed by the size of the
            data in use in that stack, in bytes.  This used to be a
            conditional around just the two extra args, but that might
            be undefined if yyoverflow is a macro.  */
         yyoverflow (YY_("memory exhausted"),
-                    &yyss1, yysize * sizeof (*yyssp),
-                    &yyvs1, yysize * sizeof (*yyvsp),
+                    &yyss1, yysize * YYSIZEOF (*yyssp),
+                    &yyvs1, yysize * YYSIZEOF (*yyvsp),
                     &yystacksize);
-
         yyss = yyss1;
         yyvs = yyvs1;
       }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
+# else /* defined YYSTACK_RELOCATE */
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
         goto yyexhaustedlab;
@@ -1366,42 +1461,43 @@
         yystacksize = YYMAXDEPTH;
 
       {
-        yytype_int16 *yyss1 = yyss;
+        yy_state_t *yyss1 = yyss;
         union yyalloc *yyptr =
-          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+          YY_CAST (union yyalloc *,
+                   YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
         if (! yyptr)
           goto yyexhaustedlab;
         YYSTACK_RELOCATE (yyss_alloc, yyss);
         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
-#  undef YYSTACK_RELOCATE
+# undef YYSTACK_RELOCATE
         if (yyss1 != yyssa)
           YYSTACK_FREE (yyss1);
       }
 # endif
-#endif /* no yyoverflow */
 
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
-      YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                  (unsigned long) yystacksize));
+      YY_IGNORE_USELESS_CAST_BEGIN
+      YYDPRINTF ((stderr, "Stack size increased to %ld\n",
+                  YY_CAST (long, yystacksize)));
+      YY_IGNORE_USELESS_CAST_END
 
       if (yyss + yystacksize - 1 <= yyssp)
         YYABORT;
     }
-
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 
   if (yystate == YYFINAL)
     YYACCEPT;
 
   goto yybackup;
 
+
 /*-----------.
 | yybackup.  |
 `-----------*/
 yybackup:
-
   /* Do appropriate processing given the current state.  Read a
      lookahead token if we need one and don't already have one.  */
 
@@ -1451,15 +1547,13 @@
 
   /* Shift the lookahead token.  */
   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
-  /* Discard the shifted token.  */
-  yychar = YYEMPTY;
-
   yystate = yyn;
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
   YY_IGNORE_MAYBE_UNINITIALIZED_END
 
+  /* Discard the shifted token.  */
+  yychar = YYEMPTY;
   goto yynewstate;
 
 
@@ -1474,7 +1568,7 @@
 
 
 /*-----------------------------.
-| yyreduce -- Do a reduction.  |
+| yyreduce -- do a reduction.  |
 `-----------------------------*/
 yyreduce:
   /* yyn is the number of a rule to reduce with.  */
@@ -1494,33 +1588,33 @@
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 4:
-#line 186 "ppy.y" /* yacc.c:1651  */
-    { pp_do_include((yyvsp[-1].cptr), 1); }
-#line 1501 "ppy.tab.c" /* yacc.c:1651  */
+  case 4:
+#line 186 "ppy.y"
+                                        { pp_do_include((yyvsp[-1].cptr), 1); }
+#line 1595 "ppy.tab.c"
     break;
 
   case 5:
-#line 187 "ppy.y" /* yacc.c:1651  */
-    { pp_do_include((yyvsp[-1].cptr), 0); }
-#line 1507 "ppy.tab.c" /* yacc.c:1651  */
+#line 187 "ppy.y"
+                                        { pp_do_include((yyvsp[-1].cptr), 0); }
+#line 1601 "ppy.tab.c"
     break;
 
   case 6:
-#line 188 "ppy.y" /* yacc.c:1651  */
-    { pp_next_if_state(boolean(&(yyvsp[-1].cval))); }
-#line 1513 "ppy.tab.c" /* yacc.c:1651  */
+#line 188 "ppy.y"
+                                { pp_next_if_state(boolean(&(yyvsp[-1].cval))); }
+#line 1607 "ppy.tab.c"
     break;
 
   case 7:
-#line 189 "ppy.y" /* yacc.c:1651  */
-    { pp_next_if_state(pplookup((yyvsp[-1].cptr)) != NULL); free((yyvsp[-1].cptr)); }
-#line 1519 "ppy.tab.c" /* yacc.c:1651  */
+#line 189 "ppy.y"
+                                { pp_next_if_state(pplookup((yyvsp[-1].cptr)) != NULL); free((yyvsp[-1].cptr)); }
+#line 1613 "ppy.tab.c"
     break;
 
   case 8:
-#line 190 "ppy.y" /* yacc.c:1651  */
-    {
+#line 190 "ppy.y"
+                                {
 		int t = pplookup((yyvsp[-1].cptr)) == NULL;
 		if(pp_incl_state.state == 0 && t && !pp_incl_state.seen_junk)
 		{
@@ -1540,12 +1634,12 @@
 			fprintf(stderr, "tIFNDEF: %s:%d: include_state=%d, include_ppp='%s', include_ifdepth=%d\n",
                                 pp_status.input, pp_status.line_number, pp_incl_state.state, pp_incl_state.ppp, pp_incl_state.ifdepth);
 		}
-#line 1544 "ppy.tab.c" /* yacc.c:1651  */
+#line 1638 "ppy.tab.c"
     break;
 
   case 9:
-#line 210 "ppy.y" /* yacc.c:1651  */
-    {
+#line 210 "ppy.y"
+                                {
 		pp_if_state_t s = pp_pop_if();
 		switch(s)
 		{
@@ -1569,12 +1663,12 @@
 			pp_internal_error(__FILE__, __LINE__, "Invalid pp_if_state (%d) in #elif directive", s);
 		}
 		}
-#line 1573 "ppy.tab.c" /* yacc.c:1651  */
+#line 1667 "ppy.tab.c"
     break;
 
   case 10:
-#line 234 "ppy.y" /* yacc.c:1651  */
-    {
+#line 234 "ppy.y"
+                                {
 		pp_if_state_t s = pp_pop_if();
 		switch(s)
 		{
@@ -1600,12 +1694,12 @@
 			pp_internal_error(__FILE__, __LINE__, "Invalid pp_if_state (%d) in #else directive", s);
 		}
 		}
-#line 1604 "ppy.tab.c" /* yacc.c:1651  */
+#line 1698 "ppy.tab.c"
     break;
 
   case 11:
-#line 260 "ppy.y" /* yacc.c:1651  */
-    {
+#line 260 "ppy.y"
+                                {
 		if(pp_pop_if() != if_error)
 		{
 			if(pp_incl_state.ifdepth == pp_get_if_depth() && pp_incl_state.state == 1)
@@ -1622,92 +1716,92 @@
 					pp_status.input, pp_status.line_number, pp_incl_state.state, pp_incl_state.ppp, pp_incl_state.ifdepth);
 		}
 		}
-#line 1626 "ppy.tab.c" /* yacc.c:1651  */
+#line 1720 "ppy.tab.c"
     break;
 
   case 12:
-#line 277 "ppy.y" /* yacc.c:1651  */
-    { pp_del_define((yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
-#line 1632 "ppy.tab.c" /* yacc.c:1651  */
+#line 277 "ppy.y"
+                                { pp_del_define((yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
+#line 1726 "ppy.tab.c"
     break;
 
   case 13:
-#line 278 "ppy.y" /* yacc.c:1651  */
-    { pp_add_define((yyvsp[-2].cptr), (yyvsp[-1].cptr)); free((yyvsp[-2].cptr)); free((yyvsp[-1].cptr)); }
-#line 1638 "ppy.tab.c" /* yacc.c:1651  */
+#line 278 "ppy.y"
+                                { pp_add_define((yyvsp[-2].cptr), (yyvsp[-1].cptr)); free((yyvsp[-2].cptr)); free((yyvsp[-1].cptr)); }
+#line 1732 "ppy.tab.c"
     break;
 
   case 14:
-#line 279 "ppy.y" /* yacc.c:1651  */
-    {
+#line 279 "ppy.y"
+                                                                {
 		pp_add_macro((yyvsp[-5].cptr), macro_args, nmacro_args, (yyvsp[-1].mtext));
 		}
-#line 1646 "ppy.tab.c" /* yacc.c:1651  */
+#line 1740 "ppy.tab.c"
     break;
 
   case 15:
-#line 282 "ppy.y" /* yacc.c:1651  */
-    { if((yyvsp[-1].cptr)) pp_writestring("# %d %s\n", (yyvsp[-2].sint) , (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
-#line 1652 "ppy.tab.c" /* yacc.c:1651  */
+#line 282 "ppy.y"
+                                        { if((yyvsp[-1].cptr)) pp_writestring("# %d %s\n", (yyvsp[-2].sint) , (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
+#line 1746 "ppy.tab.c"
     break;
 
   case 16:
-#line 283 "ppy.y" /* yacc.c:1651  */
-    { if((yyvsp[-1].cptr)) pp_writestring("# %d %s\n", (yyvsp[-2].sint) , (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
-#line 1658 "ppy.tab.c" /* yacc.c:1651  */
+#line 283 "ppy.y"
+                                        { if((yyvsp[-1].cptr)) pp_writestring("# %d %s\n", (yyvsp[-2].sint) , (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
+#line 1752 "ppy.tab.c"
     break;
 
   case 17:
-#line 285 "ppy.y" /* yacc.c:1651  */
-    { if((yyvsp[-2].cptr)) pp_writestring("# %d %s %d\n", (yyvsp[-3].sint), (yyvsp[-2].cptr), (yyvsp[-1].sint)); free((yyvsp[-2].cptr)); }
-#line 1664 "ppy.tab.c" /* yacc.c:1651  */
+#line 285 "ppy.y"
+                { if((yyvsp[-2].cptr)) pp_writestring("# %d %s %d\n", (yyvsp[-3].sint), (yyvsp[-2].cptr), (yyvsp[-1].sint)); free((yyvsp[-2].cptr)); }
+#line 1758 "ppy.tab.c"
     break;
 
   case 18:
-#line 287 "ppy.y" /* yacc.c:1651  */
-    { if((yyvsp[-3].cptr)) pp_writestring("# %d %s %d %d\n", (yyvsp[-4].sint) ,(yyvsp[-3].cptr), (yyvsp[-2].sint), (yyvsp[-1].sint)); free((yyvsp[-3].cptr)); }
-#line 1670 "ppy.tab.c" /* yacc.c:1651  */
+#line 287 "ppy.y"
+                { if((yyvsp[-3].cptr)) pp_writestring("# %d %s %d %d\n", (yyvsp[-4].sint) ,(yyvsp[-3].cptr), (yyvsp[-2].sint), (yyvsp[-1].sint)); free((yyvsp[-3].cptr)); }
+#line 1764 "ppy.tab.c"
     break;
 
   case 19:
-#line 289 "ppy.y" /* yacc.c:1651  */
-    { if((yyvsp[-4].cptr)) pp_writestring("# %d %s %d %d %d\n", (yyvsp[-5].sint) ,(yyvsp[-4].cptr) ,(yyvsp[-3].sint) ,(yyvsp[-2].sint), (yyvsp[-1].sint)); free((yyvsp[-4].cptr)); }
-#line 1676 "ppy.tab.c" /* yacc.c:1651  */
+#line 289 "ppy.y"
+                { if((yyvsp[-4].cptr)) pp_writestring("# %d %s %d %d %d\n", (yyvsp[-5].sint) ,(yyvsp[-4].cptr) ,(yyvsp[-3].sint) ,(yyvsp[-2].sint), (yyvsp[-1].sint)); free((yyvsp[-4].cptr)); }
+#line 1770 "ppy.tab.c"
     break;
 
   case 20:
-#line 291 "ppy.y" /* yacc.c:1651  */
-    { if((yyvsp[-5].cptr)) pp_writestring("# %d %s %d %d %d %d\n", (yyvsp[-6].sint) ,(yyvsp[-5].cptr) ,(yyvsp[-4].sint) ,(yyvsp[-3].sint), (yyvsp[-2].sint), (yyvsp[-1].sint)); free((yyvsp[-5].cptr)); }
-#line 1682 "ppy.tab.c" /* yacc.c:1651  */
+#line 291 "ppy.y"
+                { if((yyvsp[-5].cptr)) pp_writestring("# %d %s %d %d %d %d\n", (yyvsp[-6].sint) ,(yyvsp[-5].cptr) ,(yyvsp[-4].sint) ,(yyvsp[-3].sint), (yyvsp[-2].sint), (yyvsp[-1].sint)); free((yyvsp[-5].cptr)); }
+#line 1776 "ppy.tab.c"
     break;
 
   case 22:
-#line 293 "ppy.y" /* yacc.c:1651  */
-    { ppy_error("#error directive: '%s'", (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
-#line 1688 "ppy.tab.c" /* yacc.c:1651  */
+#line 293 "ppy.y"
+                                { ppy_error("#error directive: '%s'", (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
+#line 1782 "ppy.tab.c"
     break;
 
   case 23:
-#line 294 "ppy.y" /* yacc.c:1651  */
-    { ppy_warning("#warning directive: '%s'", (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
-#line 1694 "ppy.tab.c" /* yacc.c:1651  */
+#line 294 "ppy.y"
+                                { ppy_warning("#warning directive: '%s'", (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
+#line 1788 "ppy.tab.c"
     break;
 
   case 24:
-#line 295 "ppy.y" /* yacc.c:1651  */
-    { pp_writestring("#pragma %s\n", (yyvsp[-1].cptr) ? (yyvsp[-1].cptr) : ""); free((yyvsp[-1].cptr)); }
-#line 1700 "ppy.tab.c" /* yacc.c:1651  */
+#line 295 "ppy.y"
+                                { pp_writestring("#pragma %s\n", (yyvsp[-1].cptr) ? (yyvsp[-1].cptr) : ""); free((yyvsp[-1].cptr)); }
+#line 1794 "ppy.tab.c"
     break;
 
   case 25:
-#line 296 "ppy.y" /* yacc.c:1651  */
-    { if(pp_status.pedantic) ppy_warning("#ident ignored (arg: '%s')", (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
-#line 1706 "ppy.tab.c" /* yacc.c:1651  */
+#line 296 "ppy.y"
+                                { if(pp_status.pedantic) ppy_warning("#ident ignored (arg: '%s')", (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
+#line 1800 "ppy.tab.c"
     break;
 
   case 26:
-#line 297 "ppy.y" /* yacc.c:1651  */
-    {
+#line 297 "ppy.y"
+                                    {
                 if((yyvsp[0].cptr))
                 {
                         int nl=strlen((yyvsp[0].cptr)) +3;
@@ -1720,376 +1814,377 @@
                         free((yyvsp[0].cptr));
                 }
 	}
-#line 1724 "ppy.tab.c" /* yacc.c:1651  */
+#line 1818 "ppy.tab.c"
     break;
 
   case 27:
-#line 310 "ppy.y" /* yacc.c:1651  */
-    {
+#line 310 "ppy.y"
+                               {
 		pp_do_include((yyvsp[0].cptr),1);
 	}
-#line 1732 "ppy.tab.c" /* yacc.c:1651  */
+#line 1826 "ppy.tab.c"
     break;
 
   case 28:
-#line 316 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cptr) = NULL; }
-#line 1738 "ppy.tab.c" /* yacc.c:1651  */
+#line 316 "ppy.y"
+                        { (yyval.cptr) = NULL; }
+#line 1832 "ppy.tab.c"
     break;
 
   case 29:
-#line 317 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cptr) = (yyvsp[0].cptr); }
-#line 1744 "ppy.tab.c" /* yacc.c:1651  */
+#line 317 "ppy.y"
+                        { (yyval.cptr) = (yyvsp[0].cptr); }
+#line 1838 "ppy.tab.c"
     break;
 
   case 30:
-#line 320 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cptr) = (yyvsp[0].cptr); }
-#line 1750 "ppy.tab.c" /* yacc.c:1651  */
+#line 320 "ppy.y"
+                                { (yyval.cptr) = (yyvsp[0].cptr); }
+#line 1844 "ppy.tab.c"
     break;
 
   case 31:
-#line 321 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cptr) = (yyvsp[0].cptr); }
-#line 1756 "ppy.tab.c" /* yacc.c:1651  */
+#line 321 "ppy.y"
+                                { (yyval.cptr) = (yyvsp[0].cptr); }
+#line 1850 "ppy.tab.c"
     break;
 
   case 32:
-#line 322 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cptr) = (yyvsp[0].cptr); }
-#line 1762 "ppy.tab.c" /* yacc.c:1651  */
+#line 322 "ppy.y"
+                                { (yyval.cptr) = (yyvsp[0].cptr); }
+#line 1856 "ppy.tab.c"
     break;
 
   case 33:
-#line 323 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cptr) = merge_text((yyvsp[-1].cptr), (yyvsp[0].cptr)); }
-#line 1768 "ppy.tab.c" /* yacc.c:1651  */
+#line 323 "ppy.y"
+                                { (yyval.cptr) = merge_text((yyvsp[-1].cptr), (yyvsp[0].cptr)); }
+#line 1862 "ppy.tab.c"
     break;
 
   case 34:
-#line 324 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cptr) = merge_text((yyvsp[-1].cptr), (yyvsp[0].cptr)); }
-#line 1774 "ppy.tab.c" /* yacc.c:1651  */
+#line 324 "ppy.y"
+                                { (yyval.cptr) = merge_text((yyvsp[-1].cptr), (yyvsp[0].cptr)); }
+#line 1868 "ppy.tab.c"
     break;
 
   case 35:
-#line 325 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cptr) = merge_text((yyvsp[-1].cptr), (yyvsp[0].cptr)); }
-#line 1780 "ppy.tab.c" /* yacc.c:1651  */
+#line 325 "ppy.y"
+                                { (yyval.cptr) = merge_text((yyvsp[-1].cptr), (yyvsp[0].cptr)); }
+#line 1874 "ppy.tab.c"
     break;
 
   case 36:
-#line 328 "ppy.y" /* yacc.c:1651  */
-    { macro_args = NULL; nmacro_args = 0; }
-#line 1786 "ppy.tab.c" /* yacc.c:1651  */
+#line 328 "ppy.y"
+                        { macro_args = NULL; nmacro_args = 0; }
+#line 1880 "ppy.tab.c"
     break;
 
   case 37:
-#line 331 "ppy.y" /* yacc.c:1651  */
-    { (yyval.sint) = 0; macro_args = NULL; nmacro_args = 0; }
-#line 1792 "ppy.tab.c" /* yacc.c:1651  */
+#line 331 "ppy.y"
+                                { (yyval.sint) = 0; macro_args = NULL; nmacro_args = 0; }
+#line 1886 "ppy.tab.c"
     break;
 
   case 38:
-#line 332 "ppy.y" /* yacc.c:1651  */
-    { (yyval.sint) = nmacro_args; }
-#line 1798 "ppy.tab.c" /* yacc.c:1651  */
+#line 332 "ppy.y"
+                                { (yyval.sint) = nmacro_args; }
+#line 1892 "ppy.tab.c"
     break;
 
   case 39:
-#line 335 "ppy.y" /* yacc.c:1651  */
-    { (yyval.marg) = (yyvsp[0].marg); }
-#line 1804 "ppy.tab.c" /* yacc.c:1651  */
+#line 335 "ppy.y"
+                                { (yyval.marg) = (yyvsp[0].marg); }
+#line 1898 "ppy.tab.c"
     break;
 
   case 40:
-#line 336 "ppy.y" /* yacc.c:1651  */
-    { (yyval.marg) = add_new_marg(NULL, arg_list); nmacro_args *= -1; }
-#line 1810 "ppy.tab.c" /* yacc.c:1651  */
+#line 336 "ppy.y"
+                                { (yyval.marg) = add_new_marg(NULL, arg_list); nmacro_args *= -1; }
+#line 1904 "ppy.tab.c"
     break;
 
   case 41:
-#line 339 "ppy.y" /* yacc.c:1651  */
-    { (yyval.marg) = add_new_marg((yyvsp[0].cptr), arg_single); }
-#line 1816 "ppy.tab.c" /* yacc.c:1651  */
+#line 339 "ppy.y"
+                                { (yyval.marg) = add_new_marg((yyvsp[0].cptr), arg_single); }
+#line 1910 "ppy.tab.c"
     break;
 
   case 42:
-#line 340 "ppy.y" /* yacc.c:1651  */
-    { (yyval.marg) = add_new_marg((yyvsp[0].cptr), arg_single); }
-#line 1822 "ppy.tab.c" /* yacc.c:1651  */
+#line 340 "ppy.y"
+                                { (yyval.marg) = add_new_marg((yyvsp[0].cptr), arg_single); }
+#line 1916 "ppy.tab.c"
     break;
 
   case 43:
-#line 344 "ppy.y" /* yacc.c:1651  */
-    { (yyval.mtext) = NULL; }
-#line 1828 "ppy.tab.c" /* yacc.c:1651  */
+#line 344 "ppy.y"
+                        { (yyval.mtext) = NULL; }
+#line 1922 "ppy.tab.c"
     break;
 
   case 44:
-#line 345 "ppy.y" /* yacc.c:1651  */
-    {
+#line 345 "ppy.y"
+                        {
 		for((yyval.mtext) = (yyvsp[0].mtext); (yyval.mtext) && (yyval.mtext)->prev; (yyval.mtext) = (yyval.mtext)->prev)
 			;
 		}
-#line 1837 "ppy.tab.c" /* yacc.c:1651  */
+#line 1931 "ppy.tab.c"
     break;
 
   case 45:
-#line 351 "ppy.y" /* yacc.c:1651  */
-    { (yyval.mtext) = (yyvsp[0].mtext); }
-#line 1843 "ppy.tab.c" /* yacc.c:1651  */
+#line 351 "ppy.y"
+                        { (yyval.mtext) = (yyvsp[0].mtext); }
+#line 1937 "ppy.tab.c"
     break;
 
   case 46:
-#line 352 "ppy.y" /* yacc.c:1651  */
-    { (yyval.mtext) = combine_mtext((yyvsp[-1].mtext), (yyvsp[0].mtext)); }
-#line 1849 "ppy.tab.c" /* yacc.c:1651  */
+#line 352 "ppy.y"
+                        { (yyval.mtext) = combine_mtext((yyvsp[-1].mtext), (yyvsp[0].mtext)); }
+#line 1943 "ppy.tab.c"
     break;
 
   case 47:
-#line 355 "ppy.y" /* yacc.c:1651  */
-    { (yyval.mtext) = new_mtext((yyvsp[0].cptr), 0, exp_text); }
-#line 1855 "ppy.tab.c" /* yacc.c:1651  */
+#line 355 "ppy.y"
+                        { (yyval.mtext) = new_mtext((yyvsp[0].cptr), 0, exp_text); }
+#line 1949 "ppy.tab.c"
     break;
 
   case 48:
-#line 356 "ppy.y" /* yacc.c:1651  */
-    { (yyval.mtext) = new_mtext((yyvsp[0].cptr), 0, exp_text); }
-#line 1861 "ppy.tab.c" /* yacc.c:1651  */
+#line 356 "ppy.y"
+                        { (yyval.mtext) = new_mtext((yyvsp[0].cptr), 0, exp_text); }
+#line 1955 "ppy.tab.c"
     break;
 
   case 49:
-#line 357 "ppy.y" /* yacc.c:1651  */
-    { (yyval.mtext) = new_mtext((yyvsp[0].cptr), 0, exp_text); }
-#line 1867 "ppy.tab.c" /* yacc.c:1651  */
+#line 357 "ppy.y"
+                        { (yyval.mtext) = new_mtext((yyvsp[0].cptr), 0, exp_text); }
+#line 1961 "ppy.tab.c"
     break;
 
   case 50:
-#line 358 "ppy.y" /* yacc.c:1651  */
-    { (yyval.mtext) = new_mtext(NULL, 0, exp_concat); }
-#line 1873 "ppy.tab.c" /* yacc.c:1651  */
+#line 358 "ppy.y"
+                        { (yyval.mtext) = new_mtext(NULL, 0, exp_concat); }
+#line 1967 "ppy.tab.c"
     break;
 
   case 51:
-#line 359 "ppy.y" /* yacc.c:1651  */
-    {
+#line 359 "ppy.y"
+                                {
 		int mat = marg_index((yyvsp[0].cptr));
 		if(mat < 0)
 			ppy_error("Stringification identifier must be an argument parameter");
 		else
 			(yyval.mtext) = new_mtext(NULL, mat, exp_stringize);
 		}
-#line 1885 "ppy.tab.c" /* yacc.c:1651  */
+#line 1979 "ppy.tab.c"
     break;
 
   case 52:
-#line 366 "ppy.y" /* yacc.c:1651  */
-    {
+#line 366 "ppy.y"
+                        {
 		int mat = marg_index((yyvsp[0].cptr));
 		if(mat >= 0)
 			(yyval.mtext) = new_mtext(NULL, mat, exp_subst);
 		else if((yyvsp[0].cptr))
 			(yyval.mtext) = new_mtext((yyvsp[0].cptr), 0, exp_text);
 		}
-#line 1897 "ppy.tab.c" /* yacc.c:1651  */
+#line 1991 "ppy.tab.c"
     break;
 
   case 53:
-#line 375 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cval).type = cv_sint;  (yyval.cval).val.si = (yyvsp[0].sint); }
-#line 1903 "ppy.tab.c" /* yacc.c:1651  */
+#line 375 "ppy.y"
+                                        { (yyval.cval).type = cv_sint;  (yyval.cval).val.si = (yyvsp[0].sint); }
+#line 1997 "ppy.tab.c"
     break;
 
   case 54:
-#line 376 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cval).type = cv_uint;  (yyval.cval).val.ui = (yyvsp[0].uint); }
-#line 1909 "ppy.tab.c" /* yacc.c:1651  */
+#line 376 "ppy.y"
+                                        { (yyval.cval).type = cv_uint;  (yyval.cval).val.ui = (yyvsp[0].uint); }
+#line 2003 "ppy.tab.c"
     break;
 
   case 55:
-#line 377 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cval).type = cv_slong; (yyval.cval).val.sl = (yyvsp[0].slong); }
-#line 1915 "ppy.tab.c" /* yacc.c:1651  */
+#line 377 "ppy.y"
+                                        { (yyval.cval).type = cv_slong; (yyval.cval).val.sl = (yyvsp[0].slong); }
+#line 2009 "ppy.tab.c"
     break;
 
   case 56:
-#line 378 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cval).type = cv_ulong; (yyval.cval).val.ul = (yyvsp[0].ulong); }
-#line 1921 "ppy.tab.c" /* yacc.c:1651  */
+#line 378 "ppy.y"
+                                        { (yyval.cval).type = cv_ulong; (yyval.cval).val.ul = (yyvsp[0].ulong); }
+#line 2015 "ppy.tab.c"
     break;
 
   case 57:
-#line 379 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cval).type = cv_sll;   (yyval.cval).val.sll = (yyvsp[0].sll); }
-#line 1927 "ppy.tab.c" /* yacc.c:1651  */
+#line 379 "ppy.y"
+                                        { (yyval.cval).type = cv_sll;   (yyval.cval).val.sll = (yyvsp[0].sll); }
+#line 2021 "ppy.tab.c"
     break;
 
   case 58:
-#line 380 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cval).type = cv_ull;   (yyval.cval).val.ull = (yyvsp[0].ull); }
-#line 1933 "ppy.tab.c" /* yacc.c:1651  */
+#line 380 "ppy.y"
+                                        { (yyval.cval).type = cv_ull;   (yyval.cval).val.ull = (yyvsp[0].ull); }
+#line 2027 "ppy.tab.c"
     break;
 
   case 59:
-#line 381 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cval).type = cv_sint;  (yyval.cval).val.si = pplookup((yyvsp[0].cptr)) != NULL; }
-#line 1939 "ppy.tab.c" /* yacc.c:1651  */
+#line 381 "ppy.y"
+                                        { (yyval.cval).type = cv_sint;  (yyval.cval).val.si = pplookup((yyvsp[0].cptr)) != NULL; }
+#line 2033 "ppy.tab.c"
     break;
 
   case 60:
-#line 382 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cval).type = cv_sint;  (yyval.cval).val.si = pplookup((yyvsp[-1].cptr)) != NULL; }
-#line 1945 "ppy.tab.c" /* yacc.c:1651  */
+#line 382 "ppy.y"
+                                        { (yyval.cval).type = cv_sint;  (yyval.cval).val.si = pplookup((yyvsp[-1].cptr)) != NULL; }
+#line 2039 "ppy.tab.c"
     break;
 
   case 61:
-#line 383 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cval).type = cv_sint;  (yyval.cval).val.si = 0; }
-#line 1951 "ppy.tab.c" /* yacc.c:1651  */
+#line 383 "ppy.y"
+                                        { (yyval.cval).type = cv_sint;  (yyval.cval).val.si = 0; }
+#line 2045 "ppy.tab.c"
     break;
 
   case 62:
-#line 384 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cval).type = cv_sint; (yyval.cval).val.si = boolean(&(yyvsp[-2].cval)) || boolean(&(yyvsp[0].cval)); }
-#line 1957 "ppy.tab.c" /* yacc.c:1651  */
+#line 384 "ppy.y"
+                                        { (yyval.cval).type = cv_sint; (yyval.cval).val.si = boolean(&(yyvsp[-2].cval)) || boolean(&(yyvsp[0].cval)); }
+#line 2051 "ppy.tab.c"
     break;
 
   case 63:
-#line 385 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cval).type = cv_sint; (yyval.cval).val.si = boolean(&(yyvsp[-2].cval)) && boolean(&(yyvsp[0].cval)); }
-#line 1963 "ppy.tab.c" /* yacc.c:1651  */
+#line 385 "ppy.y"
+                                        { (yyval.cval).type = cv_sint; (yyval.cval).val.si = boolean(&(yyvsp[-2].cval)) && boolean(&(yyvsp[0].cval)); }
+#line 2057 "ppy.tab.c"
     break;
 
   case 64:
-#line 386 "ppy.y" /* yacc.c:1651  */
-    { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), ==); }
-#line 1969 "ppy.tab.c" /* yacc.c:1651  */
+#line 386 "ppy.y"
+                                        { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), ==); }
+#line 2063 "ppy.tab.c"
     break;
 
   case 65:
-#line 387 "ppy.y" /* yacc.c:1651  */
-    { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), !=); }
-#line 1975 "ppy.tab.c" /* yacc.c:1651  */
+#line 387 "ppy.y"
+                                        { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), !=); }
+#line 2069 "ppy.tab.c"
     break;
 
   case 66:
-#line 388 "ppy.y" /* yacc.c:1651  */
-    { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval),  <); }
-#line 1981 "ppy.tab.c" /* yacc.c:1651  */
+#line 388 "ppy.y"
+                                        { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval),  <); }
+#line 2075 "ppy.tab.c"
     break;
 
   case 67:
-#line 389 "ppy.y" /* yacc.c:1651  */
-    { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval),  >); }
-#line 1987 "ppy.tab.c" /* yacc.c:1651  */
+#line 389 "ppy.y"
+                                        { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval),  >); }
+#line 2081 "ppy.tab.c"
     break;
 
   case 68:
-#line 390 "ppy.y" /* yacc.c:1651  */
-    { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), <=); }
-#line 1993 "ppy.tab.c" /* yacc.c:1651  */
+#line 390 "ppy.y"
+                                        { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), <=); }
+#line 2087 "ppy.tab.c"
     break;
 
   case 69:
-#line 391 "ppy.y" /* yacc.c:1651  */
-    { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), >=); }
-#line 1999 "ppy.tab.c" /* yacc.c:1651  */
+#line 391 "ppy.y"
+                                        { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), >=); }
+#line 2093 "ppy.tab.c"
     break;
 
   case 70:
-#line 392 "ppy.y" /* yacc.c:1651  */
-    { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval),  +); }
-#line 2005 "ppy.tab.c" /* yacc.c:1651  */
+#line 392 "ppy.y"
+                                        { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval),  +); }
+#line 2099 "ppy.tab.c"
     break;
 
   case 71:
-#line 393 "ppy.y" /* yacc.c:1651  */
-    { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval),  -); }
-#line 2011 "ppy.tab.c" /* yacc.c:1651  */
+#line 393 "ppy.y"
+                                        { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval),  -); }
+#line 2105 "ppy.tab.c"
     break;
 
   case 72:
-#line 394 "ppy.y" /* yacc.c:1651  */
-    { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval),  ^); }
-#line 2017 "ppy.tab.c" /* yacc.c:1651  */
+#line 394 "ppy.y"
+                                        { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval),  ^); }
+#line 2111 "ppy.tab.c"
     break;
 
   case 73:
-#line 395 "ppy.y" /* yacc.c:1651  */
-    { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval),  &); }
-#line 2023 "ppy.tab.c" /* yacc.c:1651  */
+#line 395 "ppy.y"
+                                        { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval),  &); }
+#line 2117 "ppy.tab.c"
     break;
 
   case 74:
-#line 396 "ppy.y" /* yacc.c:1651  */
-    { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval),  |); }
-#line 2029 "ppy.tab.c" /* yacc.c:1651  */
+#line 396 "ppy.y"
+                                        { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval),  |); }
+#line 2123 "ppy.tab.c"
     break;
 
   case 75:
-#line 397 "ppy.y" /* yacc.c:1651  */
-    { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval),  *); }
-#line 2035 "ppy.tab.c" /* yacc.c:1651  */
+#line 397 "ppy.y"
+                                        { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval),  *); }
+#line 2129 "ppy.tab.c"
     break;
 
   case 76:
-#line 398 "ppy.y" /* yacc.c:1651  */
-    { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval),  /); }
-#line 2041 "ppy.tab.c" /* yacc.c:1651  */
+#line 398 "ppy.y"
+                                        { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval),  /); }
+#line 2135 "ppy.tab.c"
     break;
 
   case 77:
-#line 399 "ppy.y" /* yacc.c:1651  */
-    { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), <<); }
-#line 2047 "ppy.tab.c" /* yacc.c:1651  */
+#line 399 "ppy.y"
+                                        { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), <<); }
+#line 2141 "ppy.tab.c"
     break;
 
   case 78:
-#line 400 "ppy.y" /* yacc.c:1651  */
-    { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), >>); }
-#line 2053 "ppy.tab.c" /* yacc.c:1651  */
+#line 400 "ppy.y"
+                                        { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), >>); }
+#line 2147 "ppy.tab.c"
     break;
 
   case 79:
-#line 401 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cval) =  (yyvsp[0].cval); }
-#line 2059 "ppy.tab.c" /* yacc.c:1651  */
+#line 401 "ppy.y"
+                                        { (yyval.cval) =  (yyvsp[0].cval); }
+#line 2153 "ppy.tab.c"
     break;
 
   case 80:
-#line 402 "ppy.y" /* yacc.c:1651  */
-    { UNARY_OP((yyval.cval), (yyvsp[0].cval), -); }
-#line 2065 "ppy.tab.c" /* yacc.c:1651  */
+#line 402 "ppy.y"
+                                        { UNARY_OP((yyval.cval), (yyvsp[0].cval), -); }
+#line 2159 "ppy.tab.c"
     break;
 
   case 81:
-#line 403 "ppy.y" /* yacc.c:1651  */
-    { UNARY_OP((yyval.cval), (yyvsp[0].cval), ~); }
-#line 2071 "ppy.tab.c" /* yacc.c:1651  */
+#line 403 "ppy.y"
+                                        { UNARY_OP((yyval.cval), (yyvsp[0].cval), ~); }
+#line 2165 "ppy.tab.c"
     break;
 
   case 82:
-#line 404 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cval).type = cv_sint; (yyval.cval).val.si = !boolean(&(yyvsp[0].cval)); }
-#line 2077 "ppy.tab.c" /* yacc.c:1651  */
+#line 404 "ppy.y"
+                                        { (yyval.cval).type = cv_sint; (yyval.cval).val.si = !boolean(&(yyvsp[0].cval)); }
+#line 2171 "ppy.tab.c"
     break;
 
   case 83:
-#line 405 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cval) =  (yyvsp[-1].cval); }
-#line 2083 "ppy.tab.c" /* yacc.c:1651  */
+#line 405 "ppy.y"
+                                        { (yyval.cval) =  (yyvsp[-1].cval); }
+#line 2177 "ppy.tab.c"
     break;
 
   case 84:
-#line 406 "ppy.y" /* yacc.c:1651  */
-    { (yyval.cval) = boolean(&(yyvsp[-4].cval)) ? (yyvsp[-2].cval) : (yyvsp[0].cval); }
-#line 2089 "ppy.tab.c" /* yacc.c:1651  */
+#line 406 "ppy.y"
+                                          { (yyval.cval) = boolean(&(yyvsp[-4].cval)) ? (yyvsp[-2].cval) : (yyvsp[0].cval); }
+#line 2183 "ppy.tab.c"
     break;
 
 
-#line 2093 "ppy.tab.c" /* yacc.c:1651  */
+#line 2187 "ppy.tab.c"
+
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -2114,14 +2209,13 @@
   /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+  {
+    const int yylhs = yyr1[yyn] - YYNTOKENS;
+    const int yyi = yypgoto[yylhs] + *yyssp;
+    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+               ? yytable[yyi]
+               : yydefgoto[yylhs]);
+  }
 
   goto yynewstate;
 
@@ -2153,7 +2247,7 @@
           {
             if (yymsg != yymsgbuf)
               YYSTACK_FREE (yymsg);
-            yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
+            yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
             if (!yymsg)
               {
                 yymsg = yymsgbuf;
@@ -2204,12 +2298,10 @@
 | yyerrorlab -- error raised explicitly by YYERROR.  |
 `---------------------------------------------------*/
 yyerrorlab:
-
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
-     goto yyerrorlab;
+  /* Pacify compilers when the user code never invokes YYERROR and the
+     label yyerrorlab therefore never appears in user code.  */
+  if (0)
+    YYERROR;
 
   /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
@@ -2271,6 +2363,7 @@
   yyresult = 0;
   goto yyreturn;
 
+
 /*-----------------------------------.
 | yyabortlab -- YYABORT comes here.  |
 `-----------------------------------*/
@@ -2278,6 +2371,7 @@
   yyresult = 1;
   goto yyreturn;
 
+
 #if !defined yyoverflow || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
@@ -2288,6 +2382,10 @@
   /* Fall through.  */
 #endif
 
+
+/*-----------------------------------------------------.
+| yyreturn -- parsing is finished, return the result.  |
+`-----------------------------------------------------*/
 yyreturn:
   if (yychar != YYEMPTY)
     {
@@ -2304,7 +2402,7 @@
   while (yyssp != yyss)
     {
       yydestruct ("Cleanup: popping",
-                  yystos[*yyssp], yyvsp);
+                  yystos[+*yyssp], yyvsp);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
@@ -2317,7 +2415,7 @@
 #endif
   return yyresult;
 }
-#line 409 "ppy.y" /* yacc.c:1910  */
+#line 409 "ppy.y"
 
 
 /*
diff --git a/mingw-w64-tools/widl/src/wpp/ppy.tab.h b/mingw-w64-tools/widl/src/wpp/ppy.tab.h
index 3ec785e..76e3700 100644
--- a/mingw-w64-tools/widl/src/wpp/ppy.tab.h
+++ b/mingw-w64-tools/widl/src/wpp/ppy.tab.h
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.1.  */
+/* A Bison parser, made by GNU Bison 3.5.4.  */
 
 /* Bison interface for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+   Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -30,6 +31,9 @@
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
+/* Undocumented macros, especially those whose name start with YY_,
+   are private implementation details.  Do not rely on them.  */
+
 #ifndef YY_PPY_PPY_TAB_H_INCLUDED
 # define YY_PPY_PPY_TAB_H_INCLUDED
 /* Debug traces.  */
@@ -93,10 +97,9 @@
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
 union YYSTYPE
 {
-#line 126 "ppy.y" /* yacc.c:1913  */
+#line 126 "ppy.y"
 
 	int		sint;
 	unsigned int	uint;
@@ -110,9 +113,9 @@
 	marg_t		*marg;
 	mtext_t		*mtext;
 
-#line 114 "ppy.tab.h" /* yacc.c:1913  */
-};
+#line 117 "ppy.tab.h"
 
+};
 typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
diff --git a/mingw-w64-tools/widl/src/wpp/preproc.c b/mingw-w64-tools/widl/src/wpp/preproc.c
index df5adf0..284704b 100644
--- a/mingw-w64-tools/widl/src/wpp/preproc.c
+++ b/mingw-w64-tools/widl/src/wpp/preproc.c
@@ -692,7 +692,7 @@
 {
 	va_list ap;
 	va_start(ap, s);
-	generic_msg(s, "Error", ppy_text, ap);
+	generic_msg(s, "error", ppy_text, ap);
 	va_end(ap);
 	exit(1);
 }
@@ -701,7 +701,7 @@
 {
 	va_list ap;
 	va_start(ap, s);
-	generic_msg(s, "Warning", ppy_text, ap);
+	generic_msg(s, "warning", ppy_text, ap);
 	va_end(ap);
 	return 0;
 }
diff --git a/mingw-w64-tools/widl/src/write_msft.c b/mingw-w64-tools/widl/src/write_msft.c
index dc0a6cb..7cfe9e1 100644
--- a/mingw-w64-tools/widl/src/write_msft.c
+++ b/mingw-w64-tools/widl/src/write_msft.c
@@ -1630,6 +1630,9 @@
     unsigned char *namedata;
     int var_num = (typeinfo->typeinfo->cElement >> 16) & 0xffff;
 
+    if (!var->name)
+        var->name = gen_name();
+
     chat("add_var_desc(%d, %s)\n", index, var->name);
 
     id = 0x40000000 + index;
@@ -2068,6 +2071,10 @@
             if(add_func_desc(msft_typeinfo, func, idx) == S_OK)
                 idx++;
     }
+
+        typelib->typelib->reg_ifaces = xrealloc(typelib->typelib->reg_ifaces,
+                (typelib->typelib->reg_iface_count + 1) * sizeof(dispinterface));
+    typelib->typelib->reg_ifaces[typelib->typelib->reg_iface_count++] = dispinterface;
 }
 
 static void add_interface_typeinfo(msft_typelib_t *typelib, type_t *interface)
@@ -2142,6 +2149,13 @@
         if(add_func_desc(msft_typeinfo, func, idx) == S_OK)
             idx++;
     }
+
+    if (is_attr(interface->attrs, ATTR_OLEAUTOMATION) || is_attr(interface->attrs, ATTR_DUAL))
+    {
+        typelib->typelib->reg_ifaces = xrealloc(typelib->typelib->reg_ifaces,
+                (typelib->typelib->reg_iface_count + 1) * sizeof(interface));
+        typelib->typelib->reg_ifaces[typelib->typelib->reg_iface_count++] = interface;
+    }
 }
 
 static void add_structure_typeinfo(msft_typelib_t *typelib, type_t *structure)
@@ -2197,6 +2211,9 @@
     if (-1 < tunion->typelib_idx)
         return;
 
+    if (!tunion->name)
+        tunion->name = gen_name();
+
     tunion->typelib_idx = typelib->typelib_header.nrtypeinfos;
     msft_typeinfo = create_msft_typeinfo(typelib, TKIND_UNION, tunion->name, tunion->attrs);
     msft_typeinfo->typeinfo->size = 0;
