// RUN: %empty-directory(%t) // RUN: %batch-code-completion -debug-constraints 2> %t/constraints.log // RUN: %FileCheck %s -check-prefix CONSTRAINTS < %t/constraints.log // RUN: %FileCheck %s -check-prefix CONSTRAINTS-NOT < %t/constraints.log protocol P1 {} protocol P2 {} func foo(_ fn: () -> T) {} @_disfavoredOverload func foo(_ fn: () -> T) {} func bar(_ x: Int) -> Int {} func bar(_ x: String) -> String {} // Make sure we eagerly prune the disfavored overload of 'foo', despite the // ambiguity in the closure body. foo { let x = bar(#^COMPLETE^#) // COMPLETE: Decl[FreeFunction]/CurrModule/Flair[ArgLabels]: ['(']{#(x): Int#}[')'][#Int#]; name=: // COMPLETE: Decl[FreeFunction]/CurrModule/Flair[ArgLabels]: ['(']{#(x): String#}[')'][#String#]; name=: return x } // CONSTRAINTS: attempting disjunction choice {{.*}}:12:6 // CONSTRAINTS: increasing 'disfavored overload' score // CONSTRAINTS: solution is worse than the best solution // CONSTRAINTS-NOT-NOT: increasing 'hole'