diff --git a/lib/Sema/TypeCheckStorage.cpp b/lib/Sema/TypeCheckStorage.cpp index 6c3c552bcaca1..d8c3384a8262f 100644 --- a/lib/Sema/TypeCheckStorage.cpp +++ b/lib/Sema/TypeCheckStorage.cpp @@ -1827,9 +1827,13 @@ synthesizeTrivialSetterBodyWithStorage(AccessorDecl *setter, new (ctx) DeclRefExpr(valueParamDecl, DeclNameLoc(), /*IsImplicit=*/true); valueDRE->setType(valueParamDecl->getTypeInContext()); + /// Consume the newValue, as this is the only use in this setter. + auto *consumedValue = + ConsumeExpr::createImplicit(ctx, loc, valueDRE, valueDRE->getType()); + SmallVector setterBody; - createPropertyStoreOrCallSuperclassSetter(setter, valueDRE, storageToUse, + createPropertyStoreOrCallSuperclassSetter(setter, consumedValue, storageToUse, target, setterBody, ctx); return { BraceStmt::create(ctx, loc, setterBody, loc, true), /*isTypeChecked=*/true };