Skip to content

Commit 1f904ca

Browse files
authored
Merge pull request #30669 from CodaFi/consteval
[NFC] A Handful of Sweeping Evaluator Cleanups
2 parents 49d72d7 + 987cd55 commit 1f904ca

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+438
-400
lines changed

include/swift/AST/AccessRequests.h

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,7 @@ class AccessLevelRequest :
4141
friend SimpleRequest;
4242

4343
// Evaluation.
44-
llvm::Expected<AccessLevel> evaluate(Evaluator &evaluator,
45-
ValueDecl *decl) const;
44+
AccessLevel evaluate(Evaluator &evaluator, ValueDecl *decl) const;
4645

4746
public:
4847
// Separate caching.
@@ -65,8 +64,7 @@ class SetterAccessLevelRequest :
6564
friend SimpleRequest;
6665

6766
// Evaluation.
68-
llvm::Expected<AccessLevel>
69-
evaluate(Evaluator &evaluator, AbstractStorageDecl *decl) const;
67+
AccessLevel evaluate(Evaluator &evaluator, AbstractStorageDecl *decl) const;
7068

7169
public:
7270
// Separate caching.
@@ -88,8 +86,7 @@ class DefaultAndMaxAccessLevelRequest :
8886
friend SimpleRequest;
8987

9088
// Evaluation.
91-
llvm::Expected<DefaultAndMax>
92-
evaluate(Evaluator &evaluator, ExtensionDecl *decl) const;
89+
DefaultAndMax evaluate(Evaluator &evaluator, ExtensionDecl *decl) const;
9390

9491
public:
9592
// Separate caching.

include/swift/AST/Evaluator.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ using AbstractRequestFunction = void(void);
5454
/// Form the specific request function for the given request type.
5555
template<typename Request>
5656
using RequestFunction =
57-
llvm::Expected<typename Request::OutputType>(const Request &, Evaluator &);
57+
typename Request::OutputType(const Request &, Evaluator &);
5858

5959
/// Pretty stack trace handler for an arbitrary request.
6060
template<typename Request>

include/swift/AST/IRGenRequests.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ class IRGenSourceFileRequest
124124
friend SimpleRequest;
125125

126126
// Evaluation.
127-
llvm::Expected<std::unique_ptr<llvm::Module>>
127+
std::unique_ptr<llvm::Module>
128128
evaluate(Evaluator &evaluator, IRGenDescriptor desc) const;
129129

130130
public:
@@ -142,7 +142,7 @@ class IRGenWholeModuleRequest
142142
friend SimpleRequest;
143143

144144
// Evaluation.
145-
llvm::Expected<std::unique_ptr<llvm::Module>>
145+
std::unique_ptr<llvm::Module>
146146
evaluate(Evaluator &evaluator, IRGenDescriptor desc) const;
147147

148148
public:

include/swift/AST/NameLookupRequests.h

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ class SuperclassDeclRequest :
153153
friend SimpleRequest;
154154

155155
// Evaluation.
156-
llvm::Expected<ClassDecl *>
156+
ClassDecl *
157157
evaluate(Evaluator &evaluator, NominalTypeDecl *subject) const;
158158

159159
public:
@@ -197,7 +197,7 @@ class HasMissingDesignatedInitializersRequest :
197197
friend SimpleRequest;
198198

199199
// Evaluation.
200-
llvm::Expected<bool>
200+
bool
201201
evaluate(Evaluator &evaluator, ClassDecl *subject) const;
202202

203203
public:
@@ -219,7 +219,7 @@ class ExtendedNominalRequest :
219219
friend SimpleRequest;
220220

221221
// Evaluation.
222-
llvm::Expected<NominalTypeDecl *>
222+
NominalTypeDecl *
223223
evaluate(Evaluator &evaluator, ExtensionDecl *ext) const;
224224

225225
public:
@@ -283,7 +283,7 @@ class CustomAttrNominalRequest :
283283
friend SimpleRequest;
284284

285285
// Evaluation.
286-
llvm::Expected<NominalTypeDecl *>
286+
NominalTypeDecl *
287287
evaluate(Evaluator &evaluator, CustomAttr *attr, DeclContext *dc) const;
288288

289289
public:
@@ -303,7 +303,7 @@ class GetDestructorRequest :
303303
friend SimpleRequest;
304304

305305
// Evaluation.
306-
llvm::Expected<DestructorDecl *>
306+
DestructorDecl *
307307
evaluate(Evaluator &evaluator, ClassDecl *classDecl) const;
308308

309309
public:
@@ -324,7 +324,7 @@ class GenericParamListRequest :
324324
friend SimpleRequest;
325325

326326
// Evaluation.
327-
llvm::Expected<GenericParamList *>
327+
GenericParamList *
328328
evaluate(Evaluator &evaluator, GenericContext *value) const;
329329

330330
public:
@@ -347,7 +347,7 @@ class ExpandASTScopeRequest
347347
friend SimpleRequest;
348348

349349
// Evaluation.
350-
llvm::Expected<ast_scope::ASTScopeImpl *>
350+
ast_scope::ASTScopeImpl *
351351
evaluate(Evaluator &evaluator, ast_scope::ASTScopeImpl *,
352352
ast_scope::ScopeCreator *) const;
353353

@@ -407,8 +407,8 @@ class UnqualifiedLookupRequest
407407
friend SimpleRequest;
408408

409409
// Evaluation.
410-
llvm::Expected<LookupResult> evaluate(Evaluator &evaluator,
411-
UnqualifiedLookupDescriptor desc) const;
410+
LookupResult evaluate(Evaluator &evaluator,
411+
UnqualifiedLookupDescriptor desc) const;
412412
};
413413

414414
using QualifiedLookupResult = SmallVector<ValueDecl *, 4>;
@@ -427,7 +427,7 @@ class LookupInModuleRequest
427427
friend SimpleRequest;
428428

429429
// Evaluation.
430-
llvm::Expected<QualifiedLookupResult>
430+
QualifiedLookupResult
431431
evaluate(Evaluator &evaluator, const DeclContext *moduleOrFile, DeclName name,
432432
NLKind lookupKind, namelookup::ResolutionKind resolutionKind,
433433
const DeclContext *moduleScopeContext) const;
@@ -445,10 +445,10 @@ class AnyObjectLookupRequest
445445
private:
446446
friend SimpleRequest;
447447

448-
llvm::Expected<QualifiedLookupResult> evaluate(Evaluator &evaluator,
449-
const DeclContext *dc,
450-
DeclNameRef name,
451-
NLOptions options) const;
448+
QualifiedLookupResult evaluate(Evaluator &evaluator,
449+
const DeclContext *dc,
450+
DeclNameRef name,
451+
NLOptions options) const;
452452
};
453453

454454
class ModuleQualifiedLookupRequest
@@ -464,10 +464,10 @@ class ModuleQualifiedLookupRequest
464464
friend SimpleRequest;
465465

466466
// Evaluation.
467-
llvm::Expected<QualifiedLookupResult> evaluate(Evaluator &evaluator,
468-
const DeclContext *DC,
469-
ModuleDecl *mod, DeclNameRef name,
470-
NLOptions opts) const;
467+
QualifiedLookupResult evaluate(Evaluator &evaluator,
468+
const DeclContext *DC,
469+
ModuleDecl *mod, DeclNameRef name,
470+
NLOptions opts) const;
471471
};
472472

473473
class QualifiedLookupRequest
@@ -483,7 +483,7 @@ class QualifiedLookupRequest
483483
friend SimpleRequest;
484484

485485
// Evaluation.
486-
llvm::Expected<QualifiedLookupResult>
486+
QualifiedLookupResult
487487
evaluate(Evaluator &evaluator, const DeclContext *DC,
488488
SmallVector<NominalTypeDecl *, 4> decls,
489489
DeclNameRef name,
@@ -534,7 +534,7 @@ class DirectLookupRequest
534534
friend SimpleRequest;
535535

536536
// Evaluation.
537-
llvm::Expected<TinyPtrVector<ValueDecl *>>
537+
TinyPtrVector<ValueDecl *>
538538
evaluate(Evaluator &evaluator, DirectLookupDescriptor desc) const;
539539
};
540540

@@ -609,8 +609,8 @@ class LookupOperatorRequest
609609
CacheKind::Uncached>;
610610

611611
// Evaluation.
612-
llvm::Expected<OperatorType *> evaluate(Evaluator &evaluator,
613-
OperatorLookupDescriptor desc) const;
612+
OperatorType *
613+
evaluate(Evaluator &evaluator, OperatorLookupDescriptor desc) const;
614614
};
615615

616616
using LookupPrefixOperatorRequest = LookupOperatorRequest<PrefixOperatorDecl>;
@@ -631,7 +631,7 @@ class DirectOperatorLookupRequest
631631
private:
632632
friend SimpleRequest;
633633

634-
llvm::Expected<TinyPtrVector<OperatorDecl *>>
634+
TinyPtrVector<OperatorDecl *>
635635
evaluate(Evaluator &evaluator, OperatorLookupDescriptor descriptor,
636636
OperatorFixity fixity) const;
637637
};
@@ -649,7 +649,7 @@ class DirectPrecedenceGroupLookupRequest
649649
private:
650650
friend SimpleRequest;
651651

652-
llvm::Expected<TinyPtrVector<PrecedenceGroupDecl *>>
652+
TinyPtrVector<PrecedenceGroupDecl *>
653653
evaluate(Evaluator &evaluator, OperatorLookupDescriptor descriptor) const;
654654
};
655655

@@ -694,7 +694,7 @@ class LookupConformanceInModuleRequest
694694
friend SimpleRequest;
695695

696696
// Evaluation.
697-
llvm::Expected<ProtocolConformanceRef> evaluate(
697+
ProtocolConformanceRef evaluate(
698698
Evaluator &evaluator, LookupConformanceDescriptor desc) const;
699699
};
700700

include/swift/AST/SILGenRequests.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ class SILGenSourceFileRequest :
8989
friend SimpleRequest;
9090

9191
// Evaluation.
92-
llvm::Expected<std::unique_ptr<SILModule>>
92+
std::unique_ptr<SILModule>
9393
evaluate(Evaluator &evaluator, SILGenDescriptor desc) const;
9494

9595
public:
@@ -107,7 +107,7 @@ class SILGenWholeModuleRequest :
107107
friend SimpleRequest;
108108

109109
// Evaluation.
110-
llvm::Expected<std::unique_ptr<SILModule>>
110+
std::unique_ptr<SILModule>
111111
evaluate(Evaluator &evaluator, SILGenDescriptor desc) const;
112112

113113
public:

include/swift/AST/SILOptimizerRequests.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ llvm::hash_code hash_value(const SILPipelineExecutionDescriptor &desc);
5050
/// Executes a SIL pipeline plan on a SIL module.
5151
class ExecuteSILPipelineRequest
5252
: public SimpleRequest<ExecuteSILPipelineRequest,
53-
bool(SILPipelineExecutionDescriptor),
53+
evaluator::SideEffect(SILPipelineExecutionDescriptor),
5454
CacheKind::Uncached> {
5555
public:
5656
using SimpleRequest::SimpleRequest;
@@ -59,8 +59,8 @@ class ExecuteSILPipelineRequest
5959
friend SimpleRequest;
6060

6161
// Evaluation.
62-
llvm::Expected<bool> evaluate(Evaluator &evaluator,
63-
SILPipelineExecutionDescriptor desc) const;
62+
evaluator::SideEffect
63+
evaluate(Evaluator &evaluator, SILPipelineExecutionDescriptor desc) const;
6464
};
6565

6666
void simple_display(llvm::raw_ostream &out,

include/swift/AST/SILOptimizerTypeIDZone.def

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@
1515
//===----------------------------------------------------------------------===//
1616

1717
SWIFT_REQUEST(SILOptimizer, ExecuteSILPipelineRequest,
18-
bool(SILPipelineExecutionDescriptor), Uncached, NoLocationInfo)
18+
evaluator::SideEffect(SILPipelineExecutionDescriptor),
19+
Uncached, NoLocationInfo)

include/swift/AST/SimpleRequest.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,9 @@ SourceLoc extractNearestSourceLoc(const std::tuple<First, Rest...> &value) {
148148
///
149149
/// The \c Derived class needs to implement several operations. The most
150150
/// important one takes an evaluator and the input values, then computes the
151-
/// final result, optionally bubbling up errors from recursive evaulations:
151+
/// final result:
152152
/// \code
153-
/// llvm::Expected<Output> evaluate(Evaluator &evaluator, Inputs...) const;
153+
/// Output evaluate(Evaluator &evaluator, Inputs...) const;
154154
/// \endcode
155155
///
156156
/// Cycle diagnostics can be handled in one of two ways. Either the \c Derived
@@ -194,7 +194,7 @@ class SimpleRequest<Derived, Output(Inputs...), Caching> {
194194
}
195195

196196
template<size_t ...Indices>
197-
llvm::Expected<Output>
197+
Output
198198
callDerived(Evaluator &evaluator, std::index_sequence<Indices...>) const {
199199
static_assert(sizeof...(Indices) > 0, "Subclass must define evaluate()");
200200
return asDerived().evaluate(evaluator, std::get<Indices>(storage)...);
@@ -214,7 +214,7 @@ class SimpleRequest<Derived, Output(Inputs...), Caching> {
214214
: storage(inputs...) { }
215215

216216
/// Request evaluation function that will be registered with the evaluator.
217-
static llvm::Expected<OutputType>
217+
static OutputType
218218
evaluateRequest(const Derived &request, Evaluator &evaluator) {
219219
return request.callDerived(evaluator,
220220
std::index_sequence_for<Inputs...>());

include/swift/AST/TBDGenRequests.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,7 @@ class GenerateTBDRequest
9292
friend SimpleRequest;
9393

9494
// Evaluation.
95-
llvm::Expected<TBDFileAndSymbols> evaluate(Evaluator &evaluator,
96-
TBDGenDescriptor desc) const;
95+
TBDFileAndSymbols evaluate(Evaluator &evaluator, TBDGenDescriptor desc) const;
9796
};
9897

9998
/// Report that a request of the given kind is being evaluated, so it

0 commit comments

Comments
 (0)