Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3010 lines
77 KiB

  1. // Copyright (c) 1993-1999 Microsoft Corporation
  2. /****************************************************************************
  3. ZZZ - error in all cases
  4. AZZ - no error when : app_config
  5. AZM - no error when : app_config + ms_ext
  6. ACZ - no error when : app_config + c_ext
  7. ACM - no error when : app_config + c_ext + ms_ext
  8. ZCZ - no error when : c_ext
  9. ZCM - no error when : c_ext + ms_ext
  10. ZZM - no error when : ms_ext
  11. Therefore: The following are the configurations
  12. -ms_ext on: ZZM | ZCM | ACM | AZM
  13. ----------
  14. -c_ext on: ZCM | ZCZ | ACM | ACZ
  15. ----------
  16. -ms_ext or -c_ext on: ZZM | ZCM | ACM | AZM | ZCZ | ACZ
  17. --------------------
  18. -app_config on : AZZ | AZM | ACZ | ACM
  19. ----------------
  20. ****************************************************************************/
  21. #include "errors.hxx"
  22. #define ERR_ALWAYS ( ZZZ )
  23. #define MS_EXT_SET ( ZZM | ZCM | ACM | AZM )
  24. #define C_EXT_SET ( ZCM | ZCZ | ACM | ACZ )
  25. #define MS_OR_C_EXT_SET ( MS_EXT_SET | C_EXT_SET )
  26. #define APP_CONFIG_SET ( AZZ | AZM | ACZ | ACM )
  27. typedef struct errdb
  28. {
  29. unsigned int inApplicableEnviron;
  30. #ifdef RPCDEBUG
  31. unsigned short TestValue;
  32. #endif // RPCDEBUG
  33. E_MASK ErrMask;
  34. const char * pError;
  35. } ERRDB;
  36. const ERRDB ErrorDataBase[] = {
  37. {
  38. 0, CHECK_ERR( NO_INPUT_FILE)
  39. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  40. ,"missing source-file name"
  41. }
  42. ,{
  43. 0, CHECK_ERR( INPUT_OPEN)
  44. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  45. ,"cannot open input file"
  46. }
  47. ,{
  48. 0, CHECK_ERR( INPUT_READ)
  49. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  50. ,"error while reading input file"
  51. }
  52. ,{
  53. 0, CHECK_ERR( PREPROCESSOR_ERROR)
  54. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  55. ,"error returned by the C preprocessor"
  56. }
  57. ,{
  58. 0, CHECK_ERR( PREPROCESSOR_EXEC)
  59. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  60. ,"cannot execute C preprocessor"
  61. }
  62. ,{
  63. 0, CHECK_ERR( NO_PREPROCESSOR)
  64. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  65. ,"cannot find C preprocessor"
  66. }
  67. ,{
  68. 0, CHECK_ERR( PREPROCESSOR_INVALID )
  69. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  70. ,"invalid C preprocessor executable"
  71. }
  72. ,{
  73. 0, CHECK_ERR( SWITCH_REDEFINED)
  74. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 )
  75. ,"switch specified more than once on command line :"
  76. }
  77. ,{
  78. 0, CHECK_ERR( UNKNOWN_SWITCH)
  79. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, NOWARN )
  80. ,"unknown switch"
  81. }
  82. ,{
  83. 0, CHECK_ERR( UNKNOWN_ARGUMENT)
  84. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 )
  85. ,"unknown argument ignored"
  86. }
  87. ,{
  88. 0, CHECK_ERR( UNIMPLEMENTED_SWITCH)
  89. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 )
  90. ,"switch not implemented"
  91. }
  92. ,{
  93. 0, CHECK_ERR( MISSING_ARG)
  94. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  95. ,"argument(s) missing for switch"
  96. }
  97. ,{
  98. 0, CHECK_ERR( ILLEGAL_ARGUMENT)
  99. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  100. ,"argument illegal for switch /"
  101. }
  102. ,{
  103. 0, CHECK_ERR( BAD_SWITCH_SYNTAX)
  104. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  105. ,"illegal syntax for switch"
  106. }
  107. ,{
  108. 0, CHECK_ERR( NO_CPP_OVERRIDES)
  109. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 )
  110. ,"/no_cpp overrides /cpp_cmd and /cpp_opt"
  111. }
  112. ,{
  113. 0, CHECK_ERR( NO_WARN_OVERRIDES)
  114. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 )
  115. ,"/W0 or /no_warn overrides warning-level switch"
  116. }
  117. ,{
  118. 0, CHECK_ERR( INTERMEDIATE_FILE_CREATE)
  119. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  120. ,"cannot create intermediate file"
  121. }
  122. ,{
  123. 0, CHECK_ERR( UNUSED_ERROR_CODE1 ) // was SERVER_AUX_FILE_NOT_SPECIFIED
  124. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  125. ,"Unused error message"
  126. }
  127. ,{
  128. 0, CHECK_ERR( OUT_OF_SYSTEM_FILE_HANDLES)
  129. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  130. ,"out of system file handles"
  131. }
  132. ,{
  133. 0, CHECK_ERR( UNUSED_ERROR_CODE2 ) // was BOTH_CSWTCH_SSWTCH
  134. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  135. ,"Unused error message"
  136. }
  137. ,{
  138. 0, CHECK_ERR( CANNOT_OPEN_RESP_FILE)
  139. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  140. ,"cannot open response file"
  141. }
  142. ,{
  143. 0, CHECK_ERR( ILLEGAL_CHAR_IN_RESP_FILE)
  144. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  145. ,"illegal character(s) found in response file"
  146. }
  147. ,{
  148. 0, CHECK_ERR( MISMATCHED_PREFIX_PAIR)
  149. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  150. ,"mismatch in argument pair for switch"
  151. }
  152. ,{
  153. 0, CHECK_ERR( NESTED_RESP_FILE)
  154. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  155. ,"nested invocation of response files is illegal"
  156. }
  157. ,{
  158. 0, CHECK_ERR( ABSTRACT_DECL )
  159. MAKE_E_MASK( C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
  160. ,"must specify /c_ext for abstract declarators"
  161. }
  162. ,{
  163. 0, CHECK_ERR( ACTUAL_DECLARATION )
  164. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  165. ,"instantiation of data is illegal; you must use \"extern\" or \"static\""
  166. }
  167. ,{
  168. 0, CHECK_ERR( C_STACK_OVERFLOW)
  169. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  170. ,"compiler stack overflow"
  171. }
  172. ,{
  173. 0, CHECK_ERR( DUPLICATE_DEFINITION)
  174. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  175. ,"redefinition"
  176. }
  177. ,{
  178. 0, CHECK_ERR( NO_HANDLE_DEFINED_FOR_PROC )
  179. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 )
  180. ,"[auto_handle] binding will be used"
  181. }
  182. ,{
  183. 0, CHECK_ERR( OUT_OF_MEMORY)
  184. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  185. ,"out of memory"
  186. }
  187. ,{
  188. 0, CHECK_ERR( RECURSIVE_DEF)
  189. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  190. ,"recursive definition"
  191. }
  192. ,{
  193. 0, CHECK_ERR( REDUNDANT_IMPORT )
  194. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 )
  195. ,"import ignored; file already imported :"
  196. }
  197. ,{
  198. 0, CHECK_ERR( SPARSE_ENUM )
  199. MAKE_E_MASK( MS_OR_C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
  200. ,"sparse enums require /c_ext or /ms_ext"
  201. }
  202. ,{
  203. 0, CHECK_ERR( UNDEFINED_SYMBOL )
  204. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  205. ,"undefined symbol"
  206. }
  207. ,{
  208. 0, CHECK_ERR( UNDEFINED_TYPE)
  209. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  210. ,"type used in ACF file not defined in IDL file"
  211. }
  212. ,{
  213. 0, CHECK_ERR( UNRESOLVED_TYPE)
  214. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  215. ,"unresolved type declaration"
  216. }
  217. ,{
  218. 0, CHECK_ERR( WCHAR_CONSTANT_NOT_OSF )
  219. MAKE_E_MASK( MS_OR_C_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
  220. ,"use of wide-character constants requires /ms_ext or /c_ext"
  221. }
  222. ,{
  223. 0, CHECK_ERR( WCHAR_STRING_NOT_OSF )
  224. MAKE_E_MASK( MS_OR_C_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
  225. ,"use of wide character strings requires /ms_ext or /c_ext"
  226. }
  227. ,{
  228. 0, CHECK_ERR( WCHAR_T_ILLEGAL)
  229. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  230. ,"inconsistent redefinition of type wchar_t"
  231. }
  232. ,{
  233. 0, CHECK_ERR( TYPELIB_NOT_LOADED )
  234. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  235. ,"failed to load tlb in importlib:"
  236. }
  237. ,{
  238. 0, CHECK_ERR( TWO_LIBRARIES )
  239. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  240. ,"two library blocks"
  241. }
  242. ,{
  243. 0, CHECK_ERR( NO_IDISPATCH )
  244. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  245. ,"the dispinterface statement requires a definition for IDispatch"
  246. }
  247. ,{
  248. 0, CHECK_ERR( ERR_TYPELIB )
  249. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  250. ,"error accessing type library"
  251. }
  252. ,{
  253. 0, CHECK_ERR( ERR_TYPEINFO )
  254. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  255. ,"error accessing type info"
  256. }
  257. ,{
  258. 0, CHECK_ERR( ERR_TYPELIB_GENERATION )
  259. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  260. ,"error generating type library"
  261. }
  262. ,{
  263. 0, CHECK_ERR( DUPLICATE_IID )
  264. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  265. ,"duplicate id"
  266. }
  267. ,{
  268. 0, CHECK_ERR( BAD_ENTRY_VALUE )
  269. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  270. ,"illegal or missing value for entry attribute"
  271. }
  272. ,{
  273. 0, CHECK_ERR( ASSUMING_CHAR)
  274. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 5 )
  275. ,"error recovery assumes"
  276. }
  277. ,{
  278. 0, CHECK_ERR( DISCARDING_CHAR)
  279. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 5 )
  280. ,"error recovery discards"
  281. }
  282. ,{
  283. 0, CHECK_ERR( BENIGN_SYNTAX_ERROR)
  284. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  285. ,"syntax error"
  286. }
  287. ,{
  288. 0, CHECK_ERR( SYNTAX_ERROR)
  289. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  290. ,"cannot recover from earlier syntax errors; aborting compilation"
  291. }
  292. ,{
  293. 0, CHECK_ERR( UNKNOWN_PRAGMA_OPTION)
  294. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  295. ,"unknown pragma option"
  296. }
  297. ,{
  298. 0, CHECK_ERR( UNIMPLEMENTED_FEATURE)
  299. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  300. ,"feature not implemented"
  301. }
  302. ,{
  303. 0, CHECK_ERR( UNIMPLEMENTED_TYPE)
  304. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  305. ,"type not implemented"
  306. }
  307. ,{
  308. 0, CHECK_ERR( EXPR_DEREF_ON_NON_POINTER)
  309. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  310. ,"non-pointer used in a dereference operation"
  311. }
  312. ,{
  313. 0, CHECK_ERR( EXPR_DIV_BY_ZERO)
  314. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  315. ,"expression has a divide by zero"
  316. }
  317. ,{
  318. 0, CHECK_ERR( EXPR_INCOMPATIBLE_TYPES)
  319. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  320. ,"expression uses incompatible types"
  321. }
  322. ,{
  323. 0, CHECK_ERR( EXPR_INDEXING_NON_ARRAY )
  324. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  325. ,"non-array expression uses index operator"
  326. }
  327. ,{
  328. 0, CHECK_ERR( EXPR_LHS_NON_COMPOSITE )
  329. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  330. ,"left-hand side of expression does not evaluate to struct/union/enum"
  331. }
  332. ,{
  333. 0, CHECK_ERR( EXPR_NOT_CONSTANT)
  334. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  335. ,"constant expression expected"
  336. }
  337. ,{
  338. 0, CHECK_ERR( EXPR_NOT_EVALUATABLE )
  339. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  340. ,"expression cannot be evaluated at compile time"
  341. }
  342. ,{
  343. 0, CHECK_ERR( EXPR_NOT_IMPLEMENTED )
  344. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  345. ,"expression not implemented"
  346. }
  347. ,{
  348. 0, CHECK_ERR( NO_PTR_DEFAULT_ON_INTERFACE )
  349. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  350. ,"no [pointer_default] attribute specified, assuming [unique] for all unattributed pointers"
  351. }
  352. ,{
  353. ENV_WIN64, CHECK_ERR( NOT_OLEAUTOMATION_INTERFACE )
  354. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 4 )
  355. ,"interface is not automation marshaling conformant, requires Windows NT 4.0 SP4 or greater"
  356. }
  357. ,{
  358. 0, CHECK_ERR( DERIVES_FROM_PTR_TO_CONF )
  359. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  360. ,"[out] only parameter cannot be a pointer to an open structure"
  361. }
  362. ,{
  363. 0, CHECK_ERR( DERIVES_FROM_UNSIZED_STRING )
  364. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  365. ,"[out] only parameter cannot be an unsized string"
  366. }
  367. ,{
  368. 0, CHECK_ERR( NON_PTR_OUT )
  369. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  370. ,"[out] parameter is not a pointer"
  371. }
  372. ,{
  373. 0, CHECK_ERR( OPEN_STRUCT_AS_PARAM)
  374. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  375. ,"open structure cannot be a parameter"
  376. }
  377. ,{
  378. 0, CHECK_ERR( OUT_CONTEXT_GENERIC_HANDLE )
  379. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  380. ,"[out] context handle/generic handle must be specified as a pointer to that handle type"
  381. }
  382. ,{
  383. 0, CHECK_ERR( CTXT_HDL_TRANSMIT_AS )
  384. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  385. ,"context handle must not derive from a type that has the [transmit_as] attribute"
  386. }
  387. ,{
  388. 0, CHECK_ERR( PARAM_IS_ELIPSIS )
  389. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  390. ,"cannot specify a variable number of arguments to a remote procedure"
  391. }
  392. ,{
  393. 0, CHECK_ERR( VOID_PARAM_WITH_NAME)
  394. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  395. ,"named parameter cannot be \"void\""
  396. }
  397. ,{
  398. 0, CHECK_ERR( DERIVES_FROM_COCLASS_OR_MODULE)
  399. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  400. ,"parameter derives from \"module\""
  401. }
  402. ,{
  403. 0, CHECK_ERR( HANDLE_NOT_FIRST )
  404. MAKE_E_MASK( MS_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
  405. ,"only the first parameter can be a binding handle; you must specify the /ms_ext switch"
  406. }
  407. ,{
  408. 0, CHECK_ERR( PROC_PARAM_COMM_STATUS)
  409. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  410. ,"cannot use [comm_status] on both a parameter and a return type"
  411. }
  412. ,{
  413. 0, CHECK_ERR( LOCAL_ATTR_ON_PROC)
  414. MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
  415. ,"[local] attribute on a procedure requires /ms_ext"
  416. }
  417. ,{
  418. 0, CHECK_ERR( ILLEGAL_USE_OF_PROPERTY_ATTRIBUTE )
  419. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  420. ,"property attributes may only be used with procedures"
  421. }
  422. ,{
  423. 0, CHECK_ERR( MULTIPLE_PROPERTY_ATTRIBUTES )
  424. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  425. ,"a procedure may not have more than one property attribute"
  426. }
  427. ,{
  428. 0, CHECK_ERR( ILLEGAL_COMBINATION_OF_ATTRIBUTES )
  429. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  430. ,"the procedure has an illegal combination of operation attributes"
  431. }
  432. ,{
  433. 0, CHECK_ERR( CONFORMANT_ARRAY_NOT_LAST)
  434. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  435. ,"field deriving from a conformant array must be the last member of the structure"
  436. }
  437. ,{
  438. 0, CHECK_ERR( DUPLICATE_CASE)
  439. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  440. ,"duplicate [case] label"
  441. }
  442. ,{
  443. 0, CHECK_ERR( NO_UNION_DEFAULT)
  444. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  445. ,"no [default] case specified for discriminated union"
  446. }
  447. ,{
  448. 0, CHECK_ERR( ATTRIBUTE_ID_UNRESOLVED)
  449. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  450. ,"attribute expression cannot be resolved"
  451. }
  452. ,{
  453. 0, CHECK_ERR( ATTR_MUST_BE_INT)
  454. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  455. ,"attribute expression must be of integral type; no support for 64b expressions"
  456. }
  457. ,{
  458. 0, CHECK_ERR( BYTE_COUNT_INVALID)
  459. MAKE_E_MASK( MS_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
  460. ,"[byte_count] requires /ms_ext"
  461. }
  462. ,{
  463. 0, CHECK_ERR( BYTE_COUNT_NOT_OUT_PTR )
  464. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  465. ,"[byte_count] can be applied only to out parameters of pointer type"
  466. }
  467. ,{
  468. 0, CHECK_ERR( BYTE_COUNT_ON_CONF )
  469. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  470. ,"[byte_count] cannot be specified on a pointer to a conformant array or structure"
  471. }
  472. ,{
  473. 0, CHECK_ERR( BYTE_COUNT_PARAM_NOT_IN )
  474. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  475. ,"parameter specifying the byte count is not [in] only or byte count parameter is not [out] only"
  476. }
  477. ,{
  478. 0, CHECK_ERR( BYTE_COUNT_PARAM_NOT_INTEGRAL )
  479. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  480. ,"parameter specifying the byte count is not an integral type"
  481. }
  482. ,{
  483. 0, CHECK_ERR( BYTE_COUNT_WITH_SIZE_ATTR )
  484. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  485. ,"[byte_count] cannot be specified on a parameter with size attributes"
  486. }
  487. ,{
  488. 0, CHECK_ERR( CASE_EXPR_NOT_CONST)
  489. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  490. ,"[case] expression is not constant"
  491. }
  492. ,{
  493. 0, CHECK_ERR( CASE_EXPR_NOT_INT)
  494. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  495. ,"[case] expression is not of integral type"
  496. }
  497. ,{
  498. 0, CHECK_ERR( CONTEXT_HANDLE_VOID_PTR )
  499. MAKE_E_MASK( MS_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
  500. ,"specifying [context_handle] on a type other than void * requires /ms_ext"
  501. }
  502. ,{
  503. 0, CHECK_ERR( ERROR_STATUS_T_REPEATED)
  504. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  505. ,"cannot specify more than one parameter with each of comm_status/fault_status"
  506. }
  507. ,{
  508. 0, CHECK_ERR( E_STAT_T_MUST_BE_PTR_TO_E )
  509. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  510. ,"comm_status/fault_status parameter must be an [out] only pointer parameter"
  511. }
  512. ,{
  513. 0, CHECK_ERR( ENDPOINT_SYNTAX)
  514. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  515. ,"endpoint syntax error"
  516. }
  517. ,{
  518. 0, CHECK_ERR( INAPPLICABLE_ATTRIBUTE)
  519. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  520. ,"inapplicable attribute"
  521. }
  522. ,{
  523. 0, CHECK_ERR( ALLOCATE_INVALID)
  524. MAKE_E_MASK( MS_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
  525. ,"[allocate] requires /ms_ext"
  526. }
  527. ,{
  528. 0, CHECK_ERR( INVALID_ALLOCATE_MODE )
  529. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  530. ,"invalid [allocate] mode"
  531. }
  532. ,{
  533. 0, CHECK_ERR( INVALID_SIZE_ATTR_ON_STRING)
  534. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  535. ,"length attributes cannot be applied with string attribute"
  536. }
  537. ,{
  538. 0, CHECK_ERR( LAST_AND_LENGTH)
  539. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  540. ,"[last_is] and [length_is] cannot be specified at the same time"
  541. }
  542. ,{
  543. 0, CHECK_ERR( MAX_AND_SIZE)
  544. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  545. ,"[max_is] and [size_is] cannot be specified at the same time"
  546. }
  547. ,{
  548. 0, CHECK_ERR( NO_SWITCH_IS )
  549. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  550. ,"no [switch_is] attribute specified at use of union"
  551. }
  552. ,{
  553. 0, CHECK_ERR( NO_UUID_SPECIFIED)
  554. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  555. ,"no [uuid] specified"
  556. }
  557. ,{
  558. 0, CHECK_ERR( UUID_LOCAL_BOTH_SPECIFIED)
  559. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 )
  560. ,"[uuid] ignored on [local] interface"
  561. }
  562. ,{
  563. 0, CHECK_ERR( SIZE_LENGTH_TYPE_MISMATCH )
  564. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  565. ,"type mismatch between length and size attribute expressions"
  566. }
  567. ,{
  568. 0, CHECK_ERR( STRING_NOT_ON_BYTE_CHAR)
  569. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  570. ,"[string] attribute must be specified \"byte\" \"char\" or \"wchar_t\" array or pointer"
  571. }
  572. ,{
  573. 0, CHECK_ERR( SWITCH_TYPE_MISMATCH )
  574. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  575. ,"mismatch between the type of the [switch_is] expression and the switch type of the union"
  576. }
  577. ,{
  578. 0, CHECK_ERR( TRANSMIT_AS_CTXT_HANDLE )
  579. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  580. ,"[transmit_as] must not be applied to a type that derives from a context handle"
  581. }
  582. ,{
  583. 0, CHECK_ERR( TRANSMIT_AS_NON_RPCABLE )
  584. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  585. ,"[transmit_as] must specify a transmissible type"
  586. }
  587. ,{
  588. 0, CHECK_ERR( TRANSMIT_AS_POINTER )
  589. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  590. ,"transmitted type for [transmit_as] and [reprsent_as] must not be a pointer or derive from a pointer"
  591. }
  592. ,{
  593. 0, CHECK_ERR( TRANSMIT_TYPE_CONF )
  594. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  595. ,"presented type for [transmit_as] and [represent_as] must not derive from a conformant/varying array or a conformant/varying structure"
  596. }
  597. ,{
  598. 0, CHECK_ERR( UUID_FORMAT)
  599. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  600. ,"[uuid] format is incorrect"
  601. }
  602. ,{
  603. 0, CHECK_ERR( UUID_NOT_HEX)
  604. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  605. ,"uuid is not a hex number"
  606. }
  607. ,{
  608. 0, CHECK_ERR( OPTIONAL_PARAMS_MUST_BE_LAST)
  609. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  610. ,"optional parameters must come after required parameters"
  611. }
  612. ,{
  613. 0, CHECK_ERR( DLLNAME_REQUIRED )
  614. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  615. ,"[dllname] required when [entry] is used:"
  616. }
  617. ,{
  618. 0, CHECK_ERR( INVALID_USE_OF_BINDABLE )
  619. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  620. ,"[bindable] is invalid without [propget], [propput], or [propputref]"
  621. }
  622. ,{
  623. 0, CHECK_ERR( INVALID_USE_OF_PROPPUT )
  624. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  625. ,"procedures with [propput] or [propputref] must have at least one parameter"
  626. }
  627. ,{
  628. 0, CHECK_ERR( DISPATCH_ID_REQUIRED )
  629. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  630. ,"[id] attribute is required"
  631. }
  632. ,{
  633. 0, CHECK_ERR( ACF_INTERFACE_MISMATCH)
  634. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  635. ,"interface name specified in the ACF file does not match that specified in the IDL file"
  636. }
  637. ,{
  638. 0, CHECK_ERR( DUPLICATE_ATTR)
  639. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  640. ,"duplicated attribute"
  641. }
  642. ,{
  643. 0, CHECK_ERR( INVALID_COMM_STATUS_PARAM )
  644. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  645. ,"parameter with [comm_status] or [fault_status] attribute must be a pointer to type error_status_t"
  646. }
  647. ,{
  648. 0, CHECK_ERR( LOCAL_PROC_IN_ACF)
  649. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  650. ,"a [local] procedure cannot be specified in ACF file"
  651. }
  652. ,{
  653. 0, CHECK_ERR( TYPE_HAS_NO_HANDLE)
  654. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  655. ,"specified type is not defined as a handle"
  656. }
  657. ,{
  658. 0, CHECK_ERR( UNDEFINED_PROC )
  659. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  660. ,"procedure undefined"
  661. }
  662. ,{
  663. 0, CHECK_ERR( UNDEF_PARAM_IN_IDL)
  664. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  665. ,"this parameter does not exist in the IDL file"
  666. }
  667. ,{
  668. 0, CHECK_ERR( ARRAY_BOUNDS_CONSTRUCT_BAD )
  669. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  670. ,"this array bounds construct is not supported"
  671. }
  672. ,{
  673. 0, CHECK_ERR( ILLEGAL_ARRAY_BOUNDS)
  674. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  675. ,"array bound specification is illegal"
  676. }
  677. ,{
  678. 0, CHECK_ERR( ILLEGAL_CONFORMANT_ARRAY)
  679. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  680. ,"pointer to a conformant array or an array that contains a conformant array is not supported"
  681. }
  682. ,{
  683. 0, CHECK_ERR( UNSIZED_ARRAY)
  684. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  685. ,"pointee / array does not derive any size"
  686. }
  687. ,{
  688. 0, CHECK_ERR( NOT_FIXED_ARRAY)
  689. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  690. ,"only fixed arrays and SAFEARRAYs are legal in a type library"
  691. }
  692. ,{
  693. 0, CHECK_ERR( SAFEARRAY_USE )
  694. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  695. ,"SAFEARRAYs are only legal inside a library block"
  696. }
  697. ,{
  698. 0, CHECK_ERR( CHAR_CONST_NOT_TERMINATED )
  699. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  700. ,"badly formed character constant"
  701. }
  702. ,{
  703. 0, CHECK_ERR( EOF_IN_COMMENT )
  704. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  705. ,"end of file found in comment"
  706. }
  707. ,{
  708. 0, CHECK_ERR( EOF_IN_STRING )
  709. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  710. ,"end of file found in string"
  711. }
  712. ,{
  713. 0, CHECK_ERR( ID_TRUNCATED )
  714. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 4 )
  715. ,"identifier length exceeds 31 characters"
  716. }
  717. ,{
  718. 0, CHECK_ERR( NEWLINE_IN_STRING )
  719. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  720. ,"end of line found in string"
  721. }
  722. ,{
  723. 0, CHECK_ERR( STRING_TOO_LONG )
  724. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  725. ,"string constant exceeds limit of 255 characters"
  726. }
  727. ,{
  728. 0, CHECK_ERR( IDENTIFIER_TOO_LONG )
  729. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  730. ,"identifier exceeds limit of 255 characters and has been truncated"
  731. }
  732. ,{
  733. 0, CHECK_ERR( CONSTANT_TOO_BIG )
  734. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  735. ,"constant too big"
  736. }
  737. ,{
  738. 0, CHECK_ERR( ERROR_PARSING_NUMERICAL )
  739. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  740. ,"numerical parsing error"
  741. }
  742. ,{
  743. 0, CHECK_ERR( ERROR_OPENING_FILE )
  744. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  745. ,"error in opening file"
  746. }
  747. ,{
  748. 0, CHECK_ERR( ERR_BIND )
  749. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  750. ,"error binding to function"
  751. }
  752. ,{
  753. 0, CHECK_ERR( ERR_INIT )
  754. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  755. ,"error initializing OLE"
  756. }
  757. ,{
  758. 0, CHECK_ERR( ERR_LOAD )
  759. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  760. ,"error loading library"
  761. }
  762. ,{
  763. 0, CHECK_ERR( UNIQUE_FULL_PTR_OUT_ONLY )
  764. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  765. ,"[out] only parameter must not derive from a top-level [unique] or [ptr] pointer/array"
  766. }
  767. ,{
  768. 0, CHECK_ERR( BAD_ATTR_NON_RPC_UNION )
  769. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  770. ,"attribute is not applicable to this non-rpcable union"
  771. }
  772. ,{
  773. 0, CHECK_ERR( SIZE_SPECIFIER_CANT_BE_OUT )
  774. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  775. ,"expression used for a size attribute must not derive from an [out] only parameter"
  776. }
  777. ,{
  778. 0, CHECK_ERR( LENGTH_SPECIFIER_CANT_BE_OUT )
  779. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  780. ,"expression used for a length attribute for an [in] parameter cannot derive from an [out] only parameter"
  781. }
  782. ,{
  783. 0, CHECK_ERR( BAD_CON_INT )
  784. MAKE_E_MASK( C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
  785. ,"use of \"int\" needs /c_ext"
  786. }
  787. ,{
  788. 0, CHECK_ERR( BAD_CON_FIELD_VOID )
  789. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  790. ,"struct/union field must not be \"void\""
  791. }
  792. ,{
  793. 0, CHECK_ERR( BAD_CON_ARRAY_VOID )
  794. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  795. ,"array element must not be \"void\""
  796. }
  797. ,{
  798. 0, CHECK_ERR( BAD_CON_MSC_CDECL )
  799. MAKE_E_MASK( C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
  800. ,"use of type qualifiers and/or modifiers needs /c_ext"
  801. }
  802. ,{
  803. 0, CHECK_ERR( BAD_CON_FIELD_FUNC )
  804. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  805. ,"struct/union field must not derive from a function"
  806. }
  807. ,{
  808. 0, CHECK_ERR( BAD_CON_ARRAY_FUNC )
  809. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  810. ,"array element must not be a function"
  811. }
  812. ,{
  813. 0, CHECK_ERR( BAD_CON_PARAM_FUNC )
  814. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  815. ,"parameter must not be a function"
  816. }
  817. ,{
  818. 0, CHECK_ERR( BAD_CON_BIT_FIELDS )
  819. MAKE_E_MASK( C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
  820. ,"struct/union with bit fields needs /c_ext"
  821. }
  822. ,{
  823. 0, CHECK_ERR( BAD_CON_BIT_FIELD_NON_ANSI)
  824. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 4 )
  825. ,"bit field specification on a type other that \"int\" is a non-ANSI-compatible extension"
  826. }
  827. ,{
  828. 0, CHECK_ERR( BAD_CON_BIT_FIELD_NOT_INTEGRAL)
  829. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  830. ,"bit field specification can be applied only to simple, integral types"
  831. }
  832. ,{
  833. 0, CHECK_ERR( BAD_CON_CTXT_HDL_FIELD )
  834. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  835. ,"struct/union field must not derive from handle_t or a context_handle"
  836. }
  837. ,{
  838. 0, CHECK_ERR( BAD_CON_CTXT_HDL_ARRAY )
  839. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  840. ,"array element must not derive from handle_t or a context-handle"
  841. }
  842. ,{
  843. 0, CHECK_ERR( BAD_CON_NON_RPC_UNION )
  844. MAKE_E_MASK( C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
  845. ,"this specification of union needs /c_ext"
  846. }
  847. ,{
  848. ENV_WIN64, CHECK_ERR( NON_RPC_PARAM_INT )
  849. MAKE_E_MASK( MS_OR_C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
  850. ,"parameter deriving from an \"int\" must have size specifier \"small\", \"short\", or \"long\" with the \"int\""
  851. }
  852. ,{
  853. 0, CHECK_ERR( NON_RPC_PARAM_VOID )
  854. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  855. ,"type of the parameter cannot derive from void or void *"
  856. }
  857. ,{
  858. 0, CHECK_ERR( NON_RPC_PARAM_BIT_FIELDS )
  859. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  860. ,"parameter deriving from a struct/union containing bit fields is not supported"
  861. }
  862. ,{
  863. 0, CHECK_ERR( NON_RPC_PARAM_CDECL )
  864. MAKE_E_MASK( C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
  865. ,"use of a parameter deriving from a type containing type-modifiers/type-qualifiers needs /c_ext"
  866. }
  867. ,{
  868. 0, CHECK_ERR( NON_RPC_PARAM_FUNC_PTR )
  869. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  870. ,"parameter must not derive from a pointer to a function"
  871. }
  872. ,{
  873. 0, CHECK_ERR( NON_RPC_UNION )
  874. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  875. ,"parameter must not derive from a non-rpcable union"
  876. }
  877. ,{
  878. 0, CHECK_ERR( NON_RPC_RTYPE_INT )
  879. MAKE_E_MASK( MS_OR_C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
  880. ,"return type derives from an \"int\". You must use size specifiers with the \"int\""
  881. }
  882. ,{
  883. 0, CHECK_ERR( NON_RPC_RTYPE_VOID )
  884. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  885. ,"return type must not derive from a void pointer"
  886. }
  887. ,{
  888. 0, CHECK_ERR( NON_RPC_RTYPE_BIT_FIELDS )
  889. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  890. ,"return type must not derive from a struct/union containing bit-fields"
  891. }
  892. ,{
  893. 0, CHECK_ERR( NON_RPC_RTYPE_UNION )
  894. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  895. ,"return type must not derive from a non-rpcable union"
  896. }
  897. ,{
  898. 0, CHECK_ERR( NON_RPC_RTYPE_FUNC_PTR )
  899. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  900. ,"return type must not derive from a pointer to a function"
  901. }
  902. ,{
  903. 0, CHECK_ERR( COMPOUND_INITS_NOT_SUPPORTED )
  904. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  905. ,"compound initializers are not supported"
  906. }
  907. ,{
  908. 0, CHECK_ERR( ACF_IN_IDL_NEEDS_APP_CONFIG )
  909. MAKE_E_MASK( APP_CONFIG_SET , C_MSG, CLASS_ERROR, NOWARN )
  910. ,"ACF attributes in the IDL file need the /app_config switch"
  911. }
  912. ,{
  913. 0, CHECK_ERR( SINGLE_LINE_COMMENT )
  914. MAKE_E_MASK( MS_OR_C_EXT_SET , C_MSG, CLASS_WARN, 1 )
  915. ,"single line comment needs /ms_ext or /c_ext"
  916. }
  917. ,{
  918. 0, CHECK_ERR( VERSION_FORMAT )
  919. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  920. ,"[version] format is incorrect"
  921. }
  922. ,{
  923. 0, CHECK_ERR( SIGNED_ILLEGAL )
  924. MAKE_E_MASK( MS_OR_C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
  925. ,"\"signed\" needs /ms_ext or /c_ext"
  926. }
  927. ,{
  928. 0, CHECK_ERR( ASSIGNMENT_TYPE_MISMATCH )
  929. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  930. ,"mismatch in assignment type"
  931. }
  932. ,{
  933. 0, CHECK_ERR( ILLEGAL_OSF_MODE_DECL )
  934. MAKE_E_MASK( MS_OR_C_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
  935. ,"declaration must be of the form: const <type><declarator> = <initializing expression> "
  936. }
  937. ,{
  938. 0, CHECK_ERR( OSF_DECL_NEEDS_CONST )
  939. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  940. ,"declaration must have \"const\""
  941. }
  942. ,{
  943. 0, CHECK_ERR( COMP_DEF_IN_PARAM_LIST )
  944. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  945. ,"struct/union/enum must not be defined in a parameter type specification"
  946. }
  947. ,{
  948. 0, CHECK_ERR( ALLOCATE_NOT_ON_PTR_TYPE )
  949. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  950. ,"[allocate] attribute must be applied only on non-void pointer types"
  951. }
  952. ,{
  953. 0, CHECK_ERR( ARRAY_OF_UNIONS_ILLEGAL )
  954. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  955. ,"array or equivalent pointer construct cannot derive from a non-encapsulated union"
  956. }
  957. ,{
  958. 0, CHECK_ERR( BAD_CON_E_STAT_T_FIELD )
  959. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  960. ,"field must not derive from an error_status_t type"
  961. }
  962. ,{
  963. 0, CHECK_ERR( CASE_LABELS_MISSING_IN_UNION )
  964. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  965. ,"union has at least one arm without a case label"
  966. }
  967. ,{
  968. 0, CHECK_ERR( BAD_CON_PARAM_RT_IGNORE )
  969. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  970. ,"parameter or return type must not derive from a type that has [ignore] applied to it"
  971. }
  972. ,{
  973. 0, CHECK_ERR( MORE_THAN_ONE_PTR_ATTR )
  974. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  975. ,"pointer already has a pointer-attribute applied to it"
  976. }
  977. ,{
  978. 0, CHECK_ERR( RECURSION_THRU_REF )
  979. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  980. ,"field/parameter must not derive from a structure that is recursive through a ref pointer"
  981. }
  982. ,{
  983. 0, CHECK_ERR( BAD_CON_FIELD_VOID_PTR )
  984. MAKE_E_MASK( C_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
  985. ,"use of field deriving from a void pointer needs /c_ext"
  986. }
  987. ,{
  988. 0, CHECK_ERR( INVALID_OSF_ATTRIBUTE )
  989. MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
  990. ,"use of this attribute needs /ms_ext"
  991. }
  992. ,{
  993. ENV_WIN64, CHECK_ERR( INVALID_NEWTLB_ATTRIBUTE )
  994. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  995. ,"this attribute only allowed with new format type libraries"
  996. }
  997. ,{
  998. 0, CHECK_ERR( WCHAR_T_INVALID_OSF )
  999. MAKE_E_MASK( MS_OR_C_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
  1000. ,"use of wchar_t needs /ms_ext or /c_ext"
  1001. }
  1002. ,{
  1003. 0, CHECK_ERR( BAD_CON_UNNAMED_FIELD )
  1004. MAKE_E_MASK( MS_OR_C_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
  1005. ,"unnamed fields need /ms_ext or /c_ext"
  1006. }
  1007. ,{
  1008. 0, CHECK_ERR( BAD_CON_UNNAMED_FIELD_NO_STRUCT )
  1009. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1010. ,"unnamed fields can derive only from struct/union types"
  1011. }
  1012. ,{
  1013. 0, CHECK_ERR( BAD_CON_UNION_FIELD_CONF )
  1014. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1015. ,"field of a union cannot derive from a conformant/varying array or its pointer equivalent"
  1016. }
  1017. ,{
  1018. 0, CHECK_ERR( PTR_WITH_NO_DEFAULT )
  1019. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  1020. ,"no [pointer_default] attribute specified, assuming [ptr] for all unattributed pointers in interface"
  1021. }
  1022. ,{
  1023. 0, CHECK_ERR( RHS_OF_ASSIGN_NOT_CONST )
  1024. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1025. ,"initializing expression must resolve to a constant expression"
  1026. }
  1027. ,{
  1028. 0, CHECK_ERR( SWITCH_IS_TYPE_IS_WRONG )
  1029. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1030. ,"attribute expression must be of type integer, char, boolean or enum"
  1031. }
  1032. ,{
  1033. 0, CHECK_ERR( ILLEGAL_CONSTANT )
  1034. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1035. ,"illegal constant"
  1036. }
  1037. ,{
  1038. 0, CHECK_ERR( IGNORE_UNIMPLEMENTED_ATTRIBUTE )
  1039. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  1040. ,"attribute not implemented; ignored"
  1041. }
  1042. ,{
  1043. 0, CHECK_ERR( BAD_CON_REF_RT )
  1044. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1045. ,"return type must not derive from a [ref] pointer"
  1046. }
  1047. ,{
  1048. 0, CHECK_ERR( ATTRIBUTE_ID_MUST_BE_VAR )
  1049. MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
  1050. ,"attribute expression must be a variable name or a pointer dereference expression in this mode. You must specify the /ms_ext switch"
  1051. }
  1052. ,{
  1053. 0, CHECK_ERR( RECURSIVE_UNION )
  1054. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1055. ,"parameter must not derive from a recursive non-encapsulated union"
  1056. }
  1057. ,{
  1058. 0, CHECK_ERR( BINDING_HANDLE_IS_OUT_ONLY )
  1059. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1060. ,"binding-handle parameter cannot be [out] only"
  1061. }
  1062. ,{
  1063. 0, CHECK_ERR( PTR_TO_HDL_UNIQUE_OR_FULL )
  1064. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1065. ,"pointer to a handle cannot be [unique] or [ptr]"
  1066. }
  1067. ,{
  1068. 0, CHECK_ERR( HANDLE_T_NO_TRANSMIT )
  1069. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1070. ,"parameter that is not a binding handle must not derive from handle_t"
  1071. }
  1072. ,{
  1073. 0, CHECK_ERR( UNEXPECTED_END_OF_FILE )
  1074. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1075. ,"unexpected end of file found"
  1076. }
  1077. ,{
  1078. 0, CHECK_ERR( HANDLE_T_XMIT )
  1079. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1080. ,"type deriving from handle_t must not have [transmit_as] applied to it"
  1081. }
  1082. ,{
  1083. 0, CHECK_ERR( CTXT_HDL_GENERIC_HDL )
  1084. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1085. ,"[context_handle] must not be applied to a type that has [handle] applied to it"
  1086. }
  1087. ,{
  1088. 0, CHECK_ERR( GENERIC_HDL_VOID )
  1089. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1090. ,"[handle] must not be specified on a type deriving from void or void *"
  1091. }
  1092. ,{
  1093. 0, CHECK_ERR( NO_EXPLICIT_IN_OUT_ON_PARAM )
  1094. MAKE_E_MASK( MS_OR_C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
  1095. ,"parameter must have either [in], [out] or [in,out] in this mode. You must specify /ms_ext or /c_ext"
  1096. }
  1097. ,{
  1098. 0, CHECK_ERR( TRANSMIT_AS_VOID )
  1099. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1100. ,"transmitted type may not derive from \"void\" for [transmit_as], [represent_as], [wire_marshal], [user_marshal]."
  1101. }
  1102. ,{
  1103. 0, CHECK_ERR( VOID_NON_FIRST_PARAM )
  1104. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1105. ,"\"void\" must be specified on the first and only parameter specification"
  1106. }
  1107. ,{
  1108. 0, CHECK_ERR( SWITCH_IS_ON_NON_UNION )
  1109. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1110. ,"[switch_is] must be specified only on a type deriving from a non-encapsulated union"
  1111. }
  1112. ,{
  1113. 0, CHECK_ERR( STRINGABLE_STRUCT_NOT_SUPPORTED )
  1114. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1115. ,"stringable structures are not implemented in this version"
  1116. }
  1117. ,{
  1118. 0, CHECK_ERR( SWITCH_TYPE_TYPE_BAD )
  1119. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1120. ,"switch type can only be integral, char, boolean or enum"
  1121. }
  1122. ,{
  1123. 0, CHECK_ERR( GENERIC_HDL_HANDLE_T )
  1124. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1125. ,"[handle] must not be specified on a type deriving from handle_t"
  1126. }
  1127. ,{
  1128. 0, CHECK_ERR( HANDLE_T_CANNOT_BE_OUT )
  1129. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1130. ,"parameter deriving from handle_t must not be an [out] parameter"
  1131. }
  1132. ,{
  1133. 0, CHECK_ERR( SIZE_LENGTH_SW_UNIQUE_OR_FULL )
  1134. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 )
  1135. ,"attribute expression derives from [unique] or [ptr] pointer dereference"
  1136. }
  1137. ,{
  1138. 0, CHECK_ERR( CPP_QUOTE_NOT_OSF )
  1139. MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
  1140. ,"\"cpp_quote\" requires /ms_ext"
  1141. }
  1142. ,{
  1143. 0, CHECK_ERR( QUOTED_UUID_NOT_OSF )
  1144. MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
  1145. ,"quoted uuid requires /ms_ext"
  1146. }
  1147. ,{
  1148. 0, CHECK_ERR( RETURN_OF_UNIONS_ILLEGAL )
  1149. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1150. ,"return type cannot derive from a non-encapsulated union"
  1151. }
  1152. ,{
  1153. 0, CHECK_ERR( RETURN_OF_CONF_STRUCT )
  1154. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1155. ,"return type cannot derive from a conformant structure"
  1156. }
  1157. ,{
  1158. 0, CHECK_ERR( XMIT_AS_GENERIC_HANDLE )
  1159. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1160. ,"[transmit_as] must not be applied to a type deriving from a generic handle"
  1161. }
  1162. ,{
  1163. 0, CHECK_ERR( GENERIC_HANDLE_XMIT_AS )
  1164. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1165. ,"[handle] must not be applied to a type that has [transmit_as] applied to it"
  1166. }
  1167. ,{
  1168. 0, CHECK_ERR( INVALID_CONST_TYPE )
  1169. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1170. ,"type specified for the const declaration is invalid"
  1171. }
  1172. ,{
  1173. 0, CHECK_ERR( INVALID_SIZEOF_OPERAND )
  1174. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1175. ,"operand to the sizeof operator is not supported"
  1176. }
  1177. ,{
  1178. 0, CHECK_ERR( NAME_ALREADY_USED )
  1179. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  1180. ,"this name already used as a const identifier name"
  1181. }
  1182. ,{
  1183. 0, CHECK_ERR( ERROR_STATUS_T_ILLEGAL )
  1184. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1185. ,"inconsistent redefinition of type error_status_t"
  1186. }
  1187. ,{
  1188. 0, CHECK_ERR( CASE_VALUE_OUT_OF_RANGE )
  1189. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1190. ,"[case] value out of range of switch type"
  1191. }
  1192. ,{
  1193. 0, CHECK_ERR( WCHAR_T_NEEDS_MS_EXT_TO_RPC )
  1194. MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
  1195. ,"parameter deriving from wchar_t needs /ms_ext"
  1196. }
  1197. ,{
  1198. 0, CHECK_ERR( INTERFACE_ONLY_CALLBACKS )
  1199. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1200. ,"this interface has only callbacks"
  1201. }
  1202. ,{
  1203. 0, CHECK_ERR( REDUNDANT_ATTRIBUTE )
  1204. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1205. ,"redundantly specified attribute; ignored"
  1206. }
  1207. ,{
  1208. 0, CHECK_ERR( CTXT_HANDLE_USED_AS_IMPLICIT )
  1209. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1210. ,"context handle type used for an implicit handle"
  1211. }
  1212. ,{
  1213. 0, CHECK_ERR( CONFLICTING_ALLOCATE_OPTIONS )
  1214. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1215. ,"conflicting options specified for [allocate]"
  1216. }
  1217. ,{
  1218. 0, CHECK_ERR( ERROR_WRITING_FILE )
  1219. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1220. ,"error while writing to file"
  1221. }
  1222. ,{
  1223. 0, CHECK_ERR( NO_SWITCH_TYPE_AT_DEF )
  1224. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  1225. ,"no switch type found at definition of union, using the [switch_is] type"
  1226. }
  1227. ,{
  1228. 0, CHECK_ERR( ERRORS_PASS1_NO_PASS2 )
  1229. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  1230. ,"semantic check incomplete due to previous errors"
  1231. }
  1232. ,{
  1233. 0, CHECK_ERR( HANDLES_WITH_CALLBACK )
  1234. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1235. ,"handle parameter or return type is not supported on a [callback] procedure"
  1236. }
  1237. ,{
  1238. 0, CHECK_ERR( PTR_NOT_FULLY_IMPLEMENTED )
  1239. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1240. ,"[ptr] does not support aliasing in this version"
  1241. }
  1242. ,{
  1243. 0, CHECK_ERR( PARAM_ALREADY_CTXT_HDL )
  1244. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1245. ,"parameter already defined as a context handle"
  1246. }
  1247. ,{
  1248. 0, CHECK_ERR( CTXT_HDL_HANDLE_T )
  1249. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1250. ,"[context_handle] must not derive from handle_t"
  1251. }
  1252. ,{
  1253. 0, CHECK_ERR( ARRAY_SIZE_EXCEEDS_64K )
  1254. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  1255. ,"array size exceeds 65536 bytes"
  1256. }
  1257. ,{
  1258. 0, CHECK_ERR( STRUCT_SIZE_EXCEEDS_64K )
  1259. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1260. ,"struct size exceeds 65536 bytes"
  1261. }
  1262. ,{
  1263. 0, CHECK_ERR( NE_UNION_FIELD_NE_UNION )
  1264. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1265. ,"field of a non-encapsulated union cannot be another non-encapsulated union"
  1266. }
  1267. ,{
  1268. 0, CHECK_ERR( PTR_ATTRS_ON_EMBEDDED_ARRAY )
  1269. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  1270. ,"pointer attribute(s) applied on an embedded array; ignored"
  1271. }
  1272. ,{
  1273. 0, CHECK_ERR( ALLOCATE_ON_TRANSMIT_AS )
  1274. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1275. ,"[allocate] is illegal on either the transmitted or presented type for [transmit_as], [represent_as], [wire_marshal], or [user_marshal]."
  1276. }
  1277. ,{
  1278. 0, CHECK_ERR( SWITCH_TYPE_REQD_THIS_IMP_MODE )
  1279. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1280. ,"[switch_type] must be specified in this import mode"
  1281. }
  1282. ,{
  1283. 0, CHECK_ERR( IMPLICIT_HDL_ASSUMED_GENERIC )
  1284. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  1285. ,"[implicit_handle] type undefined; assuming generic handle"
  1286. }
  1287. ,{
  1288. 0, CHECK_ERR( E_STAT_T_ARRAY_ELEMENT )
  1289. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1290. ,"array element must not derive from error_status_t"
  1291. }
  1292. ,{
  1293. 0, CHECK_ERR( ALLOCATE_ON_HANDLE )
  1294. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1295. ,"[allocate] illegal on a type deriving from a primitive/generic/context handle"
  1296. }
  1297. ,{
  1298. 0, CHECK_ERR( TRANSMIT_AS_ON_E_STAT_T )
  1299. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1300. ,"transmitted or presented type must not derive from error_status_t"
  1301. }
  1302. ,{
  1303. 0, CHECK_ERR( IGNORE_ON_DISCRIMINANT )
  1304. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1305. ,"discriminant of a union must not derive from a field with [ignore] applied to it"
  1306. }
  1307. ,{
  1308. 0, CHECK_ERR( NOCODE_WITH_SERVER_STUBS )
  1309. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 4 )
  1310. ,"[nocode] ignored for server side since \"/server none\" not specified"
  1311. }
  1312. ,{
  1313. 0, CHECK_ERR( NO_REMOTE_PROCS_NO_STUBS )
  1314. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1315. ,"no remote procedures specified in non-[local] interface; no client/server stubs will be generated"
  1316. }
  1317. ,{
  1318. 0, CHECK_ERR( TWO_DEFAULT_CASES )
  1319. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1320. ,"too many default cases specified for encapsulated union"
  1321. }
  1322. ,{
  1323. 0, CHECK_ERR( TWO_DEFAULT_INTERFACES )
  1324. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1325. ,"too many default interfaces specified for coclass"
  1326. }
  1327. ,{
  1328. 0, CHECK_ERR( DEFAULTVTABLE_REQUIRES_SOURCE )
  1329. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1330. ,"items with [defaultvtable] must also have [source]"
  1331. }
  1332. ,{
  1333. 0, CHECK_ERR( UNION_NO_FIELDS )
  1334. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1335. ,"union specification with no fields is illegal"
  1336. }
  1337. ,{
  1338. 0, CHECK_ERR( VALUE_OUT_OF_RANGE )
  1339. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1340. ,"value out of range"
  1341. }
  1342. ,{
  1343. 0, CHECK_ERR( CTXT_HDL_NON_PTR )
  1344. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1345. ,"[context_handle] must be applied on a pointer type"
  1346. }
  1347. ,{
  1348. 0, CHECK_ERR( NON_RPC_RTYPE_HANDLE_T )
  1349. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1350. ,"return type must not derive from handle_t"
  1351. }
  1352. ,{
  1353. 0, CHECK_ERR( GEN_HDL_CTXT_HDL )
  1354. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1355. ,"[handle] must not be applied to a type deriving from a context handle"
  1356. }
  1357. ,{
  1358. ENV_WIN64, CHECK_ERR( NON_RPC_FIELD_INT )
  1359. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1360. ,"field deriving from an \"int\" must have size specifier \"small\", \"short\", or \"long\" with the \"int\""
  1361. }
  1362. ,{
  1363. 0, CHECK_ERR( NON_RPC_FIELD_PTR_TO_VOID )
  1364. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1365. ,"field must not derive from a void or void *"
  1366. }
  1367. ,{
  1368. 0, CHECK_ERR( NON_RPC_FIELD_BIT_FIELDS )
  1369. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1370. ,"field must not derive from a struct containing bit-fields"
  1371. }
  1372. ,{
  1373. 0, CHECK_ERR( NON_RPC_FIELD_NON_RPC_UNION )
  1374. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1375. ,"field must not derive from a non-rpcable union"
  1376. }
  1377. ,{
  1378. 0, CHECK_ERR( NON_RPC_FIELD_FUNC_PTR )
  1379. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1380. ,"field must not derive from a pointer to a function"
  1381. }
  1382. ,{
  1383. 0, CHECK_ERR( PROC_PARAM_FAULT_STATUS)
  1384. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1385. ,"cannot use [fault_status] on both a parameter and a return type"
  1386. }
  1387. ,{
  1388. 0, CHECK_ERR( NON_OI_BIG_RETURN )
  1389. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1390. ,"return type too complicated for /Oi modes, using /Os"
  1391. }
  1392. ,{
  1393. 0, CHECK_ERR( NON_OI_BIG_GEN_HDL )
  1394. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1395. ,"generic handle type too large for /Oi modes, using /Os"
  1396. }
  1397. ,{
  1398. 0, CHECK_ERR( ALLOCATE_IN_OUT_PTR )
  1399. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 4 )
  1400. ,"[allocate(all_nodes)] on an [in,out] parameter may orphan the original memory"
  1401. }
  1402. ,{
  1403. 0, CHECK_ERR( REF_PTR_IN_UNION)
  1404. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1405. ,"cannot have a [ref] pointer as a union arm"
  1406. }
  1407. ,{
  1408. 0, CHECK_ERR( NON_OI_CTXT_HDL )
  1409. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1410. ,"return of context handles not supported for /Oi modes, using /Os"
  1411. }
  1412. ,{
  1413. 0, CHECK_ERR( NON_OI_ERR_STATS )
  1414. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1415. ,"use of the extra [comm_status] or [fault_status] parameter not supported for /Oi* modes, using /Os"
  1416. }
  1417. ,{
  1418. 0, CHECK_ERR( NON_OI_UNK_REP_AS )
  1419. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1420. ,"use of an unknown type for [represent_as] or [user_marshal] not supported for /Oi modes, using /Os"
  1421. }
  1422. ,{
  1423. 0, CHECK_ERR( NON_OI_XXX_AS_ON_RETURN )
  1424. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1425. ,"array types with [transmit_as] or [represent_as] not supported on return type for /Oi modes, using /Os"
  1426. }
  1427. ,{
  1428. 0, CHECK_ERR( NON_OI_XXX_AS_BY_VALUE )
  1429. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1430. ,"array types with [transmit_as] or [represent_as] not supported pass-by-value for /Oi modes, using /Os"
  1431. }
  1432. ,{
  1433. 0, CHECK_ERR( CALLBACK_NOT_OSF )
  1434. MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
  1435. ,"[callback] requires /ms_ext"
  1436. }
  1437. ,{
  1438. 0, CHECK_ERR( CIRCULAR_INTERFACE_DEPENDENCY )
  1439. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1440. ,"circular interface dependency"
  1441. }
  1442. ,{
  1443. 0, CHECK_ERR( NOT_VALID_AS_BASE_INTF )
  1444. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1445. ,"only IUnknown may be used as the root interface"
  1446. }
  1447. ,{
  1448. 0, CHECK_ERR( IID_IS_NON_POINTER )
  1449. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1450. ,"[IID_IS] may only be applied to pointers to interfaces"
  1451. }
  1452. ,{
  1453. 0, CHECK_ERR( INTF_NON_POINTER )
  1454. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1455. ,"interfaces may only be used in pointer-to-interface constructs"
  1456. }
  1457. ,{
  1458. 0, CHECK_ERR( PTR_INTF_NO_GUID )
  1459. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1460. ,"interface pointers must have a UUID/IID"
  1461. }
  1462. ,{
  1463. 0, CHECK_ERR( OUTSIDE_OF_INTERFACE )
  1464. MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
  1465. ,"definitions and declarations outside of interface body requires /ms_ext"
  1466. }
  1467. ,{
  1468. 0, CHECK_ERR( MULTIPLE_INTF_NON_OSF )
  1469. MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN )
  1470. ,"multiple interfaces in one file requires /ms_ext"
  1471. }
  1472. ,{
  1473. 0, CHECK_ERR( CONFLICTING_INTF_HANDLES )
  1474. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1475. ,"only one of [implicit_handle], [auto_handle], or [explicit_handle] allowed"
  1476. }
  1477. ,{
  1478. 0, CHECK_ERR( IMPLICIT_HANDLE_NON_HANDLE )
  1479. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1480. ,"[implicit_handle] references a type which is not a handle"
  1481. }
  1482. ,{
  1483. 0, CHECK_ERR( OBJECT_PROC_MUST_BE_WIN32 )
  1484. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1485. ,"[object] procs may only be used with \"/env win32\""
  1486. }
  1487. ,{
  1488. ENV_WIN64, CHECK_ERR( _OBSOLETE_NON_OI_16BIT_CALLBACK )
  1489. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1490. ,""
  1491. //,"[callback] with -env dos/win16 not supported for /Oi modes, using /Os"
  1492. }
  1493. ,{
  1494. 0, CHECK_ERR( NON_OI_TOPLEVEL_FLOAT )
  1495. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1496. ,"float/double not supported as top-level parameter for /Oi mode, using /Os"
  1497. }
  1498. ,{
  1499. 0, CHECK_ERR( CTXT_HDL_MUST_BE_DIRECT_RETURN )
  1500. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1501. ,"pointers to context handles may not be used as return values"
  1502. }
  1503. ,{
  1504. 0, CHECK_ERR( OBJECT_PROC_NON_HRESULT_RETURN )
  1505. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1506. ,"procedures in an object interface must return an HRESULT"
  1507. }
  1508. ,{
  1509. 0, CHECK_ERR( DUPLICATE_UUID )
  1510. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1511. ,"duplicate UUID. Same as"
  1512. }
  1513. ,{
  1514. 0, CHECK_ERR( ILLEGAL_INTERFACE_DERIVATION )
  1515. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1516. ,"[object] interfaces must derive from another [object] interface such as IUnknown"
  1517. }
  1518. ,{
  1519. 0, CHECK_ERR( ILLEGAL_BASE_INTERFACE )
  1520. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1521. ,"(async) interface must derive from another (async) interface"
  1522. }
  1523. ,{
  1524. 0, CHECK_ERR( IID_IS_EXPR_NON_POINTER )
  1525. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1526. ,"[IID_IS] expression must be a pointer to IID structure"
  1527. }
  1528. ,{
  1529. 0, CHECK_ERR( CALL_AS_NON_LOCAL_PROC )
  1530. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1531. ,"[call_as] type must be a [local] procedure"
  1532. }
  1533. ,{
  1534. 0, CHECK_ERR( CALL_AS_UNSPEC_IN_OBJECT )
  1535. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1536. ,"undefined [call_as] must not be used in an object interface"
  1537. }
  1538. ,{
  1539. 0, CHECK_ERR( ENCODE_AUTO_HANDLE )
  1540. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1541. ,"[auto_handle] may not be used with [encode] or [decode]"
  1542. }
  1543. ,{
  1544. 0, CHECK_ERR( RPC_PROC_IN_ENCODE )
  1545. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1546. ,"normal procs are not allowed in an interface with [encode] or [decode]"
  1547. }
  1548. ,{
  1549. 0, CHECK_ERR( ENCODE_CONF_OR_VAR )
  1550. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1551. ,"top-level conformance or variance not allowed with [encode] or [decode]"
  1552. }
  1553. ,{
  1554. 0, CHECK_ERR( CONST_ON_OUT_PARAM )
  1555. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1556. ,"[out] parameters may not have \"const\""
  1557. }
  1558. ,{
  1559. 0, CHECK_ERR( CONST_ON_RETVAL )
  1560. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1561. ,"return values may not have \"const\""
  1562. }
  1563. ,{
  1564. 0, CHECK_ERR( INVALID_USE_OF_RETVAL )
  1565. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1566. ,"invalid use of \"retval\" attribute"
  1567. }
  1568. ,{
  1569. 0, CHECK_ERR( MULTIPLE_CALLING_CONVENTIONS )
  1570. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1571. ,"multiple calling conventions illegal"
  1572. }
  1573. ,{
  1574. 0, CHECK_ERR( INAPPROPRIATE_ON_OBJECT_PROC )
  1575. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1576. ,"attribute illegal on [object] procedure"
  1577. }
  1578. ,{
  1579. 0, CHECK_ERR( NON_INTF_PTR_PTR_OUT )
  1580. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1581. ,"[out] interface pointers must use double indirection"
  1582. }
  1583. ,{
  1584. 0, CHECK_ERR( CALL_AS_USED_MULTIPLE_TIMES )
  1585. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1586. ,"procedure used twice as the caller in [call_as]"
  1587. }
  1588. ,{
  1589. 0, CHECK_ERR( OBJECT_CALL_AS_LOCAL )
  1590. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1591. ,"[call_as] target must have [local] in an object interface"
  1592. }
  1593. ,{
  1594. 0, CHECK_ERR( CODE_NOCODE_CONFLICT )
  1595. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1596. ,"[code] and [nocode] may not be used together"
  1597. }
  1598. ,{
  1599. 0, CHECK_ERR( MAYBE_NO_OUT_RETVALS )
  1600. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1601. ,"procedures with [maybe] or [message] attributes may not [out] params or, "
  1602. "return values must be of type HRESULT or error_status_t"
  1603. }
  1604. ,{
  1605. 0, CHECK_ERR( FUNC_NON_POINTER )
  1606. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1607. ,"pointer to function must be used"
  1608. }
  1609. ,{
  1610. 0, CHECK_ERR( FUNC_NON_RPC )
  1611. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1612. ,"functions may not be passed in an RPC operation"
  1613. }
  1614. ,{
  1615. 0, CHECK_ERR( NON_OI_RETVAL_64BIT )
  1616. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1617. ,"hyper/double not supported as return value for /Oi modes, using /Os"
  1618. }
  1619. ,{
  1620. 0, CHECK_ERR( MISMATCHED_PRAGMA_POP )
  1621. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  1622. ,"#pragma pack( pop ) without matching #pragma pack( push )"
  1623. }
  1624. ,{
  1625. 0, CHECK_ERR( WRONG_TYPE_IN_STRING_STRUCT )
  1626. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1627. ,"stringable structure fields must be byte/char/wchar_t"
  1628. }
  1629. ,{
  1630. 0, CHECK_ERR( NON_OI_NOTIFY )
  1631. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1632. ,"[notify] not supported for /Oi modes, using /Os"
  1633. }
  1634. ,{
  1635. 0, CHECK_ERR( HANDLES_WITH_OBJECT )
  1636. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1637. ,"handle parameter or return type is not supported on a procedure in an [object] interface"
  1638. }
  1639. ,{
  1640. 0, CHECK_ERR( NON_ANSI_MULTI_CONF_ARRAY )
  1641. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  1642. ,"ANSI C only allows the leftmost array bound to be unspecified"
  1643. }
  1644. ,{
  1645. 0, CHECK_ERR( NON_OI_UNION_PARM )
  1646. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1647. ,"by-value union parameters not supported for /Oi modes, using /Os"
  1648. }
  1649. ,{
  1650. 0, CHECK_ERR( OBJECT_WITH_VERSION )
  1651. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1652. ,"[version] attribute is ignored on an [object] interface"
  1653. }
  1654. ,{
  1655. 0, CHECK_ERR( SIZING_ON_FIXED_ARRAYS )
  1656. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1657. ,"[size_is] or [max_is] attribute is invalid on a fixed array"
  1658. }
  1659. ,{
  1660. 0, CHECK_ERR( PICKLING_INVALID_IN_OBJECT )
  1661. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  1662. ,"[encode] or [decode] are invalid in an [object] interface"
  1663. }
  1664. ,{
  1665. 0, CHECK_ERR( TYPE_PICKLING_INVALID_IN_OSF )
  1666. MAKE_E_MASK( MS_EXT_SET, C_MSG, CLASS_ERROR, NOWARN )
  1667. ,"[encode] or [decode] on a type requires /ms_ext"
  1668. }
  1669. ,{
  1670. ENV_WIN64, CHECK_ERR( _OBSOLETE_INT_NOT_SUPPORTED_ON_INT16 )
  1671. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1672. ,""
  1673. //,"\"int\" not supported on /env win16 or /env dos"
  1674. }
  1675. ,{
  1676. 0, CHECK_ERR( BSTRING_NOT_ON_PLAIN_PTR )
  1677. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1678. ,"[bstring] may only be applied to a pointer to \"char\" or \"wchar_t\""
  1679. }
  1680. ,{
  1681. 0, CHECK_ERR( INVALID_ON_OBJECT_PROC )
  1682. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1683. ,"attribute invalid on a proc in an [object] interface :"
  1684. }
  1685. ,{
  1686. 0, CHECK_ERR( INVALID_ON_OBJECT_INTF )
  1687. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1688. ,"attribute invalid on an [object] interface :"
  1689. }
  1690. ,{
  1691. ENV_WIN64, CHECK_ERR( STACK_TOO_BIG )
  1692. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 )
  1693. ,"too many parameters or stack too big for /Oi modes, using /Os"
  1694. }
  1695. ,{
  1696. 0, CHECK_ERR( NO_ATTRS_ON_ACF_TYPEDEF )
  1697. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 )
  1698. ,"no attributes on ACF file typedef, so no effect"
  1699. }
  1700. ,{
  1701. 0, CHECK_ERR( NON_OI_WRONG_CALL_CONV )
  1702. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1703. ,"calling conventions other than __stdcall or __cdecl not supported for /Oi modes, using /Os"
  1704. }
  1705. ,{
  1706. 0, CHECK_ERR( TOO_MANY_DELEGATED_PROCS )
  1707. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1708. ,"too many delegation methods in the interface, requires Windows 2000 or greater "
  1709. }
  1710. ,{
  1711. ENV_WIN64, CHECK_ERR( _OBSOLETE_NO_MAC_AUTO_HANDLES )
  1712. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1713. ,""
  1714. //,"auto handles not supported with -env mac or -env powermac"
  1715. }
  1716. ,{
  1717. 0, CHECK_ERR( ILLEGAL_IN_MKTYPLIB_MODE)
  1718. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1719. ,"statements outside library block are illegal in mktyplib compatability mode"
  1720. }
  1721. ,{
  1722. 0, CHECK_ERR( ILLEGAL_USE_OF_MKTYPLIB_SYNTAX)
  1723. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1724. ,"illegal syntax unless using mktyplib compatibility mode"
  1725. }
  1726. ,{
  1727. 0, CHECK_ERR( ILLEGAL_SU_DEFINITION)
  1728. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1729. ,"illegal definition, must use typedef in mktyplib compatibility mode"
  1730. }
  1731. ,{
  1732. 0, CHECK_ERR( INTF_EXPLICIT_PTR_ATTR )
  1733. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1734. ,"explicit pointer attribute [ptr] [ref] ignored for interface pointers"
  1735. }
  1736. ,{
  1737. ENV_WIN64, CHECK_ERR( _OBSOLETE_NO_OI_ON_MPPC )
  1738. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1739. ,""
  1740. //,"Oi modes not implemented for PowerMac, switching to Os"
  1741. }
  1742. ,{
  1743. 0, CHECK_ERR( ILLEGAL_EXPRESSION_TYPE )
  1744. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1745. ,"illegal expression type used in attribute"
  1746. }
  1747. ,{
  1748. 0, CHECK_ERR( ILLEGAL_PIPE_TYPE )
  1749. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1750. ,"illegal type used in pipe"
  1751. }
  1752. ,{
  1753. 0, CHECK_ERR( REQUIRES_OI2 )
  1754. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1755. ,"procedure uses pipes, using /Oicf"
  1756. }
  1757. ,{
  1758. 0, CHECK_ERR( ASYNC_REQUIRES_OI2 )
  1759. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  1760. ,"procedure has an attribute that requires use of /Oicf, switching modes"
  1761. }
  1762. ,{
  1763. 0, CHECK_ERR( CONFLICTING_OPTIMIZATION_REQUIREMENTS )
  1764. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1765. ,"conflicting optimization requirements, cannot optimize"
  1766. }
  1767. ,{
  1768. 0, CHECK_ERR( ILLEGAL_PIPE_EMBEDDING )
  1769. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1770. ,"pipes cannot be array elements, or members of structures or unions"
  1771. }
  1772. ,{
  1773. 0, CHECK_ERR( ILLEGAL_PIPE_CONTEXT )
  1774. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1775. ,"invalid pipe usage"
  1776. }
  1777. ,{
  1778. 0, CHECK_ERR( CMD_REQUIRES_I2 )
  1779. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  1780. ,"feature requires the advanced interpreted optimization option, use -Oicf :"
  1781. }
  1782. ,{
  1783. 0, CHECK_ERR( REQUIRES_I2 )
  1784. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 3 )
  1785. ,"feature requires the advanced interpreted optimization option, use -Oicf :"
  1786. }
  1787. // The following 4 errors aren't used but sit here to get
  1788. // the MSDN error numbers correct.
  1789. ,{
  1790. 0, CHECK_ERR( CMD_REQUIRES_NT40 )
  1791. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  1792. ,"feature invalid for the specified target system, use -target NT40 :"
  1793. }
  1794. ,{
  1795. 0, CHECK_ERR( CMD_REQUIRES_NT351 )
  1796. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  1797. ,"feature invalid for the specified target system, use -target NT351 :"
  1798. }
  1799. ,{
  1800. 0, CHECK_ERR( REQUIRES_NT40 )
  1801. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1802. ,"feature invalid for the specified target system, use -target NT40"
  1803. }
  1804. ,{
  1805. 0, CHECK_ERR( REQUIRES_NT351 )
  1806. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1807. ,"feature invalid for the specified target system, use -target NT351"
  1808. }
  1809. ,{
  1810. 0, CHECK_ERR( CMD_OI1_PHASED_OUT )
  1811. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 )
  1812. ,"the optimization option is being phased out, use -Oicf :"
  1813. }
  1814. ,{
  1815. 0, CHECK_ERR( CMD_OI2_OBSOLETE )
  1816. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 )
  1817. ,"the optimization option is being phased out, use -Oicf :"
  1818. }
  1819. ,{
  1820. 0, CHECK_ERR( OI1_PHASED_OUT )
  1821. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1822. ,"the optimization option is being phased out, use -ic "
  1823. }
  1824. ,{
  1825. 0, CHECK_ERR( OI2_OBSOLETE )
  1826. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1827. ,"the optimization option is being phased out, use -icf"
  1828. }
  1829. ,{
  1830. 0, CHECK_ERR( ODL_OLD_NEW_OBSOLETE )
  1831. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1832. ,"the -old and -new switches are obsolete, use -oldtlb and -newtlb"
  1833. }
  1834. ,{
  1835. 0, CHECK_ERR( ILLEGAL_ARG_VALUE)
  1836. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1837. ,"illegal argument value"
  1838. }
  1839. ,{
  1840. 0, CHECK_ERR( CONSTANT_TYPE_MISMATCH )
  1841. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1842. ,"illegal expression type in constant"
  1843. }
  1844. ,{
  1845. 0, CHECK_ERR( ENUM_TYPE_MISMATCH )
  1846. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1847. ,"illegal expression type in enum"
  1848. }
  1849. ,{
  1850. 0, CHECK_ERR( UNSATISFIED_FORWARD )
  1851. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1852. ,"unsatisfied forward declaration"
  1853. }
  1854. ,{
  1855. 0, CHECK_ERR( CONTRADICTORY_SWITCHES )
  1856. MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN )
  1857. ,"switches are contradictory "
  1858. }
  1859. ,{
  1860. 0, CHECK_ERR( NO_SWITCH_IS_HOOKOLE )
  1861. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1862. ,"MIDL cannot generate HOOKOLE information for the non-rpcable union"
  1863. }
  1864. ,{
  1865. 0, CHECK_ERR( NO_CASE_EXPR )
  1866. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1867. ,"no case expression found for union"
  1868. }
  1869. ,{
  1870. 0, CHECK_ERR( USER_MARSHAL_IN_OI )
  1871. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1872. ,"[user_marshal] and [wire_marshal] not supported with -Oi and -Oic flags, use -Os or -Oicf"
  1873. }
  1874. ,{
  1875. 0, CHECK_ERR( PIPES_WITH_PICKLING )
  1876. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1877. ,"pipes can't be used with data serialization, i.e. [encode] and/or [decode]"
  1878. }
  1879. ,{
  1880. 0, CHECK_ERR( PIPE_INTF_PTR_PTR )
  1881. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1882. ,"all pipe interface pointers must use single indirection"
  1883. }
  1884. ,{
  1885. 0, CHECK_ERR( IID_WITH_PIPE_INTF_PTR )
  1886. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1887. ,"[iid_is()] cannot be used with a pipe interface pointer"
  1888. }
  1889. ,{
  1890. 0, CHECK_ERR( INVALID_LOCALE_ID )
  1891. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1892. ,"invalid or inapplicable -lcid switch: "
  1893. }
  1894. ,{
  1895. 0, CHECK_ERR( CONFLICTING_LCID )
  1896. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, NOWARN )
  1897. ,"the specified lcid is different from previous specification"
  1898. }
  1899. ,{
  1900. 0, CHECK_ERR( ILLEGAL_IMPORTLIB )
  1901. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1902. ,"importlib is not allowed outside of a library block"
  1903. }
  1904. ,{
  1905. 0, CHECK_ERR( INVALID_FLOAT )
  1906. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1907. ,"invalid floating point value"
  1908. }
  1909. ,{
  1910. 0, CHECK_ERR( INVALID_MEMBER )
  1911. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1912. ,"invalid member"
  1913. }
  1914. ,{
  1915. 0, CHECK_ERR( POSSIBLE_INVALID_MEMBER )
  1916. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, NOWARN )
  1917. ,"possible invalid member"
  1918. }
  1919. ,{
  1920. 0, CHECK_ERR( INTERFACE_PIPE_TYPE_MISMATCH )
  1921. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1922. ,"mismatch in pipe and interface types"
  1923. }
  1924. ,{
  1925. 0, CHECK_ERR( PIPE_INCOMPATIBLE_PARAMS )
  1926. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1927. ,"string, varying array, conformant array and full pointer parameters are\n"
  1928. "incompatible with pipe parameters"
  1929. }
  1930. ,{
  1931. 0, CHECK_ERR( ASYNC_NOT_IN )
  1932. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1933. ,"parameter must be in"
  1934. }
  1935. ,{
  1936. 0, CHECK_ERR( OBJECT_ASYNC_NOT_DOUBLE_PTR )
  1937. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1938. ,"parameter type of an [async] object must be a double pointer to an interface"
  1939. }
  1940. ,{
  1941. 0, CHECK_ERR( ASYNC_INCORRECT_TYPE )
  1942. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1943. ,"incorrect async handle type"
  1944. }
  1945. ,{
  1946. 0, CHECK_ERR( INTERNAL_SWITCH_USED )
  1947. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, NOWARN )
  1948. ,"the \"internal\" switch enables unsupported features, use with caution"
  1949. }
  1950. ,{
  1951. 0, CHECK_ERR( ASYNC_INCORRECT_BINDING_HANDLE )
  1952. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1953. ,"async procedures cannot use auto handle"
  1954. }
  1955. ,{
  1956. 0, CHECK_ERR( ASYNC_INCORRECT_ERROR_STATUS_T )
  1957. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1958. ,"error_status_t should have both [comm_status] and [fault_status]"
  1959. }
  1960. ,{
  1961. 0, CHECK_ERR( NO_LIBRARY )
  1962. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1963. ,"this construct is only allowed within a library block"
  1964. }
  1965. ,{
  1966. 0, CHECK_ERR( INVALID_TYPE_REDEFINITION )
  1967. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1968. ,"invalid type redefinition"
  1969. }
  1970. ,{
  1971. 0, CHECK_ERR( NOT_VARARG_COMPATIBLE )
  1972. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1973. ,"procedures with [vararg] attribute must have a SAFEARRAY(VARIANT) parameter; param order is [vararg], [lcid], [retval]"
  1974. }
  1975. ,{
  1976. ENV_WIN64, CHECK_ERR( TOO_MANY_PROCS_FOR_NT4 )
  1977. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1978. ,"too many methods in the interface, requires Windows NT 4.0 SP3 or greater"
  1979. }
  1980. ,{
  1981. ENV_WIN64, CHECK_ERR( TOO_MANY_PROCS )
  1982. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1983. ,"too many methods in the interface, requires Windows 2000 or greater"
  1984. }
  1985. ,{
  1986. 0, CHECK_ERR( OBSOLETE_SWITCH )
  1987. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1988. ,"switch is being phased out"
  1989. }
  1990. ,{
  1991. 0, CHECK_ERR( CANNOT_INHERIT_IADVISESINK )
  1992. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  1993. ,"cannot derive from IAdviseSink, IAdviseSink2 or IAdviseSinkEx"
  1994. }
  1995. ,{
  1996. 0, CHECK_ERR( DEFAULTVALUE_NOT_ALLOWED )
  1997. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  1998. ,"cannot assign a default value"
  1999. }
  2000. ,{
  2001. ENV_WIN64, CHECK_ERR( _OBSOLETE_INVALID_TLB_ENV )
  2002. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2003. ,""
  2004. //,"type library generation for DOS/Win16/MAC is not supported"
  2005. }
  2006. ,{
  2007. 0, CHECK_ERR( WARN_TYPELIB_GENERATION )
  2008. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  2009. ,"error generating type library, ignored"
  2010. }
  2011. ,{
  2012. ENV_WIN64, CHECK_ERR( OI_STACK_SIZE_EXCEEDED )
  2013. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 )
  2014. ,"exceeded stack size for /Oi, using /Os"
  2015. }
  2016. ,{
  2017. 0, CHECK_ERR( ROBUST_REQUIRES_OICF )
  2018. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  2019. ,"use of /robust requires /Oicf, switching modes"
  2020. }
  2021. ,{
  2022. 0, CHECK_ERR( INCORRECT_RANGE_DEFN )
  2023. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2024. ,"incorrect range specified"
  2025. }
  2026. ,{
  2027. 0, CHECK_ERR( ASYNC_INVALID_IN_OUT_PARAM_COMBO )
  2028. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2029. ,"invalid combination of [in] only and [out] parameters for [async_uuid] interface"
  2030. }
  2031. ,{
  2032. ENV_WIN64, CHECK_ERR( _OBSOLETE_PLATFORM_NOT_SUPPORTED )
  2033. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2034. ,""
  2035. //,"DOS, Win16 and MAC platforms are not supported with /robust"
  2036. }
  2037. ,{
  2038. 0, CHECK_ERR( OIC_SUPPORT_PHASED_OUT )
  2039. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  2040. ,"support for NT 3.51 style stubless proxies for object interfaces will be phased out; use /Oicf: "
  2041. }
  2042. ,{
  2043. 0, CHECK_ERR( ROBUST_PICKLING_NO_OICF )
  2044. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2045. ,"[encode] or [decode] with /robust requires /Oicf"
  2046. }
  2047. ,{
  2048. 0, CHECK_ERR( _OBSOLETE_OS_SUPPORT_PHASING_OUT )
  2049. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  2050. ,""
  2051. //,"support for DOS, Win16 and MAC platforms is being phased out."
  2052. }
  2053. ,{
  2054. 0, CHECK_ERR( CONFLICTING_ATTRIBUTES )
  2055. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2056. ,"conflicting attributes specified"
  2057. }
  2058. ,{
  2059. 0, CHECK_ERR( NO_CONTEXT_HANDLE )
  2060. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2061. ,"[serialize], [noserialize] can be applied to context_handles"
  2062. }
  2063. ,{
  2064. 0, CHECK_ERR( FORMAT_STRING_LIMITS )
  2065. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2066. ,"the compiler reached a limit for a format string representation. See documentation for advice."
  2067. }
  2068. ,{
  2069. 0, CHECK_ERR( EMBEDDED_OPEN_STRUCT )
  2070. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  2071. ,"wire format may be incorrect, you may need to use -ms_conf_struct, see documentation for advice:"
  2072. }
  2073. ,{
  2074. 0, CHECK_ERR( STACK_SIZE_TOO_BIG )
  2075. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2076. ,"a stack size or an offset bigger than 64k limit. See documentation for advice."
  2077. }
  2078. ,{
  2079. 0, CHECK_ERR( WIN64_INTERPRETED )
  2080. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 3 )
  2081. ,"an interpreter mode forced for 64b platform"
  2082. }
  2083. ,{
  2084. 0, CHECK_ERR( ARRAY_ELEMENT_TOO_BIG )
  2085. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2086. ,"The array element size is bigger than 64k limit."
  2087. }
  2088. ,{
  2089. 0, CHECK_ERR( INVALID_USE_OF_LCID )
  2090. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2091. ,"there can be only one [lcid] parameter in a method, and it should be last or, second to last if last parameter has [retval]"
  2092. }
  2093. ,{
  2094. 0, CHECK_ERR( PRAGMA_SYNTAX_ERROR )
  2095. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2096. ,"incorrect syntax for midl_pragma"
  2097. }
  2098. ,{
  2099. 0, CHECK_ERR( INVALID_MODE_FOR_INT3264 )
  2100. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2101. ,"__int3264 is not supported in /osf mode"
  2102. }
  2103. ,{
  2104. 0, CHECK_ERR( UNSATISFIED_HREF )
  2105. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2106. ,"unresolved symbol in type library"
  2107. }
  2108. ,{
  2109. 0, CHECK_ERR( ASYNC_PIPE_BY_REF )
  2110. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2111. ,"async pipes cannot be passed by value"
  2112. }
  2113. ,{
  2114. 0, CHECK_ERR( STACK_FRAME_SIZE_EXCEEDED )
  2115. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2116. ,"parameter offset exceed 64k limit for interpreted procedures"
  2117. }
  2118. ,{
  2119. 0, CHECK_ERR( INVALID_ARRAY_ELEMENT )
  2120. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2121. ,"invalid array element"
  2122. }
  2123. ,{
  2124. 0, CHECK_ERR( DISPINTERFACE_MEMBERS )
  2125. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2126. ,"dispinterface members must be methods, properties or interface"
  2127. }
  2128. ,{
  2129. 0, CHECK_ERR( LOCAL_NO_CALL_AS )
  2130. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 4 )
  2131. ,"[local] procedure without [call_as]"
  2132. }
  2133. ,{
  2134. 0, CHECK_ERR( MULTI_DIM_VECTOR )
  2135. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  2136. ,"multi dimensional vector, switching to /Oicf"
  2137. }
  2138. ,{
  2139. 0, CHECK_ERR( NETMON_REQUIRES_OICF )
  2140. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2141. ,"use of /netmon requires /Oicf"
  2142. }
  2143. ,{
  2144. ENV_WIN32, CHECK_ERR( NO_SUPPORT_IN_TLB )
  2145. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  2146. ,"type or construct not supported in a library block because oleaut32.dll support for 64b polymorphic types is missing"
  2147. }
  2148. ,{
  2149. 0, CHECK_ERR( NO_OLD_INTERPRETER_64B )
  2150. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2151. ,"old interpreter code being generated for 64b"
  2152. }
  2153. ,{
  2154. 0, CHECK_ERR( SWITCH_NOT_SUPPORTED_ANYMORE )
  2155. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2156. ,"the compiler switch is not supported anymore:"
  2157. }
  2158. ,{
  2159. 0, CHECK_ERR( SPAWN_ERROR )
  2160. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2161. ,"cannot execute MIDL engine"
  2162. }
  2163. ,{
  2164. 0, CHECK_ERR( BAD_CMD_FILE )
  2165. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2166. ,"invalid or corrupt intermediate compiler file :"
  2167. }
  2168. ,{
  2169. 0, CHECK_ERR( INAPPLICABLE_OPTIONAL_ATTRIBUTE )
  2170. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  2171. ,"for oleautomation, optional parameters should be VARIANT or VARIANT *"
  2172. }
  2173. ,{
  2174. 0, CHECK_ERR( DEFAULTVALUE_WITH_OPTIONAL )
  2175. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  2176. ,"[defaultvalue] is applied to a non-VARIANT and [optional]. Please remove [optional]"
  2177. }
  2178. ,{
  2179. 0, CHECK_ERR( OPTIONAL_OUTSIDE_LIBRARY )
  2180. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  2181. ,"[optional] attribute is inapplicable outside of a library block"
  2182. }
  2183. ,{
  2184. 0, CHECK_ERR( LCID_SHOULD_BE_LONG )
  2185. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2186. ,"The data type of the [lcid] parameter must be long"
  2187. }
  2188. ,{
  2189. 0, CHECK_ERR( INVALID_PROP_PARAMS )
  2190. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2191. ,"procedures with [propput], [propget] or [propputref] can't have more than one required parameter after [optional] one"
  2192. }
  2193. ,{
  2194. 0, CHECK_ERR( COMMFAULT_PICKLING_NO_OICF )
  2195. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2196. ,"[comm_status] or [fault_status] with pickling requires -Oicf"
  2197. }
  2198. ,{
  2199. 0, CHECK_ERR( INCONSIST_VERSION )
  2200. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2201. ,"midl driver and compiler version mismatch"
  2202. }
  2203. ,{
  2204. 0, CHECK_ERR( NO_INTERMEDIATE_FILE )
  2205. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2206. ,"no intermediate file specified: use midl.exe"
  2207. }
  2208. ,{
  2209. 0, CHECK_ERR( FAILED_TO_GENERATE_PARAM )
  2210. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  2211. ,"processing problem with a parameter in a procedure"
  2212. }
  2213. ,{
  2214. 0, CHECK_ERR( FAILED_TO_GENERATE_FIELD )
  2215. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  2216. ,"processing problem with a field in a structure"
  2217. }
  2218. ,{
  2219. 0, CHECK_ERR( FORMAT_STRING_OFFSET_IS_ZERO )
  2220. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  2221. ,"internal compiler inconsistency detected: the format string offset is invalid. See the documentation for more information."
  2222. }
  2223. ,{
  2224. 0, CHECK_ERR( TYPE_OFFSET_IS_ZERO )
  2225. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  2226. ,"internal compiler inconsistency detected: the type offset is invalid. See the documentation for more information."
  2227. }
  2228. ,{
  2229. 0, CHECK_ERR( SAFEARRAY_NOT_SUPPORT_OUTSIDE_TLB )
  2230. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 )
  2231. ," SAFEARRAY(foo) syntax is not supported outside of the library block, use LPSAFEARRAY for proxy"
  2232. }
  2233. ,{
  2234. 0, CHECK_ERR( FAILED_TO_GENERATE_BIT_FIELD )
  2235. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2236. ,"bit fields are not supported"
  2237. }
  2238. ,{
  2239. 0, CHECK_ERR( PICKLING_RETVAL_FORCING_OI )
  2240. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  2241. ,"floating point or complex return types with [decode] are not supported in -Oicf, using -Oi"
  2242. }
  2243. ,{
  2244. 0, CHECK_ERR( PICKLING_RETVAL_TO_COMPLEX64 )
  2245. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2246. ,"the return type is not supported for 64-bit when using [decode]"
  2247. }
  2248. ,{
  2249. 0, CHECK_ERR( WIRE_HAS_FULL_PTR )
  2250. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  2251. ,"transmitted type may not contain a full pointer for either [wire_marshal] or [user_marshal]"
  2252. }
  2253. ,{
  2254. 0, CHECK_ERR( WIRE_NOT_DEFINED_SIZE )
  2255. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2256. ,"transmitted type must either be a pointer or have a constant size for [wire_marshal] and [user_marshal]"
  2257. }
  2258. ,{
  2259. 0, CHECK_ERR( INVALID_USE_OF_PROPGET )
  2260. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2261. ,"procedures with [propget] must have at least one parameter or a return value"
  2262. }
  2263. ,{
  2264. 0, CHECK_ERR( UNABLE_TO_OPEN_CMD_FILE )
  2265. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN )
  2266. ,"Unable to open intermediate compiler file"
  2267. }
  2268. // Errors marked with CSCHAR are relics from DCE international character
  2269. // support. This feature was pulled because of fundamental problems with
  2270. // the spec.
  2271. ,{
  2272. 0, CHECK_ERR( IN_TAG_WITHOUT_IN )
  2273. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2274. // CSCHAR ,"parameters with [cs_drtag] or [cs_stag] must be [in] parameters"
  2275. ,""
  2276. }
  2277. ,{
  2278. 0, CHECK_ERR( OUT_TAG_WITHOUT_OUT )
  2279. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2280. // CSCHAR ,"parameters with [cs_rtag] must be [out] parameters"
  2281. ,""
  2282. }
  2283. ,{
  2284. 0, CHECK_ERR( NO_TAGS_FOR_IN_CSTYPE )
  2285. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2286. // CSCHAR ,"use of [cs_char] on [in] parameters requires parameters with [cs_stag]"
  2287. ,""
  2288. }
  2289. ,{
  2290. 0, CHECK_ERR( NO_TAGS_FOR_OUT_CSTYPE )
  2291. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2292. // CSCHAR ,"use of [cs_char] on [out] parameters requires parameters with [cs_drtag] and [cs_rtag]"
  2293. ,""
  2294. }
  2295. ,{
  2296. 0, CHECK_ERR( CSCHAR_EXPR_MUST_BE_SIMPLE )
  2297. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2298. // CSCHAR ,"size/length expressions for cs_char arrays must be simple variables or pointers to simple variables"
  2299. ,""
  2300. }
  2301. ,{
  2302. 0, CHECK_ERR( SHARED_CSCHAR_EXPR_VAR )
  2303. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2304. // CSCHAR ,"size/length expressions for cs_char arrays may not share variables with other size/length expressions"
  2305. ,""
  2306. }
  2307. ,{
  2308. 0, CHECK_ERR( MSCDECL_INVALID_ALIGN )
  2309. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2310. ,"The alignment specified in __declspec(align(N)) must be a power of two between 1 and 8192."
  2311. }
  2312. ,{
  2313. 0, CHECK_ERR( DECLSPEC_ALIGN_IN_LIBRARY )
  2314. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2315. ,"__declspec(align(N)) is not supported in a TLB"
  2316. }
  2317. ,{
  2318. 0, CHECK_ERR( ENCAP_UNION_ARM_ALIGN_EXCEEDS_16 )
  2319. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2320. ,"Encapsuled union arm alignment may not exceed 16"
  2321. }
  2322. ,{
  2323. 0, CHECK_ERR( ILLEGAL_MODIFIERS_BETWEEN_SEUKEYWORD_AND_BRACE )
  2324. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2325. , "Modifiers after the keywords \"struct\", \"union\", or \"enum\" are not supported"
  2326. }
  2327. ,{
  2328. 0, CHECK_ERR( TYPE_NOT_SUPPORTED )
  2329. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2330. , "Type is not supported"
  2331. }
  2332. ,{
  2333. 0, CHECK_ERR( UNSPECIFIED_EMBEDDED_REPRESENT_AS_NOT_SUPPORTED )
  2334. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2335. , "Embedded unspecified user_marshal/represent_as is not supported"
  2336. }
  2337. ,{
  2338. 0, CHECK_ERR( INVALID_PACKING_LEVEL )
  2339. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2340. , "The packing level must be a power of two between and including 1 and 32768"
  2341. }
  2342. ,{
  2343. 0, CHECK_ERR( RETURNVAL_TOO_COMPLEX_FORCE_OS )
  2344. MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 )
  2345. , "Return value too complex, switching to /Os"
  2346. }
  2347. ,{
  2348. 0, CHECK_ERR( NO_CONFORMANT_CSCHAR )
  2349. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2350. // CSCHAR , "cs_char arrays may not be conformant"
  2351. ,""
  2352. }
  2353. ,{
  2354. 0, CHECK_ERR( NO_MULTIDIMENSIONAL_CSCHAR )
  2355. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2356. // CSCHAR , "cs_char arrays may not be multidimensional"
  2357. ,""
  2358. }
  2359. ,{
  2360. 0, CHECK_ERR( BYTE_COUNT_IN_NDR64 )
  2361. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2362. , "[byte_count] has been depreciated for ndr64"
  2363. }
  2364. ,{
  2365. 0, CHECK_ERR( SIZE_EXCEEDS_2GB )
  2366. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2367. , "The size must be less then 2GB. See documentation for details"
  2368. }
  2369. ,{
  2370. 0, CHECK_ERR( ARRAY_DIMENSIONS_EXCEEDS_255 )
  2371. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2372. , "The array dimensions exceeds a compiler limit of 255. See documention for details"
  2373. }
  2374. ,{
  2375. 0, CHECK_ERR( UNSPECIFIED_REP_OR_UMRSHL_IN_NDR64 )
  2376. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2377. , "Unspecifed [represent_as] and [user_marshal] has been depreciated for ndr64. Define the presented type"
  2378. }
  2379. ,{
  2380. 0, CHECK_ERR( ASYNC_NDR64_ONLY )
  2381. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  2382. , "async interface supports NDR64 only: only do this when you are sure the interface will not use DCE transfer syntax ever. use -protocol all if you are not sure"
  2383. }
  2384. ,{
  2385. 0, CHECK_ERR( UNSUPPORT_NDR64_FEATURE )
  2386. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2387. , "ndr64 transfer syntax is not supported in 32bit platform yet"
  2388. }
  2389. ,{
  2390. 0, CHECK_ERR( UNSUPPORTED_LARGE_GENERIC_HANDLE )
  2391. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2392. , "large generic handles are not supported in the ndr64 protocol"
  2393. }
  2394. ,{
  2395. 0, CHECK_ERR( OS_IN_NDR64 )
  2396. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2397. , "The Os optimization mode is not supported in the ndr64 protocol"
  2398. }
  2399. ,{
  2400. 0, CHECK_ERR( UNEXPECTED_OS_IN_NDR64 )
  2401. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2402. , "internal compiler inconsistency detected: Os optimization in ndr64 mode"
  2403. }
  2404. ,{
  2405. 0, CHECK_ERR( NDR64_ONLY_TLB )
  2406. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2407. , "type library needs to be generated in DCE protocol run"
  2408. }
  2409. ,{
  2410. 0, CHECK_ERR( PARTIAL_IGNORE_IN_OUT )
  2411. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2412. , "[partial_ignore] can only be applied to [in, out] parameters"
  2413. }
  2414. ,{
  2415. 0, CHECK_ERR( PARTIAL_IGNORE_UNIQUE )
  2416. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2417. , "[partial_ignore] may only be used with [unique] pointers"
  2418. }
  2419. ,{
  2420. 0, CHECK_ERR( PARTIAL_IGNORE_PICKLING )
  2421. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2422. , "[partial_ignore] cannot be used with pickling"
  2423. }
  2424. ,{
  2425. 0, CHECK_ERR( PARTIAL_IGNORE_NO_OI )
  2426. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 )
  2427. , "[partial_ignore] used in /Oi mode, switching to /Oicf mode"
  2428. }
  2429. ,{
  2430. 0, CHECK_ERR( PARTIAL_IGNORE_IN_TLB )
  2431. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2432. , "[partial_ignore] cannot be used in a TLB"
  2433. }
  2434. ,{
  2435. 0, CHECK_ERR( CORRELATION_DERIVES_FROM_IGNORE_POINTER )
  2436. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2437. , "correlation expressions cannot use [ignore] pointers"
  2438. }
  2439. ,{
  2440. 0, CHECK_ERR( OUT_ONLY_FORCEALLOCATE )
  2441. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 )
  2442. , "[force_allocate] doesn't affect [out] only parameters"
  2443. }
  2444. ,{
  2445. 0, CHECK_ERR( FORCEALLOCATE_ON_PIPE )
  2446. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 )
  2447. , "[force_allocate] is not applicable to pipe argument"
  2448. }
  2449. ,{
  2450. 0, CHECK_ERR( FORCEALLOCATE_SUPPORTED_IN_OICF_ONLY )
  2451. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 )
  2452. , "use of [force_allocate] requires /Oicf, switching modes"
  2453. }
  2454. ,{
  2455. 0, CHECK_ERR( INVALID_FEATURE_FOR_TARGET )
  2456. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2457. , "The feature cannot be used on the target system"
  2458. }
  2459. ,{
  2460. 0, CHECK_ERR( SAFEARRAY_IF_OUTSIDE_LIBRARY )
  2461. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  2462. , "SAFEARRAY(interface pointer) doesn't work using midl generated proxy"
  2463. }
  2464. ,{
  2465. 0, CHECK_ERR( OLEAUT_NO_CROSSPLATFORM_TLB )
  2466. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2467. , "oleaut32.dll in build system doesn't support cross platform tlb generation"
  2468. }
  2469. ,{
  2470. 0, CHECK_ERR( INVALID_PROPPUT )
  2471. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2472. , "property put function must have at least one argument and must have exactly one argument after any [optional] or [lcid] arguments"
  2473. }
  2474. ,{
  2475. 0, CHECK_ERR( UNSIZED_PARTIAL_IGNORE )
  2476. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2477. , "parameters with [partial_ignore] must have a well defined size"
  2478. }
  2479. ,{
  2480. 0, CHECK_ERR( NOT_DUAL_INTERFACE )
  2481. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 4 )
  2482. ,"dual interface should be derived from IDispatch"
  2483. }
  2484. ,{
  2485. 0, CHECK_ERR( NEWLYFOUND_INAPPLICABLE_ATTRIBUTE)
  2486. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  2487. ,"inapplicable attribute"
  2488. }
  2489. ,{
  2490. 0, CHECK_ERR( WIRE_COMPAT_WARNING )
  2491. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  2492. ,"wire_compat should be used for known compatibility problems only and should not be used for new code"
  2493. }
  2494. ,{
  2495. 0, CHECK_ERR( INVALID_VOID_IN_DISPINTERFACE )
  2496. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN )
  2497. ,"invalid usage of void type in a dispinterface"
  2498. }
  2499. ,{
  2500. 0, CHECK_ERR( ACF_IN_OBJECT_INTERFACE )
  2501. MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 )
  2502. ,"acf attributes are not applicable in object interface"
  2503. }
  2504. }; /* end of array of structs initialization */