brintos

brintos / llvm-project-archived public Read only

0
0
Text · 26.2 KiB · 9408da0 Raw
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