diff --git a/test/tools/ossfuzz/Generators.h b/test/tools/ossfuzz/Generators.h index 4a5aae999..095195f3c 100644 --- a/test/tools/ossfuzz/Generators.h +++ b/test/tools/ossfuzz/Generators.h @@ -41,6 +41,7 @@ * */ #define GENERATORLIST(MACRO, SEP, ENDSEP) \ + MACRO(ContractGenerator) SEP \ MACRO(ImportGenerator) SEP \ MACRO(PragmaGenerator) SEP \ MACRO(SourceUnitGenerator) SEP \ diff --git a/test/tools/ossfuzz/SolidityGenerator.cpp b/test/tools/ossfuzz/SolidityGenerator.cpp index dd79f78d8..40bc8fbb9 100644 --- a/test/tools/ossfuzz/SolidityGenerator.cpp +++ b/test/tools/ossfuzz/SolidityGenerator.cpp @@ -134,7 +134,8 @@ void SourceUnitGenerator::setup() { addGenerators({ {mutator->generator(), s_maxImports}, - {mutator->generator(), 1} + {mutator->generator(), 1}, + {mutator->generator(), 1} }); } @@ -184,6 +185,11 @@ string ImportGenerator::visit() return os.str(); } +string ContractGenerator::visit() +{ + return "contract C {}\n"; +} + template shared_ptr SolidityGenerator::generator() { diff --git a/test/tools/ossfuzz/SolidityGenerator.h b/test/tools/ossfuzz/SolidityGenerator.h index 8cff2d33c..9b727ea2d 100644 --- a/test/tools/ossfuzz/SolidityGenerator.h +++ b/test/tools/ossfuzz/SolidityGenerator.h @@ -335,6 +335,16 @@ public: std::string name() override { return "Import generator"; } }; +class ContractGenerator: public GeneratorBase +{ +public: + explicit ContractGenerator(std::shared_ptr _mutator): + GeneratorBase(std::move(_mutator)) + {} + std::string visit() override; + std::string name() override { return "Contract generator"; } +}; + class SolidityGenerator: public std::enable_shared_from_this { public: