@@ -42,7 +42,9 @@ struct DebugInfoSelection
4242 static DebugInfoSelection const All (bool _value = true ) noexcept ;
4343 static DebugInfoSelection const None () noexcept { return All (false ); }
4444 static DebugInfoSelection const Only (bool DebugInfoSelection::* _member) noexcept ;
45- static DebugInfoSelection const Default () noexcept { return All (); }
45+ static DebugInfoSelection const Default () noexcept { return AllExceptExperimental (); }
46+ static DebugInfoSelection const AllExcept (std::vector<bool DebugInfoSelection::*> const & _members) noexcept ;
47+ static DebugInfoSelection const AllExceptExperimental () noexcept { return AllExcept ({&DebugInfoSelection::ethdebug}); }
4648
4749 static std::optional<DebugInfoSelection> fromString (std::string_view _input);
4850 static std::optional<DebugInfoSelection> fromComponents (
@@ -72,13 +74,24 @@ struct DebugInfoSelection
7274 {" location" , &DebugInfoSelection::location},
7375 {" snippet" , &DebugInfoSelection::snippet},
7476 {" ast-id" , &DebugInfoSelection::astID},
77+ {" ethdebug" , &DebugInfoSelection::ethdebug},
7578 };
7679 return components;
7780 }
7881
82+ std::vector<std::string> selectedNames () const
83+ {
84+ std::vector<std::string> result;
85+ for (auto const & component: componentMap ())
86+ if (this ->*(component.second ))
87+ result.push_back (component.first );
88+ return result;
89+ }
90+
7991 bool location = false ; // /< Include source location. E.g. `@src 3:50:100`
8092 bool snippet = false ; // /< Include source code snippet next to location. E.g. `@src 3:50:100 "contract C {..."`
8193 bool astID = false ; // /< Include ID of the Solidity AST node. E.g. `@ast-id 15`
94+ bool ethdebug = false ; // /< Include ethdebug related debug information.
8295};
8396
8497std::ostream& operator <<(std::ostream& _stream, DebugInfoSelection const & _selection);
0 commit comments