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
# 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
end
end
-redef class AExternMethPropdef
+redef class AExternPropdef
redef fun accept_property_verifier(v)
do
super # Compute signature
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
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]
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