X-Git-Url: http://nitlanguage.org diff --git a/src/rapid_type_analysis.nit b/src/rapid_type_analysis.nit index 2a89d11..fe49d70 100644 --- a/src/rapid_type_analysis.nit +++ b/src/rapid_type_analysis.nit @@ -173,10 +173,9 @@ class RapidTypeAnalysis fun add_monomorphic_send(mtype: MClassType, mmethod: MMethod) do assert self.live_types.has(mtype) - var defs = mmethod.lookup_definitions(self.mainmodule, mtype) - if defs.is_empty then return - assert defs.length == 1 else print "conflict on {mtype} for {mmethod}: {defs.join(" ")}" - self.add_static_call(mtype, defs.first) + if not mtype.has_mproperty(self.mainmodule, mmethod) then return + var def = mmethod.lookup_first_definition(self.mainmodule, mtype) + self.add_static_call(mtype, def) end # Add a customized_methoddefs to the pool @@ -398,7 +397,14 @@ private class RapidTypeVisitor do if node == null then return node.accept_rapid_type_vistor(self) - node.visit_all(self) + if node isa AExpr then + var implicit_cast_to = node.implicit_cast_to + if implicit_cast_to != null then self.add_cast_type(implicit_cast_to) + end + # RTA does not enter in AAnnotations + if not node isa AAnnotations then + node.visit_all(self) + end end # Force to get the primitive class named `name' or abort