mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Remove plain new operators from AST.
This commit is contained in:
parent
0bb88dabb7
commit
23181f549e
@ -55,11 +55,6 @@ ASTNode::ASTNode(SourceLocation const& _location):
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
ASTNode::~ASTNode()
|
|
||||||
{
|
|
||||||
delete m_annotation;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ASTNode::resetID()
|
void ASTNode::resetID()
|
||||||
{
|
{
|
||||||
IDDispenser::reset();
|
IDDispenser::reset();
|
||||||
@ -68,14 +63,14 @@ void ASTNode::resetID()
|
|||||||
ASTAnnotation& ASTNode::annotation() const
|
ASTAnnotation& ASTNode::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
m_annotation = new ASTAnnotation();
|
m_annotation = make_unique<ASTAnnotation>();
|
||||||
return *m_annotation;
|
return *m_annotation;
|
||||||
}
|
}
|
||||||
|
|
||||||
SourceUnitAnnotation& SourceUnit::annotation() const
|
SourceUnitAnnotation& SourceUnit::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
m_annotation = new SourceUnitAnnotation();
|
m_annotation = make_unique<SourceUnitAnnotation>();
|
||||||
return dynamic_cast<SourceUnitAnnotation&>(*m_annotation);
|
return dynamic_cast<SourceUnitAnnotation&>(*m_annotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,7 +94,7 @@ set<SourceUnit const*> SourceUnit::referencedSourceUnits(bool _recurse, set<Sour
|
|||||||
ImportAnnotation& ImportDirective::annotation() const
|
ImportAnnotation& ImportDirective::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
m_annotation = new ImportAnnotation();
|
m_annotation = make_unique<ImportAnnotation>();
|
||||||
return dynamic_cast<ImportAnnotation&>(*m_annotation);
|
return dynamic_cast<ImportAnnotation&>(*m_annotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,7 +163,7 @@ vector<EventDefinition const*> const& ContractDefinition::interfaceEvents() cons
|
|||||||
if (!m_interfaceEvents)
|
if (!m_interfaceEvents)
|
||||||
{
|
{
|
||||||
set<string> eventsSeen;
|
set<string> eventsSeen;
|
||||||
m_interfaceEvents.reset(new vector<EventDefinition const*>());
|
m_interfaceEvents = make_unique<vector<EventDefinition const*>>();
|
||||||
for (ContractDefinition const* contract: annotation().linearizedBaseContracts)
|
for (ContractDefinition const* contract: annotation().linearizedBaseContracts)
|
||||||
for (EventDefinition const* e: contract->events())
|
for (EventDefinition const* e: contract->events())
|
||||||
{
|
{
|
||||||
@ -193,7 +188,7 @@ vector<pair<FixedHash<4>, FunctionTypePointer>> const& ContractDefinition::inter
|
|||||||
if (!m_interfaceFunctionList)
|
if (!m_interfaceFunctionList)
|
||||||
{
|
{
|
||||||
set<string> signaturesSeen;
|
set<string> signaturesSeen;
|
||||||
m_interfaceFunctionList.reset(new vector<pair<FixedHash<4>, FunctionTypePointer>>());
|
m_interfaceFunctionList = make_unique<vector<pair<FixedHash<4>, FunctionTypePointer>>>();
|
||||||
for (ContractDefinition const* contract: annotation().linearizedBaseContracts)
|
for (ContractDefinition const* contract: annotation().linearizedBaseContracts)
|
||||||
{
|
{
|
||||||
vector<FunctionTypePointer> functions;
|
vector<FunctionTypePointer> functions;
|
||||||
@ -225,7 +220,7 @@ vector<Declaration const*> const& ContractDefinition::inheritableMembers() const
|
|||||||
{
|
{
|
||||||
if (!m_inheritableMembers)
|
if (!m_inheritableMembers)
|
||||||
{
|
{
|
||||||
m_inheritableMembers.reset(new vector<Declaration const*>());
|
m_inheritableMembers = make_unique<vector<Declaration const*>>();
|
||||||
auto addInheritableMember = [&](Declaration const* _decl)
|
auto addInheritableMember = [&](Declaration const* _decl)
|
||||||
{
|
{
|
||||||
solAssert(_decl, "addInheritableMember got a nullpointer.");
|
solAssert(_decl, "addInheritableMember got a nullpointer.");
|
||||||
@ -259,14 +254,14 @@ TypePointer ContractDefinition::type() const
|
|||||||
ContractDefinitionAnnotation& ContractDefinition::annotation() const
|
ContractDefinitionAnnotation& ContractDefinition::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
m_annotation = new ContractDefinitionAnnotation();
|
m_annotation = make_unique<ContractDefinitionAnnotation>();
|
||||||
return dynamic_cast<ContractDefinitionAnnotation&>(*m_annotation);
|
return dynamic_cast<ContractDefinitionAnnotation&>(*m_annotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
TypeNameAnnotation& TypeName::annotation() const
|
TypeNameAnnotation& TypeName::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
m_annotation = new TypeNameAnnotation();
|
m_annotation = make_unique<TypeNameAnnotation>();
|
||||||
return dynamic_cast<TypeNameAnnotation&>(*m_annotation);
|
return dynamic_cast<TypeNameAnnotation&>(*m_annotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,7 +273,7 @@ TypePointer StructDefinition::type() const
|
|||||||
TypeDeclarationAnnotation& StructDefinition::annotation() const
|
TypeDeclarationAnnotation& StructDefinition::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
m_annotation = new TypeDeclarationAnnotation();
|
m_annotation = make_unique<TypeDeclarationAnnotation>();
|
||||||
return dynamic_cast<TypeDeclarationAnnotation&>(*m_annotation);
|
return dynamic_cast<TypeDeclarationAnnotation&>(*m_annotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -297,7 +292,7 @@ TypePointer EnumDefinition::type() const
|
|||||||
TypeDeclarationAnnotation& EnumDefinition::annotation() const
|
TypeDeclarationAnnotation& EnumDefinition::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
m_annotation = new TypeDeclarationAnnotation();
|
m_annotation = make_unique<TypeDeclarationAnnotation>();
|
||||||
return dynamic_cast<TypeDeclarationAnnotation&>(*m_annotation);
|
return dynamic_cast<TypeDeclarationAnnotation&>(*m_annotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -357,7 +352,7 @@ string FunctionDefinition::externalSignature() const
|
|||||||
FunctionDefinitionAnnotation& FunctionDefinition::annotation() const
|
FunctionDefinitionAnnotation& FunctionDefinition::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
m_annotation = new FunctionDefinitionAnnotation();
|
m_annotation = make_unique<FunctionDefinitionAnnotation>();
|
||||||
return dynamic_cast<FunctionDefinitionAnnotation&>(*m_annotation);
|
return dynamic_cast<FunctionDefinitionAnnotation&>(*m_annotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -369,7 +364,7 @@ TypePointer ModifierDefinition::type() const
|
|||||||
ModifierDefinitionAnnotation& ModifierDefinition::annotation() const
|
ModifierDefinitionAnnotation& ModifierDefinition::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
m_annotation = new ModifierDefinitionAnnotation();
|
m_annotation = make_unique<ModifierDefinitionAnnotation>();
|
||||||
return dynamic_cast<ModifierDefinitionAnnotation&>(*m_annotation);
|
return dynamic_cast<ModifierDefinitionAnnotation&>(*m_annotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -389,14 +384,14 @@ FunctionTypePointer EventDefinition::functionType(bool _internal) const
|
|||||||
EventDefinitionAnnotation& EventDefinition::annotation() const
|
EventDefinitionAnnotation& EventDefinition::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
m_annotation = new EventDefinitionAnnotation();
|
m_annotation = make_unique<EventDefinitionAnnotation>();
|
||||||
return dynamic_cast<EventDefinitionAnnotation&>(*m_annotation);
|
return dynamic_cast<EventDefinitionAnnotation&>(*m_annotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
UserDefinedTypeNameAnnotation& UserDefinedTypeName::annotation() const
|
UserDefinedTypeNameAnnotation& UserDefinedTypeName::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
m_annotation = new UserDefinedTypeNameAnnotation();
|
m_annotation = make_unique<UserDefinedTypeNameAnnotation>();
|
||||||
return dynamic_cast<UserDefinedTypeNameAnnotation&>(*m_annotation);
|
return dynamic_cast<UserDefinedTypeNameAnnotation&>(*m_annotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -604,63 +599,63 @@ FunctionTypePointer VariableDeclaration::functionType(bool _internal) const
|
|||||||
VariableDeclarationAnnotation& VariableDeclaration::annotation() const
|
VariableDeclarationAnnotation& VariableDeclaration::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
m_annotation = new VariableDeclarationAnnotation();
|
m_annotation = make_unique<VariableDeclarationAnnotation>();
|
||||||
return dynamic_cast<VariableDeclarationAnnotation&>(*m_annotation);
|
return dynamic_cast<VariableDeclarationAnnotation&>(*m_annotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
StatementAnnotation& Statement::annotation() const
|
StatementAnnotation& Statement::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
m_annotation = new StatementAnnotation();
|
m_annotation = make_unique<StatementAnnotation>();
|
||||||
return dynamic_cast<StatementAnnotation&>(*m_annotation);
|
return dynamic_cast<StatementAnnotation&>(*m_annotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
InlineAssemblyAnnotation& InlineAssembly::annotation() const
|
InlineAssemblyAnnotation& InlineAssembly::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
m_annotation = new InlineAssemblyAnnotation();
|
m_annotation = make_unique<InlineAssemblyAnnotation>();
|
||||||
return dynamic_cast<InlineAssemblyAnnotation&>(*m_annotation);
|
return dynamic_cast<InlineAssemblyAnnotation&>(*m_annotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnAnnotation& Return::annotation() const
|
ReturnAnnotation& Return::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
m_annotation = new ReturnAnnotation();
|
m_annotation = make_unique<ReturnAnnotation>();
|
||||||
return dynamic_cast<ReturnAnnotation&>(*m_annotation);
|
return dynamic_cast<ReturnAnnotation&>(*m_annotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
ExpressionAnnotation& Expression::annotation() const
|
ExpressionAnnotation& Expression::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
m_annotation = new ExpressionAnnotation();
|
m_annotation = make_unique<ExpressionAnnotation>();
|
||||||
return dynamic_cast<ExpressionAnnotation&>(*m_annotation);
|
return dynamic_cast<ExpressionAnnotation&>(*m_annotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
MemberAccessAnnotation& MemberAccess::annotation() const
|
MemberAccessAnnotation& MemberAccess::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
m_annotation = new MemberAccessAnnotation();
|
m_annotation = make_unique<MemberAccessAnnotation>();
|
||||||
return dynamic_cast<MemberAccessAnnotation&>(*m_annotation);
|
return dynamic_cast<MemberAccessAnnotation&>(*m_annotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
BinaryOperationAnnotation& BinaryOperation::annotation() const
|
BinaryOperationAnnotation& BinaryOperation::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
m_annotation = new BinaryOperationAnnotation();
|
m_annotation = make_unique<BinaryOperationAnnotation>();
|
||||||
return dynamic_cast<BinaryOperationAnnotation&>(*m_annotation);
|
return dynamic_cast<BinaryOperationAnnotation&>(*m_annotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
FunctionCallAnnotation& FunctionCall::annotation() const
|
FunctionCallAnnotation& FunctionCall::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
m_annotation = new FunctionCallAnnotation();
|
m_annotation = make_unique<FunctionCallAnnotation>();
|
||||||
return dynamic_cast<FunctionCallAnnotation&>(*m_annotation);
|
return dynamic_cast<FunctionCallAnnotation&>(*m_annotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
IdentifierAnnotation& Identifier::annotation() const
|
IdentifierAnnotation& Identifier::annotation() const
|
||||||
{
|
{
|
||||||
if (!m_annotation)
|
if (!m_annotation)
|
||||||
m_annotation = new IdentifierAnnotation();
|
m_annotation = make_unique<IdentifierAnnotation>();
|
||||||
return dynamic_cast<IdentifierAnnotation&>(*m_annotation);
|
return dynamic_cast<IdentifierAnnotation&>(*m_annotation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ public:
|
|||||||
using SourceLocation = langutil::SourceLocation;
|
using SourceLocation = langutil::SourceLocation;
|
||||||
|
|
||||||
explicit ASTNode(SourceLocation const& _location);
|
explicit ASTNode(SourceLocation const& _location);
|
||||||
virtual ~ASTNode();
|
virtual ~ASTNode() {}
|
||||||
|
|
||||||
/// @returns an identifier of this AST node that is unique for a single compilation run.
|
/// @returns an identifier of this AST node that is unique for a single compilation run.
|
||||||
size_t id() const { return m_id; }
|
size_t id() const { return m_id; }
|
||||||
@ -111,7 +111,7 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
size_t const m_id = 0;
|
size_t const m_id = 0;
|
||||||
/// Annotation - is specialised in derived classes, is created upon request (because of polymorphism).
|
/// Annotation - is specialised in derived classes, is created upon request (because of polymorphism).
|
||||||
mutable ASTAnnotation* m_annotation = nullptr;
|
mutable std::unique_ptr<ASTAnnotation> m_annotation;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SourceLocation m_location;
|
SourceLocation m_location;
|
||||||
|
Loading…
Reference in New Issue
Block a user