Files
swift-mirror/test/SourceKit/RelatedIdents/run-parser-with-large-stack.swift
Alex Hoppen 3bffa7970d [SourceKit] Run SwiftParser on a deep stack for the related identifiers request
We ran SwiftParser in `handlePrimaryAST` for related identifiers. That function is called on a dispatch queue with reduced stack size and could cause the parser to stack overflow if the program is very nested.

Run `handlePrimaryAST` on a deep stack for this request to fix the issue.

rdar://129960285
2024-07-25 16:57:08 -07:00

304 lines
3.1 KiB
Swift

// This test used to overflow the stack because SwiftParser was run on a background thread with reduced stack size
// RUN: %sourcekitd-test -req=related-idents -pos=%(line + 1):5 %s -- %s
let x = 1
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {
if true {