| otherwise -- Normal foreign import
= checkCg (if isCasmTarget target
- then checkC else checkCOrAsm) `thenNF_Tc_`
+ then checkC else checkCOrAsmOrDotNet) `thenNF_Tc_`
checkCTarget target `thenNF_Tc_`
getDOptsTc `thenNF_Tc` \ dflags ->
checkForeignArgs (isFFIArgumentTy dflags safety) arg_tys `thenNF_Tc_`
-- This makes a convenient place to check
-- that the C identifier is valid for C
checkCTarget (StaticTarget str)
- = checkCg checkCOrAsm `thenNF_Tc_`
+ = checkCg checkCOrAsmOrDotNet `thenNF_Tc_`
check (isCLabelString str) (badCName str)
checkCTarget (CasmTarget _)
checkCOrAsm HscAsm = Nothing
checkCOrAsm other = Just (text "via-C or native code generation (-fvia-C)")
+checkCOrAsmOrDotNet HscC = Nothing
+checkCOrAsmOrDotNet HscAsm = Nothing
+checkCOrAsmOrDotNet HscILX = Nothing
+checkCOrAsmOrDotNet other = Just (text "requires C, native or .NET ILX code generation")
+
checkCg check
= getDOptsTc `thenNF_Tc` \ dflags ->
case check (dopt_HscLang dflags) of