nitlanguage
/
nit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
src: remove remaining references of subclasses on AMethPropdef
[nit.git]
/
src
/
rapid_type_analysis.nit
diff --git
a/src/rapid_type_analysis.nit
b/src/rapid_type_analysis.nit
index
a40ca22
..
3d7ec38
100644
(file)
--- a/
src/rapid_type_analysis.nit
+++ b/
src/rapid_type_analysis.nit
@@
-203,6
+203,7
@@
class RapidTypeAnalysis
while not todo.is_empty do
var mmethoddef = todo.shift
while not todo.is_empty do
var mmethoddef = todo.shift
+ var mmeth = mmethoddef.mproperty
#print "# visit {mmethoddef}"
var v = new RapidTypeVisitor(self, mmethoddef.mclassdef.bound_mtype, mmethoddef)
#print "# visit {mmethoddef}"
var v = new RapidTypeVisitor(self, mmethoddef.mclassdef.bound_mtype, mmethoddef)
@@
-220,7
+221,7
@@
class RapidTypeAnalysis
for i in [0..mmethoddef.msignature.arity[ do
for i in [0..mmethoddef.msignature.arity[ do
- var origtype = mmethoddef.mproperty.intro.msignature.mparameters[i].mtype
+ var origtype = mmeth.intro.msignature.mparameters[i].mtype
if not origtype.need_anchor then continue # skip non covariant stuff
var paramtype = mmethoddef.msignature.mparameters[i].mtype
#paramtype = v.cleanup_type(paramtype).as(not null)
if not origtype.need_anchor then continue # skip non covariant stuff
var paramtype = mmethoddef.msignature.mparameters[i].mtype
#paramtype = v.cleanup_type(paramtype).as(not null)
@@
-229,7
+230,7
@@
class RapidTypeAnalysis
if not modelbuilder.mpropdef2npropdef.has_key(mmethoddef) then
# It is an init for a class?
if not modelbuilder.mpropdef2npropdef.has_key(mmethoddef) then
# It is an init for a class?
- if mmethoddef.mproperty.name == "init" then
+ if mmeth.name == "init" then
var nclassdef = self.modelbuilder.mclassdef2nclassdef[mmethoddef.mclassdef]
var super_inits = nclassdef.super_inits
if super_inits != null then
var nclassdef = self.modelbuilder.mclassdef2nclassdef[mmethoddef.mclassdef]
var super_inits = nclassdef.super_inits
if super_inits != null then
@@
-247,27
+248,23
@@
class RapidTypeAnalysis
var npropdef = modelbuilder.mpropdef2npropdef[mmethoddef]
var npropdef = modelbuilder.mpropdef2npropdef[mmethoddef]
- if npropdef isa AConcreteMethPropdef then
+ if npropdef isa AMethPropdef then
var auto_super_inits = npropdef.auto_super_inits
if auto_super_inits != null then
for auto_super_init in auto_super_inits do
v.add_callsite(auto_super_init)
end
end
var auto_super_inits = npropdef.auto_super_inits
if auto_super_inits != null then
for auto_super_init in auto_super_inits do
v.add_callsite(auto_super_init)
end
end
- else if npropdef isa AInternMethPropdef or
- (npropdef isa AExternMethPropdef and npropdef.n_extern != null) then
+ end
+
+ if mmeth.is_new then
+ v.add_type(v.receiver)
+ else if mmethoddef.is_intern or mmethoddef.is_extern then
# UGLY: We force the "instantation" of the concrete return type if any
var ret = mmethoddef.msignature.return_mtype
if ret != null and ret isa MClassType and ret.mclass.kind != abstract_kind and ret.mclass.kind != interface_kind then
v.add_type(ret)
end
# UGLY: We force the "instantation" of the concrete return type if any
var ret = mmethoddef.msignature.return_mtype
if ret != null and ret isa MClassType and ret.mclass.kind != abstract_kind and ret.mclass.kind != interface_kind then
v.add_type(ret)
end
- else if npropdef isa AExternMethPropdef then
- var nclassdef = npropdef.parent.as(AClassdef)
- v.enter_visit(npropdef)
- else if npropdef isa AExternInitPropdef then
- v.add_type(v.receiver)
- else
-
end
v.enter_visit(npropdef)
end
v.enter_visit(npropdef)