
Adds a hint to the warning message to disable a warning and updates the tests to expect this. Also fixes a bug in the storage of canonical spelling of error flags so that they are not used after free.
570 lines
26 KiB
C++
570 lines
26 KiB
C++
//===-- flang/unittests/Common/FastIntSetTest.cpp ---------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "gtest/gtest.h"
|
|
#include "flang/Support/Fortran-features.h"
|
|
|
|
namespace Fortran::common::details {
|
|
|
|
std::string CamelCaseToLowerCaseHyphenated(std::string_view x);
|
|
|
|
TEST(FortranFeaturesTest, CamelCaseToLowerCaseHyphenated) {
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::BackslashEscapes)),
|
|
"backslash-escapes");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::OldDebugLines)),
|
|
"old-debug-lines");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(
|
|
LanguageFeature::FixedFormContinuationWithColumn1Ampersand)),
|
|
"fixed-form-continuation-with-column1-ampersand");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::LogicalAbbreviations)),
|
|
"logical-abbreviations");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::XOROperator)),
|
|
"xor-operator");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::PunctuationInNames)),
|
|
"punctuation-in-names");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::OptionalFreeFormSpace)),
|
|
"optional-free-form-space");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::BOZExtensions)),
|
|
"boz-extensions");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::EmptyStatement)),
|
|
"empty-statement");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::AlternativeNE)),
|
|
"alternative-ne");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::ExecutionPartNamelist)),
|
|
"execution-part-namelist");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::DECStructures)),
|
|
"dec-structures");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::DoubleComplex)),
|
|
"double-complex");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::Byte)),
|
|
"byte");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::StarKind)),
|
|
"star-kind");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::ExponentMatchingKindParam)),
|
|
"exponent-matching-kind-param");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::QuadPrecision)),
|
|
"quad-precision");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::SlashInitialization)),
|
|
"slash-initialization");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::TripletInArrayConstructor)),
|
|
"triplet-in-array-constructor");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::MissingColons)),
|
|
"missing-colons");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::SignedComplexLiteral)),
|
|
"signed-complex-literal");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::OldStyleParameter)),
|
|
"old-style-parameter");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::ComplexConstructor)),
|
|
"complex-constructor");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::PercentLOC)),
|
|
"percent-loc");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::SignedMultOperand)),
|
|
"signed-mult-operand");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::FileName)),
|
|
"file-name");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::Carriagecontrol)),
|
|
"carriagecontrol");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::Convert)),
|
|
"convert");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::Dispose)),
|
|
"dispose");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::IOListLeadingComma)),
|
|
"io-list-leading-comma");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::AbbreviatedEditDescriptor)),
|
|
"abbreviated-edit-descriptor");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::ProgramParentheses)),
|
|
"program-parentheses");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::PercentRefAndVal)),
|
|
"percent-ref-and-val");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::OmitFunctionDummies)),
|
|
"omit-function-dummies");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::CrayPointer)),
|
|
"cray-pointer");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::Hollerith)),
|
|
"hollerith");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::ArithmeticIF)),
|
|
"arithmetic-if");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::Assign)),
|
|
"assign");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::AssignedGOTO)),
|
|
"assigned-goto");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::Pause)),
|
|
"pause");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::OpenACC)),
|
|
"open-acc");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::OpenMP)),
|
|
"open-mp");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::CUDA)),
|
|
"cuda");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::CruftAfterAmpersand)),
|
|
"cruft-after-ampersand");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::ClassicCComments)),
|
|
"classic-c-comments");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::AdditionalFormats)),
|
|
"additional-formats");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::BigIntLiterals)),
|
|
"big-int-literals");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::RealDoControls)),
|
|
"real-do-controls");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::EquivalenceNumericWithCharacter)),
|
|
"equivalence-numeric-with-character");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::EquivalenceNonDefaultNumeric)),
|
|
"equivalence-non-default-numeric");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::EquivalenceSameNonSequence)),
|
|
"equivalence-same-non-sequence");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::AdditionalIntrinsics)),
|
|
"additional-intrinsics");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::AnonymousParents)),
|
|
"anonymous-parents");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::OldLabelDoEndStatements)),
|
|
"old-label-do-end-statements");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::LogicalIntegerAssignment)),
|
|
"logical-integer-assignment");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::EmptySourceFile)),
|
|
"empty-source-file");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::ProgramReturn)),
|
|
"program-return");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::ImplicitNoneTypeNever)),
|
|
"implicit-none-type-never");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::ImplicitNoneTypeAlways)),
|
|
"implicit-none-type-always");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::ImplicitNoneExternal)),
|
|
"implicit-none-external");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::ForwardRefImplicitNone)),
|
|
"forward-ref-implicit-none");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::OpenAccessAppend)),
|
|
"open-access-append");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::BOZAsDefaultInteger)),
|
|
"boz-as-default-integer");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::DistinguishableSpecifics)),
|
|
"distinguishable-specifics");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::DefaultSave)),
|
|
"default-save");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::PointerInSeqType)),
|
|
"pointer-in-seq-type");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::NonCharacterFormat)),
|
|
"non-character-format");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::SaveMainProgram)),
|
|
"save-main-program");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::SaveBigMainProgramVariables)),
|
|
"save-big-main-program-variables");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::DistinctArrayConstructorLengths)),
|
|
"distinct-array-constructor-lengths");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::PPCVector)),
|
|
"ppc-vector");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::RelaxedIntentInChecking)),
|
|
"relaxed-intent-in-checking");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::ForwardRefImplicitNoneData)),
|
|
"forward-ref-implicit-none-data");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::NullActualForAllocatable)),
|
|
"null-actual-for-allocatable");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(
|
|
LanguageFeature::ActualIntegerConvertedToSmallerKind)),
|
|
"actual-integer-converted-to-smaller-kind");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::HollerithOrCharacterAsBOZ)),
|
|
"hollerith-or-character-as-boz");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::BindingAsProcedure)),
|
|
"binding-as-procedure");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::StatementFunctionExtensions)),
|
|
"statement-function-extensions");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(
|
|
LanguageFeature::UseGenericIntrinsicWhenSpecificDoesntMatch)),
|
|
"use-generic-intrinsic-when-specific-doesnt-match");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::DataStmtExtensions)),
|
|
"data-stmt-extensions");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::RedundantContiguous)),
|
|
"redundant-contiguous");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::RedundantAttribute)),
|
|
"redundant-attribute");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::InitBlankCommon)),
|
|
"init-blank-common");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::EmptyBindCDerivedType)),
|
|
"empty-bind-c-derived-type");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::MiscSourceExtensions)),
|
|
"misc-source-extensions");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::AllocateToOtherLength)),
|
|
"allocate-to-other-length");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::LongNames)),
|
|
"long-names");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::IntrinsicAsSpecific)),
|
|
"intrinsic-as-specific");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::BenignNameClash)),
|
|
"benign-name-clash");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::BenignRedundancy)),
|
|
"benign-redundancy");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(
|
|
LanguageFeature::NullMoldAllocatableComponentValue)),
|
|
"null-mold-allocatable-component-value");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::NopassScalarBase)),
|
|
"nopass-scalar-base");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::MiscUseExtensions)),
|
|
"misc-use-extensions");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::ImpliedDoIndexScope)),
|
|
"implied-do-index-scope");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::DistinctCommonSizes)),
|
|
"distinct-common-sizes");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::OddIndexVariableRestrictions)),
|
|
"odd-index-variable-restrictions");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::IndistinguishableSpecifics)),
|
|
"indistinguishable-specifics");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::SubroutineAndFunctionSpecifics)),
|
|
"subroutine-and-function-specifics");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::EmptySequenceType)),
|
|
"empty-sequence-type");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::NonSequenceCrayPointee)),
|
|
"non-sequence-cray-pointee");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::BranchIntoConstruct)),
|
|
"branch-into-construct");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::BadBranchTarget)),
|
|
"bad-branch-target");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::HollerithPolymorphic)),
|
|
"hollerith-polymorphic");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::ListDirectedSize)),
|
|
"list-directed-size");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::NonBindCInteroperability)),
|
|
"non-bind-c-interoperability");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::CudaManaged)),
|
|
"cuda-managed");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::CudaUnified)),
|
|
"cuda-unified");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::
|
|
PolymorphicActualAllocatableOrPointerToMonomorphicDummy)),
|
|
"polymorphic-actual-allocatable-or-pointer-to-monomorphic-dummy");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::RelaxedPureDummy)),
|
|
"relaxed-pure-dummy");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(
|
|
LanguageFeature::UndefinableAsynchronousOrVolatileActual)),
|
|
"undefinable-asynchronous-or-volatile-actual");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::AutomaticInMainProgram)),
|
|
"automatic-in-main-program");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::PrintCptr)),
|
|
"print-cptr");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::SavedLocalInSpecExpr)),
|
|
"saved-local-in-spec-expr");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::PrintNamelist)),
|
|
"print-namelist");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(
|
|
LanguageFeature::AssumedRankPassedToNonAssumedRank)),
|
|
"assumed-rank-passed-to-non-assumed-rank");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::IgnoreIrrelevantAttributes)),
|
|
"ignore-irrelevant-attributes");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(LanguageFeature::Unsigned)),
|
|
"unsigned");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::AmbiguousStructureConstructor)),
|
|
"ambiguous-structure-constructor");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::ContiguousOkForSeqAssociation)),
|
|
"contiguous-ok-for-seq-association");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(LanguageFeature::ForwardRefExplicitTypeDummy)),
|
|
"forward-ref-explicit-type-dummy");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::Portability)),
|
|
"portability");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::PointerToUndefinable)),
|
|
"pointer-to-undefinable");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::NonTargetPassedToTarget)),
|
|
"non-target-passed-to-target");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::PointerToPossibleNoncontiguous)),
|
|
"pointer-to-possible-noncontiguous");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::ShortCharacterActual)),
|
|
"short-character-actual");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::ShortArrayActual)),
|
|
"short-array-actual");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::ImplicitInterfaceActual)),
|
|
"implicit-interface-actual");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::PolymorphicTransferArg)),
|
|
"polymorphic-transfer-arg");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::PointerComponentTransferArg)),
|
|
"pointer-component-transfer-arg");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::TransferSizePresence)),
|
|
"transfer-size-presence");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::F202XAllocatableBreakingChange)),
|
|
"f202-x-allocatable-breaking-change");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::OptionalMustBePresent)),
|
|
"optional-must-be-present");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::CommonBlockPadding)),
|
|
"common-block-padding");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::LogicalVsCBool)),
|
|
"logical-vs-c-bool");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::BindCCharLength)),
|
|
"bind-c-char-length");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::ProcDummyArgShapes)),
|
|
"proc-dummy-arg-shapes");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::ExternalNameConflict)),
|
|
"external-name-conflict");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::FoldingException)),
|
|
"folding-exception");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::FoldingAvoidsRuntimeCrash)),
|
|
"folding-avoids-runtime-crash");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::FoldingValueChecks)),
|
|
"folding-value-checks");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::FoldingFailure)),
|
|
"folding-failure");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::FoldingLimit)),
|
|
"folding-limit");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::Interoperability)),
|
|
"interoperability");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::CharacterInteroperability)),
|
|
"character-interoperability");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::Bounds)),
|
|
"bounds");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::Preprocessing)),
|
|
"preprocessing");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::Scanning)),
|
|
"scanning");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::OpenAccUsage)),
|
|
"open-acc-usage");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::ProcPointerCompatibility)),
|
|
"proc-pointer-compatibility");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::VoidMold)),
|
|
"void-mold");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::KnownBadImplicitInterface)),
|
|
"known-bad-implicit-interface");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::EmptyCase)),
|
|
"empty-case");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::CaseOverflow)),
|
|
"case-overflow");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::CUDAUsage)),
|
|
"cuda-usage");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::IgnoreTKRUsage)),
|
|
"ignore-tkr-usage");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::ExternalInterfaceMismatch)),
|
|
"external-interface-mismatch");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::DefinedOperatorArgs)),
|
|
"defined-operator-args");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::Final)),
|
|
"final");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::ZeroDoStep)),
|
|
"zero-do-step");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::UnusedForallIndex)),
|
|
"unused-forall-index");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::OpenMPUsage)),
|
|
"open-mp-usage");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::DataLength)),
|
|
"data-length");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::IgnoredDirective)),
|
|
"ignored-directive");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::HomonymousSpecific)),
|
|
"homonymous-specific");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::HomonymousResult)),
|
|
"homonymous-result");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::IgnoredIntrinsicFunctionType)),
|
|
"ignored-intrinsic-function-type");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::PreviousScalarUse)),
|
|
"previous-scalar-use");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::RedeclaredInaccessibleComponent)),
|
|
"redeclared-inaccessible-component");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::ImplicitShared)),
|
|
"implicit-shared");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::IndexVarRedefinition)),
|
|
"index-var-redefinition");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::IncompatibleImplicitInterfaces)),
|
|
"incompatible-implicit-interfaces");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::VectorSubscriptFinalization)),
|
|
"vector-subscript-finalization");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::UndefinedFunctionResult)),
|
|
"undefined-function-result");
|
|
EXPECT_EQ(
|
|
CamelCaseToLowerCaseHyphenated(EnumToString(UsageWarning::UselessIomsg)),
|
|
"useless-iomsg");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::MismatchingDummyProcedure)),
|
|
"mismatching-dummy-procedure");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::SubscriptedEmptyArray)),
|
|
"subscripted-empty-array");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::UnsignedLiteralTruncation)),
|
|
"unsigned-literal-truncation");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(
|
|
UsageWarning::CompatibleDeclarationsFromDistinctModules)),
|
|
"compatible-declarations-from-distinct-modules");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(
|
|
UsageWarning::NullActualForDefaultIntentAllocatable)),
|
|
"null-actual-for-default-intent-allocatable");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(EnumToString(
|
|
UsageWarning::UseAssociationIntoSameNameSubprogram)),
|
|
"use-association-into-same-name-subprogram");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::HostAssociatedIntentOutInSpecExpr)),
|
|
"host-associated-intent-out-in-spec-expr");
|
|
EXPECT_EQ(CamelCaseToLowerCaseHyphenated(
|
|
EnumToString(UsageWarning::NonVolatilePointerToVolatile)),
|
|
"non-volatile-pointer-to-volatile");
|
|
}
|
|
|
|
TEST(FortranFeaturesTest, HintLanguageControlFlag) {
|
|
LanguageFeatureControl control{};
|
|
EXPECT_EQ(control.getDefaultCliSpelling(LanguageFeature::BenignNameClash),
|
|
"benign-name-clash");
|
|
EXPECT_EQ(
|
|
control.getDefaultCliSpelling(UsageWarning::Portability), "portability");
|
|
}
|
|
|
|
} // namespace Fortran::common::details
|