Skip to content

Commit 15e804c

Browse files
committed
contract: Modify callsite creation to give recv type
Signed-off-by: Delja <[email protected]>
1 parent 6025a25 commit 15e804c

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/contracts.nit

+7-7
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ private class CallSiteVisitor
242242
facet = contract_facet
243243
end
244244

245-
return ast_builder.create_callsite(toolcontext.modelbuilder, visited_propdef, facet, callsite.recv_is_self)
245+
return ast_builder.create_callsite(toolcontext.modelbuilder, visited_propdef, callsite.recv, facet, callsite.recv_is_self)
246246
end
247247
end
248248

@@ -505,7 +505,7 @@ redef class MExpect
505505

506506
redef fun adapt_method_to_contract(v: ContractsVisitor, mfacet: MFacet, n_mpropdef: AMethPropdef)
507507
do
508-
var callsite = v.ast_builder.create_callsite(v.toolcontext.modelbuilder, n_mpropdef, self, true)
508+
var callsite = v.ast_builder.create_callsite(v.toolcontext.modelbuilder, n_mpropdef, self.intro_mclassdef.bound_mtype, self, true)
509509
var args = n_mpropdef.n_signature.make_parameter_read(v.ast_builder)
510510
var n_callexpect = v.ast_builder.make_call(new ASelfExpr, callsite,args)
511511
# Creation of the new instruction block with the call to expect condition
@@ -620,7 +620,7 @@ redef class MEnsure
620620

621621
redef fun adapt_method_to_contract(v: ContractsVisitor, mfacet: MFacet, n_mpropdef: AMethPropdef)
622622
do
623-
var callsite = v.ast_builder.create_callsite(v.toolcontext.modelbuilder, n_mpropdef, self, true)
623+
var callsite = v.ast_builder.create_callsite(v.toolcontext.modelbuilder, n_mpropdef, self.intro_mclassdef.bound_mtype, self, true)
624624
var n_self = new ASelfExpr
625625
# argument to call the contract method
626626
var args = n_mpropdef.n_signature.make_parameter_read(v.ast_builder)
@@ -683,7 +683,7 @@ redef class MEnsure
683683

684684
# Create a new old_object to store the old expression value
685685
var old_class_initdef = old_mclass.intro.default_init
686-
var callsite_new_old_class = v.ast_builder.create_callsite(v.toolcontext.modelbuilder, n_mpropdef, old_class_initdef.mproperty, false)
686+
var callsite_new_old_class = v.ast_builder.create_callsite(v.toolcontext.modelbuilder, n_mpropdef, old_class_initdef.mproperty.intro_mclassdef.bound_mtype, old_class_initdef.mproperty, false)
687687
var n_new_old_class = v.ast_builder.make_new(callsite_new_old_class, null)
688688
n_new_old_class.n_type = old_mclass.mclass_type.create_ast_representation
689689

@@ -715,7 +715,7 @@ redef class MEnsure
715715
n_args_call_init_property.add(n_new_old_class)
716716
end
717717

718-
var callsite_old_class_init = v.ast_builder.create_callsite(v.toolcontext.modelbuilder, n_mpropdef, old_mclass.init_old_property.as(not null), true)
718+
var callsite_old_class_init = v.ast_builder.create_callsite(v.toolcontext.modelbuilder, n_mpropdef, old_mclass.init_old_property.intro_mclassdef.bound_mtype, old_mclass.init_old_property.as(not null), true)
719719
var ncall_init_old = v.ast_builder.make_call(new ASelfExpr, callsite_old_class_init, n_args_call_init_property)
720720

721721
new_block.add v.ast_builder.make_var_assign(self.old_param, ncall_init_old)
@@ -731,7 +731,7 @@ redef class MInvariant
731731

732732
redef fun adapt_method_to_contract(v: ContractsVisitor, mfacet: MFacet, n_mpropdef: AMethPropdef)
733733
do
734-
var callsite = v.ast_builder.create_callsite(v.toolcontext.modelbuilder, n_mpropdef, self, true)
734+
var callsite = v.ast_builder.create_callsite(v.toolcontext.modelbuilder, n_mpropdef, self.intro_mclassdef.bound_mtype, self, true)
735735
var n_self = new ASelfExpr
736736
# build the call to the contract method
737737
var n_call = v.ast_builder.make_call(n_self, callsite, null)
@@ -1094,7 +1094,7 @@ redef class MMethod
10941094
var args: Array[AExpr]
10951095
args = n_contractdef.n_signature.make_parameter_read(v.ast_builder)
10961096

1097-
var callsite = v.ast_builder.create_callsite(v.toolcontext.modelbuilder, n_contractdef, called, true)
1097+
var callsite = v.ast_builder.create_callsite(v.toolcontext.modelbuilder, n_contractdef, called.intro_mclassdef.bound_mtype, called, true)
10981098
var n_call = v.ast_builder.make_call(new ASelfExpr, callsite, args)
10991099

11001100
if self.intro.msignature.return_mtype == null then

0 commit comments

Comments
 (0)