@@ -1109,31 +1109,6 @@ class BuilderClosureRewriter
1109
1109
elements.push_back (pbd);
1110
1110
}
1111
1111
1112
- // / Produce a final type-checked pattern binding.
1113
- void finishPatternBindingDecl (PatternBindingDecl *patternBinding) {
1114
- for (unsigned index : range (patternBinding->getNumPatternEntries ())) {
1115
- // Find the solution application target for this.
1116
- auto knownTarget =
1117
- *solution.getConstraintSystem ().getSolutionApplicationTarget (
1118
- {patternBinding, index});
1119
-
1120
- // Rewrite the target.
1121
- auto resultTarget = rewriteTarget (knownTarget);
1122
- if (!resultTarget)
1123
- continue ;
1124
-
1125
- // FIXME: It's unfortunate that we're duplicating code from CSApply here.
1126
- // If there were a request for the fully-typechecked initializer of a
1127
- // pattern binding we may be able to eliminate the duplication here.
1128
- patternBinding->setPattern (
1129
- index, resultTarget->getInitializationPattern (),
1130
- resultTarget->getDeclContext (),
1131
- /* isFullyValidated=*/ true );
1132
- patternBinding->setInit (index, resultTarget->getAsExpr ());
1133
- patternBinding->setInitializerChecked (index);
1134
- }
1135
- }
1136
-
1137
1112
public:
1138
1113
BuilderClosureRewriter (
1139
1114
const Solution &solution,
@@ -1238,9 +1213,11 @@ class BuilderClosureRewriter
1238
1213
1239
1214
// Handle pattern bindings.
1240
1215
if (auto patternBinding = dyn_cast<PatternBindingDecl>(decl)) {
1241
- finishPatternBindingDecl (patternBinding);
1242
- TypeChecker::typeCheckDecl (decl);
1243
- newElements.push_back (decl);
1216
+ auto resultTarget = rewriteTarget (SolutionApplicationTarget{patternBinding});
1217
+ assert (resultTarget.hasValue ()
1218
+ && " Could not rewrite pattern binding entries!" );
1219
+ TypeChecker::typeCheckDecl (resultTarget->getAsPatternBinding ());
1220
+ newElements.push_back (resultTarget->getAsPatternBinding ());
1244
1221
continue ;
1245
1222
}
1246
1223
0 commit comments