Track the minimum deployment target and use it for 'unavailable' computations.

Swift SVN r20955
This commit is contained in:
Doug Gregor
2014-08-02 18:05:45 +00:00
parent 2688dd426f
commit f52c6789db
17 changed files with 153 additions and 46 deletions

View File

@@ -489,10 +489,27 @@ static void diagAvailability(TypeChecker &TC, const ValueDecl *D,
.highlight(SourceRange(Loc, Loc));
}
auto DLoc = D->getLoc();
if (DLoc.isValid())
TC.diagnose(DLoc, diag::availability_marked_unavailable, Name)
.highlight(Attr->getRange());
switch (Attr->getMinVersionAvailability(
TC.Context.LangOpts.MinPlatformVersion)) {
case MinVersionComparison::Available:
case MinVersionComparison::PotentiallyUnavailable:
llvm_unreachable("These aren't considered unavailable");
case MinVersionComparison::Unavailable:
TC.diagnose(D, diag::availability_marked_unavailable, Name)
.highlight(Attr->getRange());
break;
case MinVersionComparison::Obsoleted: {
// FIXME: Use of the platformString here is non-awesome for application
// extensions.
TC.diagnose(D, diag::availability_obsoleted, Name,
Attr->platformString(), *Attr->Obsoleted)
.highlight(Attr->getRange());
break;
}
}
}
}