Skip to content

Commit fd588ab

Browse files
committed
Remove SelfAccessKind::ResultDependsOnSelf
1 parent 126022f commit fd588ab

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
@@ -3455,8 +3455,6 @@ AnyFunctionType::Param swift::computeSelfParam(AbstractFunctionDecl *AFD,
34553455
case SelfAccessKind::NonMutating:
34563456
// The default flagless state.
34573457
break;
3458-
case SelfAccessKind::ResultDependsOnSelf:
3459-
break;
34603458
}
34613459

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

lib/AST/ASTPrinter.cpp

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

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
@@ -203,7 +203,14 @@ class AttributeChecker : public AttributeVisitor<AttributeChecker> {
203203
void visitConsumingAttr(ConsumingAttr *attr) { visitMutationAttr(attr); }
204204
void visitLegacyConsumingAttr(LegacyConsumingAttr *attr) { visitMutationAttr(attr); }
205205
void visitResultDependsOnSelfAttr(ResultDependsOnSelfAttr *attr) {
206-
visitMutationAttr(attr);
206+
FuncDecl *FD = cast<FuncDecl>(D);
207+
if (FD->getDescriptiveKind() != DescriptiveDeclKind::Method) {
208+
diagnoseAndRemoveAttr(attr, diag::attr_methods_only, attr);
209+
}
210+
if (FD->getResultTypeRepr() == nullptr) {
211+
diagnoseAndRemoveAttr(attr, diag::result_depends_on_no_result,
212+
attr->getAttrName());
213+
}
207214
}
208215
void visitDynamicAttr(DynamicAttr *attr);
209216

@@ -473,9 +480,6 @@ void AttributeChecker::visitMutationAttr(DeclAttribute *attr) {
473480
case DeclAttrKind::DAK_Borrowing:
474481
attrModifier = SelfAccessKind::Borrowing;
475482
break;
476-
case DeclAttrKind::DAK_ResultDependsOnSelf:
477-
attrModifier = SelfAccessKind::ResultDependsOnSelf;
478-
break;
479483
default:
480484
llvm_unreachable("unhandled attribute kind");
481485
}
@@ -490,7 +494,6 @@ void AttributeChecker::visitMutationAttr(DeclAttribute *attr) {
490494
case SelfAccessKind::Consuming:
491495
case SelfAccessKind::LegacyConsuming:
492496
case SelfAccessKind::Borrowing:
493-
case SelfAccessKind::ResultDependsOnSelf:
494497
// It's still OK to specify the ownership convention of methods in
495498
// classes.
496499
break;
@@ -522,8 +525,7 @@ void AttributeChecker::visitMutationAttr(DeclAttribute *attr) {
522525
FD->getAttrs().hasAttribute<NonMutatingAttr>() +
523526
FD->getAttrs().hasAttribute<LegacyConsumingAttr>() +
524527
FD->getAttrs().hasAttribute<ConsumingAttr>() +
525-
FD->getAttrs().hasAttribute<BorrowingAttr>() +
526-
FD->getAttrs().hasAttribute<ResultDependsOnSelfAttr>()) > 1) {
528+
FD->getAttrs().hasAttribute<BorrowingAttr>()) > 1) {
527529
if (auto *NMA = FD->getAttrs().getAttribute<NonMutatingAttr>()) {
528530
if (attrModifier != SelfAccessKind::NonMutating) {
529531
diagnoseAndRemoveAttr(NMA, diag::functions_mutating_and_not,
@@ -558,24 +560,6 @@ void AttributeChecker::visitMutationAttr(DeclAttribute *attr) {
558560
SelfAccessKind::Borrowing, attrModifier);
559561
}
560562
}
561-
562-
if (auto *RDSA = FD->getAttrs().getAttribute<ResultDependsOnSelfAttr>()) {
563-
if (attrModifier != SelfAccessKind::ResultDependsOnSelf) {
564-
diagnoseAndRemoveAttr(RDSA, diag::functions_mutating_and_not,
565-
SelfAccessKind::ResultDependsOnSelf,
566-
attrModifier);
567-
}
568-
}
569-
}
570-
571-
if (auto *RDSA = FD->getAttrs().getAttribute<ResultDependsOnSelfAttr>()) {
572-
if (FD->getResultTypeRepr() == nullptr) {
573-
diagnoseAndRemoveAttr(RDSA, diag::result_depends_on_no_result,
574-
attr->getAttrName());
575-
}
576-
if (FD->getDescriptiveKind() != DescriptiveDeclKind::Method) {
577-
diagnoseAndRemoveAttr(RDSA, diag::attr_methods_only, attr);
578-
}
579563
}
580564
// Verify that we don't have a static function.
581565
if (FD->isStatic())

lib/Sema/TypeCheckDecl.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2392,7 +2392,6 @@ ParamSpecifierRequest::evaluate(Evaluator &evaluator,
23922392
case SelfAccessKind::Mutating:
23932393
return ParamSpecifier::InOut;
23942394
case SelfAccessKind::NonMutating:
2395-
case SelfAccessKind::ResultDependsOnSelf:
23962395
return ParamSpecifier::Default;
23972396
}
23982397
llvm_unreachable("nonexhaustive switch");

lib/Sema/TypeCheckStmt.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1342,7 +1342,6 @@ class StmtChecker : public StmtVisitor<StmtChecker, Stmt*> {
13421342
case SelfAccessKind::Borrowing:
13431343
case SelfAccessKind::NonMutating:
13441344
case SelfAccessKind::Mutating:
1345-
case SelfAccessKind::ResultDependsOnSelf:
13461345
ctx.Diags.diagnose(DS->getDiscardLoc(),
13471346
diag::discard_wrong_context_nonconsuming,
13481347
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)