mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Previously, when we reached the maximum nesting level, we changed the current token’s kind to an EOF token. A lot of places in the parser are not set up to expect this token change. The intended workaround was to check whether pushing a structure marker failed (which would change the token kind) and bail out parsing if this happened. This was fragile and caused assertion failures in assert builds. Instead of changing the current token’s kind, and failing to push the structure marker, let the lexer know that it should cut off lexing, essentially making the input buffer stop at the current position. The parser will continue to consume its current token (`Parser.Tok`) and the next token that’s already lexed in the lexer (`Lexer.NextToken`) before reaching the emulated EOF token. Thus two more tokens are parsed than before, but that shouldn’t make much of a difference.
792 lines
8.6 KiB
Swift
792 lines
8.6 KiB
Swift
func foo(a: Int) {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
if a > 1 {
|
|
|
|
// This test case used to cause an assertion failure during parsing cut off.
|
|
// RUN: not %swift-frontend -typecheck %s |