-
Seth Brenith authored
Rather than letting a recursive macro expansion cause a stack overflow and crash the compiler, this change updates Torque to emit an error as soon as the recursion is detected. Eventually it would be nice to make Cast macros a little more magical so they don't require so much human effort to maintain, but at least this way Torque displays some information about what went wrong. An example error message (manually wrapped to 72 character width) follows. src/builtins/cast.tq:157:10: Torque Error: Recursive macro call to callable Cast<(class Context | Undefined | Zero)>(implicit class Context)(Object): (class Context | Undefined | Zero) src/builtins/cast.tq:758:3: Torque Error: Note: in specialization Cast<(class Context | Undefined | Zero)> requested here src/builtins/cast.tq:764:10: Torque Error: Note: in specialization Is<(class Context | Undefined | Zero), Object> requested here src/builtins/torque-internal.tq:64:3: Torque Error: Note: in specialization UnsafeCast<(class Context | Undefined | Zero)> requested here src/objects/contexts.tq:75:10: Torque Error: Note: in specialization ReferenceCast<(class Context | Undefined | Zero), Object> requested here src/builtins/iterator.tq:142:16: Torque Error: Note: in specialization ContextSlot<class Context, class Context, (class Context | Undefined | Zero)> requested here Bug: v8:11727 Change-Id: I7b5b1852dee16a6860f593f27783f6b2d9366146 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2965032Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Seth Brenith <seth.brenith@microsoft.com> Cr-Commit-Position: refs/heads/master@{#75184}
6b158455