mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
This commit changes how we represent caller-side default arguments within the AST. Instead of directly inserting them into the call-site, use a DefaultArgumentExpr to refer to them indirectly. The main goal of this change is to make it such that the expression type-checker no longer cares about the difference between caller-side and callee-side default arguments. In particular, it no longer cares about whether a caller-side default argument is well-formed when type-checking an apply. This is important because any conversions introduced by the default argument shouldn't affect the score of the resulting solution. Instead, caller-side defaults are now lazily type-checked when we want to emit them in SILGen. This is done through introducing a request, and adjusting the logic in SILGen to be more lenient with ErrorExprs. Caller-side defaults in primary files are still also currently checked as a part of the declaration by `checkDefaultArguments`. Resolves SR-11085. Resolves rdar://problem/56144412.
12 lines
448 B
Swift
12 lines
448 B
Swift
// This source file is part of the Swift.org open source project
|
|
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
|
|
// Licensed under Apache License v2.0 with Runtime Library Exception
|
|
//
|
|
// See https://swift.org/LICENSE.txt for license information
|
|
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
|
|
|
|
// rdar://56144412
|
|
// RUN: not %target-swift-frontend %s -emit-ir
|
|
func t(UInt=__FUNCTION__
|
|
func&t(
|