nitc: handle the new `implies` operator
[nit.git] / src / syntax / extern_inline.nit
index d2ee779..f0380d2 100644 (file)
@@ -31,6 +31,7 @@ end
 redef class MMModule
        # extern code blocks in module
        var extern_code_blocks : Set[ExternCode] = new HashSet[ExternCode]
+       redef var uses_ffi : Bool = false
 end
 
 redef class MMLocalClass
@@ -77,6 +78,7 @@ redef class AExternPropdef
                                        "Cannot implement the non extern method {method.full_name} with extern code" )
                        else
                                method.extern_implementation = n_extern_code_block.to_extern_code
+                               method.mmmodule.uses_ffi = true
                        end
                end
        end
@@ -95,6 +97,7 @@ redef class AStdClassdef
                                        "Cannot define an extern equivalent in the non extern class {local_class.name}" )
                        else
                                local_class.extern_type = extern_code_block.to_extern_code
+                               local_class.mmmodule.uses_ffi = true
                        end
                end
        end
@@ -108,6 +111,7 @@ redef class MMSrcModule
                super
 
                # extern code blocks
+               if not node.n_extern_code_blocks.is_empty then uses_ffi = true
                for n_extern_code_block in node.n_extern_code_blocks do
                        extern_code_blocks.add( n_extern_code_block.to_extern_code )
                end