Honor the swift_error attribute during import.

Add a new convention to describe what happens with
nonzero_result on a type that isn't imported as Bool.
This isn't really a safe convention to implement, but
calls are fine.

Implements <rdar://21715350>.

Swift SVN r29953
This commit is contained in:
John McCall
2015-07-08 00:57:27 +00:00
parent 1edf9b3ae8
commit d190ee0767
13 changed files with 191 additions and 12 deletions

View File

@@ -4004,6 +4004,8 @@ decodeRawStableForeignErrorConventionKind(uint8_t kind) {
return ForeignErrorConvention::ZeroResult;
case static_cast<uint8_t>(ForeignErrorConventionKind::NonZeroResult):
return ForeignErrorConvention::NonZeroResult;
case static_cast<uint8_t>(ForeignErrorConventionKind::ZeroPreservedResult):
return ForeignErrorConvention::ZeroPreservedResult;
case static_cast<uint8_t>(ForeignErrorConventionKind::NilResult):
return ForeignErrorConvention::NilResult;
case static_cast<uint8_t>(ForeignErrorConventionKind::NonNilError):
@@ -4080,6 +4082,11 @@ Optional<ForeignErrorConvention> ModuleFile::maybeReadForeignErrorConvention() {
canErrorParameterType,
canResultType);
case ForeignErrorConvention::ZeroPreservedResult:
return ForeignErrorConvention::getZeroPreservedResult(errorParameterIndex,
owned, replaced,
canErrorParameterType);
case ForeignErrorConvention::NilResult:
return ForeignErrorConvention::getNilResult(errorParameterIndex,
owned, replaced,