mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Implement multi source semantic tests
Co-authored-by: chriseth <chris@ethereum.org> Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
This commit is contained in:
co-authored by
chriseth
Kamil Śliwak
parent
1213300594
commit
0397266351
+16
-6
@@ -23,6 +23,16 @@
|
||||
|
||||
namespace solidity::frontend::test
|
||||
{
|
||||
|
||||
/**
|
||||
* A map for registering source names that also contains the main source name in a test case.
|
||||
*/
|
||||
struct SourceMap
|
||||
{
|
||||
std::map<std::string, std::string> sources;
|
||||
std::string mainSourceFile;
|
||||
};
|
||||
|
||||
/**
|
||||
* A reader for test case data file, which parses source, settings and (optionally) simple expectations.
|
||||
*/
|
||||
@@ -32,10 +42,10 @@ public:
|
||||
TestCaseReader() = default;
|
||||
explicit TestCaseReader(std::string const& _filename);
|
||||
|
||||
std::map<std::string, std::string> const& sources() { return m_sources; }
|
||||
std::string const& source();
|
||||
std::size_t lineNumber() { return m_lineNumber; }
|
||||
std::map<std::string, std::string> const& settings() { return m_settings; }
|
||||
SourceMap const& sources() const { return m_sources; }
|
||||
std::string const& source() const;
|
||||
std::size_t lineNumber() const { return m_lineNumber; }
|
||||
std::map<std::string, std::string> const& settings() const { return m_settings; }
|
||||
std::ifstream& stream() { return m_file; }
|
||||
|
||||
std::string simpleExpectations();
|
||||
@@ -47,11 +57,11 @@ public:
|
||||
void ensureAllSettingsRead() const;
|
||||
|
||||
private:
|
||||
std::pair<std::map<std::string, std::string>, std::size_t> parseSourcesAndSettingsWithLineNumber(std::istream& _file);
|
||||
std::pair<SourceMap, std::size_t> parseSourcesAndSettingsWithLineNumber(std::istream& _file);
|
||||
static std::string parseSimpleExpectations(std::istream& _file);
|
||||
|
||||
std::ifstream m_file;
|
||||
std::map<std::string, std::string> m_sources;
|
||||
SourceMap m_sources;
|
||||
std::size_t m_lineNumber = 0;
|
||||
std::map<std::string, std::string> m_settings;
|
||||
std::map<std::string, std::string> m_unreadSettings; ///< tracks which settings are left unread
|
||||
|
||||
Reference in New Issue
Block a user