mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Serialize local types and provide a lookup API
rdar://problem/18295292 Locally scoped type declarations were previously not serialized into the module, which meant that the debugger couldn't reason about the structure of instances of those types. Introduce a new mangling for local types: [file basename MD5][counter][identifier] This allows the demangle node's data to be used directly for lookup without having to backtrack in the debugger. Local decls are now serialized into a LOCAL_TYPE_DECLS table in the module, which acts as the backing hash table for looking up [file basename MD5][counter][identifier] -> DeclID mappings. New tests: * swift-ide-test mode for testing the demangle/lookup/mangle lifecycle of a module that contains local decls * mangling * module merging with local decls Swift SVN r24426
This commit is contained in:
@@ -166,6 +166,10 @@ public:
|
||||
DeclName name, NLKind lookupKind,
|
||||
SmallVectorImpl<ValueDecl*> &results) const override;
|
||||
|
||||
virtual TypeDecl *lookupLocalType(llvm::StringRef FileHash,
|
||||
unsigned int LocalDiscriminator,
|
||||
llvm::StringRef Name) const override;
|
||||
|
||||
virtual OperatorDecl *lookupOperator(Identifier name,
|
||||
DeclKind fixity) const override;
|
||||
|
||||
@@ -184,6 +188,8 @@ public:
|
||||
|
||||
virtual void getTopLevelDecls(SmallVectorImpl<Decl*> &results) const override;
|
||||
|
||||
virtual void getLocalTypeDecls(SmallVectorImpl<Decl *> &results) const override;
|
||||
|
||||
virtual void getDisplayDecls(SmallVectorImpl<Decl*> &results) const override;
|
||||
|
||||
virtual void
|
||||
@@ -194,6 +200,7 @@ public:
|
||||
collectLinkLibraries(Module::LinkLibraryCallback callback) const override;
|
||||
|
||||
Identifier getDiscriminatorForPrivateValue(const ValueDecl *D) const override;
|
||||
Identifier getDiscriminatorForLocalValue(const ValueDecl *D) const override;
|
||||
|
||||
virtual StringRef getFilename() const override;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user