@@ -89,9 +89,15 @@ struct StringifyWalker
8989 Loop* loop;
9090 };
9191
92- struct TryBodyStart {};
92+ struct TryStart {
93+ Try* tryy;
94+ };
95+
96+ struct CatchStart {
97+ Name tag;
98+ };
9399
94- struct TryCatchStart {};
100+ struct CatchAllStart {};
95101
96102 struct End {
97103 Expression* curr;
@@ -101,8 +107,9 @@ struct StringifyWalker
101107 IfStart,
102108 ElseStart,
103109 LoopStart,
104- TryBodyStart,
105- TryCatchStart,
110+ TryStart,
111+ CatchStart,
112+ CatchAllStart,
106113 End>;
107114
108115 Separator reason;
@@ -124,23 +131,25 @@ struct StringifyWalker
124131 static SeparatorReason makeLoopStart (Loop* loop) {
125132 return SeparatorReason (LoopStart{loop});
126133 }
127- static SeparatorReason makeTryCatchStart ( ) {
128- return SeparatorReason (TryCatchStart{ });
134+ static SeparatorReason makeTryStart (Try* tryy ) {
135+ return SeparatorReason (TryStart{tryy });
129136 }
130- static SeparatorReason makeTryBodyStart () {
131- return SeparatorReason (TryBodyStart{});
137+ static SeparatorReason makeCatchStart (Name tag) {
138+ return SeparatorReason (CatchStart{tag});
139+ }
140+ static SeparatorReason makeCatchAllStart () {
141+ return SeparatorReason (CatchAllStart{});
132142 }
133143 static SeparatorReason makeEnd () { return SeparatorReason (End{}); }
134144 FuncStart* getFuncStart () { return std::get_if<FuncStart>(&reason); }
135145 BlockStart* getBlockStart () { return std::get_if<BlockStart>(&reason); }
136146 IfStart* getIfStart () { return std::get_if<IfStart>(&reason); }
137147 ElseStart* getElseStart () { return std::get_if<ElseStart>(&reason); }
138148 LoopStart* getLoopStart () { return std::get_if<LoopStart>(&reason); }
139- TryBodyStart* getTryBodyStart () {
140- return std::get_if<TryBodyStart>(&reason);
141- }
142- TryCatchStart* getTryCatchStart () {
143- return std::get_if<TryCatchStart>(&reason);
149+ TryStart* getTryStart () { return std::get_if<TryStart>(&reason); }
150+ CatchStart* getCatchStart () { return std::get_if<CatchStart>(&reason); }
151+ CatchAllStart* getCatchAllStart () {
152+ return std::get_if<CatchAllStart>(&reason);
144153 }
145154 End* getEnd () { return std::get_if<End>(&reason); }
146155 };
@@ -158,10 +167,12 @@ struct StringifyWalker
158167 return o << " Else Start" ;
159168 } else if (reason.getLoopStart ()) {
160169 return o << " Loop Start" ;
161- } else if (reason.getTryBodyStart ()) {
162- return o << " Try Body Start" ;
163- } else if (reason.getTryCatchStart ()) {
164- return o << " Try Catch Start" ;
170+ } else if (reason.getTryStart ()) {
171+ return o << " Try Start" ;
172+ } else if (reason.getCatchStart ()) {
173+ return o << " Catch Start" ;
174+ } else if (reason.getCatchAllStart ()) {
175+ return o << " Catch All Start" ;
165176 } else if (reason.getEnd ()) {
166177 return o << " End" ;
167178 }
0 commit comments