Initial support for generic parameters that are introduced in a function parameter list (#1247)

In order for this to work, we need to always use the argument deduction code path for function calls, instead of only using it when there is a `[...]` list, which means that argument deduction now needs to support implicit conversion.

Co-authored-by: Jon Meow <jperkins@google.com>
This commit is contained in:
Richard Smith
2022-05-12 08:48:19 -07:00
committed by GitHub
co-authored by Jon Meow
parent b27aa21a88
commit c29f56e667
14 changed files with 320 additions and 177 deletions
+2 -2
View File
@@ -921,8 +921,8 @@ auto Interpreter::StepExp() -> ErrorOr<Success> {
// { { rt :: fn pt -> [] :: C, E, F} :: S, H}
// -> { fn pt -> rt :: {C, E, F} :: S, H}
return todo_.FinishAction(arena_->New<FunctionType>(
std::vector<Nonnull<const GenericBinding*>>(), act.results()[0],
act.results()[1], std::vector<Nonnull<const ImplBinding*>>()));
llvm::None, act.results()[0], act.results()[1], llvm::None,
llvm::None));
}
}
case ExpressionKind::ContinuationTypeLiteral: {