Skip to content

Commit 1cd85f5

Browse files
committed
Remove demangled type value nodes
1 parent 80c966d commit 1cd85f5

3 files changed

Lines changed: 10 additions & 40 deletions

File tree

demangler/gnu3/demangled_type_node.cpp

Lines changed: 5 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -618,18 +618,9 @@ DemangledTypeNode DemangledTypeNode::WideCharType(size_t width, const string& al
618618
}
619619

620620

621-
DemangledTypeNode DemangledTypeNode::ValueType(const string& value)
622-
{
623-
DemangledTypeNode n;
624-
n.m_typeClass = ValueTypeClass;
625-
n.m_altName = value;
626-
return n;
627-
}
628-
629-
630621
DemangledTypeNode DemangledTypeNode::NameSegment(const string& name)
631622
{
632-
return ValueType(name);
623+
return NamedType(UnknownNamedTypeClass, StringList{name});
633624
}
634625

635626

@@ -1037,8 +1028,6 @@ void DemangledTypeNode::SetTemplateArguments(vector<Param> args, bool spaceAfter
10371028

10381029
string DemangledTypeNode::GetNameSegmentBase() const
10391030
{
1040-
if (m_typeClass == ValueTypeClass)
1041-
return m_altName;
10421031
if (!m_nameSegments.empty())
10431032
return m_nameSegments.back();
10441033
if (!m_nameSegmentNodes.empty())
@@ -1049,11 +1038,6 @@ string DemangledTypeNode::GetNameSegmentBase() const
10491038

10501039
void DemangledTypeNode::SetNameSegmentBase(const string& name)
10511040
{
1052-
if (m_typeClass == ValueTypeClass)
1053-
{
1054-
m_altName = name;
1055-
return;
1056-
}
10571041
if (!m_nameSegments.empty())
10581042
{
10591043
m_nameSegments.back() = name;
@@ -1064,8 +1048,9 @@ void DemangledTypeNode::SetNameSegmentBase(const string& name)
10641048
m_nameSegmentNodes.back().SetNameSegmentBase(name);
10651049
return;
10661050
}
1067-
m_typeClass = ValueTypeClass;
1068-
m_altName = name;
1051+
m_typeClass = NamedTypeReferenceClass;
1052+
m_ntrClass = UnknownNamedTypeClass;
1053+
m_nameSegments = StringList{name};
10691054
}
10701055

10711056

@@ -1166,7 +1151,7 @@ void DemangledTypeNode::AppendPointerSuffix(string& out) const
11661151

11671152
void DemangledTypeNode::AppendTemplateArguments(string& out) const
11681153
{
1169-
if (m_templateArgs.empty() && m_hasTemplateArgs && m_typeClass == ValueTypeClass)
1154+
if (m_templateArgs.empty() && m_hasTemplateArgs)
11701155
{
11711156
out += "<>";
11721157
return;
@@ -1177,12 +1162,6 @@ void DemangledTypeNode::AppendTemplateArguments(string& out) const
11771162

11781163
void DemangledTypeNode::AppendNameSegment(string& out) const
11791164
{
1180-
if (m_typeClass == ValueTypeClass)
1181-
{
1182-
out += m_altName;
1183-
AppendTemplateArguments(out);
1184-
return;
1185-
}
11861165
if (m_typeClass == NamedTypeReferenceClass)
11871166
{
11881167
AppendTypeName(out);
@@ -1391,11 +1370,6 @@ void DemangledTypeNode::AppendBeforeName(string& out, const DemangledTypeNode* p
13911370
AppendModifiers(out);
13921371
break;
13931372

1394-
case ValueTypeClass:
1395-
out += m_altName;
1396-
AppendTemplateArguments(out);
1397-
break;
1398-
13991373
default:
14001374
break;
14011375
}
@@ -1585,9 +1559,6 @@ Ref<Type> DemangledTypeNode::Finalize(Architecture* arch, Platform* platform) co
15851559
return tb.Finalize();
15861560
}
15871561

1588-
case ValueTypeClass:
1589-
return Type::ValueType(m_altName);
1590-
15911562
case PointerTypeClass:
15921563
{
15931564
Ref<Type> child = m_childType ? m_childType->Finalize(arch, platform) : Ref<Type>(Type::VoidType());

demangler/gnu3/demangled_type_node.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,6 @@ class DemangledTypeNode
173173
static DemangledTypeNode AddressSizedIntegerType(bool isSigned, const _STD_STRING& altName = "");
174174
static DemangledTypeNode FloatType(size_t width, const _STD_STRING& altName = "");
175175
static DemangledTypeNode WideCharType(size_t width, const _STD_STRING& altName = "");
176-
static DemangledTypeNode ValueType(const _STD_STRING& value);
177176
static DemangledTypeNode NameSegment(const _STD_STRING& name);
178177
static DemangledTypeNode VarArgsType();
179178
static DemangledTypeNode PointerType(DemangledTypeNode child, bool cnst, bool vltl, BNReferenceType refType);
@@ -215,7 +214,7 @@ class DemangledTypeNode
215214
bool HasVariableArguments() const { return m_hasVariableArgs; }
216215
BNNameType GetNameType() const { return m_nameType; }
217216
bool HasTemplateArguments() const;
218-
bool HasOwnTemplateArguments() const { return !m_templateArgs.empty() || (m_hasTemplateArgs && m_typeClass == ValueTypeClass); }
217+
bool HasOwnTemplateArguments() const { return m_hasTemplateArgs || !m_templateArgs.empty(); }
219218
const _STD_VECTOR<Param>& GetTemplateArguments() const { return m_templateArgs; }
220219
uint8_t GetPointerSuffixBits() const { return m_pointerSuffixBits; }
221220
bool HasPointerSuffix(BNPointerSuffix ps) const { return (m_pointerSuffixBits & PointerSuffixBit(ps)) != 0; }

demangler/msvc/demangle_msvc.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ DemangledTypeNode Demangle::DemangleReferencedSymbolValue(BackrefList& varList)
313313
string value = "&" + context.type.GetTypeAndName(FinalizeNameList(m_varName));
314314
m_varName = std::move(savedVarName);
315315

316-
return DemangledTypeNode::ValueType(value);
316+
return DemangledTypeNode::NameSegment(value);
317317
}
318318
catch (const DemangleException&)
319319
{
@@ -330,7 +330,7 @@ DemangledTypeNode Demangle::DemangleAutoNonTypeTemplateParam(BackrefList& varLis
330330
reader.Consume();
331331
int64_t value;
332332
DemangleNumber(value);
333-
return DemangledTypeNode::ValueType(to_string(value));
333+
return DemangledTypeNode::NameSegment(to_string(value));
334334
}
335335
if (reader.Peek() == '1')
336336
{
@@ -601,7 +601,7 @@ DemangledTypeNode Demangle::DemangleVarType(BackrefList& varList, bool isReturn,
601601
reader.Consume();
602602
int64_t value;
603603
DemangleNumber(value);
604-
return DemangledTypeNode::ValueType(to_string(value));
604+
return DemangledTypeNode::NameSegment(to_string(value));
605605
}
606606
else if (reader.Peek() == 'D')
607607
{
@@ -639,7 +639,7 @@ DemangledTypeNode Demangle::DemangleVarType(BackrefList& varList, bool isReturn,
639639
value += "," + to_string(adj);
640640
}
641641
value += "}";
642-
return DemangledTypeNode::ValueType(value);
642+
return DemangledTypeNode::NameSegment(value);
643643
}
644644
else if (reader.Peek() == '1')
645645
{

0 commit comments

Comments
 (0)