Skip to content

Commit 14be78d

Browse files
committed
Remove -(enable|disable)-function-builder-one-way-constraints
Remove the staging flags for unidirectional constraints in function builders. We're not going back!
1 parent a29a5f1 commit 14be78d

File tree

7 files changed

+7
-84
lines changed

7 files changed

+7
-84
lines changed

include/swift/Basic/LangOptions.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -202,9 +202,6 @@ namespace swift {
202202
/// before termination of the shrink phrase of the constraint solver.
203203
unsigned SolverShrinkUnsolvedThreshold = 10;
204204

205-
/// Enable one-way constraints in function builders.
206-
bool FunctionBuilderOneWayConstraints = true;
207-
208205
/// Disable the shrink phase of the expression type checker.
209206
bool SolverDisableShrink = false;
210207

include/swift/Option/FrontendOptions.td

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -414,14 +414,6 @@ def Rmodule_interface_rebuild : Flag<["-"], "Rmodule-interface-rebuild">,
414414

415415
def solver_expression_time_threshold_EQ : Joined<["-"], "solver-expression-time-threshold=">;
416416

417-
def enable_function_builder_one_way_constraints : Flag<["-"],
418-
"enable-function-builder-one-way-constraints">,
419-
HelpText<"Enable one-way constraints in the function builder transformation">;
420-
421-
def disable_function_builder_one_way_constraints : Flag<["-"],
422-
"disable-function-builder-one-way-constraints">,
423-
HelpText<"Disable one-way constraints in the function builder transformation">;
424-
425417
def solver_disable_shrink :
426418
Flag<["-"], "solver-disable-shrink">,
427419
HelpText<"Disable the shrink phase of expression type checking">;

lib/Frontend/CompilerInvocation.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -443,10 +443,6 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
443443

444444
if (Args.getLastArg(OPT_solver_disable_shrink))
445445
Opts.SolverDisableShrink = true;
446-
Opts.FunctionBuilderOneWayConstraints =
447-
Args.hasFlag(OPT_enable_function_builder_one_way_constraints,
448-
OPT_disable_function_builder_one_way_constraints,
449-
/*Default=*/true);
450446

451447
if (const Arg *A = Args.getLastArg(OPT_value_recursion_threshold)) {
452448
unsigned threshold;

lib/Sema/BuilderTransform.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ class BuilderClosureVisitor
8787
/*trailing closure*/ nullptr,
8888
/*implicit*/true);
8989

90-
if (ctx.LangOpts.FunctionBuilderOneWayConstraints && allowOneWay) {
90+
if (allowOneWay) {
9191
// Form a one-way constraint to prevent backward propagation.
9292
result = new (ctx) OneWayExpr(result);
9393
}
@@ -169,7 +169,7 @@ class BuilderClosureVisitor
169169
}
170170

171171
auto expr = node.get<Expr *>();
172-
if (wantExpr && ctx.LangOpts.FunctionBuilderOneWayConstraints)
172+
if (wantExpr)
173173
expr = new (ctx) OneWayExpr(expr);
174174

175175
expressions.push_back(expr);
@@ -293,7 +293,7 @@ class BuilderClosureVisitor
293293
ctx.Id_buildIf, chainExpr,
294294
/*argLabels=*/{ },
295295
/*allowOneWay=*/true);
296-
} else if (ctx.LangOpts.FunctionBuilderOneWayConstraints) {
296+
} else {
297297
// Form a one-way constraint to prevent backward propagation.
298298
chainExpr = new (ctx) OneWayExpr(chainExpr);
299299
}

test/Constraints/function_builder_one_way.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
// RUN: %target-typecheck-verify-swift -enable-function-builder-one-way-constraints
2-
// RUN: %target-typecheck-verify-swift -debug-constraints -enable-function-builder-one-way-constraints > %t.log 2>&1
1+
// RUN: %target-typecheck-verify-swift
2+
// RUN: %target-typecheck-verify-swift -debug-constraints > %t.log 2>&1
33
// RUN: %FileCheck %s < %t.log
44

55
enum Either<T,U> {

test/IDE/complete_function_builder.swift

Lines changed: 2 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,6 @@
11
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IN_CLOSURE_TOP | %FileCheck %s -check-prefix=IN_CLOSURE_TOP
22
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IN_CLOSURE_NONTOP | %FileCheck %s -check-prefix=IN_CLOSURE_TOP
3-
// RUN: %target-swift-ide-test -code-completion -source-filename %s -disable-function-builder-one-way-constraints -code-completion-token=IN_CLOSURE_COLOR_CONTEXT | %FileCheck %s -check-prefix=IN_CLOSURE_COLOR_CONTEXT
4-
// RUN: %target-swift-ide-test -code-completion -source-filename %s -disable-function-builder-one-way-constraints -code-completion-token=IN_CLOSURE_COLOR_CONTEXT_DOT | %FileCheck %s -check-prefix=IN_CLOSURE_COLOR_CONTEXT_DOT
5-
6-
// RUN: %target-swift-ide-test -code-completion -source-filename %s -disable-function-builder-one-way-constraints -code-completion-token=CONTEXTUAL_TYPE_1 | %FileCheck %s -check-prefix=CONTEXTUAL_TYPE_VALID
7-
// RUN: %target-swift-ide-test -code-completion -source-filename %s -disable-function-builder-one-way-constraints -code-completion-token=CONTEXTUAL_TYPE_2 | %FileCheck %s -check-prefix=CONTEXTUAL_TYPE_VALID
8-
// RUN: %target-swift-ide-test -code-completion -source-filename %s -disable-function-builder-one-way-constraints -code-completion-token=CONTEXTUAL_TYPE_3 | %FileCheck %s -check-prefix=CONTEXTUAL_TYPE_VALID
9-
// RUN: %target-swift-ide-test -code-completion -source-filename %s -disable-function-builder-one-way-constraints -code-completion-token=CONTEXTUAL_TYPE_4 | %FileCheck %s -check-prefix=CONTEXTUAL_TYPE_VALID
10-
// RUN: %target-swift-ide-test -code-completion -source-filename %s -disable-function-builder-one-way-constraints -code-completion-token=CONTEXTUAL_TYPE_5 | %FileCheck %s -check-prefix=CONTEXTUAL_TYPE_INVALID
3+
// RUN: %target-swift-ide-test -code-completion -source-filename %s -code-completion-token=IN_CLOSURE_COLOR_CONTEXT | %FileCheck %s -check-prefix=IN_CLOSURE_COLOR_CONTEXT
114

125
struct Tagged<Tag, Entity> {
136
let tag: Tag
@@ -80,23 +73,12 @@ func testAcceptColorTagged(paramIntVal: Int, paramStringVal: String) {
8073
acceptColorTagged { color in
8174
paramIntVal.tag(#^IN_CLOSURE_COLOR_CONTEXT^#)
8275
// IN_CLOSURE_COLOR_CONTEXT: Begin completions
83-
// IN_CLOSURE_COLOR_CONTEXT-DAG: Decl[InstanceMethod]/CurrNominal: ['(']{#(tag): Color#}[')'][#Tagged<Color, Int>#]; name=tag: Color
84-
// IN_CLOSURE_COLOR_CONTEXT-DAG: Decl[LocalVar]/Local/TypeRelation[Identical]: color[#Color#]; name=color
76+
// IN_CLOSURE_COLOR_CONTEXT-DAG: Decl[LocalVar]/Local: color; name=color
8577
// IN_CLOSURE_COLOR_CONTEXT-DAG: Decl[LocalVar]/Local: taggedValue[#Tagged<Color, Int>#]; name=taggedValue
8678
// IN_CLOSURE_COLOR_CONTEXT-DAG: Decl[LocalVar]/Local: paramIntVal[#Int#]; name=paramIntVal
8779
// IN_CLOSURE_COLOR_CONTEXT-DAG: Decl[LocalVar]/Local: paramStringVal[#String#]; name=paramStringVal
88-
// IN_CLOSURE_COLOR_CONTEXT-DAG: Decl[Enum]/CurrModule/TypeRelation[Identical]: Color[#Color#]; name=Color
8980
// IN_CLOSURE_COLOR_CONTEXT: End completions
9081
}
91-
92-
acceptColorTagged { color in
93-
paramIntVal.tag(.#^IN_CLOSURE_COLOR_CONTEXT_DOT^#)
94-
// IN_CLOSURE_COLOR_CONTEXT_DOT: Begin completions, 3 items
95-
// IN_CLOSURE_COLOR_CONTEXT_DOT-DAG: Decl[EnumElement]/ExprSpecific: red[#Color#]; name=red
96-
// IN_CLOSURE_COLOR_CONTEXT_DOT-DAG: Decl[EnumElement]/ExprSpecific: green[#Color#]; name=green
97-
// IN_CLOSURE_COLOR_CONTEXT_DOT-DAG: Decl[EnumElement]/ExprSpecific: blue[#Color#]; name=blue
98-
// IN_CLOSURE_COLOR_CONTEXT_DOT: End completions
99-
}
10082
}
10183

10284
enum MyEnum {
@@ -111,38 +93,3 @@ struct EnumToVoidBuilder {
11193
static func buildBlock(_ :MyEnum, _: MyEnum, _: MyEnum) {}
11294
}
11395
func acceptBuilder(@EnumToVoidBuilder body: () -> Void) {}
114-
115-
// CONTEXTUAL_TYPE_INVALID-NOT: Begin completions
116-
117-
// CONTEXTUAL_TYPE_VALID: Begin completions, 4 items
118-
// CONTEXTUAL_TYPE_VALID-DAG: Decl[EnumElement]/ExprSpecific: east[#MyEnum#]; name=east
119-
// CONTEXTUAL_TYPE_VALID-DAG: Decl[EnumElement]/ExprSpecific: west[#MyEnum#]; name=west
120-
// CONTEXTUAL_TYPE_VALID-DAG: Decl[EnumElement]/ExprSpecific: north[#MyEnum#]; name=north
121-
// CONTEXTUAL_TYPE_VALID-DAG: Decl[EnumElement]/ExprSpecific: south[#MyEnum#]; name=south
122-
// CONTEXTUAL_TYPE_VALID: End completions
123-
124-
func testContextualType() {
125-
acceptBuilder {
126-
.#^CONTEXTUAL_TYPE_1^#
127-
}
128-
acceptBuilder {
129-
.#^CONTEXTUAL_TYPE_2^#;
130-
.north;
131-
}
132-
acceptBuilder {
133-
.north;
134-
.#^CONTEXTUAL_TYPE_3^#;
135-
}
136-
acceptBuilder {
137-
.north;
138-
.east;
139-
.#^CONTEXTUAL_TYPE_4^#
140-
}
141-
acceptBuilder {
142-
.north;
143-
.east;
144-
.south;
145-
// NOTE: Invalid because 'EnumToVoidBuilder' doesn't have 4 params overload.
146-
.#^CONTEXTUAL_TYPE_5^#
147-
}
148-
}

tools/swift-ide-test/swift-ide-test.cpp

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -310,13 +310,6 @@ static llvm::cl::opt<bool>
310310
EnableSourceImport("enable-source-import", llvm::cl::Hidden,
311311
llvm::cl::cat(Category), llvm::cl::init(false));
312312

313-
static llvm::cl::opt<bool>
314-
DisableFunctionBuilderOneWayConstraints(
315-
"disable-function-builder-one-way-constraints",
316-
llvm::cl::desc("Disable one-way constraints in function builders"),
317-
llvm::cl::cat(Category),
318-
llvm::cl::init(false));
319-
320313
static llvm::cl::opt<bool>
321314
SkipDeinit("skip-deinit",
322315
llvm::cl::desc("Whether to skip printing destructors"),
@@ -3345,8 +3338,6 @@ int main(int argc, char *argv[]) {
33453338
options::ImportObjCHeader;
33463339
InitInvok.getLangOptions().EnableAccessControl =
33473340
!options::DisableAccessControl;
3348-
InitInvok.getLangOptions().FunctionBuilderOneWayConstraints =
3349-
!options::DisableFunctionBuilderOneWayConstraints;
33503341
InitInvok.getLangOptions().CodeCompleteInitsInPostfixExpr |=
33513342
options::CodeCompleteInitsInPostfixExpr;
33523343
InitInvok.getLangOptions().CodeCompleteCallPatternHeuristics |=

0 commit comments

Comments
 (0)