mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Reorganized code for better readability.
This commit is contained in:
parent
f5e0faaa37
commit
be733d5f61
@ -64,7 +64,6 @@ string TestCaseGenerator::visit()
|
|||||||
<< "\n";
|
<< "\n";
|
||||||
m_numSourceUnits++;
|
m_numSourceUnits++;
|
||||||
os << visitChildren();
|
os << visitChildren();
|
||||||
generator<SourceUnitGenerator>()->reset();
|
|
||||||
}
|
}
|
||||||
return os.str();
|
return os.str();
|
||||||
}
|
}
|
||||||
@ -78,15 +77,7 @@ void SourceUnitGenerator::setup()
|
|||||||
|
|
||||||
string SourceUnitGenerator::visit()
|
string SourceUnitGenerator::visit()
|
||||||
{
|
{
|
||||||
string sourceUnit = visitChildren();
|
return visitChildren();
|
||||||
reset();
|
|
||||||
return sourceUnit;
|
|
||||||
}
|
|
||||||
|
|
||||||
void SourceUnitGenerator::reset()
|
|
||||||
{
|
|
||||||
for (auto& g: generators)
|
|
||||||
std::visit(ResetVisitor{}, g);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
string PragmaGenerator::visit()
|
string PragmaGenerator::visit()
|
||||||
@ -132,7 +123,7 @@ string SolidityGenerator::generateTestProgram()
|
|||||||
createGenerators();
|
createGenerators();
|
||||||
for (auto& g: m_generators)
|
for (auto& g: m_generators)
|
||||||
std::visit(AddDependenciesVisitor{}, g);
|
std::visit(AddDependenciesVisitor{}, g);
|
||||||
string program = generator<TestCaseGenerator>()->visit();
|
string program = generator<TestCaseGenerator>()->generate();
|
||||||
destroyGenerators();
|
destroyGenerators();
|
||||||
return program;
|
return program;
|
||||||
}
|
}
|
||||||
|
@ -82,16 +82,7 @@ struct GeneratorVisitor
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
std::string operator()(T const& _t)
|
std::string operator()(T const& _t)
|
||||||
{
|
{
|
||||||
return _t->visit();
|
return _t->generate();
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ResetVisitor
|
|
||||||
{
|
|
||||||
template <typename T>
|
|
||||||
void operator()(T const& _t)
|
|
||||||
{
|
|
||||||
_t->reset();
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -106,9 +97,19 @@ struct GeneratorBase
|
|||||||
return std::get<std::shared_ptr<T>>(g);
|
return std::get<std::shared_ptr<T>>(g);
|
||||||
solAssert(false, "");
|
solAssert(false, "");
|
||||||
}
|
}
|
||||||
|
/// Returns test fragment created by this generator.
|
||||||
|
std::string generate()
|
||||||
|
{
|
||||||
|
std::string generatedCode = visit();
|
||||||
|
endVisit();
|
||||||
|
return generatedCode;
|
||||||
|
}
|
||||||
/// Virtual visitor that returns a string representing
|
/// Virtual visitor that returns a string representing
|
||||||
/// the generation of the Solidity grammar element.
|
/// the generation of the Solidity grammar element.
|
||||||
virtual std::string visit() = 0;
|
virtual std::string visit() = 0;
|
||||||
|
/// Method called after visiting this generator. Used
|
||||||
|
/// for clearing state if necessary.
|
||||||
|
virtual void endVisit() {}
|
||||||
/// Visitor that invokes child grammar elements of
|
/// Visitor that invokes child grammar elements of
|
||||||
/// this grammar element returning their string
|
/// this grammar element returning their string
|
||||||
/// representations.
|
/// representations.
|
||||||
@ -119,15 +120,12 @@ struct GeneratorBase
|
|||||||
{
|
{
|
||||||
generators += _generators;
|
generators += _generators;
|
||||||
}
|
}
|
||||||
/// Virtual reset method used to reset test state or
|
|
||||||
/// a portion of it if necessary e.g., remove scoped
|
|
||||||
/// variables.
|
|
||||||
virtual void reset() = 0;
|
|
||||||
/// Virtual method to obtain string name of generator.
|
/// Virtual method to obtain string name of generator.
|
||||||
virtual std::string name() = 0;
|
virtual std::string name() = 0;
|
||||||
/// Virtual method to add generators that this grammar
|
/// Virtual method to add generators that this grammar
|
||||||
/// element depends on.
|
/// element depends on. If not overridden, there are
|
||||||
virtual void setup() = 0;
|
/// no dependencies.
|
||||||
|
virtual void setup() {}
|
||||||
virtual ~GeneratorBase()
|
virtual ~GeneratorBase()
|
||||||
{
|
{
|
||||||
generators.clear();
|
generators.clear();
|
||||||
@ -148,7 +146,6 @@ public:
|
|||||||
m_numSourceUnits(0)
|
m_numSourceUnits(0)
|
||||||
{}
|
{}
|
||||||
void setup() override;
|
void setup() override;
|
||||||
void reset() override {}
|
|
||||||
std::string visit() override;
|
std::string visit() override;
|
||||||
std::string name() override
|
std::string name() override
|
||||||
{
|
{
|
||||||
@ -175,7 +172,6 @@ public:
|
|||||||
{}
|
{}
|
||||||
void setup() override;
|
void setup() override;
|
||||||
std::string visit() override;
|
std::string visit() override;
|
||||||
void reset() override;
|
|
||||||
std::string name() override { return "Source unit generator"; }
|
std::string name() override { return "Source unit generator"; }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -185,8 +181,6 @@ public:
|
|||||||
PragmaGenerator(std::shared_ptr<SolidityGenerator> _mutator):
|
PragmaGenerator(std::shared_ptr<SolidityGenerator> _mutator):
|
||||||
GeneratorBase(std::move(_mutator))
|
GeneratorBase(std::move(_mutator))
|
||||||
{}
|
{}
|
||||||
void setup() override {}
|
|
||||||
void reset() override {}
|
|
||||||
std::string visit() override;
|
std::string visit() override;
|
||||||
std::string name() override { return "Pragma generator"; }
|
std::string name() override { return "Pragma generator"; }
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user