Fixed rvalues not evaluating correctly in nested structs
This commit is contained in:
parent
af42d2ff66
commit
f5250d6bcf
@ -27,7 +27,7 @@ namespace hex::lang {
|
||||
std::endian m_defaultDataEndian;
|
||||
u64 m_currOffset = 0;
|
||||
std::optional<std::endian> m_currEndian;
|
||||
std::vector<PatternData*> *m_currMembers = nullptr;
|
||||
std::vector<std::vector<PatternData*>*> m_currMembers;
|
||||
|
||||
std::pair<u32, std::string> m_error;
|
||||
|
||||
|
@ -16,7 +16,7 @@ namespace hex::lang {
|
||||
|
||||
ASTNodeIntegerLiteral* Evaluator::evaluateRValue(ASTNodeRValue *node) {
|
||||
|
||||
const std::vector<PatternData*>* currMembers = this->m_currMembers;
|
||||
const std::vector<PatternData*>* currMembers = this->m_currMembers.back();
|
||||
|
||||
PatternData *currPattern = nullptr;
|
||||
for (const auto &identifier : node->getPath()) {
|
||||
@ -152,11 +152,8 @@ namespace hex::lang {
|
||||
PatternData* Evaluator::evaluateStruct(ASTNodeStruct *node) {
|
||||
std::vector<PatternData*> memberPatterns;
|
||||
|
||||
ScopeExit currMemberReset([this] { this->m_currMembers = nullptr; });
|
||||
if (this->m_currMembers == nullptr)
|
||||
this->m_currMembers = &memberPatterns;
|
||||
else
|
||||
currMemberReset.release();
|
||||
this->m_currMembers.push_back(&memberPatterns);
|
||||
SCOPE_EXIT( this->m_currMembers.pop_back(); );
|
||||
|
||||
auto startOffset = this->m_currOffset;
|
||||
for (auto &member : node->getMembers()) {
|
||||
@ -178,11 +175,8 @@ namespace hex::lang {
|
||||
PatternData* Evaluator::evaluateUnion(ASTNodeUnion *node) {
|
||||
std::vector<PatternData*> memberPatterns;
|
||||
|
||||
ScopeExit currMemberReset([this] { this->m_currMembers = nullptr; });
|
||||
if (this->m_currMembers == nullptr)
|
||||
this->m_currMembers = &memberPatterns;
|
||||
else
|
||||
currMemberReset.release();
|
||||
this->m_currMembers.push_back(&memberPatterns);
|
||||
SCOPE_EXIT( this->m_currMembers.pop_back(); );
|
||||
|
||||
auto startOffset = this->m_currOffset;
|
||||
for (auto &member : node->getMembers()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user