@@ -353,32 +353,69 @@ where
353353 panic ! ( "exactly one `--out` is required" ) ;
354354 } ;
355355
356- if !sys && !no_deps {
357- references. insert (
358- 0 ,
359- ReferenceStage :: parse ( "windows_collections,flat,Windows.Foundation.Collections" ) ,
360- ) ;
361- references. insert (
362- 0 ,
363- ReferenceStage :: parse ( "windows_numerics,flat,Windows.Foundation.Numerics" ) ,
364- ) ;
365- references. insert (
366- 0 ,
367- ReferenceStage :: parse ( "windows_future,flat,Windows.Foundation.Async*" ) ,
368- ) ;
369- references. insert (
370- 0 ,
371- ReferenceStage :: parse ( "windows_future,flat,Windows.Foundation.IAsync*" ) ,
372- ) ;
373- }
374-
375356 // This isn't strictly necessary but avoids a common newbie pitfall where all metadata
376357 // would be generated when building a component for a specific API.
377358 if include. is_empty ( ) {
378359 panic ! ( "at least one `--filter` required" ) ;
379360 }
380361
381362 let reader = Reader :: new ( expand_input ( & input) ) ;
363+
364+ if !sys && !no_deps {
365+ if reader. contains_key ( "Windows.Foundation" ) {
366+ references. insert (
367+ 0 ,
368+ ReferenceStage :: parse ( "windows_collections,flat,Windows.Foundation.Collections" ) ,
369+ ) ;
370+ references. insert (
371+ 0 ,
372+ ReferenceStage :: parse ( "windows_numerics,flat,Windows.Foundation.Numerics" ) ,
373+ ) ;
374+ references. insert (
375+ 0 ,
376+ ReferenceStage :: parse ( "windows_future,flat,Windows.Foundation.Async*" ) ,
377+ ) ;
378+ references. insert (
379+ 0 ,
380+ ReferenceStage :: parse ( "windows_future,flat,Windows.Foundation.IAsync*" ) ,
381+ ) ;
382+ }
383+
384+ if reader. contains_key ( "Windows.Win32.Foundation" ) {
385+ if specific_deps {
386+ references. insert (
387+ 0 ,
388+ ReferenceStage :: parse (
389+ "windows_result,flat,Windows.Win32.Foundation.WIN32_ERROR" ,
390+ ) ,
391+ ) ;
392+ references. insert (
393+ 0 ,
394+ ReferenceStage :: parse ( "windows_result,flat,Windows.Win32.Foundation.NTSTATUS" ) ,
395+ ) ;
396+ references. insert (
397+ 0 ,
398+ ReferenceStage :: parse (
399+ "windows_result,flat,Windows.Win32.System.Rpc.RPC_STATUS" ,
400+ ) ,
401+ ) ;
402+ } else {
403+ references. insert (
404+ 0 ,
405+ ReferenceStage :: parse ( "windows_core,flat,Windows.Win32.Foundation.WIN32_ERROR" ) ,
406+ ) ;
407+ references. insert (
408+ 0 ,
409+ ReferenceStage :: parse ( "windows_core,flat,Windows.Win32.Foundation.NTSTATUS" ) ,
410+ ) ;
411+ references. insert (
412+ 0 ,
413+ ReferenceStage :: parse ( "windows_core,flat,Windows.Win32.System.Rpc.RPC_STATUS" ) ,
414+ ) ;
415+ }
416+ }
417+ }
418+
382419 let filter = Filter :: new ( & reader, & include, & exclude) ;
383420 let references = References :: new ( & reader, references) ;
384421 let types = TypeMap :: filter ( & reader, & filter, & references) ;
0 commit comments