Merge bitcoin/bitcoin#27611: refactor: Use ChainType enum exhaustively

e23088707b refactor: Use ChainType enum exhaustively (TheCharlatan)

Pull request description:

  This is a follow up of https://github.com/bitcoin/bitcoin/pull/27491, more concretely https://github.com/bitcoin/bitcoin/pull/27491#discussion_r1188847896, for not using default cases (as per the style guide), and https://github.com/bitcoin/bitcoin/pull/27491#discussion_r1188852707 and https://github.com/bitcoin/bitcoin/pull/27491#discussion_r1188851857 for avoiding dead code.

ACKs for top commit:
  fanquake:
    ACK e23088707b - deals with almost all follow up comments out of #27491.

Tree-SHA512: 1794190b03b91d3ca349a4da08e9610dbb3432983eee7cb21ecc758d1d7d710560c97661de14cdf493c28c00ebe8977511b4696055c0940e7f815b622dbacd16
This commit is contained in:
fanquake 2023-05-10 11:57:45 +01:00
commit 104eed1166
No known key found for this signature in database
GPG key ID: 2EEB9F5CC09526C1
7 changed files with 9 additions and 13 deletions

View file

@ -434,9 +434,10 @@ private:
return " signet"; return " signet";
case ChainType::REGTEST: case ChainType::REGTEST:
return " regtest"; return " regtest";
default: case ChainType::MAIN:
return ""; return "";
} }
assert(false);
} }
std::string PingTimeToString(double seconds) const std::string PingTimeToString(double seconds) const
{ {

View file

@ -117,7 +117,7 @@ std::unique_ptr<const CChainParams> CreateChainParams(const ArgsManager& args, c
return CChainParams::RegTest(opts); return CChainParams::RegTest(opts);
} }
} }
throw std::invalid_argument(strprintf("%s: Invalid ChainType value", __func__)); assert(false);
} }
void SelectParams(const ChainType chain) void SelectParams(const ChainType chain)

View file

@ -25,8 +25,6 @@ class ArgsManager;
/** /**
* Creates and returns a std::unique_ptr<CChainParams> of the chosen chain. * Creates and returns a std::unique_ptr<CChainParams> of the chosen chain.
* @returns a CChainParams* of the chosen chain.
* @throws a std::runtime_error if the chain is not supported.
*/ */
std::unique_ptr<const CChainParams> CreateChainParams(const ArgsManager& args, const ChainType chain); std::unique_ptr<const CChainParams> CreateChainParams(const ArgsManager& args, const ChainType chain);
@ -37,8 +35,7 @@ std::unique_ptr<const CChainParams> CreateChainParams(const ArgsManager& args, c
const CChainParams &Params(); const CChainParams &Params();
/** /**
* Sets the params returned by Params() to those for the given chain name. * Sets the params returned by Params() to those for the given chain type.
* @throws std::runtime_error when the chain is not supported.
*/ */
void SelectParams(const ChainType chain); void SelectParams(const ChainType chain);

View file

@ -48,7 +48,7 @@ std::unique_ptr<CBaseChainParams> CreateBaseChainParams(const ChainType chain)
case ChainType::REGTEST: case ChainType::REGTEST:
return std::make_unique<CBaseChainParams>("regtest", 18443, 18445); return std::make_unique<CBaseChainParams>("regtest", 18443, 18445);
} }
throw std::invalid_argument(strprintf("%s: Invalid ChainType value", __func__)); assert(false);
} }
void SelectBaseParams(const ChainType chain) void SelectBaseParams(const ChainType chain)

View file

@ -35,8 +35,6 @@ private:
/** /**
* Creates and returns a std::unique_ptr<CBaseChainParams> of the chosen chain. * Creates and returns a std::unique_ptr<CBaseChainParams> of the chosen chain.
* @returns a CBaseChainParams* of the chosen chain.
* @throws a std::runtime_error if the chain is not supported.
*/ */
std::unique_ptr<CBaseChainParams> CreateBaseChainParams(const ChainType chain); std::unique_ptr<CBaseChainParams> CreateBaseChainParams(const ChainType chain);

View file

@ -325,14 +325,14 @@ protected:
void ForceSetArg(const std::string& strArg, const std::string& strValue); void ForceSetArg(const std::string& strArg, const std::string& strValue);
/** /**
* Returns the appropriate chain name from the program arguments. * Returns the appropriate chain type from the program arguments.
* @return ChainType::MAIN by default; raises runtime error if an invalid * @return ChainType::MAIN by default; raises runtime error if an invalid
* combination, or unknown chain is given. * combination, or unknown chain is given.
*/ */
ChainType GetChainType() const; ChainType GetChainType() const;
/** /**
* Returns the appropriate chain name string from the program arguments. * Returns the appropriate chain type string from the program arguments.
* @return ChainType::MAIN string by default; raises runtime error if an * @return ChainType::MAIN string by default; raises runtime error if an
* invalid combination is given. * invalid combination is given.
*/ */
@ -423,7 +423,7 @@ private:
/** /**
* Return -regtest/-signet/-testnet/-chain= setting as a ChainType enum if a * Return -regtest/-signet/-testnet/-chain= setting as a ChainType enum if a
* recognized chain name was set, or as a string if an unrecognized chain * recognized chain type was set, or as a string if an unrecognized chain
* name was set. Raise an exception if an invalid combination of flags was * name was set. Raise an exception if an invalid combination of flags was
* provided. * provided.
*/ */

View file

@ -255,7 +255,7 @@ BOOST_AUTO_TEST_CASE(util_ParseInvalidParameters)
BOOST_CHECK(!test.ParseParameters(2, (char**)argv, error)); BOOST_CHECK(!test.ParseParameters(2, (char**)argv, error));
BOOST_CHECK_EQUAL(error, "Invalid parameter -unregistered"); BOOST_CHECK_EQUAL(error, "Invalid parameter -unregistered");
// Make sure registered parameters prefixed with a chain name trigger errors. // Make sure registered parameters prefixed with a chain type trigger errors.
// (Previously, they were accepted and ignored.) // (Previously, they were accepted and ignored.)
argv[1] = "-test.registered"; argv[1] = "-test.registered";
BOOST_CHECK(!test.ParseParameters(2, (char**)argv, error)); BOOST_CHECK(!test.ParseParameters(2, (char**)argv, error));