Open
Description
Description
Compiler crash when using a property wrapper with a projected value, but without wrapped value initializer, in an function argument.
Steps to reproduce
- Create a property wrapper with a projected value but without a wrapped value initializer
- Apply the property wrapper to an function argument
- Call the function without the
$
Steps to reproduce
@propertyWrapper
struct ProjectionOnlyWrapper {
var wrappedValue: String
var projectedValue: String { self.wrappedValue }
init(projectedValue: String) { self.wrappedValue = projectedValue }
}
func testParameterWithoutWrappedValueInit(@ProjectionOnlyWrapper value: String) {}
_ = testParameterWithoutWrappedValueInit(value: "")
Expected behavior
Compiler diagnostic saying that the init(wrappedValue:)
is required.
Stack trace
error: compile command failed due to signal 11 (use -v to see invocation)
Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the crash backtrace.
Stack dump:
0. Program arguments: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -c -primary-file test.swift -target arm64-apple-macosx13.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -stack-check -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.3.sdk -color-diagnostics -new-driver-path /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-driver -empty-abi-descriptor -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -module-name test -disable-clang-spi -target-sdk-version 13.3 -target-sdk-name macosx13.3 -o /var/folders/tt/78fgjm150cd74y4p0jm31zvm0000gn/T/TemporaryDirectory.uvoncx/test-1.o
1. Apple Swift version 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100)
2. Compiling with the current language version
3. While evaluating request TypeCheckSourceFileRequest(source_file "test.swift")
4. While type-checking statement at [test.swift:10:1 - line:10:51] RangeText="_ = testParameterWithoutWrappedValueInit(value: """
5. While type-checking expression at [test.swift:10:1 - line:10:51] RangeText="_ = testParameterWithoutWrappedValueInit(value: """
6. While type-checking-target starting at test.swift:10:1
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0 swift-frontend 0x00000001073bf2a8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1 swift-frontend 0x00000001073be28c llvm::sys::RunSignalHandlers() + 112
2 swift-frontend 0x00000001073bf8b8 SignalHandler(int) + 344
3 libsystem_platform.dylib 0x000000019f2aaa24 _sigtramp + 56
4 swift-frontend 0x0000000103233f9c (anonymous namespace)::ExprRewriter::coerceCallArguments(swift::ArgumentList*, swift::AnyFunctionType*, swift::ConcreteDeclRef, swift::ApplyExpr*, swift::constraints::ConstraintLocatorBuilder, llvm::ArrayRef<swift::AppliedPropertyWrapper>) + 4860
5 swift-frontend 0x000000010323e81c (anonymous namespace)::ExprRewriter::finishApply(swift::ApplyExpr*, swift::Type, swift::constraints::ConstraintLocatorBuilder, swift::constraints::ConstraintLocatorBuilder) + 6284
6 swift-frontend 0x0000000103245838 (anonymous namespace)::ExprRewriter::visitApplyExpr(swift::ApplyExpr*) + 440
7 swift-frontend 0x00000001032284e8 (anonymous namespace)::ExprRewriter::walkToExprPost(swift::Expr*) + 120
8 swift-frontend 0x0000000103224cf8 (anonymous namespace)::ExprWalker::walkToExprPost(swift::Expr*) + 24
9 swift-frontend 0x0000000103892234 (anonymous namespace)::Traversal::visitAssignExpr(swift::AssignExpr*) + 236
10 swift-frontend 0x000000010388e2fc (anonymous namespace)::Traversal::visit(swift::Expr*) + 1016
11 swift-frontend 0x000000010321fa74 (anonymous namespace)::ExprWalker::rewriteTarget(swift::constraints::SolutionApplicationTarget) + 2740
12 swift-frontend 0x000000010321ead4 swift::constraints::ConstraintSystem::applySolution(swift::constraints::Solution&, swift::constraints::SolutionApplicationTarget) + 7264
13 swift-frontend 0x00000001034a7dd4 swift::TypeChecker::typeCheckTarget(swift::constraints::SolutionApplicationTarget&, swift::OptionSet<swift::TypeCheckExprFlags, unsigned int>) + 708
14 swift-frontend 0x00000001034a79dc swift::TypeChecker::typeCheckExpression(swift::constraints::SolutionApplicationTarget&, swift::OptionSet<swift::TypeCheckExprFlags, unsigned int>) + 400
15 swift-frontend 0x0000000103596170 (anonymous namespace)::StmtChecker::typeCheckASTNode(swift::ASTNode&) + 384
16 swift-frontend 0x0000000103599fa0 swift::ASTVisitor<(anonymous namespace)::StmtChecker, void, swift::Stmt*, void, void, void, void>::visit(swift::Stmt*) + 292
17 swift-frontend 0x00000001035987b4 bool (anonymous namespace)::StmtChecker::typeCheckStmt<swift::BraceStmt>(swift::BraceStmt*&) + 320
18 swift-frontend 0x00000001035da838 swift::TypeCheckSourceFileRequest::evaluate(swift::Evaluator&, swift::SourceFile*) const + 712
19 swift-frontend 0x00000001035df9ec llvm::Expected<swift::TypeCheckSourceFileRequest::OutputType> swift::Evaluator::getResultUncached<swift::TypeCheckSourceFileRequest>(swift::TypeCheckSourceFileRequest const&) + 680
20 swift-frontend 0x00000001035df6b0 llvm::Expected<swift::TypeCheckSourceFileRequest::OutputType> swift::Evaluator::getResultCached<swift::TypeCheckSourceFileRequest, (void*)0>(swift::TypeCheckSourceFileRequest const&) + 240
21 swift-frontend 0x00000001035da508 swift::performTypeChecking(swift::SourceFile&) + 88
22 swift-frontend 0x000000010244950c swift::CompilerInstance::performSema() + 236
23 swift-frontend 0x00000001022afee0 performCompile(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 464
24 swift-frontend 0x00000001022ae874 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 4308
25 swift-frontend 0x00000001022735bc swift::mainEntry(int, char const**) + 4116
26 dyld 0x000000019ef23f28 start + 2236
Environment
- swift-driver version: 1.75.2
- Apple Swift version 5.8.1 (swiftlang-5.8.0.124.5 clang-1403.0.22.11.100)
- Target: arm64-apple-macosx13.0
- Xcode 14.3.1 Build version 14E300c
Metadata
Metadata
Assignees
Labels
A deviation from expected or documented behavior. Also: expected but undesirable behavior.Feature → expressions: Call expressionsThe Swift compiler itselfBug: A crash, i.e., an abnormal termination of softwareFeature: declarationsFeature: expressionsFeature → declarations: function parametersFeature: property wrappersArea → compiler: Semantic analysis