Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SR-4498] Compiler crash on referencing typealias from generic type without generic arguments #47075

Closed
rintaro mannequin opened this issue Apr 5, 2017 · 0 comments
Closed
Labels
bug A deviation from expected or documented behavior. Also: expected but undesirable behavior. compiler The Swift compiler in itself crash Bug: A crash, i.e., an abnormal termination of software type checker Area → compiler: Semantic analysis

Comments

@rintaro
Copy link
Mannequin

rintaro mannequin commented Apr 5, 2017

Previous ID SR-4498
Radar None
Original Reporter @rintaro
Type Bug
Status Resolved
Resolution Duplicate
Environment

Swift version 3.1-dev (LLVM 20fc6f7049, Clang fc6023397f, Swift 9adf79a)
Target: x86_64-unknown-linux-gnu

Additional Detail from JIRA
Votes 0
Component/s Compiler
Labels Bug, CompilerCrash, TypeChecker
Assignee None
Priority Medium

md5: 26a2ac08965ee51144b022ae4f239c0a

duplicates:

  • SR-4390 Crash using nested typealias from generic type in Swift 3.1

relates to:

  • SR-4390 Crash using nested typealias from generic type in Swift 3.1

Issue Description:

struct S<T> {
  typealias X = Int
}

let x: S.X = 1
Bad base type
UNREACHABLE executed at /home/rintaro/Documents/swift-oss/swift/lib/AST/Type.cpp:3124!
#&#8203;0 0x0000000004514918 llvm::sys::PrintStackTrace(llvm::raw_ostream&) (../build/Ninja-ReleaseAssert+swift-DebugAssert/swift-linux-x86_64/bin/swift+0x4514918)
#&#8203;1 0x0000000004515056 SignalHandler(int) (../build/Ninja-ReleaseAssert+swift-DebugAssert/swift-linux-x86_64/bin/swift+0x4515056)
#&#8203;2 0x00007f7db3ea9390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390)
#&#8203;3 0x00007f7db25e9428 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x35428)
#&#8203;4 0x00007f7db25eb02a abort (/lib/x86_64-linux-gnu/libc.so.6+0x3702a)
#&#8203;5 0x00000000044b0f1d llvm::llvm_unreachable_internal(char const*, char const*, unsigned int) (../build/Ninja-ReleaseAssert+swift-DebugAssert/swift-linux-x86_64/bin/swift+0x44b0f1d)
#&#8203;6 0x0000000002027eda swift::TypeBase::getContextSubstitutions(swift::DeclContext const*, swift::GenericEnvironment*) /home/rintaro/Documents/swift-oss/swift/lib/AST/Type.cpp:3127:7
#&#8203;7 0x00000000020226c3 swift::TypeBase::getContextSubstitutionMap(swift::ModuleDecl*, swift::DeclContext const*, swift::GenericEnvironment*) /home/rintaro/Documents/swift-oss/swift/lib/AST/Type.cpp:3152:32
#&#8203;8 0x0000000001c0fb69 swift::TypeChecker::substMemberTypeWithBase(swift::ModuleDecl*, swift::TypeDecl*, swift::Type) /home/rintaro/Documents/swift-oss/swift/lib/Sema/TypeCheckType.cpp:2996:15
#&#8203;9 0x0000000001b58d92 swift::TypeChecker::lookupMemberType(swift::DeclContext*, swift::Type, swift::Identifier, swift::OptionSet<swift::NameLookupFlags, unsigned int>) /home/rintaro/Documents/swift-oss/swift/lib/Sema/TypeCheckNameLookup.cpp:384:23
#&#8203;10 0x0000000001c1822a resolveNestedIdentTypeComponent(swift::TypeChecker&, swift::DeclContext*, swift::Type, swift::SourceRange, swift::ComponentIdentTypeRepr*, swift::OptionSet<swift::TypeResolutionFlags, unsigned int>, bool, swift::GenericTypeResolver*, llvm::function_ref<bool (swift::TypeCheckRequest)>*) /home/rintaro/Documents/swift-oss/swift/lib/Sema/TypeCheckType.cpp:1288:19
#&#8203;11 0x0000000001c11ac7 resolveIdentTypeComponent(swift::TypeChecker&, swift::DeclContext*, llvm::ArrayRef<swift::ComponentIdentTypeRepr*>, swift::OptionSet<swift::TypeResolutionFlags, unsigned int>, bool, swift::GenericTypeResolver*, llvm::function_ref<bool (swift::TypeCheckRequest)>*) /home/rintaro/Documents/swift-oss/swift/lib/Sema/TypeCheckType.cpp:1403:10
#&#8203;12 0x0000000001c11547 swift::TypeChecker::resolveIdentifierType(swift::DeclContext*, swift::IdentTypeRepr*, swift::OptionSet<swift::TypeResolutionFlags, unsigned int>, bool, swift::GenericTypeResolver*, llvm::function_ref<bool (swift::TypeCheckRequest)>*) /home/rintaro/Documents/swift-oss/swift/lib/Sema/TypeCheckType.cpp:1477:17
#&#8203;13 0x0000000001c1228c (anonymous namespace)::TypeResolver::resolveType(swift::TypeRepr*, swift::OptionSet<swift::TypeResolutionFlags, unsigned int>) /home/rintaro/Documents/swift-oss/swift/lib/Sema/TypeCheckType.cpp:1759:12
#&#8203;14 0x0000000001c11ef9 swift::TypeChecker::resolveType(swift::TypeRepr*, swift::DeclContext*, swift::OptionSet<swift::TypeResolutionFlags, unsigned int>, swift::GenericTypeResolver*, llvm::function_ref<bool (swift::TypeCheckRequest)>*) /home/rintaro/Documents/swift-oss/swift/lib/Sema/TypeCheckType.cpp:1714:17
#&#8203;15 0x0000000001c1077d swift::TypeChecker::validateType(swift::TypeLoc&, swift::DeclContext*, swift::OptionSet<swift::TypeResolutionFlags, unsigned int>, swift::GenericTypeResolver*, llvm::function_ref<bool (swift::TypeCheckRequest)>*) /home/rintaro/Documents/swift-oss/swift/lib/Sema/TypeCheckType.cpp:1597:17
#&#8203;16 0x0000000001b6049f validateTypedPattern(swift::TypeChecker&, swift::DeclContext*, swift::TypedPattern*, swift::OptionSet<swift::TypeResolutionFlags, unsigned int>, swift::GenericTypeResolver*) /home/rintaro/Documents/swift-oss/swift/lib/Sema/TypeCheckPattern.cpp:662:8
#&#8203;17 0x0000000001b5fd38 swift::TypeChecker::typeCheckPattern(swift::Pattern*, swift::DeclContext*, swift::OptionSet<swift::TypeResolutionFlags, unsigned int>) /home/rintaro/Documents/swift-oss/swift/lib/Sema/TypeCheckPattern.cpp:863:10
#&#8203;18 0x0000000001b1997b validatePatternBindingEntry(swift::TypeChecker&, swift::PatternBindingDecl*, unsigned int) /home/rintaro/Documents/swift-oss/swift/lib/Sema/TypeCheckDecl.cpp:1139:7
#&#8203;19 0x0000000001af8293 validatePatternBindingEntries(swift::TypeChecker&, swift::PatternBindingDecl*) /home/rintaro/Documents/swift-oss/swift/lib/Sema/TypeCheckDecl.cpp:1190:69
#&#8203;20 0x0000000001b0299d (anonymous namespace)::DeclChecker::visitPatternBindingDecl(swift::PatternBindingDecl*) /home/rintaro/Documents/swift-oss/swift/lib/Sema/TypeCheckDecl.cpp:3978:9
#&#8203;21 0x0000000001b016dc swift::ASTVisitor<(anonymous namespace)::DeclChecker, void, void, void, void, void, void>::visit(swift::Decl*) /home/rintaro/Documents/swift-oss/swift/include/swift/AST/DeclNodes.def:91:1
#&#8203;22 0x0000000001af3e3d (anonymous namespace)::DeclChecker::visit(swift::Decl*) /home/rintaro/Documents/swift-oss/swift/lib/Sema/TypeCheckDecl.cpp:3813:39
#&#8203;23 0x0000000001af3d5e swift::TypeChecker::typeCheckDecl(swift::Decl*, bool) /home/rintaro/Documents/swift-oss/swift/lib/Sema/TypeCheckDecl.cpp:6963:1
#&#8203;24 0x0000000001c04a31 (anonymous namespace)::StmtChecker::visitBraceStmt(swift::BraceStmt*) /home/rintaro/Documents/swift-oss/swift/lib/Sema/TypeCheckStmt.cpp:1316:19
#&#8203;25 0x0000000001c0417b swift::ASTVisitor<(anonymous namespace)::StmtChecker, void, swift::Stmt*, void, void, void, void>::visit(swift::Stmt*) /home/rintaro/Documents/swift-oss/swift/include/swift/AST/StmtNodes.def:43:1
#&#8203;26 0x0000000001c0346a bool (anonymous namespace)::StmtChecker::typeCheckStmt<swift::BraceStmt>(swift::BraceStmt*&) /home/rintaro/Documents/swift-oss/swift/lib/Sema/TypeCheckStmt.cpp:444:18
#&#8203;27 0x0000000001c03344 swift::TypeChecker::typeCheckTopLevelCodeDecl(swift::TopLevelCodeDecl*) /home/rintaro/Documents/swift-oss/swift/lib/Sema/TypeCheckStmt.cpp:1711:3
#&#8203;28 0x0000000001c2d6e0 swift::performTypeChecking(swift::SourceFile&, swift::TopLevelContext&, swift::OptionSet<swift::TypeCheckingFlags, unsigned int>, unsigned int, unsigned int) /home/rintaro/Documents/swift-oss/swift/lib/Sema/TypeChecker.cpp:700:7
#&#8203;29 0x00000000014ef869 swift::CompilerInstance::performSema() /home/rintaro/Documents/swift-oss/swift/lib/Frontend/Frontend.cpp:506:19
#&#8203;30 0x0000000000505192 performCompile(std::unique_ptr<swift::CompilerInstance, std::default_delete<swift::CompilerInstance> >&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) /home/rintaro/Documents/swift-oss/swift/lib/FrontendTool/FrontendTool.cpp:426:14
#&#8203;31 0x000000000050460f swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) /home/rintaro/Documents/swift-oss/swift/lib/FrontendTool/FrontendTool.cpp:1047:8
#&#8203;32 0x0000000000478866 main /home/rintaro/Documents/swift-oss/swift/tools/driver/driver.cpp:160:7
#&#8203;33 0x00007f7db25d4830 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x20830)
#&#8203;34 0x0000000000471029 _start (../build/Ninja-ReleaseAssert+swift-DebugAssert/swift-linux-x86_64/bin/swift+0x471029)
Stack dump:
0.  Program arguments: ../build/Ninja-ReleaseAssert+swift-DebugAssert/swift-linux-x86_64/bin/swift -frontend -typecheck test.swift 
1.  While type-checking declaration 0x7836720 at test.swift:5:1
2.  While resolving type S.X at [test.swift:5:8 - line:5:10] RangeText="S.X"
Aborted (core dumped)

I believe this should be diagnosed as:

error: reference to generic type 'S' requires arguments in <...>
let x: S.X = 1
       ^
        <Any>

Xcode8.3GM/Swift3.1 silently accepts this though.

@swift-ci swift-ci transferred this issue from apple/swift-issues Apr 25, 2022
@AnthonyLatsis AnthonyLatsis added the crash Bug: A crash, i.e., an abnormal termination of software label Dec 12, 2022
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug A deviation from expected or documented behavior. Also: expected but undesirable behavior. compiler The Swift compiler in itself crash Bug: A crash, i.e., an abnormal termination of software type checker Area → compiler: Semantic analysis
Projects
None yet
Development

No branches or pull requests

1 participant