570 lines · cpp
1//===-- flang/unittests/Common/FastIntSetTest.cpp ---------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "gtest/gtest.h"10#include "flang/Support/Fortran-features.h"11 12namespace Fortran::common::details {13 14std::string CamelCaseToLowerCaseHyphenated(std::string_view x);15 16TEST(FortranFeaturesTest, CamelCaseToLowerCaseHyphenated) {17 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(18 EnumToString(LanguageFeature::BackslashEscapes)),19 "backslash-escapes");20 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(21 EnumToString(LanguageFeature::OldDebugLines)),22 "old-debug-lines");23 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(24 LanguageFeature::FixedFormContinuationWithColumn1Ampersand)),25 "fixed-form-continuation-with-column1-ampersand");26 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(27 EnumToString(LanguageFeature::LogicalAbbreviations)),28 "logical-abbreviations");29 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(30 EnumToString(LanguageFeature::XOROperator)),31 "xor-operator");32 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(33 EnumToString(LanguageFeature::PunctuationInNames)),34 "punctuation-in-names");35 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(36 EnumToString(LanguageFeature::OptionalFreeFormSpace)),37 "optional-free-form-space");38 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(39 EnumToString(LanguageFeature::BOZExtensions)),40 "boz-extensions");41 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(42 EnumToString(LanguageFeature::EmptyStatement)),43 "empty-statement");44 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(45 EnumToString(LanguageFeature::AlternativeNE)),46 "alternative-ne");47 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(48 EnumToString(LanguageFeature::ExecutionPartNamelist)),49 "execution-part-namelist");50 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(51 EnumToString(LanguageFeature::DECStructures)),52 "dec-structures");53 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(54 EnumToString(LanguageFeature::DoubleComplex)),55 "double-complex");56 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::Byte)),57 "byte");58 EXPECT_EQ(59 CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::StarKind)),60 "star-kind");61 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(62 EnumToString(LanguageFeature::ExponentMatchingKindParam)),63 "exponent-matching-kind-param");64 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(65 EnumToString(LanguageFeature::QuadPrecision)),66 "quad-precision");67 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(68 EnumToString(LanguageFeature::SlashInitialization)),69 "slash-initialization");70 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(71 EnumToString(LanguageFeature::TripletInArrayConstructor)),72 "triplet-in-array-constructor");73 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(74 EnumToString(LanguageFeature::MissingColons)),75 "missing-colons");76 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(77 EnumToString(LanguageFeature::SignedComplexLiteral)),78 "signed-complex-literal");79 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(80 EnumToString(LanguageFeature::OldStyleParameter)),81 "old-style-parameter");82 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(83 EnumToString(LanguageFeature::ComplexConstructor)),84 "complex-constructor");85 EXPECT_EQ(86 CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::PercentLOC)),87 "percent-loc");88 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(89 EnumToString(LanguageFeature::SignedMultOperand)),90 "signed-mult-operand");91 EXPECT_EQ(92 CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::FileName)),93 "file-name");94 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(95 EnumToString(LanguageFeature::Carriagecontrol)),96 "carriagecontrol");97 EXPECT_EQ(98 CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::Convert)),99 "convert");100 EXPECT_EQ(101 CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::Dispose)),102 "dispose");103 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(104 EnumToString(LanguageFeature::IOListLeadingComma)),105 "io-list-leading-comma");106 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(107 EnumToString(LanguageFeature::AbbreviatedEditDescriptor)),108 "abbreviated-edit-descriptor");109 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(110 EnumToString(LanguageFeature::ProgramParentheses)),111 "program-parentheses");112 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(113 EnumToString(LanguageFeature::PercentRefAndVal)),114 "percent-ref-and-val");115 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(116 EnumToString(LanguageFeature::OmitFunctionDummies)),117 "omit-function-dummies");118 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(119 EnumToString(LanguageFeature::CrayPointer)),120 "cray-pointer");121 EXPECT_EQ(122 CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::Hollerith)),123 "hollerith");124 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(125 EnumToString(LanguageFeature::ArithmeticIF)),126 "arithmetic-if");127 EXPECT_EQ(128 CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::Assign)),129 "assign");130 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(131 EnumToString(LanguageFeature::AssignedGOTO)),132 "assigned-goto");133 EXPECT_EQ(134 CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::Pause)),135 "pause");136 EXPECT_EQ(137 CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::OpenACC)),138 "open-acc");139 EXPECT_EQ(140 CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::OpenMP)),141 "open-mp");142 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::CUDA)),143 "cuda");144 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(145 EnumToString(LanguageFeature::CruftAfterAmpersand)),146 "cruft-after-ampersand");147 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(148 EnumToString(LanguageFeature::ClassicCComments)),149 "classic-c-comments");150 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(151 EnumToString(LanguageFeature::AdditionalFormats)),152 "additional-formats");153 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(154 EnumToString(LanguageFeature::BigIntLiterals)),155 "big-int-literals");156 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(157 EnumToString(LanguageFeature::RealDoControls)),158 "real-do-controls");159 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(160 EnumToString(LanguageFeature::EquivalenceNumericWithCharacter)),161 "equivalence-numeric-with-character");162 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(163 EnumToString(LanguageFeature::EquivalenceNonDefaultNumeric)),164 "equivalence-non-default-numeric");165 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(166 EnumToString(LanguageFeature::EquivalenceSameNonSequence)),167 "equivalence-same-non-sequence");168 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(169 EnumToString(LanguageFeature::AdditionalIntrinsics)),170 "additional-intrinsics");171 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(172 EnumToString(LanguageFeature::AnonymousParents)),173 "anonymous-parents");174 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(175 EnumToString(LanguageFeature::OldLabelDoEndStatements)),176 "old-label-do-end-statements");177 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(178 EnumToString(LanguageFeature::LogicalIntegerAssignment)),179 "logical-integer-assignment");180 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(181 EnumToString(LanguageFeature::EmptySourceFile)),182 "empty-source-file");183 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(184 EnumToString(LanguageFeature::ProgramReturn)),185 "program-return");186 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(187 EnumToString(LanguageFeature::ImplicitNoneTypeNever)),188 "implicit-none-type-never");189 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(190 EnumToString(LanguageFeature::ImplicitNoneTypeAlways)),191 "implicit-none-type-always");192 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(193 EnumToString(LanguageFeature::ImplicitNoneExternal)),194 "implicit-none-external");195 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(196 EnumToString(LanguageFeature::ForwardRefImplicitNone)),197 "forward-ref-implicit-none");198 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(199 EnumToString(LanguageFeature::OpenAccessAppend)),200 "open-access-append");201 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(202 EnumToString(LanguageFeature::BOZAsDefaultInteger)),203 "boz-as-default-integer");204 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(205 EnumToString(LanguageFeature::DistinguishableSpecifics)),206 "distinguishable-specifics");207 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(208 EnumToString(LanguageFeature::DefaultSave)),209 "default-save");210 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(211 EnumToString(LanguageFeature::PointerInSeqType)),212 "pointer-in-seq-type");213 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(214 EnumToString(LanguageFeature::NonCharacterFormat)),215 "non-character-format");216 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(217 EnumToString(LanguageFeature::SaveMainProgram)),218 "save-main-program");219 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(220 EnumToString(LanguageFeature::SaveBigMainProgramVariables)),221 "save-big-main-program-variables");222 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(223 EnumToString(LanguageFeature::DistinctArrayConstructorLengths)),224 "distinct-array-constructor-lengths");225 EXPECT_EQ(226 CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::PPCVector)),227 "ppc-vector");228 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(229 EnumToString(LanguageFeature::RelaxedIntentInChecking)),230 "relaxed-intent-in-checking");231 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(232 EnumToString(LanguageFeature::ForwardRefImplicitNoneData)),233 "forward-ref-implicit-none-data");234 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(235 EnumToString(LanguageFeature::NullActualForAllocatable)),236 "null-actual-for-allocatable");237 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(238 LanguageFeature::ActualIntegerConvertedToSmallerKind)),239 "actual-integer-converted-to-smaller-kind");240 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(241 EnumToString(LanguageFeature::HollerithOrCharacterAsBOZ)),242 "hollerith-or-character-as-boz");243 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(244 EnumToString(LanguageFeature::BindingAsProcedure)),245 "binding-as-procedure");246 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(247 EnumToString(LanguageFeature::StatementFunctionExtensions)),248 "statement-function-extensions");249 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(250 LanguageFeature::UseGenericIntrinsicWhenSpecificDoesntMatch)),251 "use-generic-intrinsic-when-specific-doesnt-match");252 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(253 EnumToString(LanguageFeature::DataStmtExtensions)),254 "data-stmt-extensions");255 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(256 EnumToString(LanguageFeature::RedundantContiguous)),257 "redundant-contiguous");258 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(259 EnumToString(LanguageFeature::RedundantAttribute)),260 "redundant-attribute");261 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(262 EnumToString(LanguageFeature::InitBlankCommon)),263 "init-blank-common");264 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(265 EnumToString(LanguageFeature::EmptyBindCDerivedType)),266 "empty-bind-c-derived-type");267 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(268 EnumToString(LanguageFeature::MiscSourceExtensions)),269 "misc-source-extensions");270 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(271 EnumToString(LanguageFeature::AllocateToOtherLength)),272 "allocate-to-other-length");273 EXPECT_EQ(274 CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::LongNames)),275 "long-names");276 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(277 EnumToString(LanguageFeature::IntrinsicAsSpecific)),278 "intrinsic-as-specific");279 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(280 EnumToString(LanguageFeature::BenignNameClash)),281 "benign-name-clash");282 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(283 EnumToString(LanguageFeature::BenignRedundancy)),284 "benign-redundancy");285 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(286 LanguageFeature::NullMoldAllocatableComponentValue)),287 "null-mold-allocatable-component-value");288 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(289 EnumToString(LanguageFeature::NopassScalarBase)),290 "nopass-scalar-base");291 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(292 EnumToString(LanguageFeature::MiscUseExtensions)),293 "misc-use-extensions");294 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(295 EnumToString(LanguageFeature::ImpliedDoIndexScope)),296 "implied-do-index-scope");297 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(298 EnumToString(LanguageFeature::DistinctCommonSizes)),299 "distinct-common-sizes");300 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(301 EnumToString(LanguageFeature::OddIndexVariableRestrictions)),302 "odd-index-variable-restrictions");303 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(304 EnumToString(LanguageFeature::IndistinguishableSpecifics)),305 "indistinguishable-specifics");306 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(307 EnumToString(LanguageFeature::SubroutineAndFunctionSpecifics)),308 "subroutine-and-function-specifics");309 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(310 EnumToString(LanguageFeature::EmptySequenceType)),311 "empty-sequence-type");312 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(313 EnumToString(LanguageFeature::NonSequenceCrayPointee)),314 "non-sequence-cray-pointee");315 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(316 EnumToString(LanguageFeature::BranchIntoConstruct)),317 "branch-into-construct");318 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(319 EnumToString(LanguageFeature::BadBranchTarget)),320 "bad-branch-target");321 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(322 EnumToString(LanguageFeature::HollerithPolymorphic)),323 "hollerith-polymorphic");324 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(325 EnumToString(LanguageFeature::ListDirectedSize)),326 "list-directed-size");327 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(328 EnumToString(LanguageFeature::NonBindCInteroperability)),329 "non-bind-c-interoperability");330 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(331 EnumToString(LanguageFeature::CudaManaged)),332 "cuda-managed");333 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(334 EnumToString(LanguageFeature::CudaUnified)),335 "cuda-unified");336 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::337 PolymorphicActualAllocatableOrPointerToMonomorphicDummy)),338 "polymorphic-actual-allocatable-or-pointer-to-monomorphic-dummy");339 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(340 EnumToString(LanguageFeature::RelaxedPureDummy)),341 "relaxed-pure-dummy");342 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(343 LanguageFeature::UndefinableAsynchronousOrVolatileActual)),344 "undefinable-asynchronous-or-volatile-actual");345 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(346 EnumToString(LanguageFeature::AutomaticInMainProgram)),347 "automatic-in-main-program");348 EXPECT_EQ(349 CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::PrintCptr)),350 "print-cptr");351 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(352 EnumToString(LanguageFeature::SavedLocalInSpecExpr)),353 "saved-local-in-spec-expr");354 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(355 EnumToString(LanguageFeature::PrintNamelist)),356 "print-namelist");357 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(358 LanguageFeature::AssumedRankPassedToNonAssumedRank)),359 "assumed-rank-passed-to-non-assumed-rank");360 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(361 EnumToString(LanguageFeature::IgnoreIrrelevantAttributes)),362 "ignore-irrelevant-attributes");363 EXPECT_EQ(364 CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::Unsigned)),365 "unsigned");366 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(367 EnumToString(LanguageFeature::AmbiguousStructureConstructor)),368 "ambiguous-structure-constructor");369 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(370 EnumToString(LanguageFeature::ContiguousOkForSeqAssociation)),371 "contiguous-ok-for-seq-association");372 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(373 EnumToString(LanguageFeature::ForwardRefExplicitTypeDummy)),374 "forward-ref-explicit-type-dummy");375 EXPECT_EQ(376 CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::Portability)),377 "portability");378 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(379 EnumToString(UsageWarning::PointerToUndefinable)),380 "pointer-to-undefinable");381 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(382 EnumToString(UsageWarning::NonTargetPassedToTarget)),383 "non-target-passed-to-target");384 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(385 EnumToString(UsageWarning::PointerToPossibleNoncontiguous)),386 "pointer-to-possible-noncontiguous");387 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(388 EnumToString(UsageWarning::ShortCharacterActual)),389 "short-character-actual");390 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(391 EnumToString(UsageWarning::ShortArrayActual)),392 "short-array-actual");393 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(394 EnumToString(UsageWarning::ImplicitInterfaceActual)),395 "implicit-interface-actual");396 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(397 EnumToString(UsageWarning::PolymorphicTransferArg)),398 "polymorphic-transfer-arg");399 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(400 EnumToString(UsageWarning::PointerComponentTransferArg)),401 "pointer-component-transfer-arg");402 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(403 EnumToString(UsageWarning::TransferSizePresence)),404 "transfer-size-presence");405 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(406 EnumToString(UsageWarning::F202XAllocatableBreakingChange)),407 "f202-x-allocatable-breaking-change");408 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(409 EnumToString(UsageWarning::OptionalMustBePresent)),410 "optional-must-be-present");411 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(412 EnumToString(UsageWarning::CommonBlockPadding)),413 "common-block-padding");414 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(415 EnumToString(UsageWarning::LogicalVsCBool)),416 "logical-vs-c-bool");417 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(418 EnumToString(UsageWarning::BindCCharLength)),419 "bind-c-char-length");420 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(421 EnumToString(UsageWarning::ProcDummyArgShapes)),422 "proc-dummy-arg-shapes");423 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(424 EnumToString(UsageWarning::ExternalNameConflict)),425 "external-name-conflict");426 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(427 EnumToString(UsageWarning::FoldingException)),428 "folding-exception");429 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(430 EnumToString(UsageWarning::FoldingAvoidsRuntimeCrash)),431 "folding-avoids-runtime-crash");432 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(433 EnumToString(UsageWarning::FoldingValueChecks)),434 "folding-value-checks");435 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(436 EnumToString(UsageWarning::FoldingFailure)),437 "folding-failure");438 EXPECT_EQ(439 CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::FoldingLimit)),440 "folding-limit");441 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(442 EnumToString(UsageWarning::Interoperability)),443 "interoperability");444 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(445 EnumToString(UsageWarning::CharacterInteroperability)),446 "character-interoperability");447 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::Bounds)),448 "bounds");449 EXPECT_EQ(450 CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::Preprocessing)),451 "preprocessing");452 EXPECT_EQ(453 CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::Scanning)),454 "scanning");455 EXPECT_EQ(456 CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::OpenAccUsage)),457 "open-acc-usage");458 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(459 EnumToString(UsageWarning::ProcPointerCompatibility)),460 "proc-pointer-compatibility");461 EXPECT_EQ(462 CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::VoidMold)),463 "void-mold");464 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(465 EnumToString(UsageWarning::KnownBadImplicitInterface)),466 "known-bad-implicit-interface");467 EXPECT_EQ(468 CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::EmptyCase)),469 "empty-case");470 EXPECT_EQ(471 CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::CaseOverflow)),472 "case-overflow");473 EXPECT_EQ(474 CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::CUDAUsage)),475 "cuda-usage");476 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(477 EnumToString(UsageWarning::IgnoreTKRUsage)),478 "ignore-tkr-usage");479 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(480 EnumToString(UsageWarning::ExternalInterfaceMismatch)),481 "external-interface-mismatch");482 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(483 EnumToString(UsageWarning::DefinedOperatorArgs)),484 "defined-operator-args");485 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::Final)),486 "final");487 EXPECT_EQ(488 CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::ZeroDoStep)),489 "zero-do-step");490 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(491 EnumToString(UsageWarning::UnusedForallIndex)),492 "unused-forall-index");493 EXPECT_EQ(494 CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::OpenMPUsage)),495 "open-mp-usage");496 EXPECT_EQ(497 CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::DataLength)),498 "data-length");499 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(500 EnumToString(UsageWarning::IgnoredDirective)),501 "ignored-directive");502 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(503 EnumToString(UsageWarning::HomonymousSpecific)),504 "homonymous-specific");505 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(506 EnumToString(UsageWarning::HomonymousResult)),507 "homonymous-result");508 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(509 EnumToString(UsageWarning::IgnoredIntrinsicFunctionType)),510 "ignored-intrinsic-function-type");511 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(512 EnumToString(UsageWarning::PreviousScalarUse)),513 "previous-scalar-use");514 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(515 EnumToString(UsageWarning::RedeclaredInaccessibleComponent)),516 "redeclared-inaccessible-component");517 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(518 EnumToString(UsageWarning::ImplicitShared)),519 "implicit-shared");520 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(521 EnumToString(UsageWarning::IndexVarRedefinition)),522 "index-var-redefinition");523 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(524 EnumToString(UsageWarning::IncompatibleImplicitInterfaces)),525 "incompatible-implicit-interfaces");526 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(527 EnumToString(UsageWarning::VectorSubscriptFinalization)),528 "vector-subscript-finalization");529 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(530 EnumToString(UsageWarning::UndefinedFunctionResult)),531 "undefined-function-result");532 EXPECT_EQ(533 CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::UselessIomsg)),534 "useless-iomsg");535 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(536 EnumToString(UsageWarning::MismatchingDummyProcedure)),537 "mismatching-dummy-procedure");538 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(539 EnumToString(UsageWarning::SubscriptedEmptyArray)),540 "subscripted-empty-array");541 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(542 EnumToString(UsageWarning::UnsignedLiteralTruncation)),543 "unsigned-literal-truncation");544 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(545 UsageWarning::CompatibleDeclarationsFromDistinctModules)),546 "compatible-declarations-from-distinct-modules");547 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(548 UsageWarning::NullActualForDefaultIntentAllocatable)),549 "null-actual-for-default-intent-allocatable");550 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(551 UsageWarning::UseAssociationIntoSameNameSubprogram)),552 "use-association-into-same-name-subprogram");553 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(554 EnumToString(UsageWarning::HostAssociatedIntentOutInSpecExpr)),555 "host-associated-intent-out-in-spec-expr");556 EXPECT_EQ(CamelCaseToLowerCaseHyphenated(557 EnumToString(UsageWarning::NonVolatilePointerToVolatile)),558 "non-volatile-pointer-to-volatile");559}560 561TEST(FortranFeaturesTest, HintLanguageControlFlag) {562 LanguageFeatureControl control{};563 EXPECT_EQ(control.getDefaultCliSpelling(LanguageFeature::BenignNameClash),564 "benign-name-clash");565 EXPECT_EQ(566 control.getDefaultCliSpelling(UsageWarning::Portability), "portability");567}568 569} // namespace Fortran::common::details570