Skip to content

IDE: Remove getTypeFromMangledSymbolname() #22470

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

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions include/swift/IDE/Utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -134,9 +134,6 @@ Decl *getDeclFromUSR(ASTContext &context, StringRef USR, std::string &error);
Decl *getDeclFromMangledSymbolName(ASTContext &context, StringRef mangledName,
std::string &error);

Type getTypeFromMangledSymbolname(ASTContext &Ctx, StringRef mangledName,
std::string &error);

class XMLEscapingPrinter : public StreamPrinter {
public:
XMLEscapingPrinter(raw_ostream &OS) : StreamPrinter(OS){};
Expand Down
5 changes: 3 additions & 2 deletions lib/IDE/ModuleInterfacePrinting.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include "swift/IDE/Utils.h"
#include "swift/Sema/IDETypeChecking.h"
#include "swift/AST/ASTContext.h"
#include "swift/AST/ASTDemangler.h"
#include "swift/AST/ASTPrinter.h"
#include "swift/AST/Decl.h"
#include "swift/AST/Module.h"
Expand Down Expand Up @@ -182,8 +183,8 @@ printTypeInterface(ModuleDecl *M, Type Ty, ASTPrinter &Printer,
bool swift::ide::
printTypeInterface(ModuleDecl *M, StringRef TypeUSR, ASTPrinter &Printer,
std::string &TypeName, std::string &Error) {
return printTypeInterface(M, getTypeFromMangledSymbolname(M->getASTContext(),
TypeUSR, Error),
return printTypeInterface(M, Demangle::getTypeForMangling(M->getASTContext(),
TypeUSR),
Printer, TypeName, Error);
}

Expand Down
20 changes: 0 additions & 20 deletions lib/IDE/TypeReconstruction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2463,23 +2463,3 @@ Decl *ide::getDeclFromMangledSymbolName(ASTContext &context,
}
return nullptr;
}

Type ide::getTypeFromMangledSymbolname(ASTContext &Ctx,
StringRef mangledName,
std::string &error) {
Demangle::Context DemangleCtx;
auto node = DemangleCtx.demangleSymbolAsNode(mangledName);
VisitNodeResult result;

if (node)
VisitNode(&Ctx, node, result);
error = result._error;
if (error.empty() && result._types.size() == 1) {
return result._types.front().getPointer();
} else {
error = stringWithFormat("type for symbolname '%s' was not found",
mangledName);
return Type();
}
return Type();
}
2 changes: 1 addition & 1 deletion test/DebugInfo/DumpDeclFromMangledName.swift
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
// INVALID-DECL: patatino does not exist, exiting.

// RUN: not %lldb-moduleimport-test %t/DeclReconstr \
// RUN: --type-from-mangled-old=patatino 2>&1 | \
// RUN: --type-from-mangled=patatino 2>&1 | \
// RUN: %FileCheck %s --check-prefix=INVALID-TYPE
// INVALID-TYPE: patatino does not exist, exiting.

Expand Down
64 changes: 0 additions & 64 deletions test/DebugInfo/DumpTypeFromMangledName.swift

This file was deleted.

14 changes: 0 additions & 14 deletions test/DebugInfo/Inputs/type-reconstr-names.txt

This file was deleted.

33 changes: 15 additions & 18 deletions test/IDE/reconstruct_type_from_mangled_name.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// RUN: %target-swift-ide-test -reconstruct-type -source-filename %s | %FileCheck %s -implicit-check-not="FAILURE"
// XFAIL: *

struct Mystruct1 {
// CHECK: decl: struct Mystruct1
Expand Down Expand Up @@ -66,21 +65,21 @@ class Myclass2 {
arr1.append(1)
// FIXME: missing append()
// CHECK: dref: FAILURE for 'append' usr=s:Sa6appendyyxnF
// CHECK: type: (inout Array<Int>) -> (Int) -> ()
// CHECK: type: (inout Array<Int>) -> (__owned Int) -> ()

var arr2 : [Mystruct1]
// CHECK: decl: var arr2: [Mystruct1]
// CHECK: type: Array<Mystruct1>

arr2.append(Mystruct1())
// CHECK: type: (inout Array<Mystruct1>) -> (Mystruct1) -> ()
// CHECK: type: (inout Array<Mystruct1>) -> (__owned Mystruct1) -> ()

var arr3 : [Myclass1]
// CHECK: decl: var arr3: [Myclass1]
// CHECK: type: Array<Myclass1>

arr3.append(Myclass1())
// CHECK: type: (inout Array<Myclass1>) -> (Myclass1) -> ()
// CHECK: type: (inout Array<Myclass1>) -> (__owned Myclass1) -> ()

_ = Myclass2.init()
// CHECK: dref: init()
Expand Down Expand Up @@ -256,31 +255,29 @@ func takesGeneric(_ t: GenericOuter<Int>.GenericInner<String>) {
func hasLocalDecls() {
func localFunction() {}

// FIXME
// CHECK: decl: FAILURE for 'LocalType'
// CHECK: decl: struct LocalType for 'LocalType' usr=s:14swift_ide_test13hasLocalDeclsyyF0E4TypeL_V
struct LocalType {
// CHECK: FAILURE for 'localMethod'
// CHECK: func localMethod() for 'localMethod' usr=s:14swift_ide_test13hasLocalDeclsyyF0E4TypeL_V11localMethodyyF
func localMethod() {}

// CHECK: FAILURE for 'subscript(_:)'
subscript(x: Int) { get {} set {} }
// CHECK: subscript(x: Int) -> Int { get set } for 'subscript' usr=s:14swift_ide_test13hasLocalDeclsyyF0E4TypeL_VyS2icip
subscript(x: Int) -> Int { get {} set {} }

// CHECK: decl: FAILURE for ''
// CHECK: decl: FAILURE for ''
// CHECK: decl: FAILURE for ''
// CHECK: decl: get for '' usr=s:14swift_ide_test13hasLocalDeclsyyF0E4TypeL_VyS2icig
// CHECK: decl: set for '' usr=s:14swift_ide_test13hasLocalDeclsyyF0E4TypeL_VyS2icis
// CHECK: decl: init() for '' usr=s:14swift_ide_test13hasLocalDeclsyyF0E4TypeL_VADycfc

}

// FIXME
// CHECK: decl: FAILURE for 'LocalClass'
// CHECK: decl: class LocalClass for 'LocalClass' usr=s:14swift_ide_test13hasLocalDeclsyyF0E5ClassL_C
class LocalClass {
// CHECK: FAILURE for 'deinit'
// CHECK: decl: {{(@objc )?}}deinit for 'deinit' usr=s:14swift_ide_test13hasLocalDeclsyyF0E5ClassL_Cfd
deinit {}

// CHECK: decl: FAILURE for ''
// CHECK: decl: init() for '' usr=s:14swift_ide_test13hasLocalDeclsyyF0E5ClassL_CADycfc
}

// CHECK: decl: FAILURE for 'LocalAlias'
// CHECK: decl: typealias LocalAlias = LocalType for 'LocalAlias' usr=s:14swift_ide_test13hasLocalDeclsyyF0E5AliasL_a
typealias LocalAlias = LocalType
}

Expand All @@ -304,7 +301,7 @@ struct HasSubscript {
// FIXME
// CHECK: decl: FAILURE for 'T' usr=s:14swift_ide_test19HasGenericSubscriptV1Txmfp
struct HasGenericSubscript<T> {
// CHECK: subscript<U>(t: T) -> U { get set } for 'subscript(_:)' usr=s:14swift_ide_test19HasGenericSubscriptVyqd__xclui
// CHECK: subscript<U>(t: T) -> U { get set } for 'subscript' usr=s:14swift_ide_test19HasGenericSubscriptVyqd__xcluip
// FIXME
// CHECK: decl: FAILURE for 'U'
// FIXME
Expand Down
30 changes: 0 additions & 30 deletions tools/lldb-moduleimport-test/lldb-moduleimport-test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -108,23 +108,6 @@ static void resolveTypeFromMangledNameList(
}
}

static void resolveTypeFromMangledNameListOld(
swift::ASTContext &Ctx, llvm::ArrayRef<std::string> MangledNames) {
std::string Error;
for (auto &Mangled : MangledNames) {
swift::Type ResolvedType =
swift::ide::getTypeFromMangledSymbolname(Ctx, Mangled, Error);
if (!ResolvedType) {
llvm::errs() << "Can't resolve type of " << Mangled << "\n";
} else {
swift::PrintOptions PO;
PO.PrintStorageRepresentationAttrs = true;
ResolvedType->print(llvm::errs(), PO);
llvm::errs() << "\n";
}
}
}

static void
collectMangledNames(const std::string &FilePath,
llvm::SmallVectorImpl<std::string> &MangledNames) {
Expand Down Expand Up @@ -227,11 +210,6 @@ int main(int argc, char **argv) {
"type-from-mangled", desc("dump type from mangled names list"),
cat(Visible));

opt<std::string> DumpTypeFromMangledOld(
"type-from-mangled-old", desc("dump type from mangled names list using old "
"TypeReconstruction API"),
cat(Visible));

opt<std::string> ResourceDir(
"resource-dir",
desc("The directory that holds the compiler resource files"),
Expand All @@ -248,7 +226,6 @@ int main(int argc, char **argv) {
ModuleCachePath.removeArgument();
DumpModule.removeArgument();
DumpTypeFromMangled.removeArgument();
DumpTypeFromMangledOld.removeArgument();
InputNames.removeArgument();

auto validateInputFile = [](std::string Filename) {
Expand All @@ -267,8 +244,6 @@ int main(int argc, char **argv) {

if (!validateInputFile(DumpTypeFromMangled))
return 1;
if (!validateInputFile(DumpTypeFromMangledOld))
return 1;
if (!validateInputFile(DumpDeclFromMangled))
return 1;

Expand Down Expand Up @@ -358,11 +333,6 @@ int main(int argc, char **argv) {
collectMangledNames(DumpTypeFromMangled, MangledNames);
resolveTypeFromMangledNameList(CI.getASTContext(), MangledNames);
}
if (!DumpTypeFromMangledOld.empty()) {
llvm::SmallVector<std::string, 8> MangledNames;
collectMangledNames(DumpTypeFromMangledOld, MangledNames);
resolveTypeFromMangledNameListOld(CI.getASTContext(), MangledNames);
}
if (!DumpDeclFromMangled.empty()) {
llvm::SmallVector<std::string, 8> MangledNames;
collectMangledNames(DumpDeclFromMangled, MangledNames);
Expand Down
12 changes: 5 additions & 7 deletions tools/swift-ide-test/swift-ide-test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include "XMLValidator.h"
#include "ModuleAPIDiff.h"
#include "swift/AST/ASTContext.h"
#include "swift/AST/ASTDemangler.h"
#include "swift/AST/ASTPrinter.h"
#include "swift/AST/ASTWalker.h"
#include "swift/AST/Comment.h"
Expand Down Expand Up @@ -2682,7 +2683,7 @@ class TypeReconstructWalker : public SourceEntityWalker {

if (T) {
T = T->getRValueType();
tryDemangleType(T,
tryDemangleType(T->mapTypeOutOfContext(),
(NestedDCs.empty()
? D->getDeclContext()
: NestedDCs.back()),
Expand All @@ -2694,19 +2695,16 @@ class TypeReconstructWalker : public SourceEntityWalker {
private:
void tryDemangleType(Type T, const DeclContext *DC, CharSourceRange range) {
Mangle::ASTMangler Mangler;
std::string mangledName(Mangler.mangleTypeForDebugger(
T->mapTypeOutOfContext(), DC));
std::string Error;
std::string mangledName(Mangler.mangleTypeForDebugger(T, DC));
Type ReconstructedType = DC->mapTypeIntoContext(
getTypeFromMangledSymbolname(Ctx, mangledName, Error));
Demangle::getTypeForMangling(Ctx, mangledName));
Stream << "type: ";
if (ReconstructedType) {
ReconstructedType->print(Stream);
} else {
Stream << "FAILURE";
}
Stream << "\tfor '" << range.str() << "' mangled=" << mangledName << " "
<< Error << "\n";
Stream << "\tfor '" << range.str() << "' mangled=" << mangledName << "\n";
}

void tryDemangleDecl(ValueDecl *VD, CharSourceRange range, bool isRef) {
Expand Down
6 changes: 3 additions & 3 deletions validation-test/Serialization/bridging-header-first.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

// RUN: %target-build-swift -emit-module -emit-executable %s -g -I %S/Inputs/bridging-header-first/ -import-objc-header %S/Inputs/bridging-header-first/bridging.h -o %t/main
// RUN: llvm-bcanalyzer -dump %t/main.swiftmodule | %FileCheck -check-prefix CHECK-DUMP %s
// RUN: %lldb-moduleimport-test %t/main -type-from-mangled-old %S/Inputs/bridging-header-first/mangled.txt 2>&1 | %FileCheck -check-prefix CHECK-RESOLVED-TYPE %s
// RUN: %lldb-moduleimport-test %t/main -decl-from-mangled %S/Inputs/bridging-header-first/mangled.txt 2>&1 | %FileCheck -check-prefix CHECK-RESOLVED-TYPE %s

// RUN: %target-build-swift -emit-module -emit-executable %s -g -I %S/Inputs/bridging-header-first/ -import-objc-header %S/Inputs/bridging-header-first/bridging.h -o %t/main -whole-module-optimization
// RUN: llvm-bcanalyzer -dump %t/main.swiftmodule | %FileCheck -check-prefix CHECK-DUMP %s
// RUN: %lldb-moduleimport-test %t/main -type-from-mangled-old %S/Inputs/bridging-header-first/mangled.txt 2>&1 | %FileCheck -check-prefix CHECK-RESOLVED-TYPE %s
// RUN: %lldb-moduleimport-test %t/main -decl-from-mangled %S/Inputs/bridging-header-first/mangled.txt 2>&1 | %FileCheck -check-prefix CHECK-RESOLVED-TYPE %s

// REQUIRES: objc_interop

Expand All @@ -23,7 +23,7 @@
// CHECK-DUMP-SAME: 'Swift'


// CHECK-RESOLVED-TYPE: @convention(method) (C.Type) -> () -> C
// CHECK-RESOLVED-TYPE: init()

import Module
class C {}
Expand Down