TraversingVisitor::visit(call);
if(call.declaration)
+ {
+ for(unsigned i=0; i<call.arguments.size(); ++i)
+ {
+ TypeDeclaration *arg_type = call.arguments[i]->type;
+ TypeDeclaration *param_type = call.declaration->parameters[i]->type_declaration;
+ BasicTypeDeclaration *arg_basic = dynamic_cast<BasicTypeDeclaration *>(arg_type);
+ BasicTypeDeclaration *param_basic = dynamic_cast<BasicTypeDeclaration *>(param_type);
+ if(arg_basic && param_basic)
+ {
+ Compatibility compat = get_compatibility(*param_basic, *arg_basic);
+ if(compat==RIGHT_CONVERTIBLE)
+ convert_to(call.arguments[i], *param_basic);
+ }
+ else if(!arg_type || !param_type || arg_type!=param_type)
+ return;
+ }
resolve(call, call.declaration->return_type_declaration, false);
+ }
else if(call.constructor)
visit_constructor(call);
}