AST: Remove ParameterTypeFlags::Escaping

Escapingness is a property of the type of a value, not a property of a function
parameter. Having it as a separate parameter flag just meant one more piece of
state that could get out of sync and cause weird problems.

Instead, always look at the noescape bit in a function type as the canonical
source of truth.

This does mean that '@escaping' is now printed in a few diagnostics where it was
not printed before; we can investigate these as separate issues, but it is
correct to print it there because the function types in question are, in fact,
escaping.

Fixes <https://bugs.swift.org/browse/SR-10256>, <rdar://problem/49522774>.
This commit is contained in:
Slava Pestov
2019-04-14 22:20:22 -04:00
parent 91dffc9d44
commit 39a22f3d6a
19 changed files with 72 additions and 85 deletions

View File

@@ -3953,7 +3953,7 @@ void Serializer::writeType(Type ty) {
FunctionParamLayout::emitRecord(
Out, ScratchRecord, abbrCode, addDeclBaseNameRef(param.getLabel()),
addTypeRef(param.getPlainType()), paramFlags.isVariadic(),
paramFlags.isAutoClosure(), paramFlags.isEscaping(), rawOwnership);
paramFlags.isAutoClosure(), rawOwnership);
}
break;