Skip to content

Commit 9dccd33

Browse files
committed
[NFC] CSApply: Delete the now dead 'buildPropertyWrapperFnThunk'
1 parent 89667f8 commit 9dccd33

File tree

1 file changed

+0
-103
lines changed

1 file changed

+0
-103
lines changed

lib/Sema/CSApply.cpp

Lines changed: 0 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -1188,109 +1188,6 @@ namespace {
11881188
thunkTy, locator);
11891189
}
11901190

1191-
AutoClosureExpr *buildPropertyWrapperFnThunk(
1192-
Expr *fnRef, FunctionType *fnType, AnyFunctionRef fnDecl, ConcreteDeclRef ref,
1193-
ArrayRef<AppliedPropertyWrapper> appliedPropertyWrappers) {
1194-
auto &context = cs.getASTContext();
1195-
auto paramInfo = fnType->getParams();
1196-
1197-
SmallVector<Argument, 4> args;
1198-
1199-
auto *innerParams = fnDecl.getParameters();
1200-
SmallVector<AnyFunctionType::Param, 4> innerParamTypes;
1201-
1202-
OptionSet<ParameterList::CloneFlags> options
1203-
= (ParameterList::Implicit |
1204-
ParameterList::NamedArguments);
1205-
auto *outerParams = innerParams->clone(context, options);
1206-
SmallVector<AnyFunctionType::Param, 4> outerParamTypes;
1207-
1208-
unsigned appliedWrapperIndex = 0;
1209-
for (auto i : indices(*innerParams)) {
1210-
auto *innerParam = innerParams->get(i);
1211-
auto *outerParam = outerParams->get(i);
1212-
auto outerParamType = paramInfo[i].getPlainType();
1213-
1214-
Expr *paramRef = new (context) DeclRefExpr(outerParam, DeclNameLoc(),
1215-
/*implicit=*/true);
1216-
paramRef->setType(outerParam->isInOut()
1217-
? LValueType::get(outerParamType) : outerParamType);
1218-
cs.cacheType(paramRef);
1219-
1220-
if (innerParam->hasAttachedPropertyWrapper()) {
1221-
// Rewrite the parameter ref to the backing wrapper initialization
1222-
// expression.
1223-
auto appliedWrapper = appliedPropertyWrappers[appliedWrapperIndex++];
1224-
auto wrapperType = appliedWrapper.wrapperType;
1225-
auto initKind = appliedWrapper.initKind;
1226-
1227-
using ValueKind = AppliedPropertyWrapperExpr::ValueKind;
1228-
ValueKind valueKind = (initKind == PropertyWrapperInitKind::ProjectedValue ?
1229-
ValueKind::ProjectedValue : ValueKind::WrappedValue);
1230-
1231-
paramRef = AppliedPropertyWrapperExpr::create(context, ref, innerParam, SourceLoc(),
1232-
wrapperType, paramRef, valueKind);
1233-
cs.cacheExprTypes(paramRef);
1234-
1235-
// SILGen knows how to emit property-wrapped parameters, but the
1236-
// function type needs the backing wrapper type in its param list.
1237-
innerParamTypes.push_back(AnyFunctionType::Param(
1238-
paramRef->getType(), innerParam->getArgumentName(),
1239-
ParameterTypeFlags(), innerParam->getParameterName()));
1240-
} else {
1241-
// Rewrite the parameter ref if necessary.
1242-
if (outerParam->isInOut()) {
1243-
paramRef = new (context) InOutExpr(SourceLoc(), paramRef,
1244-
outerParamType, /*implicit=*/true);
1245-
} else if (innerParam->isVariadic()) {
1246-
assert(outerParamType->isEqual(paramRef->getType()));
1247-
paramRef = VarargExpansionExpr::createParamExpansion(context, paramRef);
1248-
}
1249-
cs.cacheType(paramRef);
1250-
1251-
innerParamTypes.push_back(innerParam->toFunctionParam());
1252-
}
1253-
1254-
// The outer parameters are for an autoclosure, which shouldn't have
1255-
// argument labels.
1256-
outerParamTypes.push_back(AnyFunctionType::Param(outerParamType,
1257-
Identifier(),
1258-
paramInfo[i].getParameterFlags()));
1259-
outerParam->setInterfaceType(outerParamType->mapTypeOutOfContext());
1260-
1261-
Identifier label;
1262-
if (fnDecl.getAbstractFunctionDecl())
1263-
label = innerParam->getArgumentName();
1264-
1265-
args.emplace_back(SourceLoc(), label, paramRef);
1266-
}
1267-
1268-
// FIXME: Verify ExtInfo state is correct, not working by accident.
1269-
FunctionType::ExtInfo fnInfo;
1270-
fnRef->setType(
1271-
FunctionType::get(innerParamTypes, fnType->getResult(), fnInfo));
1272-
cs.cacheType(fnRef);
1273-
1274-
auto *argList = ArgumentList::createImplicit(context, args);
1275-
auto *fnCall = CallExpr::createImplicit(context, fnRef, argList);
1276-
fnCall->setType(fnType->getResult());
1277-
cs.cacheType(fnCall);
1278-
1279-
auto discriminator = AutoClosureExpr::InvalidDiscriminator;
1280-
1281-
// FIXME: Verify ExtInfo state is correct, not working by accident.
1282-
FunctionType::ExtInfo closureInfo;
1283-
auto *autoClosureType =
1284-
FunctionType::get(outerParamTypes, fnType->getResult(), closureInfo);
1285-
auto *autoClosure = new (context)
1286-
AutoClosureExpr(fnCall, autoClosureType, discriminator, dc);
1287-
autoClosure->setParameterList(outerParams);
1288-
autoClosure->setThunkKind(AutoClosureExpr::Kind::SingleCurryThunk);
1289-
cs.cacheType(autoClosure);
1290-
1291-
return autoClosure;
1292-
}
1293-
12941191
AutoClosureExpr *buildCurryThunk(ValueDecl *member,
12951192
FunctionType *selfFnTy,
12961193
Expr *selfParamRef,

0 commit comments

Comments
 (0)