mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Reset AST node IDs between compilation runs.
This commit is contained in:
+20
-2
@@ -34,11 +34,24 @@ using namespace std;
|
||||
using namespace dev;
|
||||
using namespace dev::solidity;
|
||||
|
||||
class IDDispenser
|
||||
{
|
||||
public:
|
||||
static size_t next() { return ++instance(); }
|
||||
static void reset() { instance() = 0; }
|
||||
private:
|
||||
static size_t& instance()
|
||||
{
|
||||
static IDDispenser dispenser;
|
||||
return dispenser.id;
|
||||
}
|
||||
size_t id = 0;
|
||||
};
|
||||
|
||||
ASTNode::ASTNode(SourceLocation const& _location):
|
||||
m_id(IDDispenser::next()),
|
||||
m_location(_location)
|
||||
{
|
||||
static size_t id = 0;
|
||||
m_id = ++id;
|
||||
}
|
||||
|
||||
ASTNode::~ASTNode()
|
||||
@@ -46,6 +59,11 @@ ASTNode::~ASTNode()
|
||||
delete m_annotation;
|
||||
}
|
||||
|
||||
void ASTNode::resetID()
|
||||
{
|
||||
IDDispenser::reset();
|
||||
}
|
||||
|
||||
ASTAnnotation& ASTNode::annotation() const
|
||||
{
|
||||
if (!m_annotation)
|
||||
|
||||
Reference in New Issue
Block a user