src: remove remaining references of subclasses on AMethPropdef
[nit.git] / src / compiler_ffi.nit
index 6334be5..24eb876 100644 (file)
@@ -31,25 +31,15 @@ redef class MModule
                return m2n.get_or_null(self)
        end
 
-       redef fun finalize_ffi(v: AbstractCompilerVisitor, modelbuilder: ModelBuilder)
+       redef fun finalize_ffi(compiler: AbstractCompiler)
        do
+               if not uses_ffi then return
+
+               var v = compiler.new_visitor
                var n = nmodule(v)
                if n == null then return
                n.finalize_ffi_wrapper(v.compiler.modelbuilder.compile_dir, v.compiler.mainmodule)
                for file in n.ffi_files do v.compiler.extern_bodies.add(file)
-       end
-
-       fun ensure_compile_nitni_base(v: AbstractCompilerVisitor)
-       do
-               if nitni_ccu != null then return
-
-               nitni_ccu = new CCompilationUnit
-       end
-
-       redef fun finalize_nitni(v: AbstractCompilerVisitor)
-       do
-               var n = nmodule(v)
-               if n == null then return
 
                ensure_compile_nitni_base(v)
 
@@ -62,6 +52,13 @@ redef class MModule
                end
        end
 
+       fun ensure_compile_nitni_base(v: AbstractCompilerVisitor)
+       do
+               if nitni_ccu != null then return
+
+               nitni_ccu = new CCompilationUnit
+       end
+
        redef fun collect_linker_libs
        do
                var s = c_linker_options
@@ -82,7 +79,7 @@ redef class MModule
        end
 end
 
-redef class AExternPropdef
+redef class AMethPropdef
        fun compile_ffi_support_to_c(v: AbstractCompilerVisitor)
        do
                var mmodule = mpropdef.mclassdef.mmodule
@@ -98,6 +95,8 @@ redef class AExternPropdef
                # FFI part
                compile_ffi_method(amodule)
 
+               assert self isa AExternPropdef
+
                # nitni - Compile missing callbacks
                mmodule.ensure_compile_nitni_base(v)
                var ccu = mmodule.nitni_ccu.as(not null)
@@ -127,10 +126,8 @@ redef class AExternPropdef
                # manage nitni callback set
                mmodule.foreign_callbacks.join(foreign_callbacks)
        end
-end
 
-redef class AExternMethPropdef
-       redef fun compile_to_c(v, mpropdef, arguments)
+       redef fun compile_externmeth_to_c(v, mpropdef, arguments)
        do
                var mmodule = mpropdef.mclassdef.mmodule
                var amodule = v.compiler.modelbuilder.mmodule2nmodule[mmodule]
@@ -193,10 +190,8 @@ redef class AExternMethPropdef
 
                compile_ffi_support_to_c(v)
        end
-end
 
-redef class AExternInitPropdef
-       redef fun compile_to_c(v, mpropdef, arguments)
+       redef fun compile_externinit_to_c(v, mpropdef, arguments)
        do
                var mmodule = mpropdef.mclassdef.mmodule
                var amodule = v.compiler.modelbuilder.mmodule2nmodule[mmodule]
@@ -209,7 +204,6 @@ redef class AExternInitPropdef
                end
 
                amodule.mmodule.uses_ffi = true
-
                var mclass_type = mpropdef.mclassdef.bound_mtype
 
                var externname = mpropdef.mproperty.build_cname(mpropdef.mclassdef.bound_mtype, mmodule, "___impl", long_signature)