Browse Source

fixed completion from within macros arguments

Nicolas Cannasse 13 years ago
parent
commit
6ce54a3947
1 changed files with 5 additions and 5 deletions
  1. 5 5
      typer.ml

+ 5 - 5
typer.ml

@@ -133,14 +133,14 @@ let rec unify_call_params ctx name el args r p inline =
 			in
 			loop meta
 	in
-	let error txt =
+	let error acc txt =
 		match next() with
 		| Some l -> l
 		| None ->
 		let format_arg = (fun (name,opt,_) -> (if opt then "?" else "") ^ name) in
 		let argstr = "Function " ^ (match name with None -> "" | Some (n,_) -> "'" ^ n ^ "' ") ^ "requires " ^ (if args = [] then "no arguments" else "arguments : " ^ String.concat ", " (List.map format_arg args)) in
 		display_error ctx (txt ^ " arguments\n" ^ argstr) p;
-		[], r
+		List.rev (List.map fst acc), r
 	in
 	let arg_error ul name opt p =
 		match next() with
@@ -182,14 +182,14 @@ let rec unify_call_params ctx name el args r p inline =
 			else
 				List.rev (List.map fst acc), r
 		| [] , (_,false,_) :: _ ->
-			error "Not enough"
+			error (List.fold_left (fun acc (_,_,t) -> default_value t :: acc) acc l2) "Not enough"
 		| [] , (name,true,t) :: l ->
 			loop (default_value t :: acc) [] l skip
 		| _ , [] ->
 			(match List.rev skip with
-			| [] -> error "Too many"
+			| [] -> error acc "Too many"
 			| [name,ul] -> arg_error ul name true p
-			| _ -> error "Invalid")
+			| _ -> error acc "Invalid")
 		| ee :: l, (name,opt,t) :: l2 ->
 			let e = (!type_expr_with_type_rec) ctx ee (Some t) in
 			try