Merge pull request #10833 from ethereum/ast-precise-name-locations

Extend the Solidity AST for precise locations of names
This commit is contained in:
chriseth 2021-02-11 10:44:58 +01:00 committed by GitHub
commit cbb197f7fa
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
112 changed files with 427 additions and 47 deletions

View File

@ -15,6 +15,7 @@ Bugfixes:
AST Changes: AST Changes:
* Support field `documentation` to hold NatSpec comments above each statement. * Support field `documentation` to hold NatSpec comments above each statement.
* Adds `nameLocation` to declarations to represent the exact location of the symbolic name.
### 0.8.1 (2021-01-27) ### 0.8.1 (2021-01-27)

View File

@ -34,9 +34,11 @@ SourceLocation const parseSourceLocation(std::string const& _input, std::string
boost::algorithm::split(pos, _input, boost::is_any_of(":")); boost::algorithm::split(pos, _input, boost::is_any_of(":"));
solAssert(pos.size() == 3, "SourceLocation string must have 3 colon separated numeric fields.");
auto const sourceIndex = stoi(pos[Index]);
astAssert( astAssert(
pos.size() == 3 && sourceIndex == -1 || _maxIndex >= static_cast<size_t>(sourceIndex),
_maxIndex >= static_cast<size_t>(stoi(pos[Index])),
"'src'-field ill-formatted or src-index too high" "'src'-field ill-formatted or src-index too high"
); );
@ -44,7 +46,9 @@ SourceLocation const parseSourceLocation(std::string const& _input, std::string
int end = start + stoi(pos[Length]); int end = start + stoi(pos[Length]);
// ASSUMPTION: only the name of source is used from here on, the m_source of the CharStream-Object can be empty // ASSUMPTION: only the name of source is used from here on, the m_source of the CharStream-Object can be empty
std::shared_ptr<langutil::CharStream> source = std::make_shared<langutil::CharStream>("", _sourceName); std::shared_ptr<langutil::CharStream> source;
if (sourceIndex != -1)
source = std::make_shared<langutil::CharStream>("", _sourceName);
return SourceLocation{start, end, source}; return SourceLocation{start, end, source};
} }

View File

@ -244,12 +244,14 @@ public:
int64_t _id, int64_t _id,
SourceLocation const& _location, SourceLocation const& _location,
ASTPointer<ASTString> _name, ASTPointer<ASTString> _name,
SourceLocation _nameLocation,
Visibility _visibility = Visibility::Default Visibility _visibility = Visibility::Default
): ):
ASTNode(_id, _location), m_name(std::move(_name)), m_visibility(_visibility) {} ASTNode(_id, _location), m_name(std::move(_name)), m_nameLocation(std::move(_nameLocation)), m_visibility(_visibility) {}
/// @returns the declared name. /// @returns the declared name.
ASTString const& name() const { return *m_name; } ASTString const& name() const { return *m_name; }
SourceLocation const& nameLocation() const noexcept { return m_nameLocation; }
bool noVisibilitySpecified() const { return m_visibility == Visibility::Default; } bool noVisibilitySpecified() const { return m_visibility == Visibility::Default; }
Visibility visibility() const { return m_visibility == Visibility::Default ? defaultVisibility() : m_visibility; } Visibility visibility() const { return m_visibility == Visibility::Default ? defaultVisibility() : m_visibility; }
bool isPublic() const { return visibility() >= Visibility::Public; } bool isPublic() const { return visibility() >= Visibility::Public; }
@ -287,6 +289,7 @@ protected:
private: private:
ASTPointer<ASTString> m_name; ASTPointer<ASTString> m_name;
SourceLocation m_nameLocation;
Visibility m_visibility; Visibility m_visibility;
}; };
@ -345,9 +348,10 @@ public:
SourceLocation const& _location, SourceLocation const& _location,
ASTPointer<ASTString> _path, ASTPointer<ASTString> _path,
ASTPointer<ASTString> const& _unitAlias, ASTPointer<ASTString> const& _unitAlias,
SourceLocation _unitAliasLocation,
SymbolAliasList _symbolAliases SymbolAliasList _symbolAliases
): ):
Declaration(_id, _location, _unitAlias), Declaration(_id, _location, _unitAlias, std::move(_unitAliasLocation)),
m_path(std::move(_path)), m_path(std::move(_path)),
m_symbolAliases(move(_symbolAliases)) m_symbolAliases(move(_symbolAliases))
{ } { }
@ -477,13 +481,14 @@ public:
int64_t _id, int64_t _id,
SourceLocation const& _location, SourceLocation const& _location,
ASTPointer<ASTString> const& _name, ASTPointer<ASTString> const& _name,
SourceLocation _nameLocation,
ASTPointer<StructuredDocumentation> const& _documentation, ASTPointer<StructuredDocumentation> const& _documentation,
std::vector<ASTPointer<InheritanceSpecifier>> _baseContracts, std::vector<ASTPointer<InheritanceSpecifier>> _baseContracts,
std::vector<ASTPointer<ASTNode>> _subNodes, std::vector<ASTPointer<ASTNode>> _subNodes,
ContractKind _contractKind = ContractKind::Contract, ContractKind _contractKind = ContractKind::Contract,
bool _abstract = false bool _abstract = false
): ):
Declaration(_id, _location, _name), Declaration(_id, _location, _name, std::move(_nameLocation)),
StructurallyDocumented(_documentation), StructurallyDocumented(_documentation),
m_baseContracts(std::move(_baseContracts)), m_baseContracts(std::move(_baseContracts)),
m_subNodes(std::move(_subNodes)), m_subNodes(std::move(_subNodes)),
@ -643,9 +648,10 @@ public:
int64_t _id, int64_t _id,
SourceLocation const& _location, SourceLocation const& _location,
ASTPointer<ASTString> const& _name, ASTPointer<ASTString> const& _name,
SourceLocation _nameLocation,
std::vector<ASTPointer<VariableDeclaration>> _members std::vector<ASTPointer<VariableDeclaration>> _members
): ):
Declaration(_id, _location, _name), m_members(std::move(_members)) {} Declaration(_id, _location, _name, std::move(_nameLocation)), m_members(std::move(_members)) {}
void accept(ASTVisitor& _visitor) override; void accept(ASTVisitor& _visitor) override;
void accept(ASTConstVisitor& _visitor) const override; void accept(ASTConstVisitor& _visitor) const override;
@ -670,9 +676,10 @@ public:
int64_t _id, int64_t _id,
SourceLocation const& _location, SourceLocation const& _location,
ASTPointer<ASTString> const& _name, ASTPointer<ASTString> const& _name,
SourceLocation _nameLocation,
std::vector<ASTPointer<EnumValue>> _members std::vector<ASTPointer<EnumValue>> _members
): ):
Declaration(_id, _location, _name), m_members(std::move(_members)) {} Declaration(_id, _location, _name, std::move(_nameLocation)), m_members(std::move(_members)) {}
void accept(ASTVisitor& _visitor) override; void accept(ASTVisitor& _visitor) override;
void accept(ASTConstVisitor& _visitor) const override; void accept(ASTConstVisitor& _visitor) const override;
@ -696,7 +703,7 @@ class EnumValue: public Declaration
{ {
public: public:
EnumValue(int64_t _id, SourceLocation const& _location, ASTPointer<ASTString> const& _name): EnumValue(int64_t _id, SourceLocation const& _location, ASTPointer<ASTString> const& _name):
Declaration(_id, _location, _name) {} Declaration(_id, _location, _name, _location) {}
void accept(ASTVisitor& _visitor) override; void accept(ASTVisitor& _visitor) override;
void accept(ASTConstVisitor& _visitor) const override; void accept(ASTConstVisitor& _visitor) const override;
@ -738,13 +745,14 @@ public:
int64_t _id, int64_t _id,
SourceLocation const& _location, SourceLocation const& _location,
ASTPointer<ASTString> const& _name, ASTPointer<ASTString> const& _name,
SourceLocation _nameLocation,
Visibility _visibility, Visibility _visibility,
ASTPointer<ParameterList> _parameters, ASTPointer<ParameterList> _parameters,
bool _isVirtual = false, bool _isVirtual = false,
ASTPointer<OverrideSpecifier> _overrides = nullptr, ASTPointer<OverrideSpecifier> _overrides = nullptr,
ASTPointer<ParameterList> _returnParameters = ASTPointer<ParameterList>() ASTPointer<ParameterList> _returnParameters = ASTPointer<ParameterList>()
): ):
Declaration(_id, _location, _name, _visibility), Declaration(_id, _location, _name, std::move(_nameLocation), _visibility),
m_parameters(std::move(_parameters)), m_parameters(std::move(_parameters)),
m_overrides(std::move(_overrides)), m_overrides(std::move(_overrides)),
m_returnParameters(std::move(_returnParameters)), m_returnParameters(std::move(_returnParameters)),
@ -815,6 +823,7 @@ public:
int64_t _id, int64_t _id,
SourceLocation const& _location, SourceLocation const& _location,
ASTPointer<ASTString> const& _name, ASTPointer<ASTString> const& _name,
SourceLocation const& _nameLocation,
Visibility _visibility, Visibility _visibility,
StateMutability _stateMutability, StateMutability _stateMutability,
bool _free, bool _free,
@ -827,7 +836,7 @@ public:
ASTPointer<ParameterList> const& _returnParameters, ASTPointer<ParameterList> const& _returnParameters,
ASTPointer<Block> const& _body ASTPointer<Block> const& _body
): ):
CallableDeclaration(_id, _location, _name, _visibility, _parameters, _isVirtual, _overrides, _returnParameters), CallableDeclaration(_id, _location, _name, std::move(_nameLocation), _visibility, _parameters, _isVirtual, _overrides, _returnParameters),
StructurallyDocumented(_documentation), StructurallyDocumented(_documentation),
ImplementationOptional(_body != nullptr), ImplementationOptional(_body != nullptr),
m_stateMutability(_stateMutability), m_stateMutability(_stateMutability),
@ -928,6 +937,7 @@ public:
SourceLocation const& _location, SourceLocation const& _location,
ASTPointer<TypeName> _type, ASTPointer<TypeName> _type,
ASTPointer<ASTString> const& _name, ASTPointer<ASTString> const& _name,
SourceLocation _nameLocation,
ASTPointer<Expression> _value, ASTPointer<Expression> _value,
Visibility _visibility, Visibility _visibility,
ASTPointer<StructuredDocumentation> const _documentation = nullptr, ASTPointer<StructuredDocumentation> const _documentation = nullptr,
@ -936,7 +946,7 @@ public:
ASTPointer<OverrideSpecifier> _overrides = nullptr, ASTPointer<OverrideSpecifier> _overrides = nullptr,
Location _referenceLocation = Location::Unspecified Location _referenceLocation = Location::Unspecified
): ):
Declaration(_id, _location, _name, _visibility), Declaration(_id, _location, _name, std::move(_nameLocation), _visibility),
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)),
@ -1033,13 +1043,14 @@ public:
int64_t _id, int64_t _id,
SourceLocation const& _location, SourceLocation const& _location,
ASTPointer<ASTString> const& _name, ASTPointer<ASTString> const& _name,
SourceLocation _nameLocation,
ASTPointer<StructuredDocumentation> const& _documentation, ASTPointer<StructuredDocumentation> const& _documentation,
ASTPointer<ParameterList> const& _parameters, ASTPointer<ParameterList> const& _parameters,
bool _isVirtual, bool _isVirtual,
ASTPointer<OverrideSpecifier> const& _overrides, ASTPointer<OverrideSpecifier> const& _overrides,
ASTPointer<Block> const& _body ASTPointer<Block> const& _body
): ):
CallableDeclaration(_id, _location, _name, Visibility::Internal, _parameters, _isVirtual, _overrides), CallableDeclaration(_id, _location, _name, std::move(_nameLocation), Visibility::Internal, _parameters, _isVirtual, _overrides),
StructurallyDocumented(_documentation), StructurallyDocumented(_documentation),
ImplementationOptional(_body != nullptr), ImplementationOptional(_body != nullptr),
m_body(_body) m_body(_body)
@ -1108,11 +1119,12 @@ public:
int64_t _id, int64_t _id,
SourceLocation const& _location, SourceLocation const& _location,
ASTPointer<ASTString> const& _name, ASTPointer<ASTString> const& _name,
SourceLocation _nameLocation,
ASTPointer<StructuredDocumentation> const& _documentation, ASTPointer<StructuredDocumentation> const& _documentation,
ASTPointer<ParameterList> const& _parameters, ASTPointer<ParameterList> const& _parameters,
bool _anonymous = false bool _anonymous = false
): ):
CallableDeclaration(_id, _location, _name, Visibility::Default, _parameters), CallableDeclaration(_id, _location, _name, std::move(_nameLocation), Visibility::Default, _parameters),
StructurallyDocumented(_documentation), StructurallyDocumented(_documentation),
m_anonymous(_anonymous) m_anonymous(_anonymous)
{ {
@ -1151,7 +1163,7 @@ class MagicVariableDeclaration: public Declaration
{ {
public: public:
MagicVariableDeclaration(int _id, ASTString const& _name, Type const* _type): MagicVariableDeclaration(int _id, ASTString const& _name, Type const* _type):
Declaration(_id, SourceLocation(), std::make_shared<ASTString>(_name)), m_type(_type) { } Declaration(_id, SourceLocation(), std::make_shared<ASTString>(_name), {}), m_type(_type) { }
void accept(ASTVisitor&) override void accept(ASTVisitor&) override
{ {

View File

@ -107,21 +107,21 @@ void ASTJsonConverter::setJsonNode(
m_currentValue[e.first] = std::move(e.second); m_currentValue[e.first] = std::move(e.second);
} }
size_t ASTJsonConverter::sourceIndexFromLocation(SourceLocation const& _location) const optional<size_t> ASTJsonConverter::sourceIndexFromLocation(SourceLocation const& _location) const
{ {
if (_location.source && m_sourceIndices.count(_location.source->name())) if (_location.source && m_sourceIndices.count(_location.source->name()))
return m_sourceIndices.at(_location.source->name()); return m_sourceIndices.at(_location.source->name());
else else
return numeric_limits<size_t>::max(); return nullopt;
} }
string ASTJsonConverter::sourceLocationToString(SourceLocation const& _location) const string ASTJsonConverter::sourceLocationToString(SourceLocation const& _location) const
{ {
size_t sourceIndex = sourceIndexFromLocation(_location); optional<size_t> sourceIndexOpt = sourceIndexFromLocation(_location);
int length = -1; int length = -1;
if (_location.start >= 0 && _location.end >= 0) if (_location.start >= 0 && _location.end >= 0)
length = _location.end - _location.start; length = _location.end - _location.start;
return to_string(_location.start) + ":" + to_string(length) + ":" + to_string(sourceIndex); return to_string(_location.start) + ":" + to_string(length) + ":" + (sourceIndexOpt.has_value() ? to_string(sourceIndexOpt.value()) : "-1");
} }
string ASTJsonConverter::namePathToString(std::vector<ASTString> const& _namePath) string ASTJsonConverter::namePathToString(std::vector<ASTString> const& _namePath)
@ -243,6 +243,8 @@ bool ASTJsonConverter::visit(ImportDirective const& _node)
addIfSet(attributes, "absolutePath", _node.annotation().absolutePath); addIfSet(attributes, "absolutePath", _node.annotation().absolutePath);
attributes.emplace_back("unitAlias", _node.name()); attributes.emplace_back("unitAlias", _node.name());
attributes.emplace_back("nameLocation", Json::Value(sourceLocationToString(_node.nameLocation())));
Json::Value symbolAliases(Json::arrayValue); Json::Value symbolAliases(Json::arrayValue);
for (auto const& symbolAlias: _node.symbolAliases()) for (auto const& symbolAlias: _node.symbolAliases())
{ {
@ -250,6 +252,7 @@ bool ASTJsonConverter::visit(ImportDirective const& _node)
solAssert(symbolAlias.symbol, ""); solAssert(symbolAlias.symbol, "");
tuple["foreign"] = toJson(*symbolAlias.symbol); tuple["foreign"] = toJson(*symbolAlias.symbol);
tuple["local"] = symbolAlias.alias ? Json::Value(*symbolAlias.alias) : Json::nullValue; tuple["local"] = symbolAlias.alias ? Json::Value(*symbolAlias.alias) : Json::nullValue;
tuple["nameLocation"] = sourceLocationToString(_node.nameLocation());
symbolAliases.append(tuple); symbolAliases.append(tuple);
} }
attributes.emplace_back("symbolAliases", std::move(symbolAliases)); attributes.emplace_back("symbolAliases", std::move(symbolAliases));
@ -261,6 +264,7 @@ bool ASTJsonConverter::visit(ContractDefinition const& _node)
{ {
std::vector<pair<string, Json::Value>> attributes = { std::vector<pair<string, Json::Value>> attributes = {
make_pair("name", _node.name()), make_pair("name", _node.name()),
make_pair("nameLocation", sourceLocationToString(_node.nameLocation())),
make_pair("documentation", _node.documentation() ? toJson(*_node.documentation()) : Json::nullValue), make_pair("documentation", _node.documentation() ? toJson(*_node.documentation()) : Json::nullValue),
make_pair("contractKind", contractKind(_node.contractKind())), make_pair("contractKind", contractKind(_node.contractKind())),
make_pair("abstract", _node.abstract()), make_pair("abstract", _node.abstract()),
@ -310,6 +314,7 @@ bool ASTJsonConverter::visit(StructDefinition const& _node)
{ {
std::vector<pair<string, Json::Value>> attributes = { std::vector<pair<string, Json::Value>> attributes = {
make_pair("name", _node.name()), make_pair("name", _node.name()),
make_pair("nameLocation", sourceLocationToString(_node.nameLocation())),
make_pair("visibility", Declaration::visibilityToString(_node.visibility())), make_pair("visibility", Declaration::visibilityToString(_node.visibility())),
make_pair("members", toJson(_node.members())), make_pair("members", toJson(_node.members())),
make_pair("scope", idOrNull(_node.scope())) make_pair("scope", idOrNull(_node.scope()))
@ -326,6 +331,7 @@ bool ASTJsonConverter::visit(EnumDefinition const& _node)
{ {
std::vector<pair<string, Json::Value>> attributes = { std::vector<pair<string, Json::Value>> attributes = {
make_pair("name", _node.name()), make_pair("name", _node.name()),
make_pair("nameLocation", sourceLocationToString(_node.nameLocation())),
make_pair("members", toJson(_node.members())) make_pair("members", toJson(_node.members()))
}; };
@ -339,7 +345,8 @@ bool ASTJsonConverter::visit(EnumDefinition const& _node)
bool ASTJsonConverter::visit(EnumValue const& _node) bool ASTJsonConverter::visit(EnumValue const& _node)
{ {
setJsonNode(_node, "EnumValue", { setJsonNode(_node, "EnumValue", {
make_pair("name", _node.name()) make_pair("name", _node.name()),
make_pair("nameLocation", sourceLocationToString(_node.nameLocation())),
}); });
return false; return false;
} }
@ -364,6 +371,7 @@ bool ASTJsonConverter::visit(FunctionDefinition const& _node)
{ {
std::vector<pair<string, Json::Value>> attributes = { std::vector<pair<string, Json::Value>> attributes = {
make_pair("name", _node.name()), make_pair("name", _node.name()),
make_pair("nameLocation", sourceLocationToString(_node.nameLocation())),
make_pair("documentation", _node.documentation() ? toJson(*_node.documentation()) : Json::nullValue), make_pair("documentation", _node.documentation() ? toJson(*_node.documentation()) : Json::nullValue),
make_pair("kind", _node.isFree() ? "freeFunction" : TokenTraits::toString(_node.kind())), make_pair("kind", _node.isFree() ? "freeFunction" : TokenTraits::toString(_node.kind())),
make_pair("stateMutability", stateMutabilityToString(_node.stateMutability())), make_pair("stateMutability", stateMutabilityToString(_node.stateMutability())),
@ -401,6 +409,7 @@ bool ASTJsonConverter::visit(VariableDeclaration const& _node)
{ {
std::vector<pair<string, Json::Value>> attributes = { std::vector<pair<string, Json::Value>> attributes = {
make_pair("name", _node.name()), make_pair("name", _node.name()),
make_pair("nameLocation", sourceLocationToString(_node.nameLocation())),
make_pair("typeName", toJson(_node.typeName())), make_pair("typeName", toJson(_node.typeName())),
make_pair("constant", _node.isConstant()), make_pair("constant", _node.isConstant()),
make_pair("mutability", VariableDeclaration::mutabilityToString(_node.mutability())), make_pair("mutability", VariableDeclaration::mutabilityToString(_node.mutability())),
@ -428,6 +437,7 @@ bool ASTJsonConverter::visit(ModifierDefinition const& _node)
{ {
std::vector<pair<string, Json::Value>> attributes = { std::vector<pair<string, Json::Value>> attributes = {
make_pair("name", _node.name()), make_pair("name", _node.name()),
make_pair("nameLocation", sourceLocationToString(_node.nameLocation())),
make_pair("documentation", _node.documentation() ? toJson(*_node.documentation()) : Json::nullValue), make_pair("documentation", _node.documentation() ? toJson(*_node.documentation()) : Json::nullValue),
make_pair("visibility", Declaration::visibilityToString(_node.visibility())), make_pair("visibility", Declaration::visibilityToString(_node.visibility())),
make_pair("parameters", toJson(_node.parameterList())), make_pair("parameters", toJson(_node.parameterList())),
@ -455,6 +465,7 @@ bool ASTJsonConverter::visit(EventDefinition const& _node)
m_inEvent = true; m_inEvent = true;
setJsonNode(_node, "EventDefinition", { setJsonNode(_node, "EventDefinition", {
make_pair("name", _node.name()), make_pair("name", _node.name()),
make_pair("nameLocation", sourceLocationToString(_node.nameLocation())),
make_pair("documentation", _node.documentation() ? toJson(*_node.documentation()) : Json::nullValue), make_pair("documentation", _node.documentation() ? toJson(*_node.documentation()) : Json::nullValue),
make_pair("parameters", toJson(_node.parameterList())), make_pair("parameters", toJson(_node.parameterList())),
make_pair("anonymous", _node.isAnonymous()) make_pair("anonymous", _node.isAnonymous())

View File

@ -137,7 +137,8 @@ private:
std::string const& _nodeName, std::string const& _nodeName,
std::vector<std::pair<std::string, Json::Value>>&& _attributes std::vector<std::pair<std::string, Json::Value>>&& _attributes
); );
size_t sourceIndexFromLocation(langutil::SourceLocation const& _location) const; /// Maps source location to an index, if source is valid and a mapping does exist, otherwise returns std::nullopt.
std::optional<size_t> sourceIndexFromLocation(langutil::SourceLocation const& _location) const;
std::string sourceLocationToString(langutil::SourceLocation const& _location) const; std::string sourceLocationToString(langutil::SourceLocation const& _location) const;
static std::string namePathToString(std::vector<ASTString> const& _namePath); static std::string namePathToString(std::vector<ASTString> const& _namePath);
static Json::Value idOrNull(ASTNode const* _pt) static Json::Value idOrNull(ASTNode const* _pt)

View File

@ -99,6 +99,13 @@ SourceLocation const ASTJsonImporter::createSourceLocation(Json::Value const& _n
return solidity::langutil::parseSourceLocation(_node["src"].asString(), m_currentSourceName, m_sourceLocations.size()); return solidity::langutil::parseSourceLocation(_node["src"].asString(), m_currentSourceName, m_sourceLocations.size());
} }
SourceLocation ASTJsonImporter::createNameSourceLocation(Json::Value const& _node)
{
astAssert(member(_node, "nameLocation").isString(), "'nameLocation' must be a string");
return solidity::langutil::parseSourceLocation(_node["nameLocation"].asString(), m_currentSourceName, m_sourceLocations.size());
}
template<class T> template<class T>
ASTPointer<T> ASTJsonImporter::convertJsonToASTNode(Json::Value const& _node) ASTPointer<T> ASTJsonImporter::convertJsonToASTNode(Json::Value const& _node)
{ {
@ -272,6 +279,7 @@ ASTPointer<ImportDirective> ASTJsonImporter::createImportDirective(Json::Value c
_node, _node,
path, path,
unitAlias, unitAlias,
createNameSourceLocation(_node),
move(symbolAliases) move(symbolAliases)
); );
@ -298,6 +306,7 @@ ASTPointer<ContractDefinition> ASTJsonImporter::createContractDefinition(Json::V
return createASTNode<ContractDefinition>( return createASTNode<ContractDefinition>(
_node, _node,
make_shared<ASTString>(_node["name"].asString()), make_shared<ASTString>(_node["name"].asString()),
createNameSourceLocation(_node),
_node["documentation"].isNull() ? nullptr : createDocumentation(member(_node, "documentation")), _node["documentation"].isNull() ? nullptr : createDocumentation(member(_node, "documentation")),
baseContracts, baseContracts,
subNodes, subNodes,
@ -352,6 +361,7 @@ ASTPointer<ASTNode> ASTJsonImporter::createStructDefinition(Json::Value const& _
return createASTNode<StructDefinition>( return createASTNode<StructDefinition>(
_node, _node,
memberAsASTString(_node, "name"), memberAsASTString(_node, "name"),
createNameSourceLocation(_node),
members members
); );
} }
@ -364,6 +374,7 @@ ASTPointer<EnumDefinition> ASTJsonImporter::createEnumDefinition(Json::Value con
return createASTNode<EnumDefinition>( return createASTNode<EnumDefinition>(
_node, _node,
memberAsASTString(_node, "name"), memberAsASTString(_node, "name"),
createNameSourceLocation(_node),
members members
); );
} }
@ -434,6 +445,7 @@ ASTPointer<FunctionDefinition> ASTJsonImporter::createFunctionDefinition(Json::V
return createASTNode<FunctionDefinition>( return createASTNode<FunctionDefinition>(
_node, _node,
memberAsASTString(_node, "name"), memberAsASTString(_node, "name"),
createNameSourceLocation(_node),
vis, vis,
stateMutability(_node), stateMutability(_node),
freeFunction, freeFunction,
@ -475,6 +487,7 @@ ASTPointer<VariableDeclaration> ASTJsonImporter::createVariableDeclaration(Json:
_node, _node,
nullOrCast<TypeName>(member(_node, "typeName")), nullOrCast<TypeName>(member(_node, "typeName")),
make_shared<ASTString>(member(_node, "name").asString()), make_shared<ASTString>(member(_node, "name").asString()),
createNameSourceLocation(_node),
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")),
@ -490,6 +503,7 @@ ASTPointer<ModifierDefinition> ASTJsonImporter::createModifierDefinition(Json::V
return createASTNode<ModifierDefinition>( return createASTNode<ModifierDefinition>(
_node, _node,
memberAsASTString(_node, "name"), memberAsASTString(_node, "name"),
createNameSourceLocation(_node),
_node["documentation"].isNull() ? nullptr : createDocumentation(member(_node, "documentation")), _node["documentation"].isNull() ? nullptr : createDocumentation(member(_node, "documentation")),
createParameterList(member(_node, "parameters")), createParameterList(member(_node, "parameters")),
memberAsBool(_node, "virtual"), memberAsBool(_node, "virtual"),
@ -515,6 +529,7 @@ ASTPointer<EventDefinition> ASTJsonImporter::createEventDefinition(Json::Value c
return createASTNode<EventDefinition>( return createASTNode<EventDefinition>(
_node, _node,
memberAsASTString(_node, "name"), memberAsASTString(_node, "name"),
createNameSourceLocation(_node),
_node["documentation"].isNull() ? nullptr : createDocumentation(member(_node, "documentation")), _node["documentation"].isNull() ? nullptr : createDocumentation(member(_node, "documentation")),
createParameterList(member(_node, "parameters")), createParameterList(member(_node, "parameters")),
memberAsBool(_node, "anonymous") memberAsBool(_node, "anonymous")

View File

@ -67,6 +67,7 @@ private:
template<class T> template<class T>
ASTPointer<T> convertJsonToASTNode(Json::Value const& _node); ASTPointer<T> convertJsonToASTNode(Json::Value const& _node);
langutil::SourceLocation createNameSourceLocation(Json::Value const& _node);
/// \defgroup nodeCreators JSON to AST-Nodes /// \defgroup nodeCreators JSON to AST-Nodes
///@{ ///@{

View File

@ -226,6 +226,7 @@ ASTPointer<ImportDirective> Parser::parseImportDirective()
expectToken(Token::Import); expectToken(Token::Import);
ASTPointer<ASTString> path; ASTPointer<ASTString> path;
ASTPointer<ASTString> unitAlias = make_shared<string>(); ASTPointer<ASTString> unitAlias = make_shared<string>();
SourceLocation unitAliasLocation{};
ImportDirective::SymbolAliasList symbolAliases; ImportDirective::SymbolAliasList symbolAliases;
if (m_scanner->currentToken() == Token::StringLiteral) if (m_scanner->currentToken() == Token::StringLiteral)
@ -234,7 +235,7 @@ ASTPointer<ImportDirective> Parser::parseImportDirective()
if (m_scanner->currentToken() == Token::As) if (m_scanner->currentToken() == Token::As)
{ {
m_scanner->next(); m_scanner->next();
unitAlias = expectIdentifierToken(); tie(unitAlias, unitAliasLocation) = expectIdentifierWithLocation();
} }
} }
else else
@ -250,8 +251,7 @@ ASTPointer<ImportDirective> Parser::parseImportDirective()
if (m_scanner->currentToken() == Token::As) if (m_scanner->currentToken() == Token::As)
{ {
expectToken(Token::As); expectToken(Token::As);
aliasLocation = currentLocation(); tie(alias, aliasLocation) = expectIdentifierWithLocation();
alias = expectIdentifierToken();
} }
symbolAliases.emplace_back(ImportDirective::SymbolAlias{move(id), move(alias), aliasLocation}); symbolAliases.emplace_back(ImportDirective::SymbolAlias{move(id), move(alias), aliasLocation});
if (m_scanner->currentToken() != Token::Comma) if (m_scanner->currentToken() != Token::Comma)
@ -264,7 +264,7 @@ ASTPointer<ImportDirective> Parser::parseImportDirective()
{ {
m_scanner->next(); m_scanner->next();
expectToken(Token::As); expectToken(Token::As);
unitAlias = expectIdentifierToken(); tie(unitAlias, unitAliasLocation) = expectIdentifierWithLocation();
} }
else else
fatalParserError(9478_error, "Expected string literal (path), \"*\" or alias list."); fatalParserError(9478_error, "Expected string literal (path), \"*\" or alias list.");
@ -281,7 +281,7 @@ ASTPointer<ImportDirective> Parser::parseImportDirective()
fatalParserError(6326_error, "Import path cannot be empty."); fatalParserError(6326_error, "Import path cannot be empty.");
nodeFactory.markEndPosition(); nodeFactory.markEndPosition();
expectToken(Token::Semicolon); expectToken(Token::Semicolon);
return nodeFactory.createNode<ImportDirective>(path, unitAlias, move(symbolAliases)); return nodeFactory.createNode<ImportDirective>(path, unitAlias, unitAliasLocation, move(symbolAliases));
} }
std::pair<ContractKind, bool> Parser::parseContractKind() std::pair<ContractKind, bool> Parser::parseContractKind()
@ -317,6 +317,7 @@ ASTPointer<ContractDefinition> Parser::parseContractDefinition()
RecursionGuard recursionGuard(*this); RecursionGuard recursionGuard(*this);
ASTNodeFactory nodeFactory(*this); ASTNodeFactory nodeFactory(*this);
ASTPointer<ASTString> name = nullptr; ASTPointer<ASTString> name = nullptr;
SourceLocation nameLocation{};
ASTPointer<StructuredDocumentation> documentation; ASTPointer<StructuredDocumentation> documentation;
vector<ASTPointer<InheritanceSpecifier>> baseContracts; vector<ASTPointer<InheritanceSpecifier>> baseContracts;
vector<ASTPointer<ASTNode>> subNodes; vector<ASTPointer<ASTNode>> subNodes;
@ -325,7 +326,7 @@ ASTPointer<ContractDefinition> Parser::parseContractDefinition()
{ {
documentation = parseStructuredDocumentation(); documentation = parseStructuredDocumentation();
contractKind = parseContractKind(); contractKind = parseContractKind();
name = expectIdentifierToken(); tie(name, nameLocation) = expectIdentifierWithLocation();
if (m_scanner->currentToken() == Token::Is) if (m_scanner->currentToken() == Token::Is)
do do
{ {
@ -385,6 +386,7 @@ ASTPointer<ContractDefinition> Parser::parseContractDefinition()
expectToken(Token::RBrace); expectToken(Token::RBrace);
return nodeFactory.createNode<ContractDefinition>( return nodeFactory.createNode<ContractDefinition>(
name, name,
nameLocation,
documentation, documentation,
baseContracts, baseContracts,
subNodes, subNodes,
@ -572,6 +574,7 @@ ASTPointer<ASTNode> Parser::parseFunctionDefinition(bool _freeFunction)
Token kind = m_scanner->currentToken(); Token kind = m_scanner->currentToken();
ASTPointer<ASTString> name; ASTPointer<ASTString> name;
SourceLocation nameLocation;
if (kind == Token::Function) if (kind == Token::Function)
{ {
m_scanner->next(); m_scanner->next();
@ -586,6 +589,7 @@ ASTPointer<ASTNode> Parser::parseFunctionDefinition(bool _freeFunction)
{Token::Fallback, "fallback function"}, {Token::Fallback, "fallback function"},
{Token::Receive, "receive function"}, {Token::Receive, "receive function"},
}.at(m_scanner->currentToken()); }.at(m_scanner->currentToken());
nameLocation = currentLocation();
name = make_shared<ASTString>(TokenTraits::toString(m_scanner->currentToken())); name = make_shared<ASTString>(TokenTraits::toString(m_scanner->currentToken()));
string message{ string message{
"This function is named \"" + *name + "\" but is not the " + expected + " of the contract. " "This function is named \"" + *name + "\" but is not the " + expected + " of the contract. "
@ -599,7 +603,7 @@ ASTPointer<ASTNode> Parser::parseFunctionDefinition(bool _freeFunction)
m_scanner->next(); m_scanner->next();
} }
else else
name = expectIdentifierToken(); tie(name, nameLocation) = expectIdentifierWithLocation();
} }
else else
{ {
@ -621,6 +625,7 @@ ASTPointer<ASTNode> Parser::parseFunctionDefinition(bool _freeFunction)
} }
return nodeFactory.createNode<FunctionDefinition>( return nodeFactory.createNode<FunctionDefinition>(
name, name,
nameLocation,
header.visibility, header.visibility,
header.stateMutability, header.stateMutability,
_freeFunction, _freeFunction,
@ -640,7 +645,7 @@ ASTPointer<StructDefinition> Parser::parseStructDefinition()
RecursionGuard recursionGuard(*this); RecursionGuard recursionGuard(*this);
ASTNodeFactory nodeFactory(*this); ASTNodeFactory nodeFactory(*this);
expectToken(Token::Struct); expectToken(Token::Struct);
ASTPointer<ASTString> name = expectIdentifierToken(); auto [name, nameLocation] = expectIdentifierWithLocation();
vector<ASTPointer<VariableDeclaration>> members; vector<ASTPointer<VariableDeclaration>> members;
expectToken(Token::LBrace); expectToken(Token::LBrace);
while (m_scanner->currentToken() != Token::RBrace) while (m_scanner->currentToken() != Token::RBrace)
@ -650,7 +655,7 @@ ASTPointer<StructDefinition> Parser::parseStructDefinition()
} }
nodeFactory.markEndPosition(); nodeFactory.markEndPosition();
expectToken(Token::RBrace); expectToken(Token::RBrace);
return nodeFactory.createNode<StructDefinition>(name, members); return nodeFactory.createNode<StructDefinition>(move(name), move(nameLocation), move(members));
} }
ASTPointer<EnumValue> Parser::parseEnumValue() ASTPointer<EnumValue> Parser::parseEnumValue()
@ -666,7 +671,7 @@ ASTPointer<EnumDefinition> Parser::parseEnumDefinition()
RecursionGuard recursionGuard(*this); RecursionGuard recursionGuard(*this);
ASTNodeFactory nodeFactory(*this); ASTNodeFactory nodeFactory(*this);
expectToken(Token::Enum); expectToken(Token::Enum);
ASTPointer<ASTString> name = expectIdentifierToken(); auto [name, nameLocation] = expectIdentifierWithLocation();
vector<ASTPointer<EnumValue>> members; vector<ASTPointer<EnumValue>> members;
expectToken(Token::LBrace); expectToken(Token::LBrace);
@ -684,7 +689,7 @@ ASTPointer<EnumDefinition> Parser::parseEnumDefinition()
nodeFactory.markEndPosition(); nodeFactory.markEndPosition();
expectToken(Token::RBrace); expectToken(Token::RBrace);
return nodeFactory.createNode<EnumDefinition>(name, members); return nodeFactory.createNode<EnumDefinition>(name, nameLocation, members);
} }
ASTPointer<VariableDeclaration> Parser::parseVariableDeclaration( ASTPointer<VariableDeclaration> Parser::parseVariableDeclaration(
@ -717,6 +722,7 @@ ASTPointer<VariableDeclaration> Parser::parseVariableDeclaration(
Visibility visibility(Visibility::Default); Visibility visibility(Visibility::Default);
VariableDeclaration::Location location = VariableDeclaration::Location::Unspecified; VariableDeclaration::Location location = VariableDeclaration::Location::Unspecified;
ASTPointer<ASTString> identifier; ASTPointer<ASTString> identifier;
SourceLocation nameLocation{};
while (true) while (true)
{ {
@ -795,7 +801,7 @@ ASTPointer<VariableDeclaration> Parser::parseVariableDeclaration(
else else
{ {
nodeFactory.markEndPosition(); nodeFactory.markEndPosition();
identifier = expectIdentifierToken(); tie(identifier, nameLocation) = expectIdentifierWithLocation();
} }
ASTPointer<Expression> value; ASTPointer<Expression> value;
if (_options.allowInitialValue) if (_options.allowInitialValue)
@ -810,6 +816,7 @@ ASTPointer<VariableDeclaration> Parser::parseVariableDeclaration(
return nodeFactory.createNode<VariableDeclaration>( return nodeFactory.createNode<VariableDeclaration>(
type, type,
identifier, identifier,
nameLocation,
value, value,
visibility, visibility,
documentation, documentation,
@ -830,7 +837,7 @@ ASTPointer<ModifierDefinition> Parser::parseModifierDefinition()
ASTPointer<StructuredDocumentation> documentation = parseStructuredDocumentation(); ASTPointer<StructuredDocumentation> documentation = parseStructuredDocumentation();
expectToken(Token::Modifier); expectToken(Token::Modifier);
ASTPointer<ASTString> name(expectIdentifierToken()); auto [name, nameLocation] = expectIdentifierWithLocation();
ASTPointer<ParameterList> parameters; ASTPointer<ParameterList> parameters;
if (m_scanner->currentToken() == Token::LParen) if (m_scanner->currentToken() == Token::LParen)
{ {
@ -875,7 +882,15 @@ ASTPointer<ModifierDefinition> Parser::parseModifierDefinition()
else else
m_scanner->next(); // just consume the ';' m_scanner->next(); // just consume the ';'
return nodeFactory.createNode<ModifierDefinition>(name, documentation, parameters, isVirtual, overrides, block); return nodeFactory.createNode<ModifierDefinition>(name, nameLocation, documentation, parameters, isVirtual, overrides, block);
}
pair<ASTPointer<ASTString>, SourceLocation> Parser::expectIdentifierWithLocation()
{
SourceLocation nameLocation = currentLocation();
ASTPointer<ASTString> name = expectIdentifierToken();
return {move(name), move(nameLocation)};
} }
ASTPointer<EventDefinition> Parser::parseEventDefinition() ASTPointer<EventDefinition> Parser::parseEventDefinition()
@ -885,7 +900,7 @@ ASTPointer<EventDefinition> Parser::parseEventDefinition()
ASTPointer<StructuredDocumentation> documentation = parseStructuredDocumentation(); ASTPointer<StructuredDocumentation> documentation = parseStructuredDocumentation();
expectToken(Token::Event); expectToken(Token::Event);
ASTPointer<ASTString> name(expectIdentifierToken()); auto [name, nameLocation] = expectIdentifierWithLocation();
VarDeclParserOptions options; VarDeclParserOptions options;
options.allowIndexed = true; options.allowIndexed = true;
@ -899,7 +914,7 @@ ASTPointer<EventDefinition> Parser::parseEventDefinition()
} }
nodeFactory.markEndPosition(); nodeFactory.markEndPosition();
expectToken(Token::Semicolon); expectToken(Token::Semicolon);
return nodeFactory.createNode<EventDefinition>(name, documentation, parameters, anonymous); return nodeFactory.createNode<EventDefinition>(name, nameLocation, documentation, parameters, anonymous);
} }
ASTPointer<UsingForDirective> Parser::parseUsingDirective() ASTPointer<UsingForDirective> Parser::parseUsingDirective()

View File

@ -151,6 +151,7 @@ private:
std::vector<ASTPointer<Expression>> parseFunctionCallListArguments(); std::vector<ASTPointer<Expression>> parseFunctionCallListArguments();
std::pair<std::vector<ASTPointer<Expression>>, std::vector<ASTPointer<ASTString>>> parseFunctionCallArguments(); std::pair<std::vector<ASTPointer<Expression>>, std::vector<ASTPointer<ASTString>>> parseFunctionCallArguments();
std::pair<std::vector<ASTPointer<Expression>>, std::vector<ASTPointer<ASTString>>> parseNamedArguments(); std::pair<std::vector<ASTPointer<Expression>>, std::vector<ASTPointer<ASTString>>> parseNamedArguments();
std::pair<ASTPointer<ASTString>, langutil::SourceLocation> expectIdentifierWithLocation();
///@} ///@}
///@{ ///@{

View File

@ -187,7 +187,7 @@ Json::Value AsmJsonConverter::createAstNode(langutil::SourceLocation const& _loc
int length = -1; int length = -1;
if (_location.start >= 0 && _location.end >= 0) if (_location.start >= 0 && _location.end >= 0)
length = _location.end - _location.start; length = _location.end - _location.start;
ret["src"] = to_string(_location.start) + ":" + to_string(length) + ":" + m_sourceIndex; ret["src"] = to_string(_location.start) + ":" + to_string(length) + ":" + (m_sourceIndex.has_value() ? to_string(m_sourceIndex.value()) : "-1");
return ret; return ret;
} }

View File

@ -27,6 +27,7 @@
#include <liblangutil/SourceLocation.h> #include <liblangutil/SourceLocation.h>
#include <json/json.h> #include <json/json.h>
#include <boost/variant.hpp> #include <boost/variant.hpp>
#include <optional>
#include <vector> #include <vector>
namespace solidity::yul namespace solidity::yul
@ -40,7 +41,7 @@ class AsmJsonConverter: public boost::static_visitor<Json::Value>
public: public:
/// Create a converter to JSON for any block of inline assembly /// Create a converter to JSON for any block of inline assembly
/// @a _sourceIndex to be used to abbreviate source name in the source locations /// @a _sourceIndex to be used to abbreviate source name in the source locations
explicit AsmJsonConverter(size_t _sourceIndex): m_sourceIndex(std::to_string(_sourceIndex)) {} explicit AsmJsonConverter(std::optional<size_t> _sourceIndex): m_sourceIndex(_sourceIndex) {}
Json::Value operator()(Block const& _node) const; Json::Value operator()(Block const& _node) const;
Json::Value operator()(TypedName const& _node) const; Json::Value operator()(TypedName const& _node) const;
@ -65,7 +66,7 @@ private:
template <class T> template <class T>
Json::Value vectorOfVariantsToJson(std::vector<T> const& vec) const; Json::Value vectorOfVariantsToJson(std::vector<T> const& vec) const;
std::string const m_sourceIndex; std::optional<size_t> const m_sourceIndex;
}; };
} }

View File

@ -49,6 +49,7 @@
7 7
], ],
"name": "C", "name": "C",
"nameLocation": "27:1:0",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -82,6 +83,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "45:4:0",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"overrides": null, "overrides": null,
"parameters": "parameters":

View File

@ -40,6 +40,7 @@ JSON AST (compact format):
18 18
], ],
"name": "Error1", "name": "Error1",
"nameLocation": "71:6:0",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -59,6 +60,7 @@ JSON AST (compact format):
"kind": "constructor", "kind": "constructor",
"modifiers": [], "modifiers": [],
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {
@ -120,6 +122,7 @@ JSON AST (compact format):
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "five", "name": "five",
"nameLocation": "407:4:0",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {
@ -139,6 +142,7 @@ JSON AST (compact format):
"id": 12, "id": 12,
"mutability": "mutable", "mutability": "mutable",
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 17, "scope": 17,
"src": "434:4:0", "src": "434:4:0",

View File

@ -10,4 +10,4 @@
2 | pragma solidity >=0.0; contract Errort6 { using foo for ; /* missing type name */ } 2 | pragma solidity >=0.0; contract Errort6 { using foo for ; /* missing type name */ }
| ^ | ^
","message":"Recovered in ContractDefinition at '}'.","severity":"warning","sourceLocation":{"end":120,"file":"A","start":119},"type":"Warning"}],"sources":{"A":{"ast":{"absolutePath":"A","exportedSymbols":{"Errort6":[3]},"id":4,"license":"GPL-3.0","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.0"],"nodeType":"PragmaDirective","src":"36:22:0"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":3,"linearizedBaseContracts":[3],"name":"Errort6","nodeType":"ContractDefinition","nodes":[],"scope":4,"src":"59:35:0"}],"src":"36:84:0"},"id":0}}} ","message":"Recovered in ContractDefinition at '}'.","severity":"warning","sourceLocation":{"end":120,"file":"A","start":119},"type":"Warning"}],"sources":{"A":{"ast":{"absolutePath":"A","exportedSymbols":{"Errort6":[3]},"id":4,"license":"GPL-3.0","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.0"],"nodeType":"PragmaDirective","src":"36:22:0"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":3,"linearizedBaseContracts":[3],"name":"Errort6","nameLocation":"68:7:0","nodeType":"ContractDefinition","nodes":[],"scope":4,"src":"59:35:0"}],"src":"36:84:0"},"id":0}}}

View File

@ -1 +1 @@
{"sources":{"A":{"ast":{"absolutePath":"A","exportedSymbols":{"C":[6]},"id":7,"license":"GPL-3.0","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.0"],"nodeType":"PragmaDirective","src":"36:22:0"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":6,"linearizedBaseContracts":[6],"name":"C","nodeType":"ContractDefinition","nodes":[{"body":{"id":4,"nodeType":"Block","src":"97:2:0","statements":[]},"functionSelector":"26121ff0","id":5,"implemented":true,"kind":"function","modifiers":[],"name":"f","nodeType":"FunctionDefinition","parameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"82:2:0"},"returnParameters":{"id":3,"nodeType":"ParameterList","parameters":[],"src":"97:0:0"},"scope":6,"src":"72:27:0","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":7,"src":"59:42:0"}],"src":"36:65:0"},"id":0}}} {"sources":{"A":{"ast":{"absolutePath":"A","exportedSymbols":{"C":[6]},"id":7,"license":"GPL-3.0","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity",">=","0.0"],"nodeType":"PragmaDirective","src":"36:22:0"},{"abstract":false,"baseContracts":[],"contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"id":6,"linearizedBaseContracts":[6],"name":"C","nameLocation":"68:1:0","nodeType":"ContractDefinition","nodes":[{"body":{"id":4,"nodeType":"Block","src":"97:2:0","statements":[]},"functionSelector":"26121ff0","id":5,"implemented":true,"kind":"function","modifiers":[],"name":"f","nameLocation":"81:1:0","nodeType":"FunctionDefinition","parameters":{"id":2,"nodeType":"ParameterList","parameters":[],"src":"82:2:0"},"returnParameters":{"id":3,"nodeType":"ParameterList","parameters":[],"src":"97:0:0"},"scope":6,"src":"72:27:0","stateMutability":"pure","virtual":false,"visibility":"public"}],"scope":7,"src":"59:42:0"}],"src":"36:65:0"},"id":0}}}

View File

@ -23,6 +23,7 @@
5 5
], ],
"name": "C", "name": "C",
"nameLocation": "18:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -39,6 +40,7 @@
"kind": "constructor", "kind": "constructor",
"modifiers": [], "modifiers": [],
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 5, "id": 5,
"name": "C", "name": "C",
"nameLocation": "18:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -27,6 +28,7 @@
"kind": "constructor", "kind": "constructor",
"modifiers": [], "modifiers": [],
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
39 39
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -32,6 +33,7 @@
"id": 4, "id": 4,
"mutability": "mutable", "mutability": "mutable",
"name": "m", "name": "m",
"nameLocation": "60:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 39, "scope": 39,
"src": "17:44:1", "src": "17:44:1",
@ -100,6 +102,7 @@
"id": 12, "id": 12,
"mutability": "mutable", "mutability": "mutable",
"name": "a", "name": "a",
"nameLocation": "160:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 37, "scope": 37,
"src": "144:17:1", "src": "144:17:1",
@ -234,6 +237,7 @@
"id": 22, "id": 22,
"mutability": "mutable", "mutability": "mutable",
"name": "c", "name": "c",
"nameLocation": "205:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 37, "scope": 37,
"src": "197:9:1", "src": "197:9:1",
@ -468,6 +472,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "76:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {
@ -480,6 +485,7 @@
"id": 6, "id": 6,
"mutability": "mutable", "mutability": "mutable",
"name": "arg", "name": "arg",
"nameLocation": "94:3:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 38, "scope": 38,
"src": "78:19:1", "src": "78:19:1",
@ -519,6 +525,7 @@
"id": 9, "id": 9,
"mutability": "mutable", "mutability": "mutable",
"name": "r", "name": "r",
"nameLocation": "131:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 38, "scope": 38,
"src": "115:17:1", "src": "115:17:1",

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 39, "id": 39,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -19,6 +20,7 @@
"id": 4, "id": 4,
"mutability": "mutable", "mutability": "mutable",
"name": "m", "name": "m",
"nameLocation": "60:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "17:44:1", "src": "17:44:1",
"stateVariable": false, "stateVariable": false,
@ -70,6 +72,7 @@
"id": 12, "id": 12,
"mutability": "mutable", "mutability": "mutable",
"name": "a", "name": "a",
"nameLocation": "160:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "144:17:1", "src": "144:17:1",
"stateVariable": false, "stateVariable": false,
@ -159,6 +162,7 @@
"id": 22, "id": 22,
"mutability": "mutable", "mutability": "mutable",
"name": "c", "name": "c",
"nameLocation": "205:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "197:9:1", "src": "197:9:1",
"stateVariable": false, "stateVariable": false,
@ -296,6 +300,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "76:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {
@ -308,6 +313,7 @@
"id": 6, "id": 6,
"mutability": "mutable", "mutability": "mutable",
"name": "arg", "name": "arg",
"nameLocation": "94:3:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "78:19:1", "src": "78:19:1",
"stateVariable": false, "stateVariable": false,
@ -338,6 +344,7 @@
"id": 9, "id": 9,
"mutability": "mutable", "mutability": "mutable",
"name": "r", "name": "r",
"nameLocation": "131:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "115:17:1", "src": "115:17:1",
"stateVariable": false, "stateVariable": false,

View File

@ -23,6 +23,7 @@
4 4
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -31,6 +32,7 @@
"id": 3, "id": 3,
"mutability": "mutable", "mutability": "mutable",
"name": "i", "name": "i",
"nameLocation": "20:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 4, "scope": 4,
"src": "13:8:1", "src": "13:8:1",

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 4, "id": 4,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -19,6 +20,7 @@
"id": 3, "id": 3,
"mutability": "mutable", "mutability": "mutable",
"name": "i", "name": "i",
"nameLocation": "20:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "13:8:1", "src": "13:8:1",
"stateVariable": false, "stateVariable": false,

View File

@ -23,6 +23,7 @@
6 6
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -137,6 +138,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "j", "name": "j",
"nameLocation": "26:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 6, "id": 6,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -124,6 +125,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "j", "name": "j",
"nameLocation": "26:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
6 6
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -62,6 +63,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "g", "name": "g",
"nameLocation": "26:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 6, "id": 6,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -49,6 +50,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "g", "name": "g",
"nameLocation": "26:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
6 6
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -124,6 +125,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "h", "name": "h",
"nameLocation": "26:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 6, "id": 6,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -111,6 +112,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "h", "name": "h",
"nameLocation": "26:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
6 6
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -74,6 +75,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "l", "name": "l",
"nameLocation": "26:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 6, "id": 6,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -61,6 +62,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "l", "name": "l",
"nameLocation": "26:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
6 6
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -137,6 +138,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "g", "name": "g",
"nameLocation": "26:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 6, "id": 6,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -124,6 +125,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "g", "name": "g",
"nameLocation": "26:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -22,6 +22,7 @@
8 8
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -99,6 +100,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "24:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {
@ -118,6 +120,7 @@
"id": 3, "id": 3,
"mutability": "mutable", "mutability": "mutable",
"name": "x", "name": "x",
"nameLocation": "54:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 7, "scope": 7,
"src": "49:6:1", "src": "49:6:1",

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 8, "id": 8,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -88,6 +89,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "24:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {
@ -107,6 +109,7 @@
"id": 3, "id": 3,
"mutability": "mutable", "mutability": "mutable",
"name": "x", "name": "x",
"nameLocation": "54:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "49:6:1", "src": "49:6:1",
"stateVariable": false, "stateVariable": false,

View File

@ -23,6 +23,7 @@
12 12
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -36,6 +37,7 @@
"id": 2, "id": 2,
"mutability": "mutable", "mutability": "mutable",
"name": "x", "name": "x",
"nameLocation": "33:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 3, "scope": 3,
"src": "28:6:1", "src": "28:6:1",
@ -62,6 +64,7 @@
} }
], ],
"name": "S", "name": "S",
"nameLocation": "24:1:1",
"nodeType": "StructDefinition", "nodeType": "StructDefinition",
"scope": 12, "scope": 12,
"src": "17:20:1", "src": "17:20:1",
@ -72,6 +75,7 @@
"id": 6, "id": 6,
"mutability": "mutable", "mutability": "mutable",
"name": "s", "name": "s",
"nameLocation": "44:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 12, "scope": 12,
"src": "42:3:1", "src": "42:3:1",
@ -211,6 +215,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "e", "name": "e",
"nameLocation": "60:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 12, "id": 12,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -23,6 +24,7 @@
"id": 2, "id": 2,
"mutability": "mutable", "mutability": "mutable",
"name": "x", "name": "x",
"nameLocation": "33:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "28:6:1", "src": "28:6:1",
"stateVariable": false, "stateVariable": false,
@ -40,6 +42,7 @@
} }
], ],
"name": "S", "name": "S",
"nameLocation": "24:1:1",
"nodeType": "StructDefinition", "nodeType": "StructDefinition",
"src": "17:20:1", "src": "17:20:1",
"visibility": "public" "visibility": "public"
@ -49,6 +52,7 @@
"id": 6, "id": 6,
"mutability": "mutable", "mutability": "mutable",
"name": "s", "name": "s",
"nameLocation": "44:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "42:3:1", "src": "42:3:1",
"stateVariable": false, "stateVariable": false,
@ -158,6 +162,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "e", "name": "e",
"nameLocation": "60:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
6 6
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -78,6 +79,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "m", "name": "m",
"nameLocation": "26:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 6, "id": 6,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -65,6 +66,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "m", "name": "m",
"nameLocation": "26:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -22,6 +22,7 @@
6 6
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -184,6 +185,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "26:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
6 6
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -101,6 +102,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "g", "name": "g",
"nameLocation": "26:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 6, "id": 6,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -88,6 +89,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "g", "name": "g",
"nameLocation": "26:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 6, "id": 6,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -157,6 +158,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "26:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
9 9
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -46,6 +47,7 @@
"id": 4, "id": 4,
"mutability": "mutable", "mutability": "mutable",
"name": "x", "name": "x",
"nameLocation": "57:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 7, "scope": 7,
"src": "52:6:1", "src": "52:6:1",
@ -127,6 +129,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "26:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 9, "id": 9,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -34,6 +35,7 @@
"id": 4, "id": 4,
"mutability": "mutable", "mutability": "mutable",
"name": "x", "name": "x",
"nameLocation": "57:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "52:6:1", "src": "52:6:1",
"stateVariable": false, "stateVariable": false,
@ -96,6 +98,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "26:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
5 5
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -39,6 +40,7 @@
"kind": "constructor", "kind": "constructor",
"modifiers": [], "modifiers": [],
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 5, "id": 5,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -27,6 +28,7 @@
"kind": "constructor", "kind": "constructor",
"modifiers": [], "modifiers": [],
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -39,6 +39,7 @@
1 1
], ],
"name": "A", "name": "A",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"scope": 14, "scope": 14,
@ -75,6 +76,7 @@
1 1
], ],
"name": "B", "name": "B",
"nameLocation": "24:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"scope": 14, "scope": 14,
@ -113,6 +115,7 @@
1 1
], ],
"name": "C", "name": "C",
"nameLocation": "44:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"scope": 14, "scope": 14,
@ -153,6 +156,7 @@
1 1
], ],
"name": "D", "name": "D",
"nameLocation": "64:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"scope": 14, "scope": 14,
@ -195,6 +199,7 @@
1 1
], ],
"name": "E", "name": "E",
"nameLocation": "84:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"scope": 14, "scope": 14,

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 1, "id": 1,
"name": "A", "name": "A",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"src": "0:14:1" "src": "0:14:1"
@ -36,6 +37,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 4, "id": 4,
"name": "B", "name": "B",
"nameLocation": "24:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"src": "15:19:1" "src": "15:19:1"
@ -61,6 +63,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 7, "id": 7,
"name": "C", "name": "C",
"nameLocation": "44:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"src": "35:19:1" "src": "35:19:1"
@ -86,6 +89,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 10, "id": 10,
"name": "D", "name": "D",
"nameLocation": "64:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"src": "55:19:1" "src": "55:19:1"
@ -111,6 +115,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 13, "id": 13,
"name": "E", "name": "E",
"nameLocation": "84:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"src": "75:19:1" "src": "75:19:1"

View File

@ -31,6 +31,7 @@
2 2
], ],
"name": "C", "name": "C",
"nameLocation": "37:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"scope": 3, "scope": 3,
@ -71,6 +72,7 @@
5 5
], ],
"name": "C", "name": "C",
"nameLocation": "71:1:2",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"scope": 6, "scope": 6,
@ -104,6 +106,7 @@
23 23
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:3",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -120,6 +123,7 @@
"id": 9, "id": 9,
"mutability": "mutable", "mutability": "mutable",
"name": "state", "name": "state",
"nameLocation": "60:5:3",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 23, "scope": 23,
"src": "48:17:3", "src": "48:17:3",
@ -155,6 +159,7 @@
}, },
"id": 12, "id": 12,
"name": "Evt", "name": "Evt",
"nameLocation": "102:3:3",
"nodeType": "EventDefinition", "nodeType": "EventDefinition",
"parameters": "parameters":
{ {
@ -189,6 +194,7 @@
}, },
"id": 17, "id": 17,
"name": "mod", "name": "mod",
"nameLocation": "147:3:3",
"nodeType": "ModifierDefinition", "nodeType": "ModifierDefinition",
"parameters": "parameters":
{ {
@ -222,6 +228,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "fn", "name": "fn",
"nameLocation": "197:2:3",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
27 27
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -31,6 +32,7 @@
"id": 2, "id": 2,
"mutability": "mutable", "mutability": "mutable",
"name": "a", "name": "a",
"nameLocation": "50:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 27, "scope": 27,
"src": "45:6:1", "src": "45:6:1",
@ -193,6 +195,7 @@
"id": 8, "id": 8,
"mutability": "mutable", "mutability": "mutable",
"name": "i", "name": "i",
"nameLocation": "136:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 22, "scope": 22,
"src": "131:6:1", "src": "131:6:1",
@ -308,6 +311,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "66:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {
@ -327,6 +331,7 @@
"id": 5, "id": 5,
"mutability": "mutable", "mutability": "mutable",
"name": "x", "name": "x",
"nameLocation": "96:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 26, "scope": 26,
"src": "91:6:1", "src": "91:6:1",

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 27, "id": 27,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -19,6 +20,7 @@
"id": 2, "id": 2,
"mutability": "mutable", "mutability": "mutable",
"name": "a", "name": "a",
"nameLocation": "50:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "45:6:1", "src": "45:6:1",
"stateVariable": false, "stateVariable": false,
@ -126,6 +128,7 @@
"id": 8, "id": 8,
"mutability": "mutable", "mutability": "mutable",
"name": "i", "name": "i",
"nameLocation": "136:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "131:6:1", "src": "131:6:1",
"stateVariable": false, "stateVariable": false,
@ -204,6 +207,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "66:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {
@ -223,6 +227,7 @@
"id": 5, "id": 5,
"mutability": "mutable", "mutability": "mutable",
"name": "x", "name": "x",
"nameLocation": "96:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "91:6:1", "src": "91:6:1",
"stateVariable": false, "stateVariable": false,

View File

@ -19,6 +19,7 @@
}, },
"id": 2, "id": 2,
"name": "C", "name": "C",
"nameLocation": "37:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"src": "28:13:1" "src": "28:13:1"
@ -46,6 +47,7 @@
}, },
"id": 5, "id": 5,
"name": "C", "name": "C",
"nameLocation": "71:1:2",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"src": "62:13:2" "src": "62:13:2"
@ -66,6 +68,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 23, "id": 23,
"name": "C", "name": "C",
"nameLocation": "9:1:3",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -74,6 +77,7 @@
"id": 9, "id": 9,
"mutability": "mutable", "mutability": "mutable",
"name": "state", "name": "state",
"nameLocation": "60:5:3",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "48:17:3", "src": "48:17:3",
"stateVariable": false, "stateVariable": false,
@ -100,6 +104,7 @@
}, },
"id": 12, "id": 12,
"name": "Evt", "name": "Evt",
"nameLocation": "102:3:3",
"nodeType": "EventDefinition", "nodeType": "EventDefinition",
"parameters": "parameters":
{ {
@ -134,6 +139,7 @@
}, },
"id": 17, "id": 17,
"name": "mod", "name": "mod",
"nameLocation": "147:3:3",
"nodeType": "ModifierDefinition", "nodeType": "ModifierDefinition",
"parameters": "parameters":
{ {
@ -166,6 +172,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "fn", "name": "fn",
"nameLocation": "197:2:3",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
28 28
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -38,6 +39,7 @@
"id": 3, "id": 3,
"mutability": "mutable", "mutability": "mutable",
"name": "a", "name": "a",
"nameLocation": "35:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 28, "scope": 28,
"src": "30:6:1", "src": "30:6:1",
@ -202,6 +204,7 @@
"id": 9, "id": 9,
"mutability": "mutable", "mutability": "mutable",
"name": "i", "name": "i",
"nameLocation": "122:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 23, "scope": 23,
"src": "117:6:1", "src": "117:6:1",
@ -318,6 +321,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "51:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {
@ -337,6 +341,7 @@
"id": 6, "id": 6,
"mutability": "mutable", "mutability": "mutable",
"name": "x", "name": "x",
"nameLocation": "81:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 27, "scope": 27,
"src": "76:6:1", "src": "76:6:1",

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 28, "id": 28,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -19,6 +20,7 @@
"id": 3, "id": 3,
"mutability": "mutable", "mutability": "mutable",
"name": "a", "name": "a",
"nameLocation": "35:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "30:6:1", "src": "30:6:1",
"stateVariable": false, "stateVariable": false,
@ -128,6 +130,7 @@
"id": 9, "id": 9,
"mutability": "mutable", "mutability": "mutable",
"name": "i", "name": "i",
"nameLocation": "122:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "117:6:1", "src": "117:6:1",
"stateVariable": false, "stateVariable": false,
@ -207,6 +210,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "51:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {
@ -226,6 +230,7 @@
"id": 6, "id": 6,
"mutability": "mutable", "mutability": "mutable",
"name": "x", "name": "x",
"nameLocation": "81:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "76:6:1", "src": "76:6:1",
"stateVariable": false, "stateVariable": false,

View File

@ -23,6 +23,7 @@
4 4
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -34,17 +35,20 @@
{ {
"id": 1, "id": 1,
"name": "A", "name": "A",
"nameLocation": "22:1:1",
"nodeType": "EnumValue", "nodeType": "EnumValue",
"src": "22:1:1" "src": "22:1:1"
}, },
{ {
"id": 2, "id": 2,
"name": "B", "name": "B",
"nameLocation": "25:1:1",
"nodeType": "EnumValue", "nodeType": "EnumValue",
"src": "25:1:1" "src": "25:1:1"
} }
], ],
"name": "E", "name": "E",
"nameLocation": "18:1:1",
"nodeType": "EnumDefinition", "nodeType": "EnumDefinition",
"src": "13:15:1" "src": "13:15:1"
} }

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 4, "id": 4,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -21,17 +22,20 @@
{ {
"id": 1, "id": 1,
"name": "A", "name": "A",
"nameLocation": "22:1:1",
"nodeType": "EnumValue", "nodeType": "EnumValue",
"src": "22:1:1" "src": "22:1:1"
}, },
{ {
"id": 2, "id": 2,
"name": "B", "name": "B",
"nameLocation": "25:1:1",
"nodeType": "EnumValue", "nodeType": "EnumValue",
"src": "25:1:1" "src": "25:1:1"
} }
], ],
"name": "E", "name": "E",
"nameLocation": "18:1:1",
"nodeType": "EnumDefinition", "nodeType": "EnumDefinition",
"src": "13:15:1" "src": "13:15:1"
} }

View File

@ -23,6 +23,7 @@
3 3
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -30,6 +31,7 @@
"anonymous": false, "anonymous": false,
"id": 2, "id": 2,
"name": "E", "name": "E",
"nameLocation": "19:1:1",
"nodeType": "EventDefinition", "nodeType": "EventDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 3, "id": 3,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -18,6 +19,7 @@
"anonymous": false, "anonymous": false,
"id": 2, "id": 2,
"name": "E", "name": "E",
"nameLocation": "19:1:1",
"nodeType": "EventDefinition", "nodeType": "EventDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
5 5
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -39,6 +40,7 @@
"kind": "fallback", "kind": "fallback",
"modifiers": [], "modifiers": [],
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
9 9
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -39,6 +40,7 @@
"kind": "receive", "kind": "receive",
"modifiers": [], "modifiers": [],
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {
@ -73,6 +75,7 @@
"kind": "fallback", "kind": "fallback",
"modifiers": [], "modifiers": [],
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 9, "id": 9,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -27,6 +28,7 @@
"kind": "receive", "kind": "receive",
"modifiers": [], "modifiers": [],
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {
@ -60,6 +62,7 @@
"kind": "fallback", "kind": "fallback",
"modifiers": [], "modifiers": [],
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 5, "id": 5,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -27,6 +28,7 @@
"kind": "fallback", "kind": "fallback",
"modifiers": [], "modifiers": [],
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
5 5
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -39,6 +40,7 @@
"kind": "fallback", "kind": "fallback",
"modifiers": [], "modifiers": [],
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 5, "id": 5,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -27,6 +28,7 @@
"kind": "fallback", "kind": "fallback",
"modifiers": [], "modifiers": [],
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
17 17
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -40,6 +41,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "22:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {
@ -52,6 +54,7 @@
"id": 6, "id": 6,
"mutability": "mutable", "mutability": "mutable",
"name": "x", "name": "x",
"nameLocation": "67:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 16, "scope": 16,
"src": "24:44:1", "src": "24:44:1",
@ -84,6 +87,7 @@
"id": 3, "id": 3,
"mutability": "mutable", "mutability": "mutable",
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 5, "scope": 5,
"src": "61:4:1", "src": "61:4:1",
@ -136,6 +140,7 @@
"id": 13, "id": 13,
"mutability": "mutable", "mutability": "mutable",
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 16, "scope": 16,
"src": "79:40:1", "src": "79:40:1",
@ -168,6 +173,7 @@
"id": 10, "id": 10,
"mutability": "mutable", "mutability": "mutable",
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 12, "scope": 12,
"src": "113:4:1", "src": "113:4:1",

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 17, "id": 17,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -27,6 +28,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "22:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {
@ -39,6 +41,7 @@
"id": 6, "id": 6,
"mutability": "mutable", "mutability": "mutable",
"name": "x", "name": "x",
"nameLocation": "67:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "24:44:1", "src": "24:44:1",
"stateVariable": false, "stateVariable": false,
@ -66,6 +69,7 @@
"id": 3, "id": 3,
"mutability": "mutable", "mutability": "mutable",
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "61:4:1", "src": "61:4:1",
"stateVariable": false, "stateVariable": false,
@ -105,6 +109,7 @@
"id": 13, "id": 13,
"mutability": "mutable", "mutability": "mutable",
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "79:40:1", "src": "79:40:1",
"stateVariable": false, "stateVariable": false,
@ -132,6 +137,7 @@
"id": 10, "id": 10,
"mutability": "mutable", "mutability": "mutable",
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "113:4:1", "src": "113:4:1",
"stateVariable": false, "stateVariable": false,

View File

@ -19,11 +19,13 @@
{ {
"id": 1, "id": 1,
"name": "A", "name": "A",
"nameLocation": "9:1:1",
"nodeType": "EnumValue", "nodeType": "EnumValue",
"src": "9:1:1" "src": "9:1:1"
} }
], ],
"name": "E", "name": "E",
"nameLocation": "5:1:1",
"nodeType": "EnumDefinition", "nodeType": "EnumDefinition",
"src": "0:12:1" "src": "0:12:1"
} }

View File

@ -11,11 +11,13 @@
{ {
"id": 1, "id": 1,
"name": "A", "name": "A",
"nameLocation": "9:1:1",
"nodeType": "EnumValue", "nodeType": "EnumValue",
"src": "9:1:1" "src": "9:1:1"
} }
], ],
"name": "E", "name": "E",
"nameLocation": "5:1:1",
"nodeType": "EnumDefinition", "nodeType": "EnumDefinition",
"src": "0:12:1" "src": "0:12:1"
} }

View File

@ -21,6 +21,7 @@
"id": 2, "id": 2,
"mutability": "mutable", "mutability": "mutable",
"name": "a", "name": "a",
"nameLocation": "19:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 3, "scope": 3,
"src": "11:9:1", "src": "11:9:1",
@ -47,6 +48,7 @@
} }
], ],
"name": "S", "name": "S",
"nameLocation": "7:1:1",
"nodeType": "StructDefinition", "nodeType": "StructDefinition",
"scope": 4, "scope": 4,
"src": "0:23:1", "src": "0:23:1",

View File

@ -13,6 +13,7 @@
"id": 2, "id": 2,
"mutability": "mutable", "mutability": "mutable",
"name": "a", "name": "a",
"nameLocation": "19:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "11:9:1", "src": "11:9:1",
"stateVariable": false, "stateVariable": false,
@ -30,6 +31,7 @@
} }
], ],
"name": "S", "name": "S",
"nameLocation": "7:1:1",
"nodeType": "StructDefinition", "nodeType": "StructDefinition",
"src": "0:23:1", "src": "0:23:1",
"visibility": "public" "visibility": "public"

View File

@ -27,6 +27,7 @@
1 1
], ],
"name": "C1", "name": "C1",
"nameLocation": "9:2:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"scope": 5, "scope": 5,
@ -63,6 +64,7 @@
1 1
], ],
"name": "C2", "name": "C2",
"nameLocation": "24:2:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"scope": 5, "scope": 5,

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 1, "id": 1,
"name": "C1", "name": "C1",
"nameLocation": "9:2:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"src": "0:14:1" "src": "0:14:1"
@ -36,6 +37,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 4, "id": 4,
"name": "C2", "name": "C2",
"nameLocation": "24:2:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"src": "15:20:1" "src": "15:20:1"

View File

@ -24,6 +24,7 @@
1 1
], ],
"name": "C", "name": "C",
"nameLocation": "45:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"scope": 2, "scope": 2,

View File

@ -12,6 +12,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 1, "id": 1,
"name": "C", "name": "C",
"nameLocation": "45:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"src": "36:13:1" "src": "36:13:1"

View File

@ -23,6 +23,7 @@
11 11
], ],
"name": "c", "name": "c",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -46,6 +47,7 @@
"id": 4, "id": 4,
"mutability": "mutable", "mutability": "mutable",
"name": "a", "name": "a",
"nameLocation": "40:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 9, "scope": 9,
"src": "35:6:1", "src": "35:6:1",
@ -140,6 +142,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "22:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 11, "id": 11,
"name": "c", "name": "c",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -34,6 +35,7 @@
"id": 4, "id": 4,
"mutability": "mutable", "mutability": "mutable",
"name": "a", "name": "a",
"nameLocation": "40:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "35:6:1", "src": "35:6:1",
"stateVariable": false, "stateVariable": false,
@ -90,6 +92,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "22:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
15 15
], ],
"name": "c", "name": "c",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -31,6 +32,7 @@
"id": 3, "id": 3,
"mutability": "mutable", "mutability": "mutable",
"name": "a", "name": "a",
"nameLocation": "20:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 15, "scope": 15,
"src": "13:8:1", "src": "13:8:1",
@ -86,6 +88,7 @@
"id": 10, "id": 10,
"mutability": "mutable", "mutability": "mutable",
"name": "b", "name": "b",
"nameLocation": "60:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 13, "scope": 13,
"src": "45:16:1", "src": "45:16:1",
@ -148,6 +151,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "32:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 15, "id": 15,
"name": "c", "name": "c",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -19,6 +20,7 @@
"id": 3, "id": 3,
"mutability": "mutable", "mutability": "mutable",
"name": "a", "name": "a",
"nameLocation": "20:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "13:8:1", "src": "13:8:1",
"stateVariable": false, "stateVariable": false,
@ -61,6 +63,7 @@
"id": 10, "id": 10,
"mutability": "mutable", "mutability": "mutable",
"name": "b", "name": "b",
"nameLocation": "60:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "45:16:1", "src": "45:16:1",
"stateVariable": false, "stateVariable": false,
@ -104,6 +107,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "32:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
19 19
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -34,23 +35,27 @@
{ {
"id": 1, "id": 1,
"name": "A", "name": "A",
"nameLocation": "26:1:1",
"nodeType": "EnumValue", "nodeType": "EnumValue",
"src": "26:1:1" "src": "26:1:1"
}, },
{ {
"id": 2, "id": 2,
"name": "B", "name": "B",
"nameLocation": "29:1:1",
"nodeType": "EnumValue", "nodeType": "EnumValue",
"src": "29:1:1" "src": "29:1:1"
}, },
{ {
"id": 3, "id": 3,
"name": "C", "name": "C",
"nameLocation": "32:1:1",
"nodeType": "EnumValue", "nodeType": "EnumValue",
"src": "32:1:1" "src": "32:1:1"
} }
], ],
"name": "E", "name": "E",
"nameLocation": "22:1:1",
"nodeType": "EnumDefinition", "nodeType": "EnumDefinition",
"src": "17:18:1" "src": "17:18:1"
}, },
@ -59,6 +64,7 @@
"id": 9, "id": 9,
"mutability": "mutable", "mutability": "mutable",
"name": "a", "name": "a",
"nameLocation": "59:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 19, "scope": 19,
"src": "40:20:1", "src": "40:20:1",
@ -119,6 +125,7 @@
"id": 13, "id": 13,
"mutability": "mutable", "mutability": "mutable",
"name": "b", "name": "b",
"nameLocation": "91:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 19, "scope": 19,
"src": "66:26:1", "src": "66:26:1",
@ -171,6 +178,7 @@
"id": 18, "id": 18,
"mutability": "mutable", "mutability": "mutable",
"name": "c", "name": "c",
"nameLocation": "117:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 19, "scope": 19,
"src": "98:20:1", "src": "98:20:1",

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 19, "id": 19,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -21,23 +22,27 @@
{ {
"id": 1, "id": 1,
"name": "A", "name": "A",
"nameLocation": "26:1:1",
"nodeType": "EnumValue", "nodeType": "EnumValue",
"src": "26:1:1" "src": "26:1:1"
}, },
{ {
"id": 2, "id": 2,
"name": "B", "name": "B",
"nameLocation": "29:1:1",
"nodeType": "EnumValue", "nodeType": "EnumValue",
"src": "29:1:1" "src": "29:1:1"
}, },
{ {
"id": 3, "id": 3,
"name": "C", "name": "C",
"nameLocation": "32:1:1",
"nodeType": "EnumValue", "nodeType": "EnumValue",
"src": "32:1:1" "src": "32:1:1"
} }
], ],
"name": "E", "name": "E",
"nameLocation": "22:1:1",
"nodeType": "EnumDefinition", "nodeType": "EnumDefinition",
"src": "17:18:1" "src": "17:18:1"
}, },
@ -46,6 +51,7 @@
"id": 9, "id": 9,
"mutability": "mutable", "mutability": "mutable",
"name": "a", "name": "a",
"nameLocation": "59:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "40:20:1", "src": "40:20:1",
"stateVariable": false, "stateVariable": false,
@ -87,6 +93,7 @@
"id": 13, "id": 13,
"mutability": "mutable", "mutability": "mutable",
"name": "b", "name": "b",
"nameLocation": "91:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "66:26:1", "src": "66:26:1",
"stateVariable": false, "stateVariable": false,
@ -122,6 +129,7 @@
"id": 18, "id": 18,
"mutability": "mutable", "mutability": "mutable",
"name": "c", "name": "c",
"nameLocation": "117:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "98:20:1", "src": "98:20:1",
"stateVariable": false, "stateVariable": false,

View File

@ -23,6 +23,7 @@
14 14
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -43,6 +44,7 @@
}, },
"id": 6, "id": 6,
"name": "M", "name": "M",
"nameLocation": "22:1:1",
"nodeType": "ModifierDefinition", "nodeType": "ModifierDefinition",
"parameters": "parameters":
{ {
@ -55,6 +57,7 @@
"id": 2, "id": 2,
"mutability": "mutable", "mutability": "mutable",
"name": "i", "name": "i",
"nameLocation": "29:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 6, "scope": 6,
"src": "24:6:1", "src": "24:6:1",
@ -135,6 +138,7 @@
} }
], ],
"name": "F", "name": "F",
"nameLocation": "48:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 14, "id": 14,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -31,6 +32,7 @@
}, },
"id": 6, "id": 6,
"name": "M", "name": "M",
"nameLocation": "22:1:1",
"nodeType": "ModifierDefinition", "nodeType": "ModifierDefinition",
"parameters": "parameters":
{ {
@ -43,6 +45,7 @@
"id": 2, "id": 2,
"mutability": "mutable", "mutability": "mutable",
"name": "i", "name": "i",
"nameLocation": "29:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "24:6:1", "src": "24:6:1",
"stateVariable": false, "stateVariable": false,
@ -104,6 +107,7 @@
} }
], ],
"name": "F", "name": "F",
"nameLocation": "48:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
14 14
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -43,6 +44,7 @@
}, },
"id": 6, "id": 6,
"name": "M", "name": "M",
"nameLocation": "22:1:1",
"nodeType": "ModifierDefinition", "nodeType": "ModifierDefinition",
"parameters": "parameters":
{ {
@ -55,6 +57,7 @@
"id": 2, "id": 2,
"mutability": "mutable", "mutability": "mutable",
"name": "i", "name": "i",
"nameLocation": "29:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 6, "scope": 6,
"src": "24:6:1", "src": "24:6:1",
@ -135,6 +138,7 @@
} }
], ],
"name": "F", "name": "F",
"nameLocation": "48:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 14, "id": 14,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -31,6 +32,7 @@
}, },
"id": 6, "id": 6,
"name": "M", "name": "M",
"nameLocation": "22:1:1",
"nodeType": "ModifierDefinition", "nodeType": "ModifierDefinition",
"parameters": "parameters":
{ {
@ -43,6 +45,7 @@
"id": 2, "id": 2,
"mutability": "mutable", "mutability": "mutable",
"name": "i", "name": "i",
"nameLocation": "29:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "24:6:1", "src": "24:6:1",
"stateVariable": false, "stateVariable": false,
@ -104,6 +107,7 @@
} }
], ],
"name": "F", "name": "F",
"nameLocation": "48:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
10 10
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -32,6 +33,7 @@
"id": 3, "id": 3,
"mutability": "immutable", "mutability": "immutable",
"name": "a", "name": "a",
"nameLocation": "39:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 10, "scope": 10,
"src": "17:27:1", "src": "17:27:1",
@ -80,6 +82,7 @@
"id": 6, "id": 6,
"mutability": "constant", "mutability": "constant",
"name": "b", "name": "b",
"nameLocation": "71:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 10, "scope": 10,
"src": "50:26:1", "src": "50:26:1",
@ -128,6 +131,7 @@
"id": 9, "id": 9,
"mutability": "mutable", "mutability": "mutable",
"name": "c", "name": "c",
"nameLocation": "94:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 10, "scope": 10,
"src": "82:17:1", "src": "82:17:1",

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 10, "id": 10,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -19,6 +20,7 @@
"id": 3, "id": 3,
"mutability": "immutable", "mutability": "immutable",
"name": "a", "name": "a",
"nameLocation": "39:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "17:27:1", "src": "17:27:1",
"stateVariable": false, "stateVariable": false,
@ -49,6 +51,7 @@
"id": 6, "id": 6,
"mutability": "constant", "mutability": "constant",
"name": "b", "name": "b",
"nameLocation": "71:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "50:26:1", "src": "50:26:1",
"stateVariable": false, "stateVariable": false,
@ -79,6 +82,7 @@
"id": 9, "id": 9,
"mutability": "mutable", "mutability": "mutable",
"name": "c", "name": "c",
"nameLocation": "94:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "82:17:1", "src": "82:17:1",
"stateVariable": false, "stateVariable": false,

View File

@ -23,6 +23,7 @@
9 9
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -46,6 +47,7 @@
"id": 4, "id": 4,
"mutability": "mutable", "mutability": "mutable",
"name": "x", "name": "x",
"nameLocation": "49:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 7, "scope": 7,
"src": "35:15:1", "src": "35:15:1",
@ -100,6 +102,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "22:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 9, "id": 9,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -34,6 +35,7 @@
"id": 4, "id": 4,
"mutability": "mutable", "mutability": "mutable",
"name": "x", "name": "x",
"nameLocation": "49:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "35:15:1", "src": "35:15:1",
"stateVariable": false, "stateVariable": false,
@ -70,6 +72,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "22:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -7,6 +7,7 @@
{ {
"file": "notexisting.sol", "file": "notexisting.sol",
"id": 1, "id": 1,
"nameLocation": "28:11:1",
"nodeType": "ImportDirective", "nodeType": "ImportDirective",
"src": "0:40:1", "src": "0:40:1",
"symbolAliases": [], "symbolAliases": [],
@ -33,6 +34,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 11, "id": 11,
"name": "C", "name": "C",
"nameLocation": "50:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -41,6 +43,7 @@
"id": 6, "id": 6,
"mutability": "mutable", "mutability": "mutable",
"name": "myStruct", "name": "myStruct",
"nameLocation": "102:8:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "72:38:1", "src": "72:38:1",
"stateVariable": false, "stateVariable": false,
@ -75,6 +78,7 @@
"kind": "constructor", "kind": "constructor",
"modifiers": [], "modifiers": [],
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -31,6 +31,7 @@
5 5
], ],
"name": "A", "name": "A",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -48,6 +49,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "faa", "name": "faa",
"nameLocation": "23:3:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {
@ -104,6 +106,7 @@
5 5
], ],
"name": "B", "name": "B",
"nameLocation": "50:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -114,6 +117,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "foo", "name": "foo",
"nameLocation": "69:3:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {
@ -153,6 +157,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "faa", "name": "faa",
"nameLocation": "93:3:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"overrides": "overrides":
{ {
@ -218,6 +223,7 @@
5 5
], ],
"name": "C", "name": "C",
"nameLocation": "129:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -239,6 +245,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "foo", "name": "foo",
"nameLocation": "148:3:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"overrides": "overrides":
{ {
@ -285,6 +292,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "faa", "name": "faa",
"nameLocation": "184:3:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"overrides": "overrides":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 5, "id": 5,
"name": "A", "name": "A",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -27,6 +28,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "faa", "name": "faa",
"nameLocation": "23:3:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {
@ -71,6 +73,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 16, "id": 16,
"name": "B", "name": "B",
"nameLocation": "50:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -80,6 +83,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "foo", "name": "foo",
"nameLocation": "69:3:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {
@ -113,6 +117,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "faa", "name": "faa",
"nameLocation": "93:3:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"overrides": "overrides":
{ {
@ -164,6 +169,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 31, "id": 31,
"name": "C", "name": "C",
"nameLocation": "129:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -180,6 +186,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "foo", "name": "foo",
"nameLocation": "148:3:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"overrides": "overrides":
{ {
@ -220,6 +227,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "faa", "name": "faa",
"nameLocation": "184:3:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"overrides": "overrides":
{ {

View File

@ -23,6 +23,7 @@
5 5
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -43,6 +44,7 @@
}, },
"id": 4, "id": 4,
"name": "M", "name": "M",
"nameLocation": "22:1:1",
"nodeType": "ModifierDefinition", "nodeType": "ModifierDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 5, "id": 5,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -31,6 +32,7 @@
}, },
"id": 4, "id": 4,
"name": "M", "name": "M",
"nameLocation": "22:1:1",
"nodeType": "ModifierDefinition", "nodeType": "ModifierDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
5 5
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -39,6 +40,7 @@
"kind": "receive", "kind": "receive",
"modifiers": [], "modifiers": [],
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 5, "id": 5,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -27,6 +28,7 @@
"kind": "receive", "kind": "receive",
"modifiers": [], "modifiers": [],
"name": "", "name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
11 11
], ],
"name": "c", "name": "c",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -46,6 +47,7 @@
"id": 7, "id": 7,
"mutability": "mutable", "mutability": "mutable",
"name": "x", "name": "x",
"nameLocation": "49:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 9, "scope": 9,
"src": "35:15:1", "src": "35:15:1",
@ -94,6 +96,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "22:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 11, "id": 11,
"name": "c", "name": "c",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -34,6 +35,7 @@
"id": 7, "id": 7,
"mutability": "mutable", "mutability": "mutable",
"name": "x", "name": "x",
"nameLocation": "49:1:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "35:15:1", "src": "35:15:1",
"stateVariable": false, "stateVariable": false,
@ -68,6 +70,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "22:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
12 12
], ],
"name": "c", "name": "c",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -46,6 +47,7 @@
"id": 8, "id": 8,
"mutability": "mutable", "mutability": "mutable",
"name": "rows", "name": "rows",
"nameLocation": "51:4:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"scope": 10, "scope": 10,
"src": "35:20:1", "src": "35:20:1",
@ -105,6 +107,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "22:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 12, "id": 12,
"name": "c", "name": "c",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": "nodes":
[ [
@ -34,6 +35,7 @@
"id": 8, "id": 8,
"mutability": "mutable", "mutability": "mutable",
"name": "rows", "name": "rows",
"nameLocation": "51:4:1",
"nodeType": "VariableDeclaration", "nodeType": "VariableDeclaration",
"src": "35:20:1", "src": "35:20:1",
"stateVariable": false, "stateVariable": false,
@ -75,6 +77,7 @@
"kind": "function", "kind": "function",
"modifiers": [], "modifiers": [],
"name": "f", "name": "f",
"nameLocation": "22:1:1",
"nodeType": "FunctionDefinition", "nodeType": "FunctionDefinition",
"parameters": "parameters":
{ {

View File

@ -23,6 +23,7 @@
1 1
], ],
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"scope": 2, "scope": 2,

View File

@ -11,6 +11,7 @@
"contractKind": "contract", "contractKind": "contract",
"id": 1, "id": 1,
"name": "C", "name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition", "nodeType": "ContractDefinition",
"nodes": [], "nodes": [],
"src": "0:13:1" "src": "0:13:1"

Some files were not shown because too many files have changed in this diff Show More