Skip to content

Conversation

@slavapestov
Copy link
Contributor

Doing this when computing a canonical signature didn't really
make sense because canonical signatures are not canonicalized
any more strongly with respect to the builder; they just
canonicalize their requirement types.

Instead, let's do these checks after creating the signature in
computeGenericSignature().

The old behavior had another undesirable property; since the
canonicalization was done by registerGenericSignatureBuilder(),
we would always build a new GSB from scratch for every
signature we compute.

The new location also means we do these checks for protocol
requirement signatures as well. This flags an existing fixed
crasher where we still emit bogus same-type requirements in
the requirement signature, so I moved this test back into
an unfixed state.

…al() to computeGenericSignature()

Doing this when computing a canonical signature didn't really
make sense because canonical signatures are not canonicalized
any more strongly _with respect to the builder_; they just
canonicalize their requirement types.

Instead, let's do these checks after creating the signature in
computeGenericSignature().

The old behavior had another undesirable property; since the
canonicalization was done by registerGenericSignatureBuilder(),
we would always build a new GSB from scratch for every
signature we compute.

The new location also means we do these checks for protocol
requirement signatures as well. This flags an existing fixed
crasher where we still emit bogus same-type requirements in
the requirement signature, so I moved this test back into
an unfixed state.
@slavapestov
Copy link
Contributor Author

@swift-ci Please smoke test

@slavapestov
Copy link
Contributor Author

@swift-ci Please test source compatibility

@davezarzycki
Copy link
Contributor

I looked more into why this PR is regressing on my linux box. This might be helpful:

 $ /home/dave/b/u/t/bin/swift-frontend -target x86_64-unknown-linux-gnu  -module-cache-path /home/dave/b/u/t/swift-test-results/x86_64-unknown-linux-gnu/clang-module-cache -swift-version 4  -ignore-module-source-info  -typo-correction-limit 10  -typecheck -debug-generic-signatures /home/dave/ro_s/u/swift/test/Generics/sr11153.swift 2>&1

0x7fb2f90 Module name=sr11153
  0x7fb3340 FileUnit file="/home/dave/ro_s/u/swift/test/Generics/sr11153.swift"
    0x7fb3790 ProtocolDecl name=VectorSpace
Generic signature: <Self where Self : VectorSpace>
Canonical generic signature: <τ_0_0 where τ_0_0 : VectorSpace>

0x7fb2f90 Module name=sr11153
  0x7fb3340 FileUnit file="/home/dave/ro_s/u/swift/test/Generics/sr11153.swift"
    0x7fb3ad8 ProtocolDecl name=FieldAlgebra
Generic signature: <Self where Self : FieldAlgebra>
Canonical generic signature: <τ_0_0 where τ_0_0 : FieldAlgebra>

0x7fb2f90 Module name=sr11153
  0x7fb3340 FileUnit file="/home/dave/ro_s/u/swift/test/Generics/sr11153.swift"
    0x7fbc3f0 ProtocolDecl name=ComparableFieldAlgebra
Generic signature: <Self where Self : ComparableFieldAlgebra>
Canonical generic signature: <τ_0_0 where τ_0_0 : ComparableFieldAlgebra>
swift-frontend: /home/dave/ro_s/u/swift/lib/AST/GenericSignatureBuilder.cpp:8003: void checkGenericSignature(swift::CanGenericSignature, swift::GenericSignatureBuilder &): Assertion `isCanonicalAnchor(secondType)' failed.
Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the project and the crash backtrace.
Stack dump:
0.      Program arguments: /home/dave/b/u/t/bin/swift-frontend -target x86_64-unknown-linux-gnu -module-cache-path /home/dave/b/u/t/swift-test-results/x86_64-unknown-linux-gnu/clang-module-cache -swift-version 4 -ignore-module-source-info -typo-correction-limit 10 -typecheck -debug-generic-signatures /home/dave/ro_s/u/swift/test/Generics/sr11153.swift
1.      Swift version 5.4-dev (LLVM 60aeeb77db0f1c4, Swift 6f4f9f8c0f7afc8)
2.      While evaluating request TypeCheckSourceFileRequest(source_file "/home/dave/ro_s/u/swift/test/Generics/sr11153.swift")
3.      While type-checking 'VectorSpace' (at /home/dave/ro_s/u/swift/test/Generics/sr11153.swift:5:8)
4.      While evaluating request RequirementSignatureRequest(sr11153.(file).VectorSpace@/home/dave/ro_s/u/swift/test/Generics/sr11153.swift:5:17)
5.      While evaluating request RequirementSignatureRequest(sr11153.(file).FieldAlgebra@/home/dave/ro_s/u/swift/test/Generics/sr11153.swift:10:17)
6.      While evaluating request RequirementSignatureRequest(sr11153.(file).ComparableFieldAlgebra@/home/dave/ro_s/u/swift/test/Generics/sr11153.swift:16:17)
7.      While checking generic signature <τ_0_0 where τ_0_0 : FieldAlgebra, τ_0_0 == τ_0_0.ComparableSubalgebra, τ_0_0.ComparableSubalgebra == τ_0_0.Field.ComparableSubalgebra, τ_0_0.Field.ComparableSubalgebra == τ_0_0.Field.ComparableSubalgebra.ComparableSubalgebra> in requirement #2
 #0 0x0000000007781419 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/dave/b/u/t/bin/swift-frontend+0x7781419)
 #1 0x000000000777f757 llvm::sys::RunSignalHandlers() (/home/dave/b/u/t/bin/swift-frontend+0x777f757)
 #2 0x00000000077817ea SignalHandler(int) Signals.cpp:0:0
 #3 0x00007ffff7fa11e0 __restore_rt sigaction.c:0:0
 #4 0x00007ffff7b429d5 raise (/lib64/libc.so.6+0x3d9d5)
 #5 0x00007ffff7b2b8a4 abort (/lib64/libc.so.6+0x268a4)
 #6 0x00007ffff7b2b789 _nl_load_domain.cold loadmsgcat.c:0:0
 #7 0x00007ffff7b3b026 .annobin___GI___assert_fail.end assert.c:0:0
 #8 0x0000000003e3ab7e swift::GenericSignatureBuilder::computeGenericSignature(bool, bool) && (/home/dave/b/u/t/bin/swift-frontend+0x3e3ab7e)
 #9 0x00000000039a4f48 swift::RequirementSignatureRequest::evaluate(swift::Evaluator&, swift::ProtocolDecl*) const (/home/dave/b/u/t/bin/swift-frontend+0x39a4f48)
#10 0x0000000003d83f48 llvm::Expected<swift::RequirementSignatureRequest::OutputType> swift::Evaluator::getResultUncached<swift::RequirementSignatureRequest>(swift::RequirementSignatureRequest const&) Decl.cpp:0:0
#11 0x0000000003d83d53 llvm::Expected<swift::RequirementSignatureRequest::OutputType> swift::Evaluator::getResultCached<swift::RequirementSignatureRequest, (void*)0>(swift::RequirementSignatureRequest const&) Decl.cpp:0:0
#12 0x0000000003d094f8 swift::RequirementSignatureRequest::OutputType swift::evaluateOrDefault<swift::RequirementSignatureRequest>(swift::Evaluator&, swift::RequirementSignatureRequest, swift::RequirementSignatureRequest::OutputType) (/home/dave/b/u/t/bin/swift-frontend+0x3d094f8)
#13 0x0000000003e2803d swift::GenericSignatureBuilder::expandConformanceRequirement(swift::GenericSignatureBuilder::ResolvedType, swift::ProtocolDecl*, swift::GenericSignatureBuilder::RequirementSource const*, bool) (/home/dave/b/u/t/bin/swift-frontend+0x3e2803d)
#14 0x0000000003e2b28c swift::GenericSignatureBuilder::addTypeRequirement(llvm::PointerUnion<swift::GenericSignatureBuilder::PotentialArchetype*, swift::Type>, llvm::PointerUnion<swift::GenericSignatureBuilder::PotentialArchetype*, swift::Type>, swift::GenericSignatureBuilder::FloatingRequirementSource, swift::GenericSignatureBuilder::UnresolvedHandlingKind, swift::ModuleDecl*) (/home/dave/b/u/t/bin/swift-frontend+0x3e2b28c)
#15 0x0000000003e4ae68 swift::GenericSignatureBuilder::ConstraintResult llvm::function_ref<swift::GenericSignatureBuilder::ConstraintResult (swift::Type, swift::TypeRepr const*)>::callback_fn<swift::GenericSignatureBuilder::addInheritedRequirements(swift::TypeDecl*, llvm::PointerUnion<swift::GenericSignatureBuilder::PotentialArchetype*, swift::Type>, swift::GenericSignatureBuilder::RequirementSource const*, swift::ModuleDecl*)::$_29>(long, swift::Type, swift::TypeRepr const*) GenericSignatureBuilder.cpp:0:0
#16 0x0000000003e426bc std::__1::__function::__func<visitInherited(llvm::PointerUnion<swift::TypeDecl const*, swift::ExtensionDecl const*>, llvm::function_ref<swift::GenericSignatureBuilder::ConstraintResult (swift::Type, swift::TypeRepr const*)>)::$_72, std::__1::allocator<visitInherited(llvm::PointerUnion<swift::TypeDecl const*, swift::ExtensionDecl const*>, llvm::function_ref<swift::GenericSignatureBuilder::ConstraintResult (swift::Type, swift::TypeRepr const*)>)::$_72>, void (swift::Type, swift::TypeRepr const*)>::operator()(swift::Type&&, swift::TypeRepr const*&&) GenericSignatureBuilder.cpp:0:0
#17 0x0000000003e27dc7 swift::GenericSignatureBuilder::addInheritedRequirements(swift::TypeDecl*, llvm::PointerUnion<swift::GenericSignatureBuilder::PotentialArchetype*, swift::Type>, swift::GenericSignatureBuilder::RequirementSource const*, swift::ModuleDecl*) (/home/dave/b/u/t/bin/swift-frontend+0x3e27dc7)
#18 0x0000000003e28334 swift::GenericSignatureBuilder::expandConformanceRequirement(swift::GenericSignatureBuilder::ResolvedType, swift::ProtocolDecl*, swift::GenericSignatureBuilder::RequirementSource const*, bool) (/home/dave/b/u/t/bin/swift-frontend+0x3e28334)
#19 0x0000000003e2b28c swift::GenericSignatureBuilder::addTypeRequirement(llvm::PointerUnion<swift::GenericSignatureBuilder::PotentialArchetype*, swift::Type>, llvm::PointerUnion<swift::GenericSignatureBuilder::PotentialArchetype*, swift::Type>, swift::GenericSignatureBuilder::FloatingRequirementSource, swift::GenericSignatureBuilder::UnresolvedHandlingKind, swift::ModuleDecl*) (/home/dave/b/u/t/bin/swift-frontend+0x3e2b28c)
#20 0x0000000003e4ae68 swift::GenericSignatureBuilder::ConstraintResult llvm::function_ref<swift::GenericSignatureBuilder::ConstraintResult (swift::Type, swift::TypeRepr const*)>::callback_fn<swift::GenericSignatureBuilder::addInheritedRequirements(swift::TypeDecl*, llvm::PointerUnion<swift::GenericSignatureBuilder::PotentialArchetype*, swift::Type>, swift::GenericSignatureBuilder::RequirementSource const*, swift::ModuleDecl*)::$_29>(long, swift::Type, swift::TypeRepr const*) GenericSignatureBuilder.cpp:0:0
#21 0x0000000003e426bc std::__1::__function::__func<visitInherited(llvm::PointerUnion<swift::TypeDecl const*, swift::ExtensionDecl const*>, llvm::function_ref<swift::GenericSignatureBuilder::ConstraintResult (swift::Type, swift::TypeRepr const*)>)::$_72, std::__1::allocator<visitInherited(llvm::PointerUnion<swift::TypeDecl const*, swift::ExtensionDecl const*>, llvm::function_ref<swift::GenericSignatureBuilder::ConstraintResult (swift::Type, swift::TypeRepr const*)>)::$_72>, void (swift::Type, swift::TypeRepr const*)>::operator()(swift::Type&&, swift::TypeRepr const*&&) GenericSignatureBuilder.cpp:0:0
#22 0x0000000003e27dc7 swift::GenericSignatureBuilder::addInheritedRequirements(swift::TypeDecl*, llvm::PointerUnion<swift::GenericSignatureBuilder::PotentialArchetype*, swift::Type>, swift::GenericSignatureBuilder::RequirementSource const*, swift::ModuleDecl*) (/home/dave/b/u/t/bin/swift-frontend+0x3e27dc7)
#23 0x0000000003e28334 swift::GenericSignatureBuilder::expandConformanceRequirement(swift::GenericSignatureBuilder::ResolvedType, swift::ProtocolDecl*, swift::GenericSignatureBuilder::RequirementSource const*, bool) (/home/dave/b/u/t/bin/swift-frontend+0x3e28334)
#24 0x0000000003e2b28c swift::GenericSignatureBuilder::addTypeRequirement(llvm::PointerUnion<swift::GenericSignatureBuilder::PotentialArchetype*, swift::Type>, llvm::PointerUnion<swift::GenericSignatureBuilder::PotentialArchetype*, swift::Type>, swift::GenericSignatureBuilder::FloatingRequirementSource, swift::GenericSignatureBuilder::UnresolvedHandlingKind, swift::ModuleDecl*) (/home/dave/b/u/t/bin/swift-frontend+0x3e2b28c)
#25 0x0000000003e4ae68 swift::GenericSignatureBuilder::ConstraintResult llvm::function_ref<swift::GenericSignatureBuilder::ConstraintResult (swift::Type, swift::TypeRepr const*)>::callback_fn<swift::GenericSignatureBuilder::addInheritedRequirements(swift::TypeDecl*, llvm::PointerUnion<swift::GenericSignatureBuilder::PotentialArchetype*, swift::Type>, swift::GenericSignatureBuilder::RequirementSource const*, swift::ModuleDecl*)::$_29>(long, swift::Type, swift::TypeRepr const*) GenericSignatureBuilder.cpp:0:0
#26 0x0000000003e426bc std::__1::__function::__func<visitInherited(llvm::PointerUnion<swift::TypeDecl const*, swift::ExtensionDecl const*>, llvm::function_ref<swift::GenericSignatureBuilder::ConstraintResult (swift::Type, swift::TypeRepr const*)>)::$_72, std::__1::allocator<visitInherited(llvm::PointerUnion<swift::TypeDecl const*, swift::ExtensionDecl const*>, llvm::function_ref<swift::GenericSignatureBuilder::ConstraintResult (swift::Type, swift::TypeRepr const*)>)::$_72>, void (swift::Type, swift::TypeRepr const*)>::operator()(swift::Type&&, swift::TypeRepr const*&&) GenericSignatureBuilder.cpp:0:0
#27 0x0000000003e27dc7 swift::GenericSignatureBuilder::addInheritedRequirements(swift::TypeDecl*, llvm::PointerUnion<swift::GenericSignatureBuilder::PotentialArchetype*, swift::Type>, swift::GenericSignatureBuilder::RequirementSource const*, swift::ModuleDecl*) (/home/dave/b/u/t/bin/swift-frontend+0x3e27dc7)
#28 0x0000000003e2815f swift::GenericSignatureBuilder::expandConformanceRequirement(swift::GenericSignatureBuilder::ResolvedType, swift::ProtocolDecl*, swift::GenericSignatureBuilder::RequirementSource const*, bool) (/home/dave/b/u/t/bin/swift-frontend+0x3e2815f)
#29 0x0000000003e2b28c swift::GenericSignatureBuilder::addTypeRequirement(llvm::PointerUnion<swift::GenericSignatureBuilder::PotentialArchetype*, swift::Type>, llvm::PointerUnion<swift::GenericSignatureBuilder::PotentialArchetype*, swift::Type>, swift::GenericSignatureBuilder::FloatingRequirementSource, swift::GenericSignatureBuilder::UnresolvedHandlingKind, swift::ModuleDecl*) (/home/dave/b/u/t/bin/swift-frontend+0x3e2b28c)
#30 0x0000000003e1f0af swift::GenericSignatureBuilder::addRequirement(swift::Requirement const&, swift::RequirementRepr const*, swift::GenericSignatureBuilder::FloatingRequirementSource, swift::SubstitutionMap const*, swift::ModuleDecl*) (/home/dave/b/u/t/bin/swift-frontend+0x3e1f0af)
#31 0x00000000039a4f38 swift::RequirementSignatureRequest::evaluate(swift::Evaluator&, swift::ProtocolDecl*) const (/home/dave/b/u/t/bin/swift-frontend+0x39a4f38)
#32 0x0000000003d83f48 llvm::Expected<swift::RequirementSignatureRequest::OutputType> swift::Evaluator::getResultUncached<swift::RequirementSignatureRequest>(swift::RequirementSignatureRequest const&) Decl.cpp:0:0
#33 0x0000000003d83d53 llvm::Expected<swift::RequirementSignatureRequest::OutputType> swift::Evaluator::getResultCached<swift::RequirementSignatureRequest, (void*)0>(swift::RequirementSignatureRequest const&) Decl.cpp:0:0
#34 0x0000000003d094f8 swift::RequirementSignatureRequest::OutputType swift::evaluateOrDefault<swift::RequirementSignatureRequest>(swift::Evaluator&, swift::RequirementSignatureRequest, swift::RequirementSignatureRequest::OutputType) (/home/dave/b/u/t/bin/swift-frontend+0x3d094f8)
#35 0x0000000003e2803d swift::GenericSignatureBuilder::expandConformanceRequirement(swift::GenericSignatureBuilder::ResolvedType, swift::ProtocolDecl*, swift::GenericSignatureBuilder::RequirementSource const*, bool) (/home/dave/b/u/t/bin/swift-frontend+0x3e2803d)
#36 0x0000000003e2b28c swift::GenericSignatureBuilder::addTypeRequirement(llvm::PointerUnion<swift::GenericSignatureBuilder::PotentialArchetype*, swift::Type>, llvm::PointerUnion<swift::GenericSignatureBuilder::PotentialArchetype*, swift::Type>, swift::GenericSignatureBuilder::FloatingRequirementSource, swift::GenericSignatureBuilder::UnresolvedHandlingKind, swift::ModuleDecl*) (/home/dave/b/u/t/bin/swift-frontend+0x3e2b28c)
#37 0x0000000003e4ae68 swift::GenericSignatureBuilder::ConstraintResult llvm::function_ref<swift::GenericSignatureBuilder::ConstraintResult (swift::Type, swift::TypeRepr const*)>::callback_fn<swift::GenericSignatureBuilder::addInheritedRequirements(swift::TypeDecl*, llvm::PointerUnion<swift::GenericSignatureBuilder::PotentialArchetype*, swift::Type>, swift::GenericSignatureBuilder::RequirementSource const*, swift::ModuleDecl*)::$_29>(long, swift::Type, swift::TypeRepr const*) GenericSignatureBuilder.cpp:0:0
#38 0x0000000003e426bc std::__1::__function::__func<visitInherited(llvm::PointerUnion<swift::TypeDecl const*, swift::ExtensionDecl const*>, llvm::function_ref<swift::GenericSignatureBuilder::ConstraintResult (swift::Type, swift::TypeRepr const*)>)::$_72, std::__1::allocator<visitInherited(llvm::PointerUnion<swift::TypeDecl const*, swift::ExtensionDecl const*>, llvm::function_ref<swift::GenericSignatureBuilder::ConstraintResult (swift::Type, swift::TypeRepr const*)>)::$_72>, void (swift::Type, swift::TypeRepr const*)>::operator()(swift::Type&&, swift::TypeRepr const*&&) GenericSignatureBuilder.cpp:0:0
#39 0x0000000003e27dc7 swift::GenericSignatureBuilder::addInheritedRequirements(swift::TypeDecl*, llvm::PointerUnion<swift::GenericSignatureBuilder::PotentialArchetype*, swift::Type>, swift::GenericSignatureBuilder::RequirementSource const*, swift::ModuleDecl*) (/home/dave/b/u/t/bin/swift-frontend+0x3e27dc7)
#40 0x0000000003e28334 swift::GenericSignatureBuilder::expandConformanceRequirement(swift::GenericSignatureBuilder::ResolvedType, swift::ProtocolDecl*, swift::GenericSignatureBuilder::RequirementSource const*, bool) (/home/dave/b/u/t/bin/swift-frontend+0x3e28334)
#41 0x0000000003e2b28c swift::GenericSignatureBuilder::addTypeRequirement(llvm::PointerUnion<swift::GenericSignatureBuilder::PotentialArchetype*, swift::Type>, llvm::PointerUnion<swift::GenericSignatureBuilder::PotentialArchetype*, swift::Type>, swift::GenericSignatureBuilder::FloatingRequirementSource, swift::GenericSignatureBuilder::UnresolvedHandlingKind, swift::ModuleDecl*) (/home/dave/b/u/t/bin/swift-frontend+0x3e2b28c)
#42 0x0000000003e1f0af swift::GenericSignatureBuilder::addRequirement(swift::Requirement const&, swift::RequirementRepr const*, swift::GenericSignatureBuilder::FloatingRequirementSource, swift::SubstitutionMap const*, swift::ModuleDecl*) (/home/dave/b/u/t/bin/swift-frontend+0x3e1f0af)
#43 0x00000000039a4f38 swift::RequirementSignatureRequest::evaluate(swift::Evaluator&, swift::ProtocolDecl*) const (/home/dave/b/u/t/bin/swift-frontend+0x39a4f38)
#44 0x0000000003d83f48 llvm::Expected<swift::RequirementSignatureRequest::OutputType> swift::Evaluator::getResultUncached<swift::RequirementSignatureRequest>(swift::RequirementSignatureRequest const&) Decl.cpp:0:0
#45 0x0000000003d83d53 llvm::Expected<swift::RequirementSignatureRequest::OutputType> swift::Evaluator::getResultCached<swift::RequirementSignatureRequest, (void*)0>(swift::RequirementSignatureRequest const&) Decl.cpp:0:0
#46 0x0000000003d094f8 swift::RequirementSignatureRequest::OutputType swift::evaluateOrDefault<swift::RequirementSignatureRequest>(swift::Evaluator&, swift::RequirementSignatureRequest, swift::RequirementSignatureRequest::OutputType) (/home/dave/b/u/t/bin/swift-frontend+0x3d094f8)
#47 0x00000000039ff303 (anonymous namespace)::DeclChecker::visit(swift::Decl*) TypeCheckDeclPrimary.cpp:0:0
#48 0x00000000039fe488 swift::TypeChecker::typeCheckDecl(swift::Decl*) (/home/dave/b/u/t/bin/swift-frontend+0x39fe488)
#49 0x0000000003aed298 swift::TypeCheckSourceFileRequest::evaluate(swift::Evaluator&, swift::SourceFile*) const (/home/dave/b/u/t/bin/swift-frontend+0x3aed298)
#50 0x0000000003aee455 llvm::Expected<swift::TypeCheckSourceFileRequest::OutputType> swift::Evaluator::getResultUncached<swift::TypeCheckSourceFileRequest>(swift::TypeCheckSourceFileRequest const&) TypeChecker.cpp:0:0
#51 0x0000000003aee277 llvm::Expected<swift::TypeCheckSourceFileRequest::OutputType> swift::Evaluator::getResultCached<swift::TypeCheckSourceFileRequest, (void*)0>(swift::TypeCheckSourceFileRequest const&) TypeChecker.cpp:0:0
#52 0x0000000003aed0cf swift::TypeCheckSourceFileRequest::OutputType swift::evaluateOrDefault<swift::TypeCheckSourceFileRequest>(swift::Evaluator&, swift::TypeCheckSourceFileRequest, swift::TypeCheckSourceFileRequest::OutputType) (/home/dave/b/u/t/bin/swift-frontend+0x3aed0cf)
#53 0x0000000002be5e7e swift::CompilerInstance::forEachFileToTypeCheck(llvm::function_ref<void (swift::SourceFile&)>) (/home/dave/b/u/t/bin/swift-frontend+0x2be5e7e)
#54 0x0000000002be5cfa swift::CompilerInstance::performSema() (/home/dave/b/u/t/bin/swift-frontend+0x2be5cfa)
#55 0x0000000002a5ab2e withSemanticAnalysis(swift::CompilerInstance&, swift::FrontendObserver*, llvm::function_ref<bool (swift::CompilerInstance&)>) FrontendTool.cpp:0:0
#56 0x0000000002a51282 performCompile(swift::CompilerInstance&, int&, swift::FrontendObserver*) FrontendTool.cpp:0:0
#57 0x0000000002a50d62 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) (/home/dave/b/u/t/bin/swift-frontend+0x2a50d62)
#58 0x00000000029e0338 main (/home/dave/b/u/t/bin/swift-frontend+0x29e0338)
#59 0x00007ffff7b2d1e2 __libc_start_main (/lib64/libc.so.6+0x281e2)
#60 0x00000000029dfc9e _start (/home/dave/b/u/t/bin/swift-frontend+0x29dfc9e)
Aborted

slavapestov added a commit to slavapestov/swift that referenced this pull request Mar 12, 2021
I added this test case in swiftlang#36402;
the change in swiftlang#36411 correctly
flags some bogus same-type requirements in a minimized signature
and asserts.
@slavapestov
Copy link
Contributor Author

@davezarzycki Sorry about that. The new assertion is correct; previously the test used FileCheck to detect the same failure. I'm going to XFAIL it until the other issue flagged by that test is fixed.

@davezarzycki
Copy link
Contributor

Okay. For whatever it may be worth, I was also surprised by the not FileCheck usage which didn't seem idiomatic and the lack of FileCheck on the second RUN line. It wasn't clear what the test was/is trying to do. Thanks again!

@slavapestov
Copy link
Contributor Author

@davezarzycki The first RUN line checks that some generic signatures minimize correctly. Since they don't currently minimize correctly (FileCheck fails because one of the CHECK: lines is different) I added a 'not' in front of it.

The second RUN: line ensures that IRGen can generate code without crashing, which exercises some conformance access path code unrelated to the same-type constraint minimization.

I didn't realize the other PR actually turned the first into an assert by enabling some existing asserts in more cases.

Once I fix the underlying issue, the assert will be fixed and the FileCheck lines will pass.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants