From 4cc9ea5ed427215488445b697309c4ca73037b11 Mon Sep 17 00:00:00 2001 From: Hamish Knight Date: Mon, 17 Nov 2025 13:09:17 +0000 Subject: [PATCH 1/2] [test] Update some crasher signatures --- ...cf.swift => ConformanceChecker-recordWitness-1f12cf.swift} | 2 +- ...wift => DeclContext-getDeclaredTypeInContext-dffa2c.swift} | 2 +- .../IDE/crashers/TypeChecker-typeCheckCondition-974abc.swift | 3 +++ .../TypeChecker-typeCheckStmtConditionElement-974abc.swift | 3 --- ...gChild-e4b31d.swift => ASTScopeImpl-addChild-e4b31d.swift} | 2 +- .../AbstractStorageDecl-mutability-98fb6d.swift | 4 ---- .../AvailabilityContext-forDeclSignature-6cbf07.swift | 4 ++++ validation-test/compiler_crashers/Decl-getLoc-6cbf07.swift | 4 ---- .../Expr-canAppendPostfixExpression-7e19cb.swift | 3 +++ ...ngOptionalUnwrapFailure-offerForceUnwrapFixIt-7e19cb.swift | 3 --- ...ertyWrapperAuxiliaryVariablesRequest-evaluate-98fb6d.swift | 4 ++++ .../compiler_crashers/SILGenBuilder-createEnum-845e70.swift | 3 +++ ...RequirementFailure-SameTypeRequirementFailure-438c8a.swift | 4 ---- .../SkipSameTypeRequirement-diagnose-438c8a.swift | 4 ++++ ...ift => TypeJoin-visitProtocolCompositionType-79ac90.swift} | 2 +- .../compiler_crashers/getSILValueOwnership-845e70.swift | 3 --- 16 files changed, 25 insertions(+), 25 deletions(-) rename validation-test/IDE/crashers/{ConformanceChecker-resolveWitnessViaLookup-1f12cf.swift => ConformanceChecker-recordWitness-1f12cf.swift} (53%) rename validation-test/IDE/crashers/{DeclContext-getDeclaredInterfaceType-dffa2c.swift => DeclContext-getDeclaredTypeInContext-dffa2c.swift} (61%) create mode 100644 validation-test/IDE/crashers/TypeChecker-typeCheckCondition-974abc.swift delete mode 100644 validation-test/IDE/crashers/TypeChecker-typeCheckStmtConditionElement-974abc.swift rename validation-test/compiler_crashers/{ASTScopeImpl-checkSourceRangeBeforeAddingChild-e4b31d.swift => ASTScopeImpl-addChild-e4b31d.swift} (53%) delete mode 100644 validation-test/compiler_crashers/AbstractStorageDecl-mutability-98fb6d.swift create mode 100644 validation-test/compiler_crashers/AvailabilityContext-forDeclSignature-6cbf07.swift delete mode 100644 validation-test/compiler_crashers/Decl-getLoc-6cbf07.swift create mode 100644 validation-test/compiler_crashers/Expr-canAppendPostfixExpression-7e19cb.swift delete mode 100644 validation-test/compiler_crashers/MissingOptionalUnwrapFailure-offerForceUnwrapFixIt-7e19cb.swift create mode 100644 validation-test/compiler_crashers/PropertyWrapperAuxiliaryVariablesRequest-evaluate-98fb6d.swift create mode 100644 validation-test/compiler_crashers/SILGenBuilder-createEnum-845e70.swift delete mode 100644 validation-test/compiler_crashers/SameTypeRequirementFailure-SameTypeRequirementFailure-438c8a.swift create mode 100644 validation-test/compiler_crashers/SkipSameTypeRequirement-diagnose-438c8a.swift rename validation-test/compiler_crashers/{TypeJoin-join-79ac90.swift => TypeJoin-visitProtocolCompositionType-79ac90.swift} (55%) delete mode 100644 validation-test/compiler_crashers/getSILValueOwnership-845e70.swift diff --git a/validation-test/IDE/crashers/ConformanceChecker-resolveWitnessViaLookup-1f12cf.swift b/validation-test/IDE/crashers/ConformanceChecker-recordWitness-1f12cf.swift similarity index 53% rename from validation-test/IDE/crashers/ConformanceChecker-resolveWitnessViaLookup-1f12cf.swift rename to validation-test/IDE/crashers/ConformanceChecker-recordWitness-1f12cf.swift index 3cd0d4ed79121..86f70bf40aef6 100644 --- a/validation-test/IDE/crashers/ConformanceChecker-resolveWitnessViaLookup-1f12cf.swift +++ b/validation-test/IDE/crashers/ConformanceChecker-recordWitness-1f12cf.swift @@ -1,4 +1,4 @@ -// {"kind":"complete","original":"0116e8cd","signature":"swift::ConformanceChecker::resolveWitnessViaLookup(swift::ValueDecl*)","signatureAssert":"Assertion failed: (Conformance->getWitnessUncached(requirement).getDecl() == match.Witness && \"Deduced different witnesses?\"), function recordWitness"} +// {"kind":"complete","original":"0116e8cd","signature":"swift::ConformanceChecker::recordWitness(swift::ValueDecl*, swift::RequirementMatch const&)","signatureAssert":"Assertion failed: (Conformance->getWitnessUncached(requirement).getDecl() == match.Witness && \"Deduced different witnesses?\"), function recordWitness"} // RUN: not --crash %target-swift-ide-test -code-completion -batch-code-completion -skip-filecheck -code-completion-diagnostics -source-filename %s struct a: OptionSet { static rawValue = a init(rawValue: Int ) { diff --git a/validation-test/IDE/crashers/DeclContext-getDeclaredInterfaceType-dffa2c.swift b/validation-test/IDE/crashers/DeclContext-getDeclaredTypeInContext-dffa2c.swift similarity index 61% rename from validation-test/IDE/crashers/DeclContext-getDeclaredInterfaceType-dffa2c.swift rename to validation-test/IDE/crashers/DeclContext-getDeclaredTypeInContext-dffa2c.swift index 39bec6441535a..fa2956c78298c 100644 --- a/validation-test/IDE/crashers/DeclContext-getDeclaredInterfaceType-dffa2c.swift +++ b/validation-test/IDE/crashers/DeclContext-getDeclaredTypeInContext-dffa2c.swift @@ -1,4 +1,4 @@ -// {"kind":"complete","original":"7f4bcc9e","signature":"swift::DeclContext::getDeclaredInterfaceType() const","signatureAssert":"Assertion failed: (detail::isPresent(Val) && \"dyn_cast on a non-existent value\"), function dyn_cast"} +// {"kind":"complete","original":"7f4bcc9e","signature":"swift::DeclContext::getDeclaredTypeInContext() const"} // RUN: not --crash %target-swift-ide-test -code-completion -batch-code-completion -skip-filecheck -code-completion-diagnostics -source-filename %s extension Sequence where a == b[ { func c() -> #^^# diff --git a/validation-test/IDE/crashers/TypeChecker-typeCheckCondition-974abc.swift b/validation-test/IDE/crashers/TypeChecker-typeCheckCondition-974abc.swift new file mode 100644 index 0000000000000..19469f1f5769e --- /dev/null +++ b/validation-test/IDE/crashers/TypeChecker-typeCheckCondition-974abc.swift @@ -0,0 +1,3 @@ +// {"kind":"complete","original":"e6459edc","signature":"swift::TypeChecker::typeCheckCondition(swift::Expr*&, swift::DeclContext*)","signatureAssert":"Assertion failed: (!expr->getType() && \"the bool condition is already type checked\"), function typeCheckCondition"} +// RUN: not --crash %target-swift-ide-test -code-completion -batch-code-completion -skip-filecheck -code-completion-diagnostics -source-filename %s +(if) {}#^^# diff --git a/validation-test/IDE/crashers/TypeChecker-typeCheckStmtConditionElement-974abc.swift b/validation-test/IDE/crashers/TypeChecker-typeCheckStmtConditionElement-974abc.swift deleted file mode 100644 index 27eec93a624ef..0000000000000 --- a/validation-test/IDE/crashers/TypeChecker-typeCheckStmtConditionElement-974abc.swift +++ /dev/null @@ -1,3 +0,0 @@ -// {"kind":"complete","original":"e6459edc","signature":"swift::TypeChecker::typeCheckStmtConditionElement(swift::StmtConditionElement&, bool&, swift::DeclContext*)","signatureAssert":"Assertion failed: (!E->getType() && \"the bool condition is already type checked\"), function typeCheckBooleanStmtConditionElement"} -// RUN: not --crash %target-swift-ide-test -code-completion -batch-code-completion -skip-filecheck -code-completion-diagnostics -source-filename %s -(if) {}#^^# diff --git a/validation-test/compiler_crashers/ASTScopeImpl-checkSourceRangeBeforeAddingChild-e4b31d.swift b/validation-test/compiler_crashers/ASTScopeImpl-addChild-e4b31d.swift similarity index 53% rename from validation-test/compiler_crashers/ASTScopeImpl-checkSourceRangeBeforeAddingChild-e4b31d.swift rename to validation-test/compiler_crashers/ASTScopeImpl-addChild-e4b31d.swift index 1f25dfc00dc3c..73f1dfffbbf98 100644 --- a/validation-test/compiler_crashers/ASTScopeImpl-checkSourceRangeBeforeAddingChild-e4b31d.swift +++ b/validation-test/compiler_crashers/ASTScopeImpl-addChild-e4b31d.swift @@ -1,4 +1,4 @@ -// {"kind":"typecheck","original":"cb3e622a","signature":"swift::ast_scope::ASTScopeImpl::checkSourceRangeBeforeAddingChild(swift::ast_scope::ASTScopeImpl*, swift::ASTContext const&) const"} +// {"kind":"typecheck","original":"cb3e622a","signature":"swift::ast_scope::ASTScopeImpl::addChild(swift::ast_scope::ASTScopeImpl*, swift::ASTContext&)"} // RUN: not --crash %target-swift-frontend -typecheck %s { let a, diff --git a/validation-test/compiler_crashers/AbstractStorageDecl-mutability-98fb6d.swift b/validation-test/compiler_crashers/AbstractStorageDecl-mutability-98fb6d.swift deleted file mode 100644 index dc7c7135c2f1f..0000000000000 --- a/validation-test/compiler_crashers/AbstractStorageDecl-mutability-98fb6d.swift +++ /dev/null @@ -1,4 +0,0 @@ -// {"kind":"typecheck","signature":"swift::AbstractStorageDecl::mutability(swift::DeclContext const*, std::__1::optional) const","signatureAssert":"Assertion failed: (detail::isPresent(Val) && \"dyn_cast on a non-existent value\"), function dyn_cast"} -// RUN: not --crash %target-swift-frontend -typecheck %s -@propertyWrapper struct a { - @a $b: diff --git a/validation-test/compiler_crashers/AvailabilityContext-forDeclSignature-6cbf07.swift b/validation-test/compiler_crashers/AvailabilityContext-forDeclSignature-6cbf07.swift new file mode 100644 index 0000000000000..d302199c16b89 --- /dev/null +++ b/validation-test/compiler_crashers/AvailabilityContext-forDeclSignature-6cbf07.swift @@ -0,0 +1,4 @@ +// {"kind":"typecheck","signature":"swift::AvailabilityContext::forDeclSignature(swift::Decl const*)"} +// RUN: not --crash %target-swift-frontend -typecheck %s +@_typeEraser(a) protocol b dynamic func c->some b { + d diff --git a/validation-test/compiler_crashers/Decl-getLoc-6cbf07.swift b/validation-test/compiler_crashers/Decl-getLoc-6cbf07.swift deleted file mode 100644 index 2f219dd0663d6..0000000000000 --- a/validation-test/compiler_crashers/Decl-getLoc-6cbf07.swift +++ /dev/null @@ -1,4 +0,0 @@ -// {"kind":"typecheck","signature":"swift::Decl::getLoc(bool) const","signatureAssert":"Assertion failed: (Val && \"isa<> used on a null pointer\"), function doit"} -// RUN: not --crash %target-swift-frontend -typecheck %s -@_typeEraser(a) protocol b dynamic func c->some b { - d diff --git a/validation-test/compiler_crashers/Expr-canAppendPostfixExpression-7e19cb.swift b/validation-test/compiler_crashers/Expr-canAppendPostfixExpression-7e19cb.swift new file mode 100644 index 0000000000000..e6e9dea3bc1f4 --- /dev/null +++ b/validation-test/compiler_crashers/Expr-canAppendPostfixExpression-7e19cb.swift @@ -0,0 +1,3 @@ +// {"kind":"typecheck","signature":"swift::Expr::canAppendPostfixExpression(bool) const","signatureAssert":"Assertion failed: (isa(Val) && \"cast() argument of incompatible type!\"), function cast"} +// RUN: not --crash %target-swift-frontend -typecheck %s +struct a(Val) && \"cast() argument of incompatible type!\"), function cast"} -// RUN: not --crash %target-swift-frontend -typecheck %s -struct agetType().isObject()), function operator()"} +// RUN: not --crash %target-swift-frontend -emit-silgen %s +var a: Any = ["": [a]] as [String: [AnyObject?]] diff --git a/validation-test/compiler_crashers/SameTypeRequirementFailure-SameTypeRequirementFailure-438c8a.swift b/validation-test/compiler_crashers/SameTypeRequirementFailure-SameTypeRequirementFailure-438c8a.swift deleted file mode 100644 index a92dbfa98b075..0000000000000 --- a/validation-test/compiler_crashers/SameTypeRequirementFailure-SameTypeRequirementFailure-438c8a.swift +++ /dev/null @@ -1,4 +0,0 @@ -// {"kind":"typecheck","signature":"swift::constraints::SameTypeRequirementFailure::SameTypeRequirementFailure(swift::constraints::Solution const&, swift::Type, swift::Type, swift::constraints::ConstraintLocator*)","signatureAssert":"Assertion failed: (getGenericContext() && \"Affected decl not within a generic context?\"), function RequirementFailure"} -// RUN: not --crash %target-swift-frontend -typecheck %s -protocol a struct b extension Dictionary : a where Value == let func !c { - let d : [Int:b] let : a = d diff --git a/validation-test/compiler_crashers/SkipSameTypeRequirement-diagnose-438c8a.swift b/validation-test/compiler_crashers/SkipSameTypeRequirement-diagnose-438c8a.swift new file mode 100644 index 0000000000000..d9d13232b9c2f --- /dev/null +++ b/validation-test/compiler_crashers/SkipSameTypeRequirement-diagnose-438c8a.swift @@ -0,0 +1,4 @@ +// {"kind":"typecheck","signature":"swift::constraints::SkipSameTypeRequirement::diagnose(swift::constraints::Solution const&, bool) const","signatureAssert":"Assertion failed: (getGenericContext() && \"Affected decl not within a generic context?\"), function RequirementFailure"} +// RUN: not --crash %target-swift-frontend -typecheck %s +protocol a struct b extension Dictionary : a where Value == let func !c { + let d : [Int:b] let : a = d diff --git a/validation-test/compiler_crashers/TypeJoin-join-79ac90.swift b/validation-test/compiler_crashers/TypeJoin-visitProtocolCompositionType-79ac90.swift similarity index 55% rename from validation-test/compiler_crashers/TypeJoin-join-79ac90.swift rename to validation-test/compiler_crashers/TypeJoin-visitProtocolCompositionType-79ac90.swift index 6c9312b6ea284..95cb4ebd5d81c 100644 --- a/validation-test/compiler_crashers/TypeJoin-join-79ac90.swift +++ b/validation-test/compiler_crashers/TypeJoin-visitProtocolCompositionType-79ac90.swift @@ -1,4 +1,4 @@ -// {"kind":"typecheck","signature":"(anonymous namespace)::TypeJoin::join(swift::CanType, swift::CanType)","signatureAssert":"Assertion failed: (isa(Val) && \"cast() argument of incompatible type!\"), function cast"} +// {"kind":"typecheck","signature":"(anonymous namespace)::TypeJoin::visitProtocolCompositionType(swift::CanType)","signatureAssert":"Assertion failed: (isa(Val) && \"cast() argument of incompatible type!\"), function cast"} // RUN: not --crash %target-swift-frontend -typecheck %s class a protocol b < c { associatedtype c } [ b, a & b diff --git a/validation-test/compiler_crashers/getSILValueOwnership-845e70.swift b/validation-test/compiler_crashers/getSILValueOwnership-845e70.swift deleted file mode 100644 index 7869ff251a9de..0000000000000 --- a/validation-test/compiler_crashers/getSILValueOwnership-845e70.swift +++ /dev/null @@ -1,3 +0,0 @@ -// {"kind":"emit-silgen","original":"7b4a72a9","signature":"swift::getSILValueOwnership(llvm::ArrayRef, swift::SILType)","signatureAssert":"Assertion failed: (v->getType().isObject()), function operator()"} -// RUN: not --crash %target-swift-frontend -emit-silgen %s -var a: Any = ["": [a]] as [String: [AnyObject?]] From 86f8e224945cd316755d5d992004b2a3d4915b02 Mon Sep 17 00:00:00 2001 From: Hamish Knight Date: Mon, 17 Nov 2025 13:09:17 +0000 Subject: [PATCH 2/2] [test] Add some more known crashers --- ...CompletionCallbacksImpl-typecheckParsedType-571e84.swift | 3 +++ .../IDE/crashers/CompletionLookup-foundDecl-b8e9b2.swift | 5 +++++ .../crashers/ConstraintGenerator-visitTapExpr-bdb91a.swift | 3 +++ .../TypeResolution-resolveContextualType-1d60f3.swift | 4 ++++ .../ConstraintGraph-computeConnectedComponents-37d275.swift | 3 +++ .../ExprRewriter-visitPackExpansionExpr-e056c8.swift | 5 +++++ .../Solution-getFunctionArgApplyInfo-2d64ed.swift | 6 ++++++ 7 files changed, 29 insertions(+) create mode 100644 validation-test/IDE/crashers/CodeCompletionCallbacksImpl-typecheckParsedType-571e84.swift create mode 100644 validation-test/IDE/crashers/CompletionLookup-foundDecl-b8e9b2.swift create mode 100644 validation-test/IDE/crashers/ConstraintGenerator-visitTapExpr-bdb91a.swift create mode 100644 validation-test/IDE/crashers/TypeResolution-resolveContextualType-1d60f3.swift create mode 100644 validation-test/compiler_crashers/ConstraintGraph-computeConnectedComponents-37d275.swift create mode 100644 validation-test/compiler_crashers/ExprRewriter-visitPackExpansionExpr-e056c8.swift create mode 100644 validation-test/compiler_crashers/Solution-getFunctionArgApplyInfo-2d64ed.swift diff --git a/validation-test/IDE/crashers/CodeCompletionCallbacksImpl-typecheckParsedType-571e84.swift b/validation-test/IDE/crashers/CodeCompletionCallbacksImpl-typecheckParsedType-571e84.swift new file mode 100644 index 0000000000000..f8d2a72dd84d9 --- /dev/null +++ b/validation-test/IDE/crashers/CodeCompletionCallbacksImpl-typecheckParsedType-571e84.swift @@ -0,0 +1,3 @@ +// {"kind":"complete","original":"00fc7609","signature":"(anonymous namespace)::CodeCompletionCallbacksImpl::typecheckParsedType()","signatureAssert":"Assertion failed: (!type->hasTypeParameter() && \"no generic environment provided for type with type parameters\"), function mapTypeIntoEnvironment"} +// RUN: not --crash %target-swift-ide-test -code-completion -batch-code-completion -skip-filecheck -code-completion-diagnostics -source-filename %s +protocol a:Self#^^# diff --git a/validation-test/IDE/crashers/CompletionLookup-foundDecl-b8e9b2.swift b/validation-test/IDE/crashers/CompletionLookup-foundDecl-b8e9b2.swift new file mode 100644 index 0000000000000..7435d48f77ee9 --- /dev/null +++ b/validation-test/IDE/crashers/CompletionLookup-foundDecl-b8e9b2.swift @@ -0,0 +1,5 @@ +// {"kind":"complete","original":"0435fa64","signature":"swift::ide::CompletionLookup::foundDecl(swift::ValueDecl*, swift::DeclVisibilityKind, swift::DynamicLookupInfo)","signatureAssert":"Assertion failed: (!type->hasTypeParameter() && \"no generic environment provided for type with type parameters\"), function mapTypeIntoEnvironment"} +// RUN: not --crash %target-swift-ide-test -code-completion -batch-code-completion -skip-filecheck -code-completion-diagnostics -source-filename %s +extension Sequence where a == <#type#>[ { + #^^# +} diff --git a/validation-test/IDE/crashers/ConstraintGenerator-visitTapExpr-bdb91a.swift b/validation-test/IDE/crashers/ConstraintGenerator-visitTapExpr-bdb91a.swift new file mode 100644 index 0000000000000..5fe99e84bc10b --- /dev/null +++ b/validation-test/IDE/crashers/ConstraintGenerator-visitTapExpr-bdb91a.swift @@ -0,0 +1,3 @@ +// {"kind":"complete","original":"bcb7c8c1","signature":"(anonymous namespace)::ConstraintGenerator::visitTapExpr(swift::TapExpr*)","signatureAssert":"Assertion failed: ((varDC == CS.DC || isa(varDC) || varDC->isChildContextOf(CS.DC)) && \"TapExpr var should be in the same DeclContext we're checking it in!\"), function visitTapExpr"} +// RUN: not --crash %target-swift-ide-test -code-completion -batch-code-completion -skip-filecheck -code-completion-diagnostics -source-filename %s +func a -> @b("\()." #^^# diff --git a/validation-test/IDE/crashers/TypeResolution-resolveContextualType-1d60f3.swift b/validation-test/IDE/crashers/TypeResolution-resolveContextualType-1d60f3.swift new file mode 100644 index 0000000000000..9e22f444215ad --- /dev/null +++ b/validation-test/IDE/crashers/TypeResolution-resolveContextualType-1d60f3.swift @@ -0,0 +1,4 @@ +// {"kind":"complete","original":"d73870ca","signature":"swift::TypeResolution::resolveContextualType(swift::TypeRepr*, swift::DeclContext*, swift::GenericSignature, swift::TypeResolutionOptions, llvm::function_ref, llvm::function_ref, llvm::function_ref, llvm::function_ref)>, swift::SILTypeResolutionContext*)","signatureAssert":"Assertion failed: (!type->hasTypeParameter() && \"no generic environment provided for type with type parameters\"), function mapTypeIntoEnvironment"} +// RUN: not --crash %target-swift-ide-test -code-completion -batch-code-completion -skip-filecheck -code-completion-diagnostics -source-filename %s +@ a(b +#^^# struct c)","signatureAssert":"Assertion failed: (component != components.end()), function operator()"} +// RUN: not --crash %target-swift-frontend -typecheck %s +let i =... a { " ? \(i Array* )" [ diff --git a/validation-test/compiler_crashers/ExprRewriter-visitPackExpansionExpr-e056c8.swift b/validation-test/compiler_crashers/ExprRewriter-visitPackExpansionExpr-e056c8.swift new file mode 100644 index 0000000000000..95ddf1b6f68de --- /dev/null +++ b/validation-test/compiler_crashers/ExprRewriter-visitPackExpansionExpr-e056c8.swift @@ -0,0 +1,5 @@ +// {"kind":"typecheck","original":"ee11d1cb","signature":"(anonymous namespace)::ExprRewriter::visitPackExpansionExpr(swift::PackExpansionExpr*)","signatureAssert":"Assertion failed: (environment), function visitPackExpansionExpr"} +// RUN: not --crash %target-swift-frontend -typecheck %s +{ + repeat [each $0] +} diff --git a/validation-test/compiler_crashers/Solution-getFunctionArgApplyInfo-2d64ed.swift b/validation-test/compiler_crashers/Solution-getFunctionArgApplyInfo-2d64ed.swift new file mode 100644 index 0000000000000..de5222f4449bf --- /dev/null +++ b/validation-test/compiler_crashers/Solution-getFunctionArgApplyInfo-2d64ed.swift @@ -0,0 +1,6 @@ +// {"kind":"typecheck","signature":"swift::constraints::Solution::getFunctionArgApplyInfo(swift::constraints::ConstraintLocator*) const","signatureAssert":"Assertion failed: (Val && \"isa<> used on a null pointer\"), function doit"} +// RUN: not --crash %target-swift-frontend -typecheck %s +struct a { + callAsFunction( ()) + { + a {