Open swiftty opened 2 years ago
I have a similar repro case where the property wrapper only allows init(projectedValue:)
initialisation and not init(wrappedValue:)
(reading SE-0293 I believe it's allowed!).
Here, the compiler fails to generate the correct diagnostic if forgetting the $
prefix at the call site:
@propertyWrapper
struct First<T> {
var projectedValue: [T]
var wrappedValue: T? { projectedValue.first }
}
func repro(@First arg: Int?) {}
repro(arg: 1) // 💥
Expected result:
repro(arg: 1)
// ^~~~ error: incorrect argument label in call (have 'arg:', expected '$arg:')
Actual result:
Stack dump:
0. Program arguments: /Applications/Xcode-14.1-beta-3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -c -primary-file crash.swift -target x86_64-apple-macosx12.0 -enable-objc-interop -stack-check -sdk /Applications/Xcode-14.1-beta-3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.0.sdk -color-diagnostics -new-driver-path /Applications/Xcode-14.1-beta-3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-driver -empty-abi-descriptor -resource-dir /Applications/Xcode-14.1-beta-3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -module-name crash -disable-clang-spi -target-sdk-version 13.0 -o /var/folders/gp/hp3vxx4979j5mzbr_l6pzcgdyt2rgg/T/TemporaryDirectory.11kn67/crash-1.o
1. Apple Swift version 5.7.1 (swiftlang-5.7.1.134.3 clang-1400.0.29.51)
2. Compiling with the current language version
3. While evaluating request TypeCheckSourceFileRequest(source_file "crash.swift")
4. While type-checking statement at [crash.swift:9:1 - line:9:13] RangeText="repro(arg: 1"
5. While type-checking expression at [crash.swift:9:1 - line:9:13] RangeText="repro(arg: 1"
6. While type-checking-target starting at crash.swift:9: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 0x00000001059d3027 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 39
1 swift-frontend 0x00000001059d2058 llvm::sys::RunSignalHandlers() + 248
2 swift-frontend 0x00000001059d3640 SignalHandler(int) + 288
3 libsystem_platform.dylib 0x00007ff813c0fdfd _sigtramp + 29
4 libsystem_platform.dylib 0x00007ff7bfaf2928 _sigtramp + 18446744072299096904
5 swift-frontend 0x000000010123281f (anonymous namespace)::ExprRewriter::finishApply(swift::ApplyExpr*, swift::Type, swift::constraints::ConstraintLocatorBuilder, swift::constraints::ConstraintLocatorBuilder) + 8831
6 swift-frontend 0x000000010123b5c6 (anonymous namespace)::ExprRewriter::visitApplyExpr(swift::ApplyExpr*) + 502
7 swift-frontend 0x000000010120f5b2 (anonymous namespace)::ExprWalker::walkToExprPost(swift::Expr*) + 18
8 swift-frontend 0x0000000101202e15 (anonymous namespace)::ExprWalker::rewriteTarget(swift::constraints::SolutionApplicationTarget) + 469
9 swift-frontend 0x0000000101202866 swift::constraints::ConstraintSystem::applySolution(swift::constraints::Solution&, swift::constraints::SolutionApplicationTarget) + 6806
10 swift-frontend 0x00000001014b3efc swift::TypeChecker::typeCheckTarget(swift::constraints::SolutionApplicationTarget&, swift::OptionSet<swift::TypeCheckExprFlags, unsigned int>) + 716
11 swift-frontend 0x00000001014b3bc1 swift::TypeChecker::typeCheckExpression(swift::constraints::SolutionApplicationTarget&, swift::OptionSet<swift::TypeCheckExprFlags, unsigned int>) + 417
12 swift-frontend 0x000000010159ce00 (anonymous namespace)::StmtChecker::typeCheckASTNode(swift::ASTNode&) + 272
13 swift-frontend 0x00000001015a075c swift::ASTVisitor<(anonymous namespace)::StmtChecker, void, swift::Stmt*, void, void, void, void>::visit(swift::Stmt*) + 124
14 swift-frontend 0x000000010159f308 bool (anonymous namespace)::StmtChecker::typeCheckStmt<swift::BraceStmt>(swift::BraceStmt*&) + 296
15 swift-frontend 0x000000010159f402 swift::TypeChecker::typeCheckTopLevelCodeDecl(swift::TopLevelCodeDecl*) + 98
16 swift-frontend 0x00000001015e1e1c swift::TypeCheckSourceFileRequest::evaluate(swift::Evaluator&, swift::SourceFile*) const + 604
17 swift-frontend 0x00000001015e4f9d llvm::Expected<swift::TypeCheckSourceFileRequest::OutputType> swift::Evaluator::getResultUncached<swift::TypeCheckSourceFileRequest>(swift::TypeCheckSourceFileRequest const&) + 669
18 swift-frontend 0x00000001015e1b72 swift::performTypeChecking(swift::SourceFile&) + 114
19 swift-frontend 0x0000000100608939 swift::CompilerInstance::performSema() + 217
20 swift-frontend 0x000000010058bd67 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 4711
21 swift-frontend 0x000000010052206a swift::mainEntry(int, char const**) + 3082
22 dyld 0x000000010b74452e start + 462
Describe the bug This code causes segmentation fault.
Expected behavior shows diagnose error such as
error: property wrapper attribute on parameter not yet supported on subscript
or passes value normally.Environment (please fill out the following information)
Additional context If you comment out
init(projectedValue:)
, there is no problem.rdar://100220156