mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Merge pull request #9918 from ethereum/isStateScopeCheck
Make isStateVariable regular scope check.
This commit is contained in:
commit
d23aff4cbb
@ -642,6 +642,11 @@ bool VariableDeclaration::hasReferenceOrMappingType() const
|
|||||||
return type->category() == Type::Category::Mapping || dynamic_cast<ReferenceType const*>(type);
|
return type->category() == Type::Category::Mapping || dynamic_cast<ReferenceType const*>(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool VariableDeclaration::isStateVariable() const
|
||||||
|
{
|
||||||
|
return dynamic_cast<ContractDefinition const*>(scope());
|
||||||
|
}
|
||||||
|
|
||||||
set<VariableDeclaration::Location> VariableDeclaration::allowedDataLocations() const
|
set<VariableDeclaration::Location> VariableDeclaration::allowedDataLocations() const
|
||||||
{
|
{
|
||||||
using Location = VariableDeclaration::Location;
|
using Location = VariableDeclaration::Location;
|
||||||
|
@ -905,7 +905,6 @@ public:
|
|||||||
ASTPointer<Expression> _value,
|
ASTPointer<Expression> _value,
|
||||||
Visibility _visibility,
|
Visibility _visibility,
|
||||||
ASTPointer<StructuredDocumentation> const _documentation = nullptr,
|
ASTPointer<StructuredDocumentation> const _documentation = nullptr,
|
||||||
bool _isStateVar = false,
|
|
||||||
bool _isIndexed = false,
|
bool _isIndexed = false,
|
||||||
Mutability _mutability = Mutability::Mutable,
|
Mutability _mutability = Mutability::Mutable,
|
||||||
ASTPointer<OverrideSpecifier> _overrides = nullptr,
|
ASTPointer<OverrideSpecifier> _overrides = nullptr,
|
||||||
@ -915,7 +914,6 @@ public:
|
|||||||
StructurallyDocumented(std::move(_documentation)),
|
StructurallyDocumented(std::move(_documentation)),
|
||||||
m_typeName(std::move(_type)),
|
m_typeName(std::move(_type)),
|
||||||
m_value(std::move(_value)),
|
m_value(std::move(_value)),
|
||||||
m_isStateVariable(_isStateVar),
|
|
||||||
m_isIndexed(_isIndexed),
|
m_isIndexed(_isIndexed),
|
||||||
m_mutability(_mutability),
|
m_mutability(_mutability),
|
||||||
m_overrides(std::move(_overrides)),
|
m_overrides(std::move(_overrides)),
|
||||||
@ -962,7 +960,7 @@ public:
|
|||||||
/// array, struct or mapping. These types can take a data location (and often require it).
|
/// array, struct or mapping. These types can take a data location (and often require it).
|
||||||
/// Can only be called after reference resolution.
|
/// Can only be called after reference resolution.
|
||||||
bool hasReferenceOrMappingType() const;
|
bool hasReferenceOrMappingType() const;
|
||||||
bool isStateVariable() const { return m_isStateVariable; }
|
bool isStateVariable() const;
|
||||||
bool isIndexed() const { return m_isIndexed; }
|
bool isIndexed() const { return m_isIndexed; }
|
||||||
Mutability mutability() const { return m_mutability; }
|
Mutability mutability() const { return m_mutability; }
|
||||||
bool isConstant() const { return m_mutability == Mutability::Constant; }
|
bool isConstant() const { return m_mutability == Mutability::Constant; }
|
||||||
@ -991,7 +989,6 @@ private:
|
|||||||
/// Initially assigned value, can be missing. For local variables, this is stored inside
|
/// Initially assigned value, can be missing. For local variables, this is stored inside
|
||||||
/// VariableDeclarationStatement and not here.
|
/// VariableDeclarationStatement and not here.
|
||||||
ASTPointer<Expression> m_value;
|
ASTPointer<Expression> m_value;
|
||||||
bool m_isStateVariable = false; ///< Whether or not this is a contract state variable
|
|
||||||
bool m_isIndexed = false; ///< Whether this is an indexed variable (used by events).
|
bool m_isIndexed = false; ///< Whether this is an indexed variable (used by events).
|
||||||
/// Whether the variable is "constant", "immutable" or non-marked (mutable).
|
/// Whether the variable is "constant", "immutable" or non-marked (mutable).
|
||||||
Mutability m_mutability = Mutability::Mutable;
|
Mutability m_mutability = Mutability::Mutable;
|
||||||
|
@ -454,7 +454,6 @@ ASTPointer<VariableDeclaration> ASTJsonImporter::createVariableDeclaration(Json:
|
|||||||
nullOrCast<Expression>(member(_node, "value")),
|
nullOrCast<Expression>(member(_node, "value")),
|
||||||
visibility(_node),
|
visibility(_node),
|
||||||
_node["documentation"].isNull() ? nullptr : createDocumentation(member(_node, "documentation")),
|
_node["documentation"].isNull() ? nullptr : createDocumentation(member(_node, "documentation")),
|
||||||
memberAsBool(_node, "stateVariable"),
|
|
||||||
_node.isMember("indexed") ? memberAsBool(_node, "indexed") : false,
|
_node.isMember("indexed") ? memberAsBool(_node, "indexed") : false,
|
||||||
mutability,
|
mutability,
|
||||||
_node["overrides"].isNull() ? nullptr : createOverrideSpecifier(member(_node, "overrides")),
|
_node["overrides"].isNull() ? nullptr : createOverrideSpecifier(member(_node, "overrides")),
|
||||||
|
@ -800,7 +800,6 @@ ASTPointer<VariableDeclaration> Parser::parseVariableDeclaration(
|
|||||||
value,
|
value,
|
||||||
visibility,
|
visibility,
|
||||||
documentation,
|
documentation,
|
||||||
_options.isStateVariable,
|
|
||||||
isIndexed,
|
isIndexed,
|
||||||
mutability,
|
mutability,
|
||||||
overrides,
|
overrides,
|
||||||
|
Loading…
Reference in New Issue
Block a user