Skip to content

Commit 12ef6ea

Browse files
authored
Merge pull request #22470 from slavapestov/remove-type-reconstruction-part-1
IDE: Remove getTypeFromMangledSymbolname()
2 parents daf7d24 + b2f0327 commit 12ef6ea

File tree

10 files changed

+27
-162
lines changed

10 files changed

+27
-162
lines changed

include/swift/IDE/Utils.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,9 +134,6 @@ Decl *getDeclFromUSR(ASTContext &context, StringRef USR, std::string &error);
134134
Decl *getDeclFromMangledSymbolName(ASTContext &context, StringRef mangledName,
135135
std::string &error);
136136

137-
Type getTypeFromMangledSymbolname(ASTContext &Ctx, StringRef mangledName,
138-
std::string &error);
139-
140137
class XMLEscapingPrinter : public StreamPrinter {
141138
public:
142139
XMLEscapingPrinter(raw_ostream &OS) : StreamPrinter(OS){};

lib/IDE/ModuleInterfacePrinting.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include "swift/IDE/Utils.h"
1515
#include "swift/Sema/IDETypeChecking.h"
1616
#include "swift/AST/ASTContext.h"
17+
#include "swift/AST/ASTDemangler.h"
1718
#include "swift/AST/ASTPrinter.h"
1819
#include "swift/AST/Decl.h"
1920
#include "swift/AST/Module.h"
@@ -182,8 +183,8 @@ printTypeInterface(ModuleDecl *M, Type Ty, ASTPrinter &Printer,
182183
bool swift::ide::
183184
printTypeInterface(ModuleDecl *M, StringRef TypeUSR, ASTPrinter &Printer,
184185
std::string &TypeName, std::string &Error) {
185-
return printTypeInterface(M, getTypeFromMangledSymbolname(M->getASTContext(),
186-
TypeUSR, Error),
186+
return printTypeInterface(M, Demangle::getTypeForMangling(M->getASTContext(),
187+
TypeUSR),
187188
Printer, TypeName, Error);
188189
}
189190

lib/IDE/TypeReconstruction.cpp

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2463,23 +2463,3 @@ Decl *ide::getDeclFromMangledSymbolName(ASTContext &context,
24632463
}
24642464
return nullptr;
24652465
}
2466-
2467-
Type ide::getTypeFromMangledSymbolname(ASTContext &Ctx,
2468-
StringRef mangledName,
2469-
std::string &error) {
2470-
Demangle::Context DemangleCtx;
2471-
auto node = DemangleCtx.demangleSymbolAsNode(mangledName);
2472-
VisitNodeResult result;
2473-
2474-
if (node)
2475-
VisitNode(&Ctx, node, result);
2476-
error = result._error;
2477-
if (error.empty() && result._types.size() == 1) {
2478-
return result._types.front().getPointer();
2479-
} else {
2480-
error = stringWithFormat("type for symbolname '%s' was not found",
2481-
mangledName);
2482-
return Type();
2483-
}
2484-
return Type();
2485-
}

test/DebugInfo/DumpDeclFromMangledName.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
// INVALID-DECL: patatino does not exist, exiting.
2020

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

test/DebugInfo/DumpTypeFromMangledName.swift

Lines changed: 0 additions & 64 deletions
This file was deleted.

test/DebugInfo/Inputs/type-reconstr-names.txt

Lines changed: 0 additions & 14 deletions
This file was deleted.

test/IDE/reconstruct_type_from_mangled_name.swift

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
// RUN: %target-swift-ide-test -reconstruct-type -source-filename %s | %FileCheck %s -implicit-check-not="FAILURE"
2-
// XFAIL: *
32

43
struct Mystruct1 {
54
// CHECK: decl: struct Mystruct1
@@ -66,21 +65,21 @@ class Myclass2 {
6665
arr1.append(1)
6766
// FIXME: missing append()
6867
// CHECK: dref: FAILURE for 'append' usr=s:Sa6appendyyxnF
69-
// CHECK: type: (inout Array<Int>) -> (Int) -> ()
68+
// CHECK: type: (inout Array<Int>) -> (__owned Int) -> ()
7069

7170
var arr2 : [Mystruct1]
7271
// CHECK: decl: var arr2: [Mystruct1]
7372
// CHECK: type: Array<Mystruct1>
7473

7574
arr2.append(Mystruct1())
76-
// CHECK: type: (inout Array<Mystruct1>) -> (Mystruct1) -> ()
75+
// CHECK: type: (inout Array<Mystruct1>) -> (__owned Mystruct1) -> ()
7776

7877
var arr3 : [Myclass1]
7978
// CHECK: decl: var arr3: [Myclass1]
8079
// CHECK: type: Array<Myclass1>
8180

8281
arr3.append(Myclass1())
83-
// CHECK: type: (inout Array<Myclass1>) -> (Myclass1) -> ()
82+
// CHECK: type: (inout Array<Myclass1>) -> (__owned Myclass1) -> ()
8483

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

259-
// FIXME
260-
// CHECK: decl: FAILURE for 'LocalType'
258+
// CHECK: decl: struct LocalType for 'LocalType' usr=s:14swift_ide_test13hasLocalDeclsyyF0E4TypeL_V
261259
struct LocalType {
262-
// CHECK: FAILURE for 'localMethod'
260+
// CHECK: func localMethod() for 'localMethod' usr=s:14swift_ide_test13hasLocalDeclsyyF0E4TypeL_V11localMethodyyF
263261
func localMethod() {}
264262

265-
// CHECK: FAILURE for 'subscript(_:)'
266-
subscript(x: Int) { get {} set {} }
263+
// CHECK: subscript(x: Int) -> Int { get set } for 'subscript' usr=s:14swift_ide_test13hasLocalDeclsyyF0E4TypeL_VyS2icip
264+
subscript(x: Int) -> Int { get {} set {} }
267265

268-
// CHECK: decl: FAILURE for ''
269-
// CHECK: decl: FAILURE for ''
270-
// CHECK: decl: FAILURE for ''
266+
// CHECK: decl: get for '' usr=s:14swift_ide_test13hasLocalDeclsyyF0E4TypeL_VyS2icig
267+
// CHECK: decl: set for '' usr=s:14swift_ide_test13hasLocalDeclsyyF0E4TypeL_VyS2icis
268+
// CHECK: decl: init() for '' usr=s:14swift_ide_test13hasLocalDeclsyyF0E4TypeL_VADycfc
271269

272270
}
273271

274-
// FIXME
275-
// CHECK: decl: FAILURE for 'LocalClass'
272+
// CHECK: decl: class LocalClass for 'LocalClass' usr=s:14swift_ide_test13hasLocalDeclsyyF0E5ClassL_C
276273
class LocalClass {
277-
// CHECK: FAILURE for 'deinit'
274+
// CHECK: decl: {{(@objc )?}}deinit for 'deinit' usr=s:14swift_ide_test13hasLocalDeclsyyF0E5ClassL_Cfd
278275
deinit {}
279276

280-
// CHECK: decl: FAILURE for ''
277+
// CHECK: decl: init() for '' usr=s:14swift_ide_test13hasLocalDeclsyyF0E5ClassL_CADycfc
281278
}
282279

283-
// CHECK: decl: FAILURE for 'LocalAlias'
280+
// CHECK: decl: typealias LocalAlias = LocalType for 'LocalAlias' usr=s:14swift_ide_test13hasLocalDeclsyyF0E5AliasL_a
284281
typealias LocalAlias = LocalType
285282
}
286283

@@ -304,7 +301,7 @@ struct HasSubscript {
304301
// FIXME
305302
// CHECK: decl: FAILURE for 'T' usr=s:14swift_ide_test19HasGenericSubscriptV1Txmfp
306303
struct HasGenericSubscript<T> {
307-
// CHECK: subscript<U>(t: T) -> U { get set } for 'subscript(_:)' usr=s:14swift_ide_test19HasGenericSubscriptVyqd__xclui
304+
// CHECK: subscript<U>(t: T) -> U { get set } for 'subscript' usr=s:14swift_ide_test19HasGenericSubscriptVyqd__xcluip
308305
// FIXME
309306
// CHECK: decl: FAILURE for 'U'
310307
// FIXME

tools/lldb-moduleimport-test/lldb-moduleimport-test.cpp

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -108,23 +108,6 @@ static void resolveTypeFromMangledNameList(
108108
}
109109
}
110110

111-
static void resolveTypeFromMangledNameListOld(
112-
swift::ASTContext &Ctx, llvm::ArrayRef<std::string> MangledNames) {
113-
std::string Error;
114-
for (auto &Mangled : MangledNames) {
115-
swift::Type ResolvedType =
116-
swift::ide::getTypeFromMangledSymbolname(Ctx, Mangled, Error);
117-
if (!ResolvedType) {
118-
llvm::errs() << "Can't resolve type of " << Mangled << "\n";
119-
} else {
120-
swift::PrintOptions PO;
121-
PO.PrintStorageRepresentationAttrs = true;
122-
ResolvedType->print(llvm::errs(), PO);
123-
llvm::errs() << "\n";
124-
}
125-
}
126-
}
127-
128111
static void
129112
collectMangledNames(const std::string &FilePath,
130113
llvm::SmallVectorImpl<std::string> &MangledNames) {
@@ -227,11 +210,6 @@ int main(int argc, char **argv) {
227210
"type-from-mangled", desc("dump type from mangled names list"),
228211
cat(Visible));
229212

230-
opt<std::string> DumpTypeFromMangledOld(
231-
"type-from-mangled-old", desc("dump type from mangled names list using old "
232-
"TypeReconstruction API"),
233-
cat(Visible));
234-
235213
opt<std::string> ResourceDir(
236214
"resource-dir",
237215
desc("The directory that holds the compiler resource files"),
@@ -248,7 +226,6 @@ int main(int argc, char **argv) {
248226
ModuleCachePath.removeArgument();
249227
DumpModule.removeArgument();
250228
DumpTypeFromMangled.removeArgument();
251-
DumpTypeFromMangledOld.removeArgument();
252229
InputNames.removeArgument();
253230

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

268245
if (!validateInputFile(DumpTypeFromMangled))
269246
return 1;
270-
if (!validateInputFile(DumpTypeFromMangledOld))
271-
return 1;
272247
if (!validateInputFile(DumpDeclFromMangled))
273248
return 1;
274249

@@ -358,11 +333,6 @@ int main(int argc, char **argv) {
358333
collectMangledNames(DumpTypeFromMangled, MangledNames);
359334
resolveTypeFromMangledNameList(CI.getASTContext(), MangledNames);
360335
}
361-
if (!DumpTypeFromMangledOld.empty()) {
362-
llvm::SmallVector<std::string, 8> MangledNames;
363-
collectMangledNames(DumpTypeFromMangledOld, MangledNames);
364-
resolveTypeFromMangledNameListOld(CI.getASTContext(), MangledNames);
365-
}
366336
if (!DumpDeclFromMangled.empty()) {
367337
llvm::SmallVector<std::string, 8> MangledNames;
368338
collectMangledNames(DumpDeclFromMangled, MangledNames);

tools/swift-ide-test/swift-ide-test.cpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "XMLValidator.h"
1414
#include "ModuleAPIDiff.h"
1515
#include "swift/AST/ASTContext.h"
16+
#include "swift/AST/ASTDemangler.h"
1617
#include "swift/AST/ASTPrinter.h"
1718
#include "swift/AST/ASTWalker.h"
1819
#include "swift/AST/Comment.h"
@@ -2682,7 +2683,7 @@ class TypeReconstructWalker : public SourceEntityWalker {
26822683

26832684
if (T) {
26842685
T = T->getRValueType();
2685-
tryDemangleType(T,
2686+
tryDemangleType(T->mapTypeOutOfContext(),
26862687
(NestedDCs.empty()
26872688
? D->getDeclContext()
26882689
: NestedDCs.back()),
@@ -2694,19 +2695,16 @@ class TypeReconstructWalker : public SourceEntityWalker {
26942695
private:
26952696
void tryDemangleType(Type T, const DeclContext *DC, CharSourceRange range) {
26962697
Mangle::ASTMangler Mangler;
2697-
std::string mangledName(Mangler.mangleTypeForDebugger(
2698-
T->mapTypeOutOfContext(), DC));
2699-
std::string Error;
2698+
std::string mangledName(Mangler.mangleTypeForDebugger(T, DC));
27002699
Type ReconstructedType = DC->mapTypeIntoContext(
2701-
getTypeFromMangledSymbolname(Ctx, mangledName, Error));
2700+
Demangle::getTypeForMangling(Ctx, mangledName));
27022701
Stream << "type: ";
27032702
if (ReconstructedType) {
27042703
ReconstructedType->print(Stream);
27052704
} else {
27062705
Stream << "FAILURE";
27072706
}
2708-
Stream << "\tfor '" << range.str() << "' mangled=" << mangledName << " "
2709-
<< Error << "\n";
2707+
Stream << "\tfor '" << range.str() << "' mangled=" << mangledName << "\n";
27102708
}
27112709

27122710
void tryDemangleDecl(ValueDecl *VD, CharSourceRange range, bool isRef) {

validation-test/Serialization/bridging-header-first.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
// 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
44
// RUN: llvm-bcanalyzer -dump %t/main.swiftmodule | %FileCheck -check-prefix CHECK-DUMP %s
5-
// 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
5+
// 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
66

77
// 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
88
// RUN: llvm-bcanalyzer -dump %t/main.swiftmodule | %FileCheck -check-prefix CHECK-DUMP %s
9-
// 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
9+
// 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
1010

1111
// REQUIRES: objc_interop
1212

@@ -23,7 +23,7 @@
2323
// CHECK-DUMP-SAME: 'Swift'
2424

2525

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

2828
import Module
2929
class C {}

0 commit comments

Comments
 (0)