Skip to content

Multi-statement closure type inference #32223

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
3631ddb
Add experimental support for multi-statement closure inference.
DougGregor Jun 6, 2020
692b8aa
[Multi-statement closures] Add support for pattern bindings (let/var …
DougGregor Jun 6, 2020
99c29f6
[Multi-statement closures] Add support for "do" statements.
DougGregor Jun 7, 2020
2d74c55
[Multi-statement closures] Add support for "if" statements.
DougGregor Jun 7, 2020
3f14a42
[Multi-statement closures] Add support for "guard" statements.
DougGregor Jun 7, 2020
1ea05d2
[Multi-statement closures] Add support for "while" loops.
DougGregor Jun 7, 2020
39c2232
[Constraint system] Extend SolutionApplicationTargetKey for expressions.
DougGregor Jun 7, 2020
720133b
[Multi-statement closures] Consistently record expression targets.
DougGregor Jun 7, 2020
6d57439
[Multi-statement closures] Add support for repeat-while loops.
DougGregor Jun 7, 2020
0198a70
[Multi-expression closures] Add support for for..in loops.
DougGregor Jun 7, 2020
1ee7672
[Multi-expression closures] Add support for break & continue statements.
DougGregor Aug 6, 2020
0d5987d
[Multi-expression closures] Add support for 'defer' statement.
DougGregor Aug 6, 2020
0dae0bb
[Multi-expression closures] Add support for 'throw' statement.
DougGregor Aug 6, 2020
5c16778
[Multi-expression closures] Add support for experimental #assert stat…
DougGregor Aug 6, 2020
7a655e3
[Multi-expression closures] Add support for 'switch' and 'fallthrough…
DougGregor Aug 6, 2020
594b635
[Multi-expression closures] Add support for do-catch statements.
DougGregor Aug 15, 2020
9e22826
[Multi-expression closures] Add support for remaining declarations
DougGregor Aug 15, 2020
418cdae
[Multi-statement closures] Add support for `return` without an expres…
DougGregor Aug 16, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions include/swift/Basic/LangOptions.h
Original file line number Diff line number Diff line change
Expand Up @@ -576,6 +576,10 @@ namespace swift {
/// Enable experimental support for one-way constraints for the
/// parameters of closures.
bool EnableOneWayClosureParameters = false;

/// Enable experimental support for type inference through multi-statement
/// closures.
bool EnableMultiStatementClosureInference = false;
};
} // end namespace swift

Expand Down
4 changes: 4 additions & 0 deletions include/swift/Option/FrontendOptions.td
Original file line number Diff line number Diff line change
Expand Up @@ -659,6 +659,10 @@ def experimental_one_way_closure_params :
Flag<["-"], "experimental-one-way-closure-params">,
HelpText<"Enable experimental support for one-way closure parameters">;

def experimental_multi_statement_closures :
Flag<["-"], "experimental-multi-statement-closures">,
HelpText<"Enable experimental support for type inference in multi-statement closures">;

def prebuilt_module_cache_path :
Separate<["-"], "prebuilt-module-cache-path">,
HelpText<"Directory of prebuilt modules for loading module interfaces">;
Expand Down
2 changes: 2 additions & 0 deletions lib/Frontend/CompilerInvocation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -775,6 +775,8 @@ static bool ParseTypeCheckerArgs(TypeCheckerOptions &Opts, ArgList &Args,
Args.hasArg(OPT_solver_enable_operator_designated_types);
Opts.EnableOneWayClosureParameters |=
Args.hasArg(OPT_experimental_one_way_closure_params);
Opts.EnableMultiStatementClosureInference |=
Args.hasArg(OPT_experimental_multi_statement_closures);

Opts.DebugConstraintSolver |= Args.hasArg(OPT_debug_constraints);
Opts.DebugGenericSignatures |= Args.hasArg(OPT_debug_generic_signatures);
Expand Down
Loading