@@ -1250,14 +1250,12 @@ static void validatePatternBindingEntries(TypeChecker &tc,
1250
1250
1251
1251
void swift::makeFinal (ASTContext &ctx, ValueDecl *D) {
1252
1252
if (D && !D->isFinal ()) {
1253
- assert (!D->isDynamic ());
1254
1253
D->getAttrs ().add (new (ctx) FinalAttr (/* IsImplicit=*/ true ));
1255
1254
}
1256
1255
}
1257
1256
1258
1257
void swift::makeDynamic (ASTContext &ctx, ValueDecl *D) {
1259
1258
if (D && !D->isDynamic ()) {
1260
- assert (!D->isFinal ());
1261
1259
D->getAttrs ().add (new (ctx) DynamicAttr (/* IsImplicit=*/ true ));
1262
1260
}
1263
1261
}
@@ -5485,8 +5483,7 @@ class DeclChecker : public DeclVisitor<DeclChecker> {
5485
5483
5486
5484
// If this is a class member, mark it final if the class is final.
5487
5485
if (auto cls = FD->getDeclContext ()->getAsClassOrClassExtensionContext ()) {
5488
- if (cls->isFinal () && !FD->isAccessor () &&
5489
- !FD->isFinal () && !FD->isDynamic ()) {
5486
+ if (cls->isFinal () && !FD->isFinal ()) {
5490
5487
makeFinal (TC.Context , FD);
5491
5488
}
5492
5489
// static func declarations in classes are synonyms
@@ -7817,7 +7814,7 @@ void TypeChecker::validateDecl(ValueDecl *D) {
7817
7814
// class is final, or if it was declared with 'let'.
7818
7815
if (auto cls = dyn_cast<ClassDecl>(nominalDecl)) {
7819
7816
if (cls->isFinal () || VD->isLet ()) {
7820
- if (!VD->isFinal () && !VD-> isDynamic () ) {
7817
+ if (!VD->isFinal ()) {
7821
7818
makeFinal (Context, VD);
7822
7819
}
7823
7820
}
0 commit comments