Avatar
色々ありがとうございます!
  • オーナーシップ指定子がついてない時はconsuming扱いという仕様になっている
  • consumingはLValue
ということはわかりました。 そうすると、 if (auto sending = dyn_cast<SendingTypeRepr>(nestedRepr)) { auto *base = sending->getBase(); if (!param->getInterfaceType()->isNoEscape() && !isa<OwnershipTypeRepr>(base)) { return ParamSpecifier::ImplicitlyCopyableConsuming; } } で、なぜsendingにこういう処理にしてるのかを次に調べる必要があるかなと思いました。
12:35 AM
// `inout` and `consuming` parameters are locally mutable. なのですね。 https://github.com/swiftlang/swift/blob/4937d0a24291857470e23bb2dc685c823e9a4ecc/lib/AST/Decl.cpp#L8118