@@ -1048,39 +1048,21 @@ class Sema final {
1048
1048
class ContextAndScopeRAII {
1049
1049
private:
1050
1050
Sema &S;
1051
- DeclContext * SavedContext;
1051
+ ContextRAII SavedContext;
1052
1052
Scope *SavedScope;
1053
- ProcessingContextState SavedContextState;
1054
- QualType SavedCXXThisTypeOverride;
1055
- unsigned SavedFunctionScopesStart;
1056
- unsigned SavedInventedParameterInfosStart;
1057
1053
1058
1054
public:
1059
1055
ContextAndScopeRAII(Sema &S, DeclContext *ContextToPush, Scope *ScopeToPush)
1060
- : S(S), SavedContext(S.CurContext), SavedScope(S.CurScope),
1061
- SavedContextState(S.DelayedDiagnostics.pushUndelayed()),
1062
- SavedCXXThisTypeOverride(S.CXXThisTypeOverride),
1063
- SavedFunctionScopesStart(S.FunctionScopesStart),
1064
- SavedInventedParameterInfosStart(S.InventedParameterInfosStart)
1056
+ : S(S), SavedContext(S, ContextToPush), SavedScope(S.CurScope)
1065
1057
{
1066
- assert(ContextToPush && "pushing null context");
1067
- S.CurContext = ContextToPush;
1068
1058
S.CurScope = ScopeToPush;
1069
- // Any saved FunctionScopes do not refer to this context.
1070
- S.FunctionScopesStart = S.FunctionScopes.size();
1071
- S.InventedParameterInfosStart = S.InventedParameterInfos.size();
1072
1059
}
1073
1060
1074
1061
void pop() {
1075
- if (! SavedContext) return ;
1076
- S.CurContext = SavedContext ;
1062
+ SavedContext.pop() ;
1063
+ if (!SavedScope) return ;
1077
1064
S.CurScope = SavedScope;
1078
- S.DelayedDiagnostics.popUndelayed(SavedContextState);
1079
- S.CXXThisTypeOverride = SavedCXXThisTypeOverride;
1080
- S.FunctionScopesStart = SavedFunctionScopesStart;
1081
- S.InventedParameterInfosStart = SavedInventedParameterInfosStart;
1082
- SavedContext = 0;
1083
- SavedScope = 0;
1065
+ SavedScope = nullptr;
1084
1066
}
1085
1067
1086
1068
~ContextAndScopeRAII() {
0 commit comments