Split ReferenceStorageType into {Weak,Unowned}StorageType.

Swift SVN r7478
This commit is contained in:
John McCall
2013-08-22 21:36:36 +00:00
parent e1855fd3a5
commit 1ea82afa8e
18 changed files with 205 additions and 117 deletions

View File

@@ -499,17 +499,15 @@ void Mangler::mangleType(CanType type, ExplosionKind explosion,
return mangleType(cast<LValueType>(type).getObjectType(),
ExplosionKind::Minimal, 0);
case TypeKind::ReferenceStorage: {
auto ref = cast<ReferenceStorageType>(type);
Buffer << 'X';
switch (ref->getOwnership()) {
case Ownership::Strong: llvm_unreachable("strong reference storage");
case Ownership::Unowned: Buffer << 'o'; break;
case Ownership::Weak: Buffer << 'w'; break;
}
return mangleType(ref.getReferentType(),
case TypeKind::UnownedStorage:
Buffer << "Xo";
return mangleType(cast<UnownedStorageType>(type).getReferentType(),
ExplosionKind::Minimal, 0);
case TypeKind::WeakStorage:
Buffer << "Xw";
return mangleType(cast<WeakStorageType>(type).getReferentType(),
ExplosionKind::Minimal, 0);
}
case TypeKind::Tuple: {
auto tuple = cast<TupleType>(type);