mm: adds is_extern to MMMethods and use extern_name in extern methods only
authorAlexis Laferrière <alexis.laf@xymus.net>
Tue, 9 Aug 2011 19:22:12 +0000 (15:22 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Thu, 9 Feb 2012 21:00:46 +0000 (16:00 -0500)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

src/compiling/compiling_icode.nit
src/metamodel/abstractmetamodel.nit
src/syntax/mmbuilder.nit
src/syntax/syntax_base.nit

index 1f71a74..b7aeb12 100644 (file)
@@ -682,7 +682,8 @@ redef class INative
 
        fun compile_extern_method_to_c(v: I2CCompilerVisitor)
        do
-               var ename = method.extern_name.as(not null)#"{method.module.name}_{method.local_class.name}_{method.local_class.name}_{method.name}_{method.signature.arity}"
+               var ename = method.extern_name.as(not null)
+
                var sig = method.signature
                assert exprs.length == sig.arity + 1
 
index 6baec20..6edfbd9 100644 (file)
@@ -669,7 +669,10 @@ class MMMethod
        # Is the method abstract
        fun is_abstract: Bool is abstract
 
-       # Is the method extern, if yes what is the extern_name
+       # Is the method extern
+       fun is_extern: Bool is abstract
+
+       # extern name when specified explicitly in nit code
        fun extern_name: nullable String is abstract
 
        # properties explicitly exported to native code
index 8cab94c..5459f98 100644 (file)
@@ -1165,7 +1165,7 @@ redef class AMainMethPropdef
        end
 end
 
-redef class AExternMethPropdef
+redef class AExternPropdef
        redef fun accept_property_verifier(v)
        do
                super # Compute signature
index 8d052ca..a8d2d20 100644 (file)
@@ -147,6 +147,7 @@ end
 class MMSrcMethod
        super MMMethod
        redef fun is_intern do return false
+       redef fun is_extern do return false
        redef fun is_abstract do return false
        redef fun extern_name do return null
 end
@@ -185,6 +186,7 @@ class MMMethSrcMethod
        super MMSrcMethod
        redef readable var _is_init: Bool
        redef readable var _is_intern: Bool
+       redef readable var _is_extern: Bool
        redef readable var _is_abstract: Bool
        redef readable writable var _extern_name: nullable String # Will be computed during MMBuilder
        redef readable var _explicit_imports : Set[MMExplicitImport] = new HashSet[MMExplicitImport]
@@ -195,6 +197,7 @@ class MMMethSrcMethod
                cla.mmmodule.nodes(self) = n
                _is_init = node isa AConcreteInitPropdef
                _is_intern = node isa AInternMethPropdef
+               _is_extern = node isa AExternPropdef
                _is_abstract = node isa ADeferredMethPropdef
                _extern_name = null
        end