Skip to content

Commit 6442e91

Browse files
authored
Merge pull request #70244 from meg-gupta/removeselfaccesskind
Remove SelfAccessKind::ResultDependsOnSelf
2 parents 7b4e58a + fd588ab commit 6442e91

File tree

13 files changed

+18
-48
lines changed

13 files changed

+18
-48
lines changed

include/swift/AST/Decl.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -241,8 +241,7 @@ enum class SelfAccessKind : uint8_t {
241241
LegacyConsuming,
242242
Consuming,
243243
Borrowing,
244-
ResultDependsOnSelf,
245-
LastSelfAccessKind = ResultDependsOnSelf,
244+
LastSelfAccessKind = Borrowing,
246245
};
247246
enum : unsigned {
248247
NumSelfAccessKindBits =

lib/APIDigester/ModuleAnalyzerNodes.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1559,9 +1559,6 @@ SDKNodeInitInfo::SDKNodeInitInfo(SDKContext &Ctx, ValueDecl *VD)
15591559
case SelfAccessKind::Borrowing:
15601560
FuncSelfKind = "Borrowing";
15611561
break;
1562-
case SelfAccessKind::ResultDependsOnSelf:
1563-
FuncSelfKind = "ResultDependsOnSelf";
1564-
break;
15651562
}
15661563
}
15671564

lib/AST/ASTContext.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3458,8 +3458,6 @@ AnyFunctionType::Param swift::computeSelfParam(AbstractFunctionDecl *AFD,
34583458
case SelfAccessKind::NonMutating:
34593459
// The default flagless state.
34603460
break;
3461-
case SelfAccessKind::ResultDependsOnSelf:
3462-
break;
34633461
}
34643462

34653463
return AnyFunctionType::Param(selfTy, Identifier(), flags);

lib/AST/ASTPrinter.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2151,10 +2151,6 @@ void PrintAST::printSelfAccessKindModifiersIfNeeded(const FuncDecl *FD) {
21512151
if (!Options.excludeAttrKind(DAK_Borrowing))
21522152
Printer.printKeyword("borrowing", Options, " ");
21532153
break;
2154-
case SelfAccessKind::ResultDependsOnSelf:
2155-
if (!Options.excludeAttrKind(DAK_ResultDependsOnSelf))
2156-
Printer.printKeyword("_resultDependsOnSelf", Options, " ");
2157-
break;
21582154
}
21592155
}
21602156

lib/AST/Decl.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -603,9 +603,8 @@ llvm::raw_ostream &swift::operator<<(llvm::raw_ostream &OS,
603603
case SelfAccessKind::Mutating: return OS << "'mutating'";
604604
case SelfAccessKind::LegacyConsuming: return OS << "'__consuming'";
605605
case SelfAccessKind::Consuming: return OS << "'consuming'";
606-
case SelfAccessKind::Borrowing: return OS << "'borrowing'";
607-
case SelfAccessKind::ResultDependsOnSelf:
608-
return OS << "'resultDependsOnSelf'";
606+
case SelfAccessKind::Borrowing:
607+
return OS << "'borrowing'";
609608
}
610609
llvm_unreachable("Unknown SelfAccessKind");
611610
}

lib/SILGen/SILGenApply.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5348,7 +5348,6 @@ bool SILGenModule::shouldEmitSelfAsRValue(FuncDecl *fn, CanType selfType) {
53485348
case SelfAccessKind::LegacyConsuming:
53495349
case SelfAccessKind::Consuming:
53505350
case SelfAccessKind::Borrowing:
5351-
case SelfAccessKind::ResultDependsOnSelf:
53525351
return true;
53535352
}
53545353
llvm_unreachable("bad self-access kind");

lib/Sema/TypeCheckAttr.cpp

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,14 @@ class AttributeChecker : public AttributeVisitor<AttributeChecker> {
207207
void visitConsumingAttr(ConsumingAttr *attr) { visitMutationAttr(attr); }
208208
void visitLegacyConsumingAttr(LegacyConsumingAttr *attr) { visitMutationAttr(attr); }
209209
void visitResultDependsOnSelfAttr(ResultDependsOnSelfAttr *attr) {
210-
visitMutationAttr(attr);
210+
FuncDecl *FD = cast<FuncDecl>(D);
211+
if (FD->getDescriptiveKind() != DescriptiveDeclKind::Method) {
212+
diagnoseAndRemoveAttr(attr, diag::attr_methods_only, attr);
213+
}
214+
if (FD->getResultTypeRepr() == nullptr) {
215+
diagnoseAndRemoveAttr(attr, diag::result_depends_on_no_result,
216+
attr->getAttrName());
217+
}
211218
}
212219
void visitDynamicAttr(DynamicAttr *attr);
213220

@@ -486,9 +493,6 @@ void AttributeChecker::visitMutationAttr(DeclAttribute *attr) {
486493
case DeclAttrKind::DAK_Borrowing:
487494
attrModifier = SelfAccessKind::Borrowing;
488495
break;
489-
case DeclAttrKind::DAK_ResultDependsOnSelf:
490-
attrModifier = SelfAccessKind::ResultDependsOnSelf;
491-
break;
492496
default:
493497
llvm_unreachable("unhandled attribute kind");
494498
}
@@ -503,7 +507,6 @@ void AttributeChecker::visitMutationAttr(DeclAttribute *attr) {
503507
case SelfAccessKind::Consuming:
504508
case SelfAccessKind::LegacyConsuming:
505509
case SelfAccessKind::Borrowing:
506-
case SelfAccessKind::ResultDependsOnSelf:
507510
// It's still OK to specify the ownership convention of methods in
508511
// classes.
509512
break;
@@ -535,8 +538,7 @@ void AttributeChecker::visitMutationAttr(DeclAttribute *attr) {
535538
FD->getAttrs().hasAttribute<NonMutatingAttr>() +
536539
FD->getAttrs().hasAttribute<LegacyConsumingAttr>() +
537540
FD->getAttrs().hasAttribute<ConsumingAttr>() +
538-
FD->getAttrs().hasAttribute<BorrowingAttr>() +
539-
FD->getAttrs().hasAttribute<ResultDependsOnSelfAttr>()) > 1) {
541+
FD->getAttrs().hasAttribute<BorrowingAttr>()) > 1) {
540542
if (auto *NMA = FD->getAttrs().getAttribute<NonMutatingAttr>()) {
541543
if (attrModifier != SelfAccessKind::NonMutating) {
542544
diagnoseAndRemoveAttr(NMA, diag::functions_mutating_and_not,
@@ -571,24 +573,6 @@ void AttributeChecker::visitMutationAttr(DeclAttribute *attr) {
571573
SelfAccessKind::Borrowing, attrModifier);
572574
}
573575
}
574-
575-
if (auto *RDSA = FD->getAttrs().getAttribute<ResultDependsOnSelfAttr>()) {
576-
if (attrModifier != SelfAccessKind::ResultDependsOnSelf) {
577-
diagnoseAndRemoveAttr(RDSA, diag::functions_mutating_and_not,
578-
SelfAccessKind::ResultDependsOnSelf,
579-
attrModifier);
580-
}
581-
}
582-
}
583-
584-
if (auto *RDSA = FD->getAttrs().getAttribute<ResultDependsOnSelfAttr>()) {
585-
if (FD->getResultTypeRepr() == nullptr) {
586-
diagnoseAndRemoveAttr(RDSA, diag::result_depends_on_no_result,
587-
attr->getAttrName());
588-
}
589-
if (FD->getDescriptiveKind() != DescriptiveDeclKind::Method) {
590-
diagnoseAndRemoveAttr(RDSA, diag::attr_methods_only, attr);
591-
}
592576
}
593577
// Verify that we don't have a static function.
594578
if (FD->isStatic())

lib/Sema/TypeCheckDecl.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2422,7 +2422,6 @@ ParamSpecifierRequest::evaluate(Evaluator &evaluator,
24222422
case SelfAccessKind::Mutating:
24232423
return ParamSpecifier::InOut;
24242424
case SelfAccessKind::NonMutating:
2425-
case SelfAccessKind::ResultDependsOnSelf:
24262425
return ParamSpecifier::Default;
24272426
}
24282427
llvm_unreachable("nonexhaustive switch");

lib/Sema/TypeCheckStmt.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1341,7 +1341,6 @@ class StmtChecker : public StmtVisitor<StmtChecker, Stmt*> {
13411341
case SelfAccessKind::Borrowing:
13421342
case SelfAccessKind::NonMutating:
13431343
case SelfAccessKind::Mutating:
1344-
case SelfAccessKind::ResultDependsOnSelf:
13451344
ctx.Diags.diagnose(DS->getDiscardLoc(),
13461345
diag::discard_wrong_context_nonconsuming,
13471346
fn->getDescriptiveKind());

lib/Serialization/Deserialization.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2837,8 +2837,6 @@ getActualSelfAccessKind(uint8_t raw) {
28372837
return swift::SelfAccessKind::Consuming;
28382838
case serialization::SelfAccessKind::Borrowing:
28392839
return swift::SelfAccessKind::Borrowing;
2840-
case serialization::SelfAccessKind::ResultDependsOnSelf:
2841-
return swift::SelfAccessKind::ResultDependsOnSelf;
28422840
}
28432841
return llvm::None;
28442842
}

lib/Serialization/ModuleFormat.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,6 @@ enum class SelfAccessKind : uint8_t {
429429
LegacyConsuming,
430430
Consuming,
431431
Borrowing,
432-
ResultDependsOnSelf,
433432
};
434433
using SelfAccessKindField = BCFixed<3>;
435434

lib/Serialization/Serialization.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2334,8 +2334,6 @@ getStableSelfAccessKind(swift::SelfAccessKind MM) {
23342334
return serialization::SelfAccessKind::Consuming;
23352335
case swift::SelfAccessKind::Borrowing:
23362336
return serialization::SelfAccessKind::Borrowing;
2337-
case swift::SelfAccessKind::ResultDependsOnSelf:
2338-
return serialization::SelfAccessKind::ResultDependsOnSelf;
23392337
}
23402338

23412339
llvm_unreachable("Unhandled StaticSpellingKind in switch.");

test/Sema/result_depends_on_errors.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,13 @@
44
import Builtin
55

66
class Klass {}
7+
8+
struct View {
9+
var pointer: UnsafeRawPointer?
10+
}
11+
712
class MethodModifiers {
813
_resultDependsOnSelf func testAttrOnMethod() { } // expected-error{{Incorrect use of _resultDependsOnSelf with no result}}
914
}
1015

11-
_resultDependsOnSelf func testAttrOnFunc () { } // expected-error{{'resultDependsOnSelf' is only valid on methods}}
16+
_resultDependsOnSelf func testAttrOnFunc () -> View { return View(pointer:nil) } // expected-error{{only methods can be declared '_resultDependsOnSelf'}}

0 commit comments

Comments
 (0)