mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Merge pull request #10833 from ethereum/ast-precise-name-locations
Extend the Solidity AST for precise locations of names
This commit is contained in:
		
						commit
						cbb197f7fa
					
				| @ -15,6 +15,7 @@ Bugfixes: | ||||
| 
 | ||||
| AST Changes: | ||||
|  * 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) | ||||
| 
 | ||||
|  | ||||
| @ -34,9 +34,11 @@ SourceLocation const parseSourceLocation(std::string const& _input, std::string | ||||
| 
 | ||||
| 	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( | ||||
| 		pos.size() == 3 && | ||||
| 		_maxIndex >= static_cast<size_t>(stoi(pos[Index])), | ||||
| 		sourceIndex == -1 || _maxIndex >= static_cast<size_t>(sourceIndex), | ||||
| 		"'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]); | ||||
| 
 | ||||
| 	// 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}; | ||||
| } | ||||
|  | ||||
| @ -244,12 +244,14 @@ public: | ||||
| 		int64_t _id, | ||||
| 		SourceLocation const& _location, | ||||
| 		ASTPointer<ASTString> _name, | ||||
| 		SourceLocation _nameLocation, | ||||
| 		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.
 | ||||
| 	ASTString const& name() const { return *m_name; } | ||||
| 	SourceLocation const& nameLocation() const noexcept { return m_nameLocation; } | ||||
| 	bool noVisibilitySpecified() const { return m_visibility == Visibility::Default; } | ||||
| 	Visibility visibility() const { return m_visibility == Visibility::Default ? defaultVisibility() : m_visibility; } | ||||
| 	bool isPublic() const { return visibility() >= Visibility::Public; } | ||||
| @ -287,6 +289,7 @@ protected: | ||||
| 
 | ||||
| private: | ||||
| 	ASTPointer<ASTString> m_name; | ||||
| 	SourceLocation m_nameLocation; | ||||
| 	Visibility m_visibility; | ||||
| }; | ||||
| 
 | ||||
| @ -345,9 +348,10 @@ public: | ||||
| 		SourceLocation const& _location, | ||||
| 		ASTPointer<ASTString> _path, | ||||
| 		ASTPointer<ASTString> const& _unitAlias, | ||||
| 		SourceLocation _unitAliasLocation, | ||||
| 		SymbolAliasList _symbolAliases | ||||
| 	): | ||||
| 		Declaration(_id, _location, _unitAlias), | ||||
| 		Declaration(_id, _location, _unitAlias, std::move(_unitAliasLocation)), | ||||
| 		m_path(std::move(_path)), | ||||
| 		m_symbolAliases(move(_symbolAliases)) | ||||
| 	{ } | ||||
| @ -477,13 +481,14 @@ public: | ||||
| 		int64_t _id, | ||||
| 		SourceLocation const& _location, | ||||
| 		ASTPointer<ASTString> const& _name, | ||||
| 		SourceLocation _nameLocation, | ||||
| 		ASTPointer<StructuredDocumentation> const& _documentation, | ||||
| 		std::vector<ASTPointer<InheritanceSpecifier>> _baseContracts, | ||||
| 		std::vector<ASTPointer<ASTNode>> _subNodes, | ||||
| 		ContractKind _contractKind = ContractKind::Contract, | ||||
| 		bool _abstract = false | ||||
| 	): | ||||
| 		Declaration(_id, _location, _name), | ||||
| 		Declaration(_id, _location, _name, std::move(_nameLocation)), | ||||
| 		StructurallyDocumented(_documentation), | ||||
| 		m_baseContracts(std::move(_baseContracts)), | ||||
| 		m_subNodes(std::move(_subNodes)), | ||||
| @ -643,9 +648,10 @@ public: | ||||
| 		int64_t _id, | ||||
| 		SourceLocation const& _location, | ||||
| 		ASTPointer<ASTString> const& _name, | ||||
| 		SourceLocation _nameLocation, | ||||
| 		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(ASTConstVisitor& _visitor) const override; | ||||
| @ -670,9 +676,10 @@ public: | ||||
| 		int64_t _id, | ||||
| 		SourceLocation const& _location, | ||||
| 		ASTPointer<ASTString> const& _name, | ||||
| 		SourceLocation _nameLocation, | ||||
| 		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(ASTConstVisitor& _visitor) const override; | ||||
| 
 | ||||
| @ -696,7 +703,7 @@ class EnumValue: public Declaration | ||||
| { | ||||
| public: | ||||
| 	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(ASTConstVisitor& _visitor) const override; | ||||
| @ -738,13 +745,14 @@ public: | ||||
| 		int64_t _id, | ||||
| 		SourceLocation const& _location, | ||||
| 		ASTPointer<ASTString> const& _name, | ||||
| 		SourceLocation _nameLocation, | ||||
| 		Visibility _visibility, | ||||
| 		ASTPointer<ParameterList> _parameters, | ||||
| 		bool _isVirtual = false, | ||||
| 		ASTPointer<OverrideSpecifier> _overrides = nullptr, | ||||
| 		ASTPointer<ParameterList> _returnParameters = ASTPointer<ParameterList>() | ||||
| 	): | ||||
| 		Declaration(_id, _location, _name, _visibility), | ||||
| 		Declaration(_id, _location, _name, std::move(_nameLocation), _visibility), | ||||
| 		m_parameters(std::move(_parameters)), | ||||
| 		m_overrides(std::move(_overrides)), | ||||
| 		m_returnParameters(std::move(_returnParameters)), | ||||
| @ -815,6 +823,7 @@ public: | ||||
| 		int64_t _id, | ||||
| 		SourceLocation const& _location, | ||||
| 		ASTPointer<ASTString> const& _name, | ||||
| 		SourceLocation const& _nameLocation, | ||||
| 		Visibility _visibility, | ||||
| 		StateMutability _stateMutability, | ||||
| 		bool _free, | ||||
| @ -827,7 +836,7 @@ public: | ||||
| 		ASTPointer<ParameterList> const& _returnParameters, | ||||
| 		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), | ||||
| 		ImplementationOptional(_body != nullptr), | ||||
| 		m_stateMutability(_stateMutability), | ||||
| @ -928,6 +937,7 @@ public: | ||||
| 		SourceLocation const& _location, | ||||
| 		ASTPointer<TypeName> _type, | ||||
| 		ASTPointer<ASTString> const& _name, | ||||
| 		SourceLocation _nameLocation, | ||||
| 		ASTPointer<Expression> _value, | ||||
| 		Visibility _visibility, | ||||
| 		ASTPointer<StructuredDocumentation> const _documentation = nullptr, | ||||
| @ -936,7 +946,7 @@ public: | ||||
| 		ASTPointer<OverrideSpecifier> _overrides = nullptr, | ||||
| 		Location _referenceLocation = Location::Unspecified | ||||
| 	): | ||||
| 		Declaration(_id, _location, _name, _visibility), | ||||
| 		Declaration(_id, _location, _name, std::move(_nameLocation), _visibility), | ||||
| 		StructurallyDocumented(std::move(_documentation)), | ||||
| 		m_typeName(std::move(_type)), | ||||
| 		m_value(std::move(_value)), | ||||
| @ -1033,13 +1043,14 @@ public: | ||||
| 		int64_t _id, | ||||
| 		SourceLocation const& _location, | ||||
| 		ASTPointer<ASTString> const& _name, | ||||
| 		SourceLocation _nameLocation, | ||||
| 		ASTPointer<StructuredDocumentation> const& _documentation, | ||||
| 		ASTPointer<ParameterList> const& _parameters, | ||||
| 		bool _isVirtual, | ||||
| 		ASTPointer<OverrideSpecifier> const& _overrides, | ||||
| 		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), | ||||
| 		ImplementationOptional(_body != nullptr), | ||||
| 		m_body(_body) | ||||
| @ -1108,11 +1119,12 @@ public: | ||||
| 		int64_t _id, | ||||
| 		SourceLocation const& _location, | ||||
| 		ASTPointer<ASTString> const& _name, | ||||
| 		SourceLocation _nameLocation, | ||||
| 		ASTPointer<StructuredDocumentation> const& _documentation, | ||||
| 		ASTPointer<ParameterList> const& _parameters, | ||||
| 		bool _anonymous = false | ||||
| 	): | ||||
| 		CallableDeclaration(_id, _location, _name, Visibility::Default, _parameters), | ||||
| 		CallableDeclaration(_id, _location, _name, std::move(_nameLocation), Visibility::Default, _parameters), | ||||
| 		StructurallyDocumented(_documentation), | ||||
| 		m_anonymous(_anonymous) | ||||
| 	{ | ||||
| @ -1151,7 +1163,7 @@ class MagicVariableDeclaration: public Declaration | ||||
| { | ||||
| public: | ||||
| 	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 | ||||
| 	{ | ||||
|  | ||||
| @ -107,21 +107,21 @@ void ASTJsonConverter::setJsonNode( | ||||
| 		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())) | ||||
| 		return m_sourceIndices.at(_location.source->name()); | ||||
| 	else | ||||
| 		return numeric_limits<size_t>::max(); | ||||
| 		return nullopt; | ||||
| } | ||||
| 
 | ||||
| string ASTJsonConverter::sourceLocationToString(SourceLocation const& _location) const | ||||
| { | ||||
| 	size_t sourceIndex = sourceIndexFromLocation(_location); | ||||
| 	optional<size_t> sourceIndexOpt = sourceIndexFromLocation(_location); | ||||
| 	int length = -1; | ||||
| 	if (_location.start >= 0 && _location.end >= 0) | ||||
| 		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) | ||||
| @ -243,6 +243,8 @@ bool ASTJsonConverter::visit(ImportDirective const& _node) | ||||
| 	addIfSet(attributes, "absolutePath", _node.annotation().absolutePath); | ||||
| 
 | ||||
| 	attributes.emplace_back("unitAlias", _node.name()); | ||||
| 	attributes.emplace_back("nameLocation", Json::Value(sourceLocationToString(_node.nameLocation()))); | ||||
| 
 | ||||
| 	Json::Value symbolAliases(Json::arrayValue); | ||||
| 	for (auto const& symbolAlias: _node.symbolAliases()) | ||||
| 	{ | ||||
| @ -250,6 +252,7 @@ bool ASTJsonConverter::visit(ImportDirective const& _node) | ||||
| 		solAssert(symbolAlias.symbol, ""); | ||||
| 		tuple["foreign"] = toJson(*symbolAlias.symbol); | ||||
| 		tuple["local"] =  symbolAlias.alias ? Json::Value(*symbolAlias.alias) : Json::nullValue; | ||||
| 		tuple["nameLocation"] = sourceLocationToString(_node.nameLocation()); | ||||
| 		symbolAliases.append(tuple); | ||||
| 	} | ||||
| 	attributes.emplace_back("symbolAliases", std::move(symbolAliases)); | ||||
| @ -261,6 +264,7 @@ bool ASTJsonConverter::visit(ContractDefinition const& _node) | ||||
| { | ||||
| 	std::vector<pair<string, Json::Value>> attributes = { | ||||
| 		make_pair("name", _node.name()), | ||||
| 		make_pair("nameLocation", sourceLocationToString(_node.nameLocation())), | ||||
| 		make_pair("documentation", _node.documentation() ? toJson(*_node.documentation()) : Json::nullValue), | ||||
| 		make_pair("contractKind", contractKind(_node.contractKind())), | ||||
| 		make_pair("abstract", _node.abstract()), | ||||
| @ -310,6 +314,7 @@ bool ASTJsonConverter::visit(StructDefinition const& _node) | ||||
| { | ||||
| 	std::vector<pair<string, Json::Value>> attributes = { | ||||
| 		make_pair("name", _node.name()), | ||||
| 		make_pair("nameLocation", sourceLocationToString(_node.nameLocation())), | ||||
| 		make_pair("visibility", Declaration::visibilityToString(_node.visibility())), | ||||
| 		make_pair("members", toJson(_node.members())), | ||||
| 		make_pair("scope", idOrNull(_node.scope())) | ||||
| @ -326,6 +331,7 @@ bool ASTJsonConverter::visit(EnumDefinition const& _node) | ||||
| { | ||||
| 	std::vector<pair<string, Json::Value>> attributes = { | ||||
| 		make_pair("name", _node.name()), | ||||
| 		make_pair("nameLocation", sourceLocationToString(_node.nameLocation())), | ||||
| 		make_pair("members", toJson(_node.members())) | ||||
| 	}; | ||||
| 
 | ||||
| @ -339,7 +345,8 @@ bool ASTJsonConverter::visit(EnumDefinition const& _node) | ||||
| bool ASTJsonConverter::visit(EnumValue const& _node) | ||||
| { | ||||
| 	setJsonNode(_node, "EnumValue", { | ||||
| 		make_pair("name", _node.name()) | ||||
| 		make_pair("name", _node.name()), | ||||
| 		make_pair("nameLocation", sourceLocationToString(_node.nameLocation())), | ||||
| 	}); | ||||
| 	return false; | ||||
| } | ||||
| @ -364,6 +371,7 @@ bool ASTJsonConverter::visit(FunctionDefinition const& _node) | ||||
| { | ||||
| 	std::vector<pair<string, Json::Value>> attributes = { | ||||
| 		make_pair("name", _node.name()), | ||||
| 		make_pair("nameLocation", sourceLocationToString(_node.nameLocation())), | ||||
| 		make_pair("documentation", _node.documentation() ? toJson(*_node.documentation()) : Json::nullValue), | ||||
| 		make_pair("kind", _node.isFree() ? "freeFunction" : TokenTraits::toString(_node.kind())), | ||||
| 		make_pair("stateMutability", stateMutabilityToString(_node.stateMutability())), | ||||
| @ -401,6 +409,7 @@ bool ASTJsonConverter::visit(VariableDeclaration const& _node) | ||||
| { | ||||
| 	std::vector<pair<string, Json::Value>> attributes = { | ||||
| 		make_pair("name", _node.name()), | ||||
| 		make_pair("nameLocation", sourceLocationToString(_node.nameLocation())), | ||||
| 		make_pair("typeName", toJson(_node.typeName())), | ||||
| 		make_pair("constant", _node.isConstant()), | ||||
| 		make_pair("mutability", VariableDeclaration::mutabilityToString(_node.mutability())), | ||||
| @ -428,6 +437,7 @@ bool ASTJsonConverter::visit(ModifierDefinition const& _node) | ||||
| { | ||||
| 	std::vector<pair<string, Json::Value>> attributes = { | ||||
| 		make_pair("name", _node.name()), | ||||
| 		make_pair("nameLocation", sourceLocationToString(_node.nameLocation())), | ||||
| 		make_pair("documentation", _node.documentation() ? toJson(*_node.documentation()) : Json::nullValue), | ||||
| 		make_pair("visibility", Declaration::visibilityToString(_node.visibility())), | ||||
| 		make_pair("parameters", toJson(_node.parameterList())), | ||||
| @ -455,6 +465,7 @@ bool ASTJsonConverter::visit(EventDefinition const& _node) | ||||
| 	m_inEvent = true; | ||||
| 	setJsonNode(_node, "EventDefinition", { | ||||
| 		make_pair("name", _node.name()), | ||||
| 		make_pair("nameLocation", sourceLocationToString(_node.nameLocation())), | ||||
| 		make_pair("documentation", _node.documentation() ? toJson(*_node.documentation()) : Json::nullValue), | ||||
| 		make_pair("parameters", toJson(_node.parameterList())), | ||||
| 		make_pair("anonymous", _node.isAnonymous()) | ||||
|  | ||||
| @ -137,7 +137,8 @@ private: | ||||
| 		std::string const& _nodeName, | ||||
| 		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; | ||||
| 	static std::string namePathToString(std::vector<ASTString> const& _namePath); | ||||
| 	static Json::Value idOrNull(ASTNode const* _pt) | ||||
|  | ||||
| @ -99,6 +99,13 @@ SourceLocation const ASTJsonImporter::createSourceLocation(Json::Value const& _n | ||||
| 	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> | ||||
| ASTPointer<T> ASTJsonImporter::convertJsonToASTNode(Json::Value const& _node) | ||||
| { | ||||
| @ -272,6 +279,7 @@ ASTPointer<ImportDirective> ASTJsonImporter::createImportDirective(Json::Value c | ||||
| 		_node, | ||||
| 		path, | ||||
| 		unitAlias, | ||||
| 		createNameSourceLocation(_node), | ||||
| 		move(symbolAliases) | ||||
| 	); | ||||
| 
 | ||||
| @ -298,6 +306,7 @@ ASTPointer<ContractDefinition> ASTJsonImporter::createContractDefinition(Json::V | ||||
| 	return createASTNode<ContractDefinition>( | ||||
| 		_node, | ||||
| 		make_shared<ASTString>(_node["name"].asString()), | ||||
| 		createNameSourceLocation(_node), | ||||
| 		_node["documentation"].isNull() ? nullptr : createDocumentation(member(_node, "documentation")), | ||||
| 		baseContracts, | ||||
| 		subNodes, | ||||
| @ -352,6 +361,7 @@ ASTPointer<ASTNode> ASTJsonImporter::createStructDefinition(Json::Value const& _ | ||||
| 	return createASTNode<StructDefinition>( | ||||
| 		_node, | ||||
| 		memberAsASTString(_node, "name"), | ||||
| 		createNameSourceLocation(_node), | ||||
| 		members | ||||
| 	); | ||||
| } | ||||
| @ -364,6 +374,7 @@ ASTPointer<EnumDefinition> ASTJsonImporter::createEnumDefinition(Json::Value con | ||||
| 	return createASTNode<EnumDefinition>( | ||||
| 		_node, | ||||
| 		memberAsASTString(_node, "name"), | ||||
| 		createNameSourceLocation(_node), | ||||
| 		members | ||||
| 	); | ||||
| } | ||||
| @ -434,6 +445,7 @@ ASTPointer<FunctionDefinition> ASTJsonImporter::createFunctionDefinition(Json::V | ||||
| 	return createASTNode<FunctionDefinition>( | ||||
| 		_node, | ||||
| 		memberAsASTString(_node, "name"), | ||||
| 		createNameSourceLocation(_node), | ||||
| 		vis, | ||||
| 		stateMutability(_node), | ||||
| 		freeFunction, | ||||
| @ -475,6 +487,7 @@ ASTPointer<VariableDeclaration> ASTJsonImporter::createVariableDeclaration(Json: | ||||
| 		_node, | ||||
| 		nullOrCast<TypeName>(member(_node, "typeName")), | ||||
| 		make_shared<ASTString>(member(_node, "name").asString()), | ||||
| 		createNameSourceLocation(_node), | ||||
| 		nullOrCast<Expression>(member(_node, "value")), | ||||
| 		visibility(_node), | ||||
| 		_node["documentation"].isNull() ? nullptr : createDocumentation(member(_node, "documentation")), | ||||
| @ -490,6 +503,7 @@ ASTPointer<ModifierDefinition> ASTJsonImporter::createModifierDefinition(Json::V | ||||
| 	return createASTNode<ModifierDefinition>( | ||||
| 		_node, | ||||
| 		memberAsASTString(_node, "name"), | ||||
| 		createNameSourceLocation(_node), | ||||
| 		_node["documentation"].isNull() ? nullptr : createDocumentation(member(_node, "documentation")), | ||||
| 		createParameterList(member(_node, "parameters")), | ||||
| 		memberAsBool(_node, "virtual"), | ||||
| @ -515,6 +529,7 @@ ASTPointer<EventDefinition> ASTJsonImporter::createEventDefinition(Json::Value c | ||||
| 	return createASTNode<EventDefinition>( | ||||
| 		_node, | ||||
| 		memberAsASTString(_node, "name"), | ||||
| 		createNameSourceLocation(_node), | ||||
| 		_node["documentation"].isNull() ? nullptr : createDocumentation(member(_node, "documentation")), | ||||
| 		createParameterList(member(_node, "parameters")), | ||||
| 		memberAsBool(_node, "anonymous") | ||||
|  | ||||
| @ -67,6 +67,7 @@ private: | ||||
| 	template<class T> | ||||
| 	ASTPointer<T> convertJsonToASTNode(Json::Value const& _node); | ||||
| 
 | ||||
| 	langutil::SourceLocation createNameSourceLocation(Json::Value const& _node); | ||||
| 
 | ||||
| 	/// \defgroup nodeCreators JSON to AST-Nodes
 | ||||
| 	///@{
 | ||||
|  | ||||
| @ -226,6 +226,7 @@ ASTPointer<ImportDirective> Parser::parseImportDirective() | ||||
| 	expectToken(Token::Import); | ||||
| 	ASTPointer<ASTString> path; | ||||
| 	ASTPointer<ASTString> unitAlias = make_shared<string>(); | ||||
| 	SourceLocation unitAliasLocation{}; | ||||
| 	ImportDirective::SymbolAliasList symbolAliases; | ||||
| 
 | ||||
| 	if (m_scanner->currentToken() == Token::StringLiteral) | ||||
| @ -234,7 +235,7 @@ ASTPointer<ImportDirective> Parser::parseImportDirective() | ||||
| 		if (m_scanner->currentToken() == Token::As) | ||||
| 		{ | ||||
| 			m_scanner->next(); | ||||
| 			unitAlias = expectIdentifierToken(); | ||||
| 			tie(unitAlias, unitAliasLocation) = expectIdentifierWithLocation(); | ||||
| 		} | ||||
| 	} | ||||
| 	else | ||||
| @ -250,8 +251,7 @@ ASTPointer<ImportDirective> Parser::parseImportDirective() | ||||
| 				if (m_scanner->currentToken() == Token::As) | ||||
| 				{ | ||||
| 					expectToken(Token::As); | ||||
| 					aliasLocation = currentLocation(); | ||||
| 					alias = expectIdentifierToken(); | ||||
| 					tie(alias, aliasLocation) = expectIdentifierWithLocation(); | ||||
| 				} | ||||
| 				symbolAliases.emplace_back(ImportDirective::SymbolAlias{move(id), move(alias), aliasLocation}); | ||||
| 				if (m_scanner->currentToken() != Token::Comma) | ||||
| @ -264,7 +264,7 @@ ASTPointer<ImportDirective> Parser::parseImportDirective() | ||||
| 		{ | ||||
| 			m_scanner->next(); | ||||
| 			expectToken(Token::As); | ||||
| 			unitAlias = expectIdentifierToken(); | ||||
| 			tie(unitAlias, unitAliasLocation) = expectIdentifierWithLocation(); | ||||
| 		} | ||||
| 		else | ||||
| 			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."); | ||||
| 	nodeFactory.markEndPosition(); | ||||
| 	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() | ||||
| @ -317,6 +317,7 @@ ASTPointer<ContractDefinition> Parser::parseContractDefinition() | ||||
| 	RecursionGuard recursionGuard(*this); | ||||
| 	ASTNodeFactory nodeFactory(*this); | ||||
| 	ASTPointer<ASTString> name =  nullptr; | ||||
| 	SourceLocation nameLocation{}; | ||||
| 	ASTPointer<StructuredDocumentation> documentation; | ||||
| 	vector<ASTPointer<InheritanceSpecifier>> baseContracts; | ||||
| 	vector<ASTPointer<ASTNode>> subNodes; | ||||
| @ -325,7 +326,7 @@ ASTPointer<ContractDefinition> Parser::parseContractDefinition() | ||||
| 	{ | ||||
| 		documentation = parseStructuredDocumentation(); | ||||
| 		contractKind = parseContractKind(); | ||||
| 		name = expectIdentifierToken(); | ||||
| 		tie(name, nameLocation) = expectIdentifierWithLocation(); | ||||
| 		if (m_scanner->currentToken() == Token::Is) | ||||
| 			do | ||||
| 			{ | ||||
| @ -385,6 +386,7 @@ ASTPointer<ContractDefinition> Parser::parseContractDefinition() | ||||
| 		expectToken(Token::RBrace); | ||||
| 	return nodeFactory.createNode<ContractDefinition>( | ||||
| 		name, | ||||
| 		nameLocation, | ||||
| 		documentation, | ||||
| 		baseContracts, | ||||
| 		subNodes, | ||||
| @ -572,6 +574,7 @@ ASTPointer<ASTNode> Parser::parseFunctionDefinition(bool _freeFunction) | ||||
| 
 | ||||
| 	Token kind = m_scanner->currentToken(); | ||||
| 	ASTPointer<ASTString> name; | ||||
| 	SourceLocation nameLocation; | ||||
| 	if (kind == Token::Function) | ||||
| 	{ | ||||
| 		m_scanner->next(); | ||||
| @ -586,6 +589,7 @@ ASTPointer<ASTNode> Parser::parseFunctionDefinition(bool _freeFunction) | ||||
| 				{Token::Fallback, "fallback function"}, | ||||
| 				{Token::Receive, "receive function"}, | ||||
| 			}.at(m_scanner->currentToken()); | ||||
| 			nameLocation = currentLocation(); | ||||
| 			name = make_shared<ASTString>(TokenTraits::toString(m_scanner->currentToken())); | ||||
| 			string message{ | ||||
| 				"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(); | ||||
| 		} | ||||
| 		else | ||||
| 			name = expectIdentifierToken(); | ||||
| 			tie(name, nameLocation) = expectIdentifierWithLocation(); | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| @ -621,6 +625,7 @@ ASTPointer<ASTNode> Parser::parseFunctionDefinition(bool _freeFunction) | ||||
| 	} | ||||
| 	return nodeFactory.createNode<FunctionDefinition>( | ||||
| 		name, | ||||
| 		nameLocation, | ||||
| 		header.visibility, | ||||
| 		header.stateMutability, | ||||
| 		_freeFunction, | ||||
| @ -640,7 +645,7 @@ ASTPointer<StructDefinition> Parser::parseStructDefinition() | ||||
| 	RecursionGuard recursionGuard(*this); | ||||
| 	ASTNodeFactory nodeFactory(*this); | ||||
| 	expectToken(Token::Struct); | ||||
| 	ASTPointer<ASTString> name = expectIdentifierToken(); | ||||
| 	auto [name, nameLocation] = expectIdentifierWithLocation(); | ||||
| 	vector<ASTPointer<VariableDeclaration>> members; | ||||
| 	expectToken(Token::LBrace); | ||||
| 	while (m_scanner->currentToken() != Token::RBrace) | ||||
| @ -650,7 +655,7 @@ ASTPointer<StructDefinition> Parser::parseStructDefinition() | ||||
| 	} | ||||
| 	nodeFactory.markEndPosition(); | ||||
| 	expectToken(Token::RBrace); | ||||
| 	return nodeFactory.createNode<StructDefinition>(name, members); | ||||
| 	return nodeFactory.createNode<StructDefinition>(move(name), move(nameLocation), move(members)); | ||||
| } | ||||
| 
 | ||||
| ASTPointer<EnumValue> Parser::parseEnumValue() | ||||
| @ -666,7 +671,7 @@ ASTPointer<EnumDefinition> Parser::parseEnumDefinition() | ||||
| 	RecursionGuard recursionGuard(*this); | ||||
| 	ASTNodeFactory nodeFactory(*this); | ||||
| 	expectToken(Token::Enum); | ||||
| 	ASTPointer<ASTString> name = expectIdentifierToken(); | ||||
| 	auto [name, nameLocation] = expectIdentifierWithLocation(); | ||||
| 	vector<ASTPointer<EnumValue>> members; | ||||
| 	expectToken(Token::LBrace); | ||||
| 
 | ||||
| @ -684,7 +689,7 @@ ASTPointer<EnumDefinition> Parser::parseEnumDefinition() | ||||
| 
 | ||||
| 	nodeFactory.markEndPosition(); | ||||
| 	expectToken(Token::RBrace); | ||||
| 	return nodeFactory.createNode<EnumDefinition>(name, members); | ||||
| 	return nodeFactory.createNode<EnumDefinition>(name, nameLocation, members); | ||||
| } | ||||
| 
 | ||||
| ASTPointer<VariableDeclaration> Parser::parseVariableDeclaration( | ||||
| @ -717,6 +722,7 @@ ASTPointer<VariableDeclaration> Parser::parseVariableDeclaration( | ||||
| 	Visibility visibility(Visibility::Default); | ||||
| 	VariableDeclaration::Location location = VariableDeclaration::Location::Unspecified; | ||||
| 	ASTPointer<ASTString> identifier; | ||||
| 	SourceLocation nameLocation{}; | ||||
| 
 | ||||
| 	while (true) | ||||
| 	{ | ||||
| @ -795,7 +801,7 @@ ASTPointer<VariableDeclaration> Parser::parseVariableDeclaration( | ||||
| 	else | ||||
| 	{ | ||||
| 		nodeFactory.markEndPosition(); | ||||
| 		identifier = expectIdentifierToken(); | ||||
| 		tie(identifier, nameLocation) = expectIdentifierWithLocation(); | ||||
| 	} | ||||
| 	ASTPointer<Expression> value; | ||||
| 	if (_options.allowInitialValue) | ||||
| @ -810,6 +816,7 @@ ASTPointer<VariableDeclaration> Parser::parseVariableDeclaration( | ||||
| 	return nodeFactory.createNode<VariableDeclaration>( | ||||
| 		type, | ||||
| 		identifier, | ||||
| 		nameLocation, | ||||
| 		value, | ||||
| 		visibility, | ||||
| 		documentation, | ||||
| @ -830,7 +837,7 @@ ASTPointer<ModifierDefinition> Parser::parseModifierDefinition() | ||||
| 	ASTPointer<StructuredDocumentation> documentation = parseStructuredDocumentation(); | ||||
| 
 | ||||
| 	expectToken(Token::Modifier); | ||||
| 	ASTPointer<ASTString> name(expectIdentifierToken()); | ||||
| 	auto [name, nameLocation] = expectIdentifierWithLocation(); | ||||
| 	ASTPointer<ParameterList> parameters; | ||||
| 	if (m_scanner->currentToken() == Token::LParen) | ||||
| 	{ | ||||
| @ -875,7 +882,15 @@ ASTPointer<ModifierDefinition> Parser::parseModifierDefinition() | ||||
| 	else | ||||
| 		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() | ||||
| @ -885,7 +900,7 @@ ASTPointer<EventDefinition> Parser::parseEventDefinition() | ||||
| 	ASTPointer<StructuredDocumentation> documentation = parseStructuredDocumentation(); | ||||
| 
 | ||||
| 	expectToken(Token::Event); | ||||
| 	ASTPointer<ASTString> name(expectIdentifierToken()); | ||||
| 	auto [name, nameLocation] = expectIdentifierWithLocation(); | ||||
| 
 | ||||
| 	VarDeclParserOptions options; | ||||
| 	options.allowIndexed = true; | ||||
| @ -899,7 +914,7 @@ ASTPointer<EventDefinition> Parser::parseEventDefinition() | ||||
| 	} | ||||
| 	nodeFactory.markEndPosition(); | ||||
| 	expectToken(Token::Semicolon); | ||||
| 	return nodeFactory.createNode<EventDefinition>(name, documentation, parameters, anonymous); | ||||
| 	return nodeFactory.createNode<EventDefinition>(name, nameLocation, documentation, parameters, anonymous); | ||||
| } | ||||
| 
 | ||||
| ASTPointer<UsingForDirective> Parser::parseUsingDirective() | ||||
|  | ||||
| @ -151,6 +151,7 @@ private: | ||||
| 	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>>> parseNamedArguments(); | ||||
| 	std::pair<ASTPointer<ASTString>, langutil::SourceLocation> expectIdentifierWithLocation(); | ||||
| 	///@}
 | ||||
| 
 | ||||
| 	///@{
 | ||||
|  | ||||
| @ -187,7 +187,7 @@ Json::Value AsmJsonConverter::createAstNode(langutil::SourceLocation const& _loc | ||||
| 	int length = -1; | ||||
| 	if (_location.start >= 0 && _location.end >= 0) | ||||
| 		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; | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -27,6 +27,7 @@ | ||||
| #include <liblangutil/SourceLocation.h> | ||||
| #include <json/json.h> | ||||
| #include <boost/variant.hpp> | ||||
| #include <optional> | ||||
| #include <vector> | ||||
| 
 | ||||
| namespace solidity::yul | ||||
| @ -40,7 +41,7 @@ class AsmJsonConverter: public boost::static_visitor<Json::Value> | ||||
| public: | ||||
| 	/// Create a converter to JSON for any block of inline assembly
 | ||||
| 	/// @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()(TypedName const& _node) const; | ||||
| @ -65,7 +66,7 @@ private: | ||||
| 	template <class T> | ||||
| 	Json::Value vectorOfVariantsToJson(std::vector<T> const& vec) const; | ||||
| 
 | ||||
| 	std::string const m_sourceIndex; | ||||
| 	std::optional<size_t> const m_sourceIndex; | ||||
| }; | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -49,6 +49,7 @@ | ||||
|               7 | ||||
|             ], | ||||
|             "name": "C", | ||||
|             "nameLocation": "27:1:0", | ||||
|             "nodeType": "ContractDefinition", | ||||
|             "nodes": | ||||
|             [ | ||||
| @ -82,6 +83,7 @@ | ||||
|                 "kind": "function", | ||||
|                 "modifiers": [], | ||||
|                 "name": "f", | ||||
|                 "nameLocation": "45:4:0", | ||||
|                 "nodeType": "FunctionDefinition", | ||||
|                 "overrides": null, | ||||
|                 "parameters": | ||||
|  | ||||
| @ -40,6 +40,7 @@ JSON AST (compact format): | ||||
|         18 | ||||
|       ], | ||||
|       "name": "Error1", | ||||
|       "nameLocation": "71:6:0", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -59,6 +60,7 @@ JSON AST (compact format): | ||||
|           "kind": "constructor", | ||||
|           "modifiers": [], | ||||
|           "name": "", | ||||
|           "nameLocation": "-1:-1:-1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -120,6 +122,7 @@ JSON AST (compact format): | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "five", | ||||
|           "nameLocation": "407:4:0", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -139,6 +142,7 @@ JSON AST (compact format): | ||||
|                 "id": 12, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "", | ||||
|                 "nameLocation": "-1:-1:-1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "scope": 17, | ||||
|                 "src": "434:4:0", | ||||
|  | ||||
| @ -10,4 +10,4 @@ | ||||
| 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}}} | ||||
|  | ||||
| @ -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}}} | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         5 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "18:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -39,6 +40,7 @@ | ||||
|           "kind": "constructor", | ||||
|           "modifiers": [], | ||||
|           "name": "", | ||||
|           "nameLocation": "-1:-1:-1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 5, | ||||
|       "name": "C", | ||||
|       "nameLocation": "18:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -27,6 +28,7 @@ | ||||
|           "kind": "constructor", | ||||
|           "modifiers": [], | ||||
|           "name": "", | ||||
|           "nameLocation": "-1:-1:-1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         39 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -32,6 +33,7 @@ | ||||
|           "id": 4, | ||||
|           "mutability": "mutable", | ||||
|           "name": "m", | ||||
|           "nameLocation": "60:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "scope": 39, | ||||
|           "src": "17:44:1", | ||||
| @ -100,6 +102,7 @@ | ||||
|                     "id": 12, | ||||
|                     "mutability": "mutable", | ||||
|                     "name": "a", | ||||
|                     "nameLocation": "160:1:1", | ||||
|                     "nodeType": "VariableDeclaration", | ||||
|                     "scope": 37, | ||||
|                     "src": "144:17:1", | ||||
| @ -234,6 +237,7 @@ | ||||
|                     "id": 22, | ||||
|                     "mutability": "mutable", | ||||
|                     "name": "c", | ||||
|                     "nameLocation": "205:1:1", | ||||
|                     "nodeType": "VariableDeclaration", | ||||
|                     "scope": 37, | ||||
|                     "src": "197:9:1", | ||||
| @ -468,6 +472,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "76:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -480,6 +485,7 @@ | ||||
|                 "id": 6, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "arg", | ||||
|                 "nameLocation": "94:3:1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "scope": 38, | ||||
|                 "src": "78:19:1", | ||||
| @ -519,6 +525,7 @@ | ||||
|                 "id": 9, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "r", | ||||
|                 "nameLocation": "131:1:1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "scope": 38, | ||||
|                 "src": "115:17:1", | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 39, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -19,6 +20,7 @@ | ||||
|           "id": 4, | ||||
|           "mutability": "mutable", | ||||
|           "name": "m", | ||||
|           "nameLocation": "60:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "src": "17:44:1", | ||||
|           "stateVariable": false, | ||||
| @ -70,6 +72,7 @@ | ||||
|                     "id": 12, | ||||
|                     "mutability": "mutable", | ||||
|                     "name": "a", | ||||
|                     "nameLocation": "160:1:1", | ||||
|                     "nodeType": "VariableDeclaration", | ||||
|                     "src": "144:17:1", | ||||
|                     "stateVariable": false, | ||||
| @ -159,6 +162,7 @@ | ||||
|                     "id": 22, | ||||
|                     "mutability": "mutable", | ||||
|                     "name": "c", | ||||
|                     "nameLocation": "205:1:1", | ||||
|                     "nodeType": "VariableDeclaration", | ||||
|                     "src": "197:9:1", | ||||
|                     "stateVariable": false, | ||||
| @ -296,6 +300,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "76:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -308,6 +313,7 @@ | ||||
|                 "id": 6, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "arg", | ||||
|                 "nameLocation": "94:3:1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "src": "78:19:1", | ||||
|                 "stateVariable": false, | ||||
| @ -338,6 +344,7 @@ | ||||
|                 "id": 9, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "r", | ||||
|                 "nameLocation": "131:1:1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "src": "115:17:1", | ||||
|                 "stateVariable": false, | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         4 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -31,6 +32,7 @@ | ||||
|           "id": 3, | ||||
|           "mutability": "mutable", | ||||
|           "name": "i", | ||||
|           "nameLocation": "20:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "scope": 4, | ||||
|           "src": "13:8:1", | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 4, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -19,6 +20,7 @@ | ||||
|           "id": 3, | ||||
|           "mutability": "mutable", | ||||
|           "name": "i", | ||||
|           "nameLocation": "20:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "src": "13:8:1", | ||||
|           "stateVariable": false, | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         6 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -137,6 +138,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "j", | ||||
|           "nameLocation": "26:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 6, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -124,6 +125,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "j", | ||||
|           "nameLocation": "26:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         6 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -62,6 +63,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "g", | ||||
|           "nameLocation": "26:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 6, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -49,6 +50,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "g", | ||||
|           "nameLocation": "26:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         6 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -124,6 +125,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "h", | ||||
|           "nameLocation": "26:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 6, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -111,6 +112,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "h", | ||||
|           "nameLocation": "26:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         6 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -74,6 +75,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "l", | ||||
|           "nameLocation": "26:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 6, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -61,6 +62,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "l", | ||||
|           "nameLocation": "26:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         6 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -137,6 +138,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "g", | ||||
|           "nameLocation": "26:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 6, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -124,6 +125,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "g", | ||||
|           "nameLocation": "26:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -22,6 +22,7 @@ | ||||
|         8 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -99,6 +100,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "24:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -118,6 +120,7 @@ | ||||
|                 "id": 3, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "x", | ||||
|                 "nameLocation": "54:1:1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "scope": 7, | ||||
|                 "src": "49:6:1", | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 8, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -88,6 +89,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "24:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -107,6 +109,7 @@ | ||||
|                 "id": 3, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "x", | ||||
|                 "nameLocation": "54:1:1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "src": "49:6:1", | ||||
|                 "stateVariable": false, | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         12 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -36,6 +37,7 @@ | ||||
|               "id": 2, | ||||
|               "mutability": "mutable", | ||||
|               "name": "x", | ||||
|               "nameLocation": "33:1:1", | ||||
|               "nodeType": "VariableDeclaration", | ||||
|               "scope": 3, | ||||
|               "src": "28:6:1", | ||||
| @ -62,6 +64,7 @@ | ||||
|             } | ||||
|           ], | ||||
|           "name": "S", | ||||
|           "nameLocation": "24:1:1", | ||||
|           "nodeType": "StructDefinition", | ||||
|           "scope": 12, | ||||
|           "src": "17:20:1", | ||||
| @ -72,6 +75,7 @@ | ||||
|           "id": 6, | ||||
|           "mutability": "mutable", | ||||
|           "name": "s", | ||||
|           "nameLocation": "44:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "scope": 12, | ||||
|           "src": "42:3:1", | ||||
| @ -211,6 +215,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "e", | ||||
|           "nameLocation": "60:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 12, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -23,6 +24,7 @@ | ||||
|               "id": 2, | ||||
|               "mutability": "mutable", | ||||
|               "name": "x", | ||||
|               "nameLocation": "33:1:1", | ||||
|               "nodeType": "VariableDeclaration", | ||||
|               "src": "28:6:1", | ||||
|               "stateVariable": false, | ||||
| @ -40,6 +42,7 @@ | ||||
|             } | ||||
|           ], | ||||
|           "name": "S", | ||||
|           "nameLocation": "24:1:1", | ||||
|           "nodeType": "StructDefinition", | ||||
|           "src": "17:20:1", | ||||
|           "visibility": "public" | ||||
| @ -49,6 +52,7 @@ | ||||
|           "id": 6, | ||||
|           "mutability": "mutable", | ||||
|           "name": "s", | ||||
|           "nameLocation": "44:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "src": "42:3:1", | ||||
|           "stateVariable": false, | ||||
| @ -158,6 +162,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "e", | ||||
|           "nameLocation": "60:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         6 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -78,6 +79,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "m", | ||||
|           "nameLocation": "26:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 6, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -65,6 +66,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "m", | ||||
|           "nameLocation": "26:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -22,6 +22,7 @@ | ||||
|         6 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -184,6 +185,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "26:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         6 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -101,6 +102,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "g", | ||||
|           "nameLocation": "26:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 6, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -88,6 +89,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "g", | ||||
|           "nameLocation": "26:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 6, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -157,6 +158,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "26:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         9 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -46,6 +47,7 @@ | ||||
|                     "id": 4, | ||||
|                     "mutability": "mutable", | ||||
|                     "name": "x", | ||||
|                     "nameLocation": "57:1:1", | ||||
|                     "nodeType": "VariableDeclaration", | ||||
|                     "scope": 7, | ||||
|                     "src": "52:6:1", | ||||
| @ -127,6 +129,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "26:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 9, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -34,6 +35,7 @@ | ||||
|                     "id": 4, | ||||
|                     "mutability": "mutable", | ||||
|                     "name": "x", | ||||
|                     "nameLocation": "57:1:1", | ||||
|                     "nodeType": "VariableDeclaration", | ||||
|                     "src": "52:6:1", | ||||
|                     "stateVariable": false, | ||||
| @ -96,6 +98,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "26:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         5 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -39,6 +40,7 @@ | ||||
|           "kind": "constructor", | ||||
|           "modifiers": [], | ||||
|           "name": "", | ||||
|           "nameLocation": "-1:-1:-1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 5, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -27,6 +28,7 @@ | ||||
|           "kind": "constructor", | ||||
|           "modifiers": [], | ||||
|           "name": "", | ||||
|           "nameLocation": "-1:-1:-1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -39,6 +39,7 @@ | ||||
|         1 | ||||
|       ], | ||||
|       "name": "A", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "scope": 14, | ||||
| @ -75,6 +76,7 @@ | ||||
|         1 | ||||
|       ], | ||||
|       "name": "B", | ||||
|       "nameLocation": "24:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "scope": 14, | ||||
| @ -113,6 +115,7 @@ | ||||
|         1 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "44:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "scope": 14, | ||||
| @ -153,6 +156,7 @@ | ||||
|         1 | ||||
|       ], | ||||
|       "name": "D", | ||||
|       "nameLocation": "64:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "scope": 14, | ||||
| @ -195,6 +199,7 @@ | ||||
|         1 | ||||
|       ], | ||||
|       "name": "E", | ||||
|       "nameLocation": "84:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "scope": 14, | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 1, | ||||
|       "name": "A", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "src": "0:14:1" | ||||
| @ -36,6 +37,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 4, | ||||
|       "name": "B", | ||||
|       "nameLocation": "24:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "src": "15:19:1" | ||||
| @ -61,6 +63,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 7, | ||||
|       "name": "C", | ||||
|       "nameLocation": "44:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "src": "35:19:1" | ||||
| @ -86,6 +89,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 10, | ||||
|       "name": "D", | ||||
|       "nameLocation": "64:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "src": "55:19:1" | ||||
| @ -111,6 +115,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 13, | ||||
|       "name": "E", | ||||
|       "nameLocation": "84:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "src": "75:19:1" | ||||
|  | ||||
| @ -31,6 +31,7 @@ | ||||
|         2 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "37:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "scope": 3, | ||||
| @ -71,6 +72,7 @@ | ||||
|         5 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "71:1:2", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "scope": 6, | ||||
| @ -104,6 +106,7 @@ | ||||
|         23 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:3", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -120,6 +123,7 @@ | ||||
|           "id": 9, | ||||
|           "mutability": "mutable", | ||||
|           "name": "state", | ||||
|           "nameLocation": "60:5:3", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "scope": 23, | ||||
|           "src": "48:17:3", | ||||
| @ -155,6 +159,7 @@ | ||||
|           }, | ||||
|           "id": 12, | ||||
|           "name": "Evt", | ||||
|           "nameLocation": "102:3:3", | ||||
|           "nodeType": "EventDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -189,6 +194,7 @@ | ||||
|           }, | ||||
|           "id": 17, | ||||
|           "name": "mod", | ||||
|           "nameLocation": "147:3:3", | ||||
|           "nodeType": "ModifierDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -222,6 +228,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "fn", | ||||
|           "nameLocation": "197:2:3", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         27 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -31,6 +32,7 @@ | ||||
|           "id": 2, | ||||
|           "mutability": "mutable", | ||||
|           "name": "a", | ||||
|           "nameLocation": "50:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "scope": 27, | ||||
|           "src": "45:6:1", | ||||
| @ -193,6 +195,7 @@ | ||||
|                       "id": 8, | ||||
|                       "mutability": "mutable", | ||||
|                       "name": "i", | ||||
|                       "nameLocation": "136:1:1", | ||||
|                       "nodeType": "VariableDeclaration", | ||||
|                       "scope": 22, | ||||
|                       "src": "131:6:1", | ||||
| @ -308,6 +311,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "66:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -327,6 +331,7 @@ | ||||
|                 "id": 5, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "x", | ||||
|                 "nameLocation": "96:1:1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "scope": 26, | ||||
|                 "src": "91:6:1", | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 27, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -19,6 +20,7 @@ | ||||
|           "id": 2, | ||||
|           "mutability": "mutable", | ||||
|           "name": "a", | ||||
|           "nameLocation": "50:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "src": "45:6:1", | ||||
|           "stateVariable": false, | ||||
| @ -126,6 +128,7 @@ | ||||
|                       "id": 8, | ||||
|                       "mutability": "mutable", | ||||
|                       "name": "i", | ||||
|                       "nameLocation": "136:1:1", | ||||
|                       "nodeType": "VariableDeclaration", | ||||
|                       "src": "131:6:1", | ||||
|                       "stateVariable": false, | ||||
| @ -204,6 +207,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "66:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -223,6 +227,7 @@ | ||||
|                 "id": 5, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "x", | ||||
|                 "nameLocation": "96:1:1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "src": "91:6:1", | ||||
|                 "stateVariable": false, | ||||
|  | ||||
| @ -19,6 +19,7 @@ | ||||
|       }, | ||||
|       "id": 2, | ||||
|       "name": "C", | ||||
|       "nameLocation": "37:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "src": "28:13:1" | ||||
| @ -46,6 +47,7 @@ | ||||
|       }, | ||||
|       "id": 5, | ||||
|       "name": "C", | ||||
|       "nameLocation": "71:1:2", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "src": "62:13:2" | ||||
| @ -66,6 +68,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 23, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:3", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -74,6 +77,7 @@ | ||||
|           "id": 9, | ||||
|           "mutability": "mutable", | ||||
|           "name": "state", | ||||
|           "nameLocation": "60:5:3", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "src": "48:17:3", | ||||
|           "stateVariable": false, | ||||
| @ -100,6 +104,7 @@ | ||||
|           }, | ||||
|           "id": 12, | ||||
|           "name": "Evt", | ||||
|           "nameLocation": "102:3:3", | ||||
|           "nodeType": "EventDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -134,6 +139,7 @@ | ||||
|           }, | ||||
|           "id": 17, | ||||
|           "name": "mod", | ||||
|           "nameLocation": "147:3:3", | ||||
|           "nodeType": "ModifierDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -166,6 +172,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "fn", | ||||
|           "nameLocation": "197:2:3", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         28 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -38,6 +39,7 @@ | ||||
|           "id": 3, | ||||
|           "mutability": "mutable", | ||||
|           "name": "a", | ||||
|           "nameLocation": "35:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "scope": 28, | ||||
|           "src": "30:6:1", | ||||
| @ -202,6 +204,7 @@ | ||||
|                       "id": 9, | ||||
|                       "mutability": "mutable", | ||||
|                       "name": "i", | ||||
|                       "nameLocation": "122:1:1", | ||||
|                       "nodeType": "VariableDeclaration", | ||||
|                       "scope": 23, | ||||
|                       "src": "117:6:1", | ||||
| @ -318,6 +321,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "51:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -337,6 +341,7 @@ | ||||
|                 "id": 6, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "x", | ||||
|                 "nameLocation": "81:1:1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "scope": 27, | ||||
|                 "src": "76:6:1", | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 28, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -19,6 +20,7 @@ | ||||
|           "id": 3, | ||||
|           "mutability": "mutable", | ||||
|           "name": "a", | ||||
|           "nameLocation": "35:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "src": "30:6:1", | ||||
|           "stateVariable": false, | ||||
| @ -128,6 +130,7 @@ | ||||
|                       "id": 9, | ||||
|                       "mutability": "mutable", | ||||
|                       "name": "i", | ||||
|                       "nameLocation": "122:1:1", | ||||
|                       "nodeType": "VariableDeclaration", | ||||
|                       "src": "117:6:1", | ||||
|                       "stateVariable": false, | ||||
| @ -207,6 +210,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "51:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -226,6 +230,7 @@ | ||||
|                 "id": 6, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "x", | ||||
|                 "nameLocation": "81:1:1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "src": "76:6:1", | ||||
|                 "stateVariable": false, | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         4 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -34,17 +35,20 @@ | ||||
|             { | ||||
|               "id": 1, | ||||
|               "name": "A", | ||||
|               "nameLocation": "22:1:1", | ||||
|               "nodeType": "EnumValue", | ||||
|               "src": "22:1:1" | ||||
|             }, | ||||
|             { | ||||
|               "id": 2, | ||||
|               "name": "B", | ||||
|               "nameLocation": "25:1:1", | ||||
|               "nodeType": "EnumValue", | ||||
|               "src": "25:1:1" | ||||
|             } | ||||
|           ], | ||||
|           "name": "E", | ||||
|           "nameLocation": "18:1:1", | ||||
|           "nodeType": "EnumDefinition", | ||||
|           "src": "13:15:1" | ||||
|         } | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 4, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -21,17 +22,20 @@ | ||||
|             { | ||||
|               "id": 1, | ||||
|               "name": "A", | ||||
|               "nameLocation": "22:1:1", | ||||
|               "nodeType": "EnumValue", | ||||
|               "src": "22:1:1" | ||||
|             }, | ||||
|             { | ||||
|               "id": 2, | ||||
|               "name": "B", | ||||
|               "nameLocation": "25:1:1", | ||||
|               "nodeType": "EnumValue", | ||||
|               "src": "25:1:1" | ||||
|             } | ||||
|           ], | ||||
|           "name": "E", | ||||
|           "nameLocation": "18:1:1", | ||||
|           "nodeType": "EnumDefinition", | ||||
|           "src": "13:15:1" | ||||
|         } | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         3 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -30,6 +31,7 @@ | ||||
|           "anonymous": false, | ||||
|           "id": 2, | ||||
|           "name": "E", | ||||
|           "nameLocation": "19:1:1", | ||||
|           "nodeType": "EventDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 3, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -18,6 +19,7 @@ | ||||
|           "anonymous": false, | ||||
|           "id": 2, | ||||
|           "name": "E", | ||||
|           "nameLocation": "19:1:1", | ||||
|           "nodeType": "EventDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         5 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -39,6 +40,7 @@ | ||||
|           "kind": "fallback", | ||||
|           "modifiers": [], | ||||
|           "name": "", | ||||
|           "nameLocation": "-1:-1:-1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         9 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -39,6 +40,7 @@ | ||||
|           "kind": "receive", | ||||
|           "modifiers": [], | ||||
|           "name": "", | ||||
|           "nameLocation": "-1:-1:-1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -73,6 +75,7 @@ | ||||
|           "kind": "fallback", | ||||
|           "modifiers": [], | ||||
|           "name": "", | ||||
|           "nameLocation": "-1:-1:-1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 9, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -27,6 +28,7 @@ | ||||
|           "kind": "receive", | ||||
|           "modifiers": [], | ||||
|           "name": "", | ||||
|           "nameLocation": "-1:-1:-1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -60,6 +62,7 @@ | ||||
|           "kind": "fallback", | ||||
|           "modifiers": [], | ||||
|           "name": "", | ||||
|           "nameLocation": "-1:-1:-1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 5, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -27,6 +28,7 @@ | ||||
|           "kind": "fallback", | ||||
|           "modifiers": [], | ||||
|           "name": "", | ||||
|           "nameLocation": "-1:-1:-1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         5 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -39,6 +40,7 @@ | ||||
|           "kind": "fallback", | ||||
|           "modifiers": [], | ||||
|           "name": "", | ||||
|           "nameLocation": "-1:-1:-1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 5, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -27,6 +28,7 @@ | ||||
|           "kind": "fallback", | ||||
|           "modifiers": [], | ||||
|           "name": "", | ||||
|           "nameLocation": "-1:-1:-1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         17 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -40,6 +41,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "22:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -52,6 +54,7 @@ | ||||
|                 "id": 6, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "x", | ||||
|                 "nameLocation": "67:1:1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "scope": 16, | ||||
|                 "src": "24:44:1", | ||||
| @ -84,6 +87,7 @@ | ||||
|                         "id": 3, | ||||
|                         "mutability": "mutable", | ||||
|                         "name": "", | ||||
|                         "nameLocation": "-1:-1:-1", | ||||
|                         "nodeType": "VariableDeclaration", | ||||
|                         "scope": 5, | ||||
|                         "src": "61:4:1", | ||||
| @ -136,6 +140,7 @@ | ||||
|                 "id": 13, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "", | ||||
|                 "nameLocation": "-1:-1:-1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "scope": 16, | ||||
|                 "src": "79:40:1", | ||||
| @ -168,6 +173,7 @@ | ||||
|                         "id": 10, | ||||
|                         "mutability": "mutable", | ||||
|                         "name": "", | ||||
|                         "nameLocation": "-1:-1:-1", | ||||
|                         "nodeType": "VariableDeclaration", | ||||
|                         "scope": 12, | ||||
|                         "src": "113:4:1", | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 17, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -27,6 +28,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "22:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -39,6 +41,7 @@ | ||||
|                 "id": 6, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "x", | ||||
|                 "nameLocation": "67:1:1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "src": "24:44:1", | ||||
|                 "stateVariable": false, | ||||
| @ -66,6 +69,7 @@ | ||||
|                         "id": 3, | ||||
|                         "mutability": "mutable", | ||||
|                         "name": "", | ||||
|                         "nameLocation": "-1:-1:-1", | ||||
|                         "nodeType": "VariableDeclaration", | ||||
|                         "src": "61:4:1", | ||||
|                         "stateVariable": false, | ||||
| @ -105,6 +109,7 @@ | ||||
|                 "id": 13, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "", | ||||
|                 "nameLocation": "-1:-1:-1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "src": "79:40:1", | ||||
|                 "stateVariable": false, | ||||
| @ -132,6 +137,7 @@ | ||||
|                         "id": 10, | ||||
|                         "mutability": "mutable", | ||||
|                         "name": "", | ||||
|                         "nameLocation": "-1:-1:-1", | ||||
|                         "nodeType": "VariableDeclaration", | ||||
|                         "src": "113:4:1", | ||||
|                         "stateVariable": false, | ||||
|  | ||||
| @ -19,11 +19,13 @@ | ||||
|         { | ||||
|           "id": 1, | ||||
|           "name": "A", | ||||
|           "nameLocation": "9:1:1", | ||||
|           "nodeType": "EnumValue", | ||||
|           "src": "9:1:1" | ||||
|         } | ||||
|       ], | ||||
|       "name": "E", | ||||
|       "nameLocation": "5:1:1", | ||||
|       "nodeType": "EnumDefinition", | ||||
|       "src": "0:12:1" | ||||
|     } | ||||
|  | ||||
| @ -11,11 +11,13 @@ | ||||
|         { | ||||
|           "id": 1, | ||||
|           "name": "A", | ||||
|           "nameLocation": "9:1:1", | ||||
|           "nodeType": "EnumValue", | ||||
|           "src": "9:1:1" | ||||
|         } | ||||
|       ], | ||||
|       "name": "E", | ||||
|       "nameLocation": "5:1:1", | ||||
|       "nodeType": "EnumDefinition", | ||||
|       "src": "0:12:1" | ||||
|     } | ||||
|  | ||||
| @ -21,6 +21,7 @@ | ||||
|           "id": 2, | ||||
|           "mutability": "mutable", | ||||
|           "name": "a", | ||||
|           "nameLocation": "19:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "scope": 3, | ||||
|           "src": "11:9:1", | ||||
| @ -47,6 +48,7 @@ | ||||
|         } | ||||
|       ], | ||||
|       "name": "S", | ||||
|       "nameLocation": "7:1:1", | ||||
|       "nodeType": "StructDefinition", | ||||
|       "scope": 4, | ||||
|       "src": "0:23:1", | ||||
|  | ||||
| @ -13,6 +13,7 @@ | ||||
|           "id": 2, | ||||
|           "mutability": "mutable", | ||||
|           "name": "a", | ||||
|           "nameLocation": "19:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "src": "11:9:1", | ||||
|           "stateVariable": false, | ||||
| @ -30,6 +31,7 @@ | ||||
|         } | ||||
|       ], | ||||
|       "name": "S", | ||||
|       "nameLocation": "7:1:1", | ||||
|       "nodeType": "StructDefinition", | ||||
|       "src": "0:23:1", | ||||
|       "visibility": "public" | ||||
|  | ||||
| @ -27,6 +27,7 @@ | ||||
|         1 | ||||
|       ], | ||||
|       "name": "C1", | ||||
|       "nameLocation": "9:2:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "scope": 5, | ||||
| @ -63,6 +64,7 @@ | ||||
|         1 | ||||
|       ], | ||||
|       "name": "C2", | ||||
|       "nameLocation": "24:2:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "scope": 5, | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 1, | ||||
|       "name": "C1", | ||||
|       "nameLocation": "9:2:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "src": "0:14:1" | ||||
| @ -36,6 +37,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 4, | ||||
|       "name": "C2", | ||||
|       "nameLocation": "24:2:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "src": "15:20:1" | ||||
|  | ||||
| @ -24,6 +24,7 @@ | ||||
|         1 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "45:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "scope": 2, | ||||
|  | ||||
| @ -12,6 +12,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 1, | ||||
|       "name": "C", | ||||
|       "nameLocation": "45:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "src": "36:13:1" | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         11 | ||||
|       ], | ||||
|       "name": "c", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -46,6 +47,7 @@ | ||||
|                     "id": 4, | ||||
|                     "mutability": "mutable", | ||||
|                     "name": "a", | ||||
|                     "nameLocation": "40:1:1", | ||||
|                     "nodeType": "VariableDeclaration", | ||||
|                     "scope": 9, | ||||
|                     "src": "35:6:1", | ||||
| @ -140,6 +142,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "22:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 11, | ||||
|       "name": "c", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -34,6 +35,7 @@ | ||||
|                     "id": 4, | ||||
|                     "mutability": "mutable", | ||||
|                     "name": "a", | ||||
|                     "nameLocation": "40:1:1", | ||||
|                     "nodeType": "VariableDeclaration", | ||||
|                     "src": "35:6:1", | ||||
|                     "stateVariable": false, | ||||
| @ -90,6 +92,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "22:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         15 | ||||
|       ], | ||||
|       "name": "c", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -31,6 +32,7 @@ | ||||
|           "id": 3, | ||||
|           "mutability": "mutable", | ||||
|           "name": "a", | ||||
|           "nameLocation": "20:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "scope": 15, | ||||
|           "src": "13:8:1", | ||||
| @ -86,6 +88,7 @@ | ||||
|                     "id": 10, | ||||
|                     "mutability": "mutable", | ||||
|                     "name": "b", | ||||
|                     "nameLocation": "60:1:1", | ||||
|                     "nodeType": "VariableDeclaration", | ||||
|                     "scope": 13, | ||||
|                     "src": "45:16:1", | ||||
| @ -148,6 +151,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "32:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 15, | ||||
|       "name": "c", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -19,6 +20,7 @@ | ||||
|           "id": 3, | ||||
|           "mutability": "mutable", | ||||
|           "name": "a", | ||||
|           "nameLocation": "20:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "src": "13:8:1", | ||||
|           "stateVariable": false, | ||||
| @ -61,6 +63,7 @@ | ||||
|                     "id": 10, | ||||
|                     "mutability": "mutable", | ||||
|                     "name": "b", | ||||
|                     "nameLocation": "60:1:1", | ||||
|                     "nodeType": "VariableDeclaration", | ||||
|                     "src": "45:16:1", | ||||
|                     "stateVariable": false, | ||||
| @ -104,6 +107,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "32:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         19 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -34,23 +35,27 @@ | ||||
|             { | ||||
|               "id": 1, | ||||
|               "name": "A", | ||||
|               "nameLocation": "26:1:1", | ||||
|               "nodeType": "EnumValue", | ||||
|               "src": "26:1:1" | ||||
|             }, | ||||
|             { | ||||
|               "id": 2, | ||||
|               "name": "B", | ||||
|               "nameLocation": "29:1:1", | ||||
|               "nodeType": "EnumValue", | ||||
|               "src": "29:1:1" | ||||
|             }, | ||||
|             { | ||||
|               "id": 3, | ||||
|               "name": "C", | ||||
|               "nameLocation": "32:1:1", | ||||
|               "nodeType": "EnumValue", | ||||
|               "src": "32:1:1" | ||||
|             } | ||||
|           ], | ||||
|           "name": "E", | ||||
|           "nameLocation": "22:1:1", | ||||
|           "nodeType": "EnumDefinition", | ||||
|           "src": "17:18:1" | ||||
|         }, | ||||
| @ -59,6 +64,7 @@ | ||||
|           "id": 9, | ||||
|           "mutability": "mutable", | ||||
|           "name": "a", | ||||
|           "nameLocation": "59:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "scope": 19, | ||||
|           "src": "40:20:1", | ||||
| @ -119,6 +125,7 @@ | ||||
|           "id": 13, | ||||
|           "mutability": "mutable", | ||||
|           "name": "b", | ||||
|           "nameLocation": "91:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "scope": 19, | ||||
|           "src": "66:26:1", | ||||
| @ -171,6 +178,7 @@ | ||||
|           "id": 18, | ||||
|           "mutability": "mutable", | ||||
|           "name": "c", | ||||
|           "nameLocation": "117:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "scope": 19, | ||||
|           "src": "98:20:1", | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 19, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -21,23 +22,27 @@ | ||||
|             { | ||||
|               "id": 1, | ||||
|               "name": "A", | ||||
|               "nameLocation": "26:1:1", | ||||
|               "nodeType": "EnumValue", | ||||
|               "src": "26:1:1" | ||||
|             }, | ||||
|             { | ||||
|               "id": 2, | ||||
|               "name": "B", | ||||
|               "nameLocation": "29:1:1", | ||||
|               "nodeType": "EnumValue", | ||||
|               "src": "29:1:1" | ||||
|             }, | ||||
|             { | ||||
|               "id": 3, | ||||
|               "name": "C", | ||||
|               "nameLocation": "32:1:1", | ||||
|               "nodeType": "EnumValue", | ||||
|               "src": "32:1:1" | ||||
|             } | ||||
|           ], | ||||
|           "name": "E", | ||||
|           "nameLocation": "22:1:1", | ||||
|           "nodeType": "EnumDefinition", | ||||
|           "src": "17:18:1" | ||||
|         }, | ||||
| @ -46,6 +51,7 @@ | ||||
|           "id": 9, | ||||
|           "mutability": "mutable", | ||||
|           "name": "a", | ||||
|           "nameLocation": "59:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "src": "40:20:1", | ||||
|           "stateVariable": false, | ||||
| @ -87,6 +93,7 @@ | ||||
|           "id": 13, | ||||
|           "mutability": "mutable", | ||||
|           "name": "b", | ||||
|           "nameLocation": "91:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "src": "66:26:1", | ||||
|           "stateVariable": false, | ||||
| @ -122,6 +129,7 @@ | ||||
|           "id": 18, | ||||
|           "mutability": "mutable", | ||||
|           "name": "c", | ||||
|           "nameLocation": "117:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "src": "98:20:1", | ||||
|           "stateVariable": false, | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         14 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -43,6 +44,7 @@ | ||||
|           }, | ||||
|           "id": 6, | ||||
|           "name": "M", | ||||
|           "nameLocation": "22:1:1", | ||||
|           "nodeType": "ModifierDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -55,6 +57,7 @@ | ||||
|                 "id": 2, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "i", | ||||
|                 "nameLocation": "29:1:1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "scope": 6, | ||||
|                 "src": "24:6:1", | ||||
| @ -135,6 +138,7 @@ | ||||
|             } | ||||
|           ], | ||||
|           "name": "F", | ||||
|           "nameLocation": "48:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 14, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -31,6 +32,7 @@ | ||||
|           }, | ||||
|           "id": 6, | ||||
|           "name": "M", | ||||
|           "nameLocation": "22:1:1", | ||||
|           "nodeType": "ModifierDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -43,6 +45,7 @@ | ||||
|                 "id": 2, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "i", | ||||
|                 "nameLocation": "29:1:1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "src": "24:6:1", | ||||
|                 "stateVariable": false, | ||||
| @ -104,6 +107,7 @@ | ||||
|             } | ||||
|           ], | ||||
|           "name": "F", | ||||
|           "nameLocation": "48:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         14 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -43,6 +44,7 @@ | ||||
|           }, | ||||
|           "id": 6, | ||||
|           "name": "M", | ||||
|           "nameLocation": "22:1:1", | ||||
|           "nodeType": "ModifierDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -55,6 +57,7 @@ | ||||
|                 "id": 2, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "i", | ||||
|                 "nameLocation": "29:1:1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "scope": 6, | ||||
|                 "src": "24:6:1", | ||||
| @ -135,6 +138,7 @@ | ||||
|             } | ||||
|           ], | ||||
|           "name": "F", | ||||
|           "nameLocation": "48:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 14, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -31,6 +32,7 @@ | ||||
|           }, | ||||
|           "id": 6, | ||||
|           "name": "M", | ||||
|           "nameLocation": "22:1:1", | ||||
|           "nodeType": "ModifierDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -43,6 +45,7 @@ | ||||
|                 "id": 2, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "i", | ||||
|                 "nameLocation": "29:1:1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "src": "24:6:1", | ||||
|                 "stateVariable": false, | ||||
| @ -104,6 +107,7 @@ | ||||
|             } | ||||
|           ], | ||||
|           "name": "F", | ||||
|           "nameLocation": "48:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         10 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -32,6 +33,7 @@ | ||||
|           "id": 3, | ||||
|           "mutability": "immutable", | ||||
|           "name": "a", | ||||
|           "nameLocation": "39:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "scope": 10, | ||||
|           "src": "17:27:1", | ||||
| @ -80,6 +82,7 @@ | ||||
|           "id": 6, | ||||
|           "mutability": "constant", | ||||
|           "name": "b", | ||||
|           "nameLocation": "71:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "scope": 10, | ||||
|           "src": "50:26:1", | ||||
| @ -128,6 +131,7 @@ | ||||
|           "id": 9, | ||||
|           "mutability": "mutable", | ||||
|           "name": "c", | ||||
|           "nameLocation": "94:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "scope": 10, | ||||
|           "src": "82:17:1", | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 10, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -19,6 +20,7 @@ | ||||
|           "id": 3, | ||||
|           "mutability": "immutable", | ||||
|           "name": "a", | ||||
|           "nameLocation": "39:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "src": "17:27:1", | ||||
|           "stateVariable": false, | ||||
| @ -49,6 +51,7 @@ | ||||
|           "id": 6, | ||||
|           "mutability": "constant", | ||||
|           "name": "b", | ||||
|           "nameLocation": "71:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "src": "50:26:1", | ||||
|           "stateVariable": false, | ||||
| @ -79,6 +82,7 @@ | ||||
|           "id": 9, | ||||
|           "mutability": "mutable", | ||||
|           "name": "c", | ||||
|           "nameLocation": "94:1:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "src": "82:17:1", | ||||
|           "stateVariable": false, | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         9 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -46,6 +47,7 @@ | ||||
|                     "id": 4, | ||||
|                     "mutability": "mutable", | ||||
|                     "name": "x", | ||||
|                     "nameLocation": "49:1:1", | ||||
|                     "nodeType": "VariableDeclaration", | ||||
|                     "scope": 7, | ||||
|                     "src": "35:15:1", | ||||
| @ -100,6 +102,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "22:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 9, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -34,6 +35,7 @@ | ||||
|                     "id": 4, | ||||
|                     "mutability": "mutable", | ||||
|                     "name": "x", | ||||
|                     "nameLocation": "49:1:1", | ||||
|                     "nodeType": "VariableDeclaration", | ||||
|                     "src": "35:15:1", | ||||
|                     "stateVariable": false, | ||||
| @ -70,6 +72,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "22:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -7,6 +7,7 @@ | ||||
|     { | ||||
|       "file": "notexisting.sol", | ||||
|       "id": 1, | ||||
|       "nameLocation": "28:11:1", | ||||
|       "nodeType": "ImportDirective", | ||||
|       "src": "0:40:1", | ||||
|       "symbolAliases": [], | ||||
| @ -33,6 +34,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 11, | ||||
|       "name": "C", | ||||
|       "nameLocation": "50:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -41,6 +43,7 @@ | ||||
|           "id": 6, | ||||
|           "mutability": "mutable", | ||||
|           "name": "myStruct", | ||||
|           "nameLocation": "102:8:1", | ||||
|           "nodeType": "VariableDeclaration", | ||||
|           "src": "72:38:1", | ||||
|           "stateVariable": false, | ||||
| @ -75,6 +78,7 @@ | ||||
|           "kind": "constructor", | ||||
|           "modifiers": [], | ||||
|           "name": "", | ||||
|           "nameLocation": "-1:-1:-1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -31,6 +31,7 @@ | ||||
|         5 | ||||
|       ], | ||||
|       "name": "A", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -48,6 +49,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "faa", | ||||
|           "nameLocation": "23:3:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -104,6 +106,7 @@ | ||||
|         5 | ||||
|       ], | ||||
|       "name": "B", | ||||
|       "nameLocation": "50:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -114,6 +117,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "foo", | ||||
|           "nameLocation": "69:3:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -153,6 +157,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "faa", | ||||
|           "nameLocation": "93:3:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "overrides": | ||||
|           { | ||||
| @ -218,6 +223,7 @@ | ||||
|         5 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "129:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -239,6 +245,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "foo", | ||||
|           "nameLocation": "148:3:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "overrides": | ||||
|           { | ||||
| @ -285,6 +292,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "faa", | ||||
|           "nameLocation": "184:3:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "overrides": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 5, | ||||
|       "name": "A", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -27,6 +28,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "faa", | ||||
|           "nameLocation": "23:3:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -71,6 +73,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 16, | ||||
|       "name": "B", | ||||
|       "nameLocation": "50:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -80,6 +83,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "foo", | ||||
|           "nameLocation": "69:3:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
| @ -113,6 +117,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "faa", | ||||
|           "nameLocation": "93:3:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "overrides": | ||||
|           { | ||||
| @ -164,6 +169,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 31, | ||||
|       "name": "C", | ||||
|       "nameLocation": "129:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -180,6 +186,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "foo", | ||||
|           "nameLocation": "148:3:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "overrides": | ||||
|           { | ||||
| @ -220,6 +227,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "faa", | ||||
|           "nameLocation": "184:3:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "overrides": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         5 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -43,6 +44,7 @@ | ||||
|           }, | ||||
|           "id": 4, | ||||
|           "name": "M", | ||||
|           "nameLocation": "22:1:1", | ||||
|           "nodeType": "ModifierDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 5, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -31,6 +32,7 @@ | ||||
|           }, | ||||
|           "id": 4, | ||||
|           "name": "M", | ||||
|           "nameLocation": "22:1:1", | ||||
|           "nodeType": "ModifierDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         5 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -39,6 +40,7 @@ | ||||
|           "kind": "receive", | ||||
|           "modifiers": [], | ||||
|           "name": "", | ||||
|           "nameLocation": "-1:-1:-1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 5, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -27,6 +28,7 @@ | ||||
|           "kind": "receive", | ||||
|           "modifiers": [], | ||||
|           "name": "", | ||||
|           "nameLocation": "-1:-1:-1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         11 | ||||
|       ], | ||||
|       "name": "c", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -46,6 +47,7 @@ | ||||
|                     "id": 7, | ||||
|                     "mutability": "mutable", | ||||
|                     "name": "x", | ||||
|                     "nameLocation": "49:1:1", | ||||
|                     "nodeType": "VariableDeclaration", | ||||
|                     "scope": 9, | ||||
|                     "src": "35:15:1", | ||||
| @ -94,6 +96,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "22:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 11, | ||||
|       "name": "c", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -34,6 +35,7 @@ | ||||
|                     "id": 7, | ||||
|                     "mutability": "mutable", | ||||
|                     "name": "x", | ||||
|                     "nameLocation": "49:1:1", | ||||
|                     "nodeType": "VariableDeclaration", | ||||
|                     "src": "35:15:1", | ||||
|                     "stateVariable": false, | ||||
| @ -68,6 +70,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "22:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         12 | ||||
|       ], | ||||
|       "name": "c", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -46,6 +47,7 @@ | ||||
|                     "id": 8, | ||||
|                     "mutability": "mutable", | ||||
|                     "name": "rows", | ||||
|                     "nameLocation": "51:4:1", | ||||
|                     "nodeType": "VariableDeclaration", | ||||
|                     "scope": 10, | ||||
|                     "src": "35:20:1", | ||||
| @ -105,6 +107,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "22:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 12, | ||||
|       "name": "c", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
| @ -34,6 +35,7 @@ | ||||
|                     "id": 8, | ||||
|                     "mutability": "mutable", | ||||
|                     "name": "rows", | ||||
|                     "nameLocation": "51:4:1", | ||||
|                     "nodeType": "VariableDeclaration", | ||||
|                     "src": "35:20:1", | ||||
|                     "stateVariable": false, | ||||
| @ -75,6 +77,7 @@ | ||||
|           "kind": "function", | ||||
|           "modifiers": [], | ||||
|           "name": "f", | ||||
|           "nameLocation": "22:1:1", | ||||
|           "nodeType": "FunctionDefinition", | ||||
|           "parameters": | ||||
|           { | ||||
|  | ||||
| @ -23,6 +23,7 @@ | ||||
|         1 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "scope": 2, | ||||
|  | ||||
| @ -11,6 +11,7 @@ | ||||
|       "contractKind": "contract", | ||||
|       "id": 1, | ||||
|       "name": "C", | ||||
|       "nameLocation": "9:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": [], | ||||
|       "src": "0:13:1" | ||||
|  | ||||
Some files were not shown because too many files have changed in this diff Show More
		Loading…
	
		Reference in New Issue
	
	Block a user