Skip to content

Commit 7690329

Browse files
committed
[move-only] Rename some of the SILType move only wrapper methods to be explicitly about move only wrapper and not move only itself.
Specifically: * isMoveOnly() -> isMoveOnlyWrapped() * asMoveOnly() -> addingMoveOnlyWrapper() * withoutMoveOnly() -> removingMoveOnlyWrapper() * copyMoveOnly() -> copyingMoveOnlyWrapper() This is just pure renaming to resolve confusion from the reader.
1 parent 08d77cd commit 7690329

File tree

2 files changed

+26
-23
lines changed

2 files changed

+26
-23
lines changed

include/swift/SIL/SILType.h

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,9 @@ class SILType {
188188
/// type. This is done under the assumption that in all cases where we are
189189
/// performing these AST queries on SILType, we are not interested in the
190190
/// move only-ness of the value (which we can query separately anyways).
191-
CanType getASTType() const { return withoutMoveOnly().getRawASTType(); }
191+
CanType getASTType() const {
192+
return removingMoveOnlyWrapper().getRawASTType();
193+
}
192194

193195
private:
194196
/// Returns the canonical AST type references by this SIL type without looking
@@ -602,33 +604,34 @@ class SILType {
602604
///
603605
/// Canonical way to check if a SILType is move only. Using is/getAs/castTo
604606
/// will look through moveonly-ness.
605-
bool isMoveOnly() const { return getRawASTType()->is<SILMoveOnlyType>(); }
607+
bool isMoveOnlyWrapped() const {
608+
return getRawASTType()->is<SILMoveOnlyType>();
609+
}
606610

607-
/// Return *this if already move only... otherwise, wrap the current type
608-
/// within a move only type wrapper and return that. Idempotent!
609-
SILType asMoveOnly() const {
610-
if (isMoveOnly())
611+
/// If this is already a move only wrapped type, return *this. Otherwise, wrap
612+
/// the copyable type in the mov eonly wrapper.
613+
SILType addingMoveOnlyWrapper() const {
614+
if (isMoveOnlyWrapped())
611615
return *this;
612616
auto newType = SILMoveOnlyType::get(getRawASTType());
613617
return SILType::getPrimitiveType(newType, getCategory());
614618
}
615619

616-
/// Return this SILType, removing moveonly-ness.
617-
///
618-
/// Is idempotent.
619-
SILType withoutMoveOnly() const {
620-
if (!isMoveOnly())
620+
/// If this is already a copyable type, just return *this. Otherwise, if this
621+
/// is a move only wrapped copyable type, return the inner type.
622+
SILType removingMoveOnlyWrapper() const {
623+
if (!isMoveOnlyWrapped())
621624
return *this;
622625
auto moveOnly = getRawASTType()->castTo<SILMoveOnlyType>();
623626
return SILType::getPrimitiveType(moveOnly->getInnerType(), getCategory());
624627
}
625628

626-
/// If \p otherType is move only, return this type that is move only as
627-
/// well. Otherwise, returns self. Useful for propagating "move only"-ness
629+
/// If \p otherType is move only wrapped, return this type that is move only
630+
/// as well. Otherwise, returns self. Useful for propagating "move only"-ness
628631
/// from a parent type to a subtype.
629-
SILType copyMoveOnly(SILType otherType) const {
630-
if (otherType.isMoveOnly()) {
631-
return asMoveOnly();
632+
SILType copyingMoveOnlyWrapper(SILType otherType) const {
633+
if (otherType.isMoveOnlyWrapped()) {
634+
return addingMoveOnlyWrapper();
632635
}
633636
return *this;
634637
}

lib/SIL/IR/SILType.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ SILType SILType::getOptionalType(SILType type) {
9292
auto optType = BoundGenericEnumType::get(ctx.getOptionalDecl(), Type(),
9393
{ type.getASTType() });
9494
return getPrimitiveType(CanType(optType), type.getCategory())
95-
.copyMoveOnly(type);
95+
.copyingMoveOnlyWrapper(type);
9696
}
9797

9898
SILType SILType::getEmptyTupleType(const ASTContext &C) {
@@ -296,7 +296,7 @@ SILType SILType::getFieldType(VarDecl *field, TypeConverter &TC,
296296

297297
// If this type is not a class type, then we propagate "move only"-ness to the
298298
// field. Example:
299-
if (!getClassOrBoundGenericClass() && isMoveOnly())
299+
if (!getClassOrBoundGenericClass() && isMoveOnlyWrapped())
300300
loweredTy = SILMoveOnlyType::get(loweredTy);
301301

302302
if (isAddress() || getClassOrBoundGenericClass() != nullptr) {
@@ -318,7 +318,7 @@ SILType SILType::getEnumElementType(EnumElementDecl *elt, TypeConverter &TC,
318318

319319
if (auto objectType = getASTType().getOptionalObjectType()) {
320320
assert(elt == TC.Context.getOptionalSomeDecl());
321-
return SILType(objectType, getCategory()).copyMoveOnly(*this);
321+
return SILType(objectType, getCategory()).copyingMoveOnlyWrapper(*this);
322322
}
323323

324324
// If the case is indirect, then the payload is boxed.
@@ -333,7 +333,7 @@ SILType SILType::getEnumElementType(EnumElementDecl *elt, TypeConverter &TC,
333333
auto loweredTy = TC.getLoweredRValueType(
334334
context, TC.getAbstractionPattern(elt), substEltTy);
335335

336-
return SILType(loweredTy, getCategory()).copyMoveOnly(*this);
336+
return SILType(loweredTy, getCategory()).copyingMoveOnlyWrapper(*this);
337337
}
338338

339339
SILType SILType::getEnumElementType(EnumElementDecl *elt, SILModule &M,
@@ -438,15 +438,15 @@ bool SILType::aggregateHasUnreferenceableStorage() const {
438438

439439
SILType SILType::getOptionalObjectType() const {
440440
if (auto objectTy = getASTType().getOptionalObjectType()) {
441-
return SILType(objectTy, getCategory()).copyMoveOnly(*this);
441+
return SILType(objectTy, getCategory()).copyingMoveOnlyWrapper(*this);
442442
}
443443

444444
return SILType();
445445
}
446446

447447
SILType SILType::unwrapOptionalType() const {
448-
if (auto objectTy = withoutMoveOnly().getOptionalObjectType()) {
449-
return objectTy.copyMoveOnly(*this);
448+
if (auto objectTy = removingMoveOnlyWrapper().getOptionalObjectType()) {
449+
return objectTy.copyingMoveOnlyWrapper(*this);
450450
}
451451

452452
return *this;

0 commit comments

Comments
 (0)